物件導向系統分析與VSTS2010

物件導向系統分析與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流程分為下列六個步驟:

 

image

圖1 OOSA流程圖

 

筆者以一個計算器範例來說明,需求條列如下:

  • 使用者可以輸入被運算欄位。
  • 使用者選擇”+”、”-“、”*”、”/”。
  • 使用者可以輸入運算欄位。
  • 使用者按[進行運算]鈕後得到最後運算結果。

3 建立Modeling Project

在Visual Studio 2010之Menu,選擇 File -> New -> Project -> Modeling Projects -> Modeling Project,命名如”DemoModeling”

clip_image009

圖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”,如下圖:

clip_image011

圖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”,繪製結果如下:

clip_image013

圖4 Calculation Activity Diagram

 

接著將此Diagram拖曳至Calculation. Usecasediagram,並透過Dependency連結起來,如下圖:

clip_image015

圖5 Use Case連結Activity Diagram

 

4.4 繪製Blueprint

Blueprint其實就是使用者介面的展現,即系統靜態的部份,有很多方式可以應用,如您可以直接利用Visual Studio 拉出系統畫面,完成後您可以將Blueprint加入您的專案,在Solution Explorer -> Module1按右鍵選 Add -> Existing Item,將Blueprint文件加入,接著將此文件拖曳至Calculation. Usecasediagram,並透過Dependency連結起來,如下圖:

clip_image017

圖6 Blueprint範例

clip_image019

圖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,並連接起來,結果如下:

clip_image021

圖8 完整的Calculation.usecasediagram

4.6 繪製Use Case Diagram

最後我們可以依模組將相關的Use Case彙總成Use Case Diagram,在此Diagram可以展現Use Case、Actor之間的關係。其實依筆者經驗,一般使用者是看不懂Use Case Diagram的,所以這張圖是用於後續系統設計參考,請不要拿給一般使用者看,不然您會自找麻煩。

clip_image023

圖9 Module1 Use Case Diagram

clip_image025

圖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。

clip_image002

圖11 User Story Work Item

clip_image004

圖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。

範例下載:VSTS2010初探_part 6 Draft 1_src.zip