• 沒有找到結果。

在軟體開發的過程當中,除錯是一個不可避免的階段。如果設計階段設計不 良,通常除錯所要花費的時間就要更長。一般常用的整合開發環境(IDE)都會提 供一個內建的除錯器,只不過這類除錯器,通常只具命令列模式的文字介面,比 較不容易上手。為了提高實用性,較貼心的開發環境會將除錯器包裝成視窗化介 面(watch view),如圖 1。

圖 1 debugger 的監視視窗

除錯器主要是透過設定中斷點來暫停程式的執行,然後藉此來觀察程式狀態。

雖然 IDE 已經幫我們提供了視窗化的介面,不過都是以文字模式去呈現單一變 數或結構,除錯效果上仍受到一些限制。例如:程式設計者若要瞭解物件或結構 之間的關係時,還是只能插入額外的程式碼,以自己所偏好的視覺化方式來顯示 變數與資料結構。有經驗的程式設計師通常會靠輸出與列印變數(如 cout 、printf)

來搭配除錯器一起解決問題,這樣做,雖然比單靠除錯器來的有效率,不過,在

class X { int a ; int b ; int c;

}

針對不同的應用領域,X 可以有各式各樣的解釋。例如:它可能是一個 3 維 的向量,如圖 2。

圖 2 三維向量(a,b,c)

或者,它可能代表的是某 X 公司當年度三種產品 a,b,c 的收入,如圖 3。甚 至,它也可能代表一條 2D 平面上的線段 ax+by=c 的三個係數。

圖 3 圓餅圖

由以上的例子不難發現,除非資料的用途很明確,否則透過視覺化工具自動 對映所產生的結果,可能會牛頭不對馬嘴,根本不是使用者想看到的。所以有些 視覺化工具,例如 DDD(Data Display Debugger)[9],就會選擇最安全的視覺化──

以文字以及數字來表示,而捨棄了更有效的視覺化。

1.1.2 xDIVA 的目標

xDIVA(eXtreme Debugger Information Visualization Assistant)是一個本實驗

室所研發的視覺化雛形工具,主要著重在視覺化軟體執行期間的動態資料,以及 處理各式各樣的的資料種類和 VM 之間的對映。

事實上,視覺化的對映選擇,應該基於使用者既有的某些知識與經驗,而且 也只有程式設計者本身才能決定什麼樣的視覺化最符合他的需求。例如,一般有 修過資料結構的程式設計師,可能會習慣以圓圈來代表樹的節點,以線條代表節 點之間的關連的視覺化方式。xDIVA 為了讓使用者能自行建立資料與視覺化之 間的對映,設計出一個處理資料與視覺化對映關係的介面稱之為 Mapping Engine。

此介面可允許使用者手動來設定資料所對映的視覺化結果,或者由 xDIVA 替使

(composability)。基於這樣的概念,xDIVA 導入物件導向的觀念,讓 VM 間可以 相互溝通、組合,並且能和資料分離以達到最低耦合(coupling)。換句話說,一 個複雜的 VM 可由許多基礎的 VM 組合而成,每一個都是獨立可取代的。這裡 說的基礎的 VM 就像是最基本形狀的建材,本篇論文中我們將它們定義為

Ultimate Basic VM(UBVM),例如方塊、圓球等。這樣的設計大大提升了 VM 的 重用性,使用者也不需要撰寫任何的程式碼或者是規則語言(rule-like language) 就可以從既有的 VM 材料庫中,組合出符合期望的視覺化結果。

本篇論文中我們將探討 UBVM 的設計理念以及實做,還有用例子說明如何 利用各式各樣基礎的 UBVM 自行加以組合成新的 VM,而且不需要撰寫任何的

程式碼。xDIVA 的最終目標,是希望程式設計人員只要經由一個簡單的 GUI 介 面,藉由滑鼠的選擇及拖曳,組合現有的 VM,即可建構出使用者想要的視覺化。

因此,資料與 VM 間的視覺化對映將不再受到限制,唯一的限制是程式設計師對 於視覺化的想像力。

相關文件