登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
源碼專案 3D 除錯新視界:xDIVA 專案報導

3D 除錯新視界:xDIVA 專案報導

對程式設計師,工程師以及許多科技資訊工作者而言,除錯器 (Debugger) 是不可或缺的一項工具。除錯器的主要功能,在於幫助使用者在程式運作時找出臭蟲 (bug) ,並予以排除;然而,身為工具,必然存在著某種限制。

由中央大學資工系鄭永斌教授所主持的「xDIVA ── 具備可合成與互動之除錯資訊視覺化軟體工具」自由軟體專案,從協助資訊工程工作者的立場出發,力圖跨越工具的有限性,探索跨界與創新的可能空間。

alt

一、「活」的軟體,而非「死」的工具

「 xDIVA ── 具備可合成與互動之除錯資訊視覺化軟體工具」是一個總共為期四年的專案,由中央大學資工系鄭永斌教授主持,主要研發目的,是開發一個能夠跨領域,甚至跨界域的除錯工具。

一般來說,資訊軟體的開發通常必須用到諸多不同的工具,除錯器便是其中非常重要的一項,因為在程式開發中,不免會遭遇一些錯誤,此時,便需要除錯器的協助,才能順利校正修補。

鄭教授表示,近十幾年來,除錯器就工具本身的演進並未呈現出顯著的改進,「因為我研究的領域正好是軟體工程,從理念發想、產生樣品,到真正推出產品,這段流程需要走過一段滿長的距離,最快的測試方式,就是釋放在網路平臺上,讓人們自由分享與使用,但如果真的要做到產品化規格,便不只是測試與修改那麼簡單。許多的學研專案都停留在完成樣品的階段就結案,但我們這個專案不同的地方,在於我們是真心地想做出穩定的產品,讓程式設計師、工程師與資訊工作者能夠實用!」

鄭教授說道,不同的軟體程式與專題領域,有其個別相應不同的除錯需求,鄭教授援引自己在中央研究院的經驗為例,當時鄭教授主要研究「光學文字辨認」,簡單來講,就是將文字或影像透過光學掃描轉換成數位檔案,也時常有修改程式的需要,但一旦修改,就發現錯誤率頓時提高,這時便需要一項一項地分別除錯,不僅耗時間也耗心力。於是,鄭教授的作法是以互動性為概念,重新寫一個屬於該專題專用的視覺化除錯器程式。

由於每個應用領域都擁有自己專用的除錯器,基於領域限制,研發出來的除錯器的無法進行跨領域的普遍應用,鄭教授說道:「我的腦中開始孕育一個想法:如果可以做出一個能夠跨領域應用的除錯器,可以通用於所有的軟體程式與專題領域,比如影像處理、Layout 設計、工業領域等等,都可以使用同一個除錯器,來輕鬆地協助使用者普遍應用,可以節省許多力氣。」而這正是 xDIVA 誕生的源頭。


二、創新,從腳踏實地開始

鄭教授說道,當初決定做這個題目時瀏覽過許多相關研究資料,包括目前被稱為「二元樹」的資料結構,但這類資料結構多被運用在資訊教育上,作為老師給學生練習之用,無法應付程式設計師的需求;加上每個領域的資料結構各有差異,產生了視覺化的套用問題,除錯器在設計上往往為了應對某個程式而被寫死,一旦程式變化,立即發生不適用問題,這也是視覺化程式的通病,也正是 xDIVA 面對的燙手山芋。

「我想做的不是去特定寫死一個程式,而是提供許多基本的視覺元素,來兜合出新的視覺化效果。換句話說, xDIVA 提供的內涵有如物理學中的基本粒子,是一種包含了各種基本元素的系統,你可以依照自己的需求去編輯、組織,依照不同的資料結構來自由組合,就好像樂高積木有許多元件,可供人去發揮創意,組合成想像中的形體。」

xDIVA 利用人類視覺感官的直覺運作,提供了視覺化與隱喻性的多重組合。傳統除錯器是利用文字及數值來顯示變數,但文字或數值的理解還需經過視覺與大腦的轉換,「用眼睛看就能夠了解的東西,用文字反而卻無法看見。以影像程式來說,影像具有 RGB 三個值,若是將某個像素的 RGB 印在紙上,其實你光看數值,只能自己判斷這個到底是什麼顏色,但如果運用 3D 視覺化工具,就能當場以互動的方式展現出來。」鄭教授笑道:「年輕時我自己也寫過很多程式,光是一個 bug 就要花很多時間處理,除錯這個概念,除了使用者本身的經驗與功力,如果有一個跨領域的好工具則會更加實用。講得偉大一點,我想要顛覆現在既有的除錯器,提供一種新式的 3D 視覺化除錯器!」


