物件導向系統分析與VSTS2010
1 前言
在VSTS2010 Beta 2 Modeling(塑模)增加了對UML的支援,目前可以繪製Activity Diagram、Component Diagram、Class Diagram、Sequence Diagram、Use Case Diagram等五種圖形。在本文,筆者從OOAD(Object Oriented Analysis and Design)方法套用VSTS2010所提供的UML Diagram來介紹如何進行OOSA(Object Oriented System Analysis)。
首先筆者先定義什麼是OOSA與OOSD(Object Oriented System Design),筆者認為OOSA的重點在於透過物件導向方法去擷取客戶需求,了解客戶要的是什麼;OOSD則是轉換OOSA的客戶需求成產品需求,讓開發人員能依此進行開發。既然OOSA的重點在於客戶,所以產出的文件一定要讓客戶看得懂!如此才能確認(Validate)客戶需求。
2 流程
筆者簡略整理OOSA流程分為下列六個步驟:
圖1 OOSA流程圖
筆者以一個計算器範例來說明,需求條列如下:
- 使用者可以輸入被運算欄位。
- 使用者選擇”+”、”-“、”*”、”/”。
- 使用者可以輸入運算欄位。
- 使用者按[進行運算]鈕後得到最後運算結果。
3 建立Modeling Project
在Visual Studio 2010之Menu,選擇 File -> New -> Project -> Modeling Projects -> Modeling Project,命名如”DemoModeling”
圖2 Modeling Project
接下來請在Solution Explorer新增一資料夾,名為”Module1”,後續的計算器相關需求皆會歸於此模組。
4 進行OOSA
4.1 找出Actor
Actor可以是使用者或外部系統,找出Actor可以確認:
- 我們的系統跟外界有那些互動?如那些使用者會參與系統的操作。
- 釐清我們的系統範圍,例如變成Actor的外部系統一定不是我們的系統範圍。
以上述需求而言,並無特定使用者,所以就先歸納成一個Actor—使用者,在”Module1”資料夾,按右鍵選Add -> New Item -> UML Use Case Diagram,名為” Module1.usecasediagram”。在Module1.usecasediagram拖曳一Actor,命名為”User”。
在VS2010裡提供另外一個View,讓我們能方便組織系統分析結果—“UML Model Explorer”,選擇Menu -> View -> Other Windows -> UML Model Explorer,在UML Model Explorer裡,對根節點按右鍵選 Add -> Package,命名為”Module1”,如下圖:
圖3 UML Model Explorer
4.2 找出Use Case
Use Case的切割不是一個簡單的事,原則上是依據內聚力(Cohesion)強且藕合力(Coupling)低,很玄!簡單來說,特定使用者會一次連續完成的動作,可以切成一個Use Case,如訂單處理人員輸入一張新訂單,輸入前他會先查詢客戶資訊,輸入完後他可能會進行檢查,也許會修改他輸錯的部份,也有可能整張單子不要了,上述這些情節都是連續動作,也許就是一個好的Use Case。一個Use Case最後的產出的結果就是一支程式,若您是翻新系統,依據舊系統的程式切割就是很好的Use Case界定方式。
以上述所列需求即是一連串動作,所以可以歸納成一個Use Case—Calculation。請在UML Model Explorer之Module1新增此Use Case,接著在Solution Explorer -> Module1新增Use Case Diagram,命名為” Calculation.usecasediagram”,並將Calculation Use Case拖曳至此Diagram。
4.3 繪製Activity Diagram
Activity Diagram與Sequence Diagram都可以用來表示系統動態部份,但筆者選擇使用Activity Diagram,因為如前所述OOSA的目標使用者是客戶,他們比較看得懂Activity Diagram。接下來依每個Use Case來繪製Activity Diagram,在Solution Explorer -> Module1新增一Activity Diagram,命名為” Calculation.activitydiagram”,繪製結果如下:
圖4 Calculation Activity Diagram
接著將此Diagram拖曳至Calculation. Usecasediagram,並透過Dependency連結起來,如下圖:
圖5 Use Case連結Activity Diagram
4.4 繪製Blueprint
Blueprint其實就是使用者介面的展現,即系統靜態的部份,有很多方式可以應用,如您可以直接利用Visual Studio 拉出系統畫面,完成後您可以將Blueprint加入您的專案,在Solution Explorer -> Module1按右鍵選 Add -> Existing Item,將Blueprint文件加入,接著將此文件拖曳至Calculation. Usecasediagram,並透過Dependency連結起來,如下圖:
圖6 Blueprint範例
圖7 Use Case連接Blueprint
4.5 製作Data Glossary
Data Glossay也是用於描述系統靜態部份,輔助說明Blueprint不清楚部份,筆者建議Word或Excel就是很好的工具,範例如下:
編號 | 欄位名稱 | 長度/型態 | 鍵值 | 允許Null | 規則 | 範例 |
1 | 被運算欄位 | int | 2 | |||
2 | 運算子 | char(1) | 下拉選單,值有”+”, ”-“, ”*”, ”/” | + | ||
3 | 運算欄位 | int | 3 | |||
4 | 結果欄位 | int | 5 |
表1 Data Glossary範例
同樣也是將Data Glossary拖曳至Calculation. Usecasediagram,並連接起來,結果如下:
圖8 完整的Calculation.usecasediagram
4.6 繪製Use Case Diagram
最後我們可以依模組將相關的Use Case彙總成Use Case Diagram,在此Diagram可以展現Use Case、Actor之間的關係。其實依筆者經驗,一般使用者是看不懂Use Case Diagram的,所以這張圖是用於後續系統設計參考,請不要拿給一般使用者看,不然您會自找麻煩。
圖9 Module1 Use Case Diagram
圖10 在UML Model Explorer中完整的物件結構
5 與Work Item的結合
透過Work Item,我們還可以跟之前的專案規劃WBS連接起來,系統分析師可以依此回報工作進度與工作產出,以及追蹤需求間的關係與變化。
在UML Model Explorer裡,對Use Case按右鍵選 Create Work Item -> User Story,如此Use Case會與User Story Work Item連接起來,User Story您可以視作需求的集中管控點,相關文件、異動、關係都能方便管理,如下圖,您甚至可以規劃相關的Test Cases。
圖11 User Story Work Item
圖12 Use Case相關Work Item查詢
此外系統分析產出的文件可納入TFS Version Control,以追溯所有版本的變化。
6 結語
筆者發現一個問題,OOSA須產出系統分析書給客戶確認,總不能要客戶也裝VS才能開,目前筆者沒有找到直接的方法可以產生這樣的文件,若真的沒辦法,只有苦功一個個Diagram、文件自行整理了。
透過Work Item,我們還可以跟之前的專案規劃WBS連接起來,系統分析師可以依此回報工作進度與工作產出,以及系統分析產出的文件可納入TFS Version Control,以追溯所有版本的變化。此外,OOSA的產出可作為發展Test Case的主要來源。
本文採用OOAD方法論參考自中山大學吳仁和老師的方法論(http://www.bestwise.com.tw/user_book_data.asp?sel_serial_id=1416)。
若讀者有興趣想詳細了解如何導入此方法論,可以洽詢鼎升資訊科技(http://www.dands.com.tw/products/ai.htm),他們有提供導入服務。
下一篇筆者會介紹如何運用Class Diagram、Sequence Diagram等進行OOSD。