對程式設計師、工程師以及許多科技資訊工作者而言,除錯器(Debugger)是不可或缺的一項工具。除錯器的主要功能,在於幫助使用者在程式運作時找出臭蟲(Bug),並予以排除;然而,身為工具,必然存在著某種限制。
目前,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查詢以及視覺化使用。
而DIVA UI分為兩個部分,一個是視覺化的視窗,另一個是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建立一個物件。在visualization metaphor和WOPM之間有一個重要的元件叫Mapping Engine,它負責維持WOPM裡的物件和VM的映射,也允許使用者手動設定如何映射。
|
▲xDIVA系統架構圖。 |
視覺化子系統DIVA和前端處理器Minerva的溝通是透過網路交換訊息,因為Minerva是由Java實作完成,這個設計甚至使得程式設計人員也可以在Linux下Debug程式,然後將結果呈現在Windows平台上。
xDIVA運用Open Source 3D引擎OGRE來進行3D繪圖。OGRE是個物件導向的3D引擎,相較於其他3D開發平台如OPENGL或DIRECTX,ORGE的程式設計門檻比較低。因此,ORGE作為一個3D繪圖引擎,可以降低相當多的程式開發時間和功夫。ORGE提供相當多的3D特效,有助於增進視覺化的多樣性,提升視覺化的品質,超越過去視覺化系統只依賴基本的顏色與圖形。