三、產學合作,創造跨界新價值

以比喻法來說,鄭教授認為:「 xDIVA 就像 iPad ,使用者不用特地去學 3D 影像化互動技術,直接就能一目暸然;而傳統除錯器就像 DOS ,單純只是純文字互動,必須下很多結構化的指令。」

從純粹的學術研究興趣,到實際的研究成果,「 xDIVA ── 具備可合成與互動之除錯資訊視覺化軟體工具」的研發成就已成功獲得學術界的肯定,但鄭教授更希望在實用層面上有所提升,是故展開與業界合作的嘗試。試用對象主要為 EDA(Electronic Design Automation ,電子設計自動化)廠商,由於一般企業對資訊軟體的需求通常傾向直接購買套裝軟體,而這些軟體大都由 EDA 廠商開發寫成,而 xDIVA 主要提供給 EDA 廠商試用,這些廠商雖然自己也有寫除錯工具,但問題是,因為是特地針對某個程式所寫的,一旦除錯情境變動,工具就必須整體更新,所費成本不貲。

目前, xDIVA 多提供科技業試用,鎖定資料結構複雜度高的產業,並在中研院資創中心的自由軟體鑄造場 (Open Source Software Foundry, OSSF) 所提供的 OpenFoundry 專案開發平臺上開放程式源碼,期望能吸引更多資訊相關工作者來試用及修改,以期使 xDIVA 的穩定度與完整度再上層樓。鄭教授的策略,是先找到 EDA 廠商的對口工程師,提供 xDIVA 的最新版本請他們試用,同時調查企業的除錯需求,如果該廠商的工程師覺得實用,就能漸漸發揮推廣之效。「理想的作法是從龍頭公司著手,目前已經和首屈一指的外商公司 Synopsys 連接上,請基層工程師試用,如果用得上手,其他公司也會接續跟進。」鄭教授說道,產品若要真正上軌道,穩定度是首要考量,這也是產業界與學術界的主要差異,「對學術界而言,價值通常建立在長遠的研究目標與通用性之上,但對產業來說,企業考量的是:產品是否能有效解決他們的問題、產生利潤,這是產學雙方考量上的差異。」


四、教育,是臺灣資訊產業的未來

除了產業合作, xDIVA 的 3D 視覺化與互動特性亦能在資訊教育發揮效用。鄭教授舉例說明,在臺大資工系開設演算法課程的呂學一教授,在課堂中使用 PowerPoint 動畫,利用視覺化進行教學而頗受好評,鄭教授由此發想認為,亦可在教學時套用 xDIVA 。「人類是視覺化的動物, xDIVA 則能自動對應程式來呈現 3D 動畫,在設計教學動畫上非常有幫助。」鄭教授表示。

就價值產生面而言,「 xDIVA ── 具備可合成與互動之除錯資訊視覺化軟體工具」對學校與研究單位而言,可以產生出技術移轉資金,讓業界主動有興趣投入,產學彼此合作,便有成立新公司的可能,也能聘用更多工程師,製造就業機會與產業新機;若技轉合作模式成熟,便可有更多人才培養的資源,形成正面的產學互動循環。

鄭教授強調,自己的理念,是顛覆除錯領域的未來,但推廣與成熟需要時間的培養,「我相信,試用階段是必須的,唯有讓第三者出現,才能發揮具體效果發,而不斷的改進,才能導致真正的進步!」

「臺灣的軟體產業現在其實都在賺辛苦錢。」鄭教授以蘋果公司的成功為例,「蘋果的成功並不是靠硬體或是漂亮的設計,而是靠整合度極強的軟體系統。軟體產業的特性是,一旦你有了新的研發,就必須趕快切進市場,切入後再來改進,這樣子後面的人便永遠追不上,因為你自己也同時在不停前進。」

回到教育面,鄭教授認為,若要研發、修改大型複雜的程式源碼,學生的資訊能力必須要有一定程度,這正是人才培養之所以重要的原因,但臺灣的教育現在仍然以升學考試為取向,導致學生的實作能力貧弱,在大學時,老師們努力幫學生建立基礎,但到了大四,學生紛紛去補習、考研究所、拼學歷。「身為資訊科技領域的學生,卻沒有紮實的實作能力,這樣的人才進入產業,自然會影響到產業素質。」鄭教授說道。

