• 沒有找到結果。

General architecture

第5章、跨階段產物一致性檢查系統之架構

5.1 ArgoUML 之系統架構

5.1.1 General architecture

ArgoUML 的主要架構由三個 package 所組成,分別是控制 UML 圖形內部架 構的 NSUML (Novosoft UML metamodel library)、控制 UML 圖形繪製表現的 GEF(Graph Editing Framework)以及處理整合運用的 ArgoUML。其中 NSUML 包 含所有表現及處理 UML model 的 classes,GEF 負責將 UML diagram 的模型視覺 化並表現在 UI 上,而 ArgoUML 則是將這兩部分的功能連結,並加入應用邏輯。

ArgoUML 採用 Model-View-Controller(MVC)的設計架構,MVC 架構將 UI 與系統內部處理的資料分開,同一個 model 會有一至多個與之相連的 views,當 model 內容需做更改,將透過 controller 呼叫 model 內的 method 來改變其資料,

同時 model 也通知所有 views 改變其狀態內容。

圖 5-1 ArgoUML architecture[14]

圖 5-2 Model-View-Controller Pattern[14]

圖 5-3 為 ArgoUML 的 framework,四層的架構(由下而上為 Layer 0 至 Layer 3)讓開發人員可以在上兩層(Application-specific layer 與 Application-generic layer) 進行開發,由於 ArgoUML 是以 JAVA 做為開發系統的程式語言,所以最底層為 Java Virtual Machine(JVM),而介於上兩層與最底層間的 Layer 1 則是 ArgoUML 所使用的函式庫。而 ArgoUML 將每一層的任務由數個 subsystem(或稱 component) 來實現,5.1.2 節將說明這些 subsystem 的功能。

圖 5-3 ArgoUML Framework

5.1.2 Packages

ArgoUML 將系統功能分為許多個 subsystems(又稱為一個 argouml 內的 component),各有其負責的任務,這些 subsystems 以層狀(layered)的架構所集合 成,圖 5-4 簡介說明每個 subsystem 內的架構,subsystem 具有 interface 以及擴 充的功能,可以透過 plugin 以彌補其他不足。

圖 5-4 subsystem’s architecture[15]

主要的 subsystems 架構分為四個 layer:

y Layer 0

由負責紀錄的 Logging subsystem、負責地區性字串轉換的

Internationalization subsystem、及負責提供 java runtime 支援的 JRE(with utils) subsystem,Layer 0 的這三個 subsystem 包含了其他三層所會使用 到的一般性功能,自 Layer 1 到 Layer 3 都會 depend on layer 0。

圖 5-5 Layer 0 packages[15]

y Layer 1

Argouml subsystem 架構中的最底層,Layer 1 除了 depend on Layer 0 之 外並沒有其他參考的 subsystem。其中包含了 Model、Todo Items、GUI Framework、Help System 四個 subsystem,其中 Model subsystem 提供 UML 各種圖形的資料結構,使用上一節提到的 NSUML 來實作 UML model,並提供較上層的 subsystem 使用。

圖 5-6 Dependencies between Layer 1 and Layer 0[15]

y Layer 2

包含以下六個 subsystems:

1. Diagrams:負責將 model 內的 diagram 以圖形化的方式表現出來,

並包含 diagram 上的工具列。

2. Property Panels:提供顯示 model 內 diagram 及 object 的 properties。

3. Explorer:提供樹狀的顯示結構以表達 model elements、diagrams 及其他 objects 間的關係。

4. Code Generation:提供 code generation 輔助功能的 subsystem。

5. Reverse Engineering:提供 reverse engineering 輔助功能的 subsystem。

6. Module Loader:負責讀取 Layer 3 上具有延伸功能的 modules 或 plugins。

圖 5-7 Dependencies between Layer 2 and Layer 1[15]

y Layer 3

ArgoUML subsystem 架構的最上層,包含以下五個 subsystems:

1. Java-code generation and reverse engineering:處理 java code 的 code generation 與 reverse engineering。

2. Other languages-code generation and reverse engineering:處理其他程 式語言的 code generation 與 reverse engineering。

3. Critics and checklists:提供使用者對於繪製 diagram 上的輔助(如 check list 提醒該注意的事項)。

4. OCL:提供處理與編輯 OCL(Object Constraint Language)的字串。

5. Application:進入 ArgoUML 應用程式的起始進入點(entry point)。

圖 5-8 Dependencies between Layer 3 and Layer 2[15]

圖 5-9 Dependencies between Layer 3 and Layer 1

5.1.3 ArgoUML 介面設計

圖 5-10 為 ArgoUML 開發工具在執行時的主要畫面,畫面一共分為下列四 個部分:

1. Explorer:在畫面的左上方,顯示目前的 project(或 model)的開發狀態與 產物,是一階層性的樹狀架構。

2. Editor:在畫面的右上方,由 Diagram 的編輯區域與 toolbar 所組成,

3. ToDos:在畫面的左下方,依優先度的順序來排列使用者自行建立的工 作清單,並以階層的方式表示。

4. Details Panel:在畫面的右下方,為此開發工具的核心功能之一,當使 用者選擇 diagram 中的物件或是 todo list 內的工作項目時,這個面板將 詳細列出該物件的所有 property 資料,使用者透過該面板上的欄位來更 改物件的內容。

圖 5-10 ArgoUML main window[16]

圖 5-11 ArgoUML-multilevel structure

Multi-level structure

相關文件