教育、人才與產業發展,是彼此緊密連扣的環節鏈,臺灣的資訊軟體產業若要拓展光明前景,教育環境與觀念便必須先行有所改革,教育扮演著人才培養的關鍵角色,也是臺灣科技資訊產業發展不可或缺的基礎!

【技術文件摘要說明】

xDIVA 簡介

3D 軟體除錯視覺化工具 xDIVA 之建構計畫,提出一個除錯視覺化雛形工具 xDIVA (eXtreme Debugging Information Visualization Assistant) 的研究。其主要目的著眼於處理無窮廣泛的資料種類 VM 的對映。 xDIVA 導入新穎嚴格的物件導向 觀念,使 VM 可以互相溝通、組合,且和資料完全分離,達到最低的耦合。換言之,一個複雜的 VM 可以由許多基礎 VM 組合而成,每一個都是獨立且可替代的。資料型態和 VM 之間的對映可以依客戶需求訂做,重新裝配,讓使用者在不需要撰寫任何的程式碼,或者規則語言 (rule-like language) 就可以從既有的 VM 材料庫中,組合出符合期望的視覺化結果。

系統需求

  • 具備 debugger 的 GUI 前端程式。
  • GUI 必須具備基本功能包括瀏覽程式碼,設定中斷點,執行除錯,以文字模式顯現出變數。
  • 允許使用者藉由 GUI 介面對 DIVA 發出變數視覺化的指令。
  • DIVA 可由除錯器端取得程式變數的數值以進行的使用者要求的視覺化。
  • DIVA 必須具備讓使用者進行 VM 調整 (譬如資訊與 VM 如何對應、數量龐大時如何排列等)的使用者介面,並將 VM 以 3D 的方式呈現在螢幕上。

系統架構

xDIVA 主要由除錯器前端 (Minerva) 以及視覺化子系統 (DIVA) 所組成。
在本系統當中,除錯前端子系統 (Minerva, Visual Studio add-in,Eclipse add-in) 即除錯器介面,使用者對除錯前端子系統下達除錯動作的指令會透過網路部分與 DIVA 端的 Command Agent 作互動,而 Command Agent 會依照使用者的指令對 WOPM 以及 DIVA UI 作動作。 WOPM 會依照變數的型態以及 Mapping Dialog 連結的結果提供連結方式給 Mapping Engine,Mapping Engine 負責將連結的結果合併成 Mapping Tree 提供給 DIVA 查詢以及視覺化使用。而 DIVAUI 分為兩個部分,一個是視覺化的視窗,另一個是 Mapping Dialog 的部分, Mapping Dialog 是讓使用者來自行調整 VM 與欲視覺化變數之間的關聯關係,以及調整 VM 屬性的 Dialog。

xDIVA 的視覺化子系統 DIVA 有相當多個重要元件,第一個是 Watched Object Pool Module (WOPM),WOPM 儲存所有等待 DIVA 視覺化的變數、指標、和物件。這些資料由其除錯器前端 (Minerva) 取得,當中斷點改變時會改變其值。前端負責通知程式狀態的改變,有一些複雜的程序在這時後啟動來確保 WOPM 和 debugger 的資料同步。Command Agent 元件用來處理同步的程序,舉例來說,當接受到 visualize p 這個指令的時後,Command Agent 會送出一連串的指令向前端要求 p 的資訊,當資訊取得後,Command Agent 則在 WOPM 建立一個物件。- 10 -在 visualization metaphor 和 WOPM 之間有個重要的元件叫 Mapping Engine,它負責維持 WOPM 裡的物件和 VM 的映射,也允許使用者手動設定如何映射。

alt
▲圖:xDIVA 系統架構圖

視覺化子系統 DIVA 和前端處理器 Minerva 的溝通是透過網路交換訊息,因為 Minerva 是由 Java 實做完成,這個設計甚至使得程式設計人員也可以在 Linux 下 debug 程式,然後將結果呈現在 Windows 平台上。

xDIVA 運用 Open Source 3D 引擎 OGRE 來進行 3D 繪圖。OGRE 是個物件導向的 3D 引擎,相較於其他 3D 開發平台如:OPENGL 或 DIRECTX,ORGE 的程式設計門檻比較低。因此,ORGE 作為一個 3D 繪圖引擎,可以降低相當多的程式開發時間和功夫。ORGE 提供相當多的 3D 特效,有助於增進的視覺化的多樣性,提升視覺化的品質,超越過去視覺化系統只依賴基本的顏色與圖形。




自由軟體鑄造場電子報 : 第 205 期 3D 除錯新視界:xDIVA 專案報導

分類: 源碼專案