Visual Studio 2010_塑模化應用程式講座

最近筆者有對公司內部上一些(UML塑模設計 使用 VS 2010) 的相關課程,課程中筆者介紹UML的基本概念與Use Case Diagram基本的Notation使用方式,課後將一些資料再進行整理一下成此篇文章。

在使用Visual Studio 2010進行塑模設計時,有時會以UML類別圖來產生程式碼,且再進行反向工程時會使用現有程式碼進行塑模的建立,以方便檢視現有架構。但這些功能並不是內建在Visual Studio 2010中,必須安裝Visual Studio 2010 Feature Pack2才可以。

在安裝了Visual Studio 2010 Feature Pack2主要是使我們可以進行:

  1. 從 UML 類別圖 產生 程式碼 (Generate Code)。
  2. 從 程式碼 產生 UML 類別圖。
  3. 可匯入經由 XMI 2.1的格式所匯出的UML 類別圖、循序圖 和 使用者案例圖。
  4. 建立和檢視從工作項目到模型項目的連結。
  5. 開始支援為 ASP.NET Web、C 及 C++ 專案產生相依性圖形。
  6. 可以建立和驗證 C 與 C++ 程式碼的圖層圖表。
  7. 可以撰寫自訂程式碼以建立、修改和驗證圖層圖表。

安裝完成Visual Studio 2010 Feature Pack 2之後我們便可以將分析完成的UML Class Diagram使用『Generate Code』產生程式碼,為演示這樣的一個塑模的設計流程,我們以一個簡單的Shopping網站為例。範例中會使用一些簡單的OOA & OOD的分析方法。

在進行塑模設計之前我們先來看一下這個Shpooing網站的Scenario (情境):

顧客至Shopping網站購物,首先會瀏覽型錄,決定商品後放入購物車,結帳,並填寫送貨單,包含送貨地址、收件人等資訊,始完成訂購。

接著:

(依照上方情境畫出Shopping 的Use Case)

image

一般來說使用OOA找出Domain物件的分析方式就是直接在Use Case裡找出所謂的『名詞』物件,此又俗稱名詞分析法,這是一個比較簡單的方式。

在顧客Shopping的情節(Scenario)中,我們可以找出會有『顧客』、『購物車』、『商品』、『交易紀錄』、『送貨單』、 『送貨地址』、 『收件人』等名詞(物件)。

分析的方法:在Use Case中顧客會瀏覽型錄,確定商品後會放入購物車中,瀏覽型錄不一定會購買,放入購物車為顧客會執行的一個動作,所以購物車為一個物件,而在購物車的物件當中應該會有一個”放入購物車”的作業(Operation),且傳入”商品”物件。在情節當中找出屬於子類型的名詞(屬性),通常不會一次全找出,有些一定會存在的如:顧客一定會有姓名等資訊。

先找出所謂的領域模型,其實就是一種初步的類別圖,又可稱為Domain Class Diagram。也為一種Conceptual Modeling。
再重複一次:在Scenario中出現的名詞、詞組通常都會是在Conceptual Modeling淺在的類別/物件或屬性。當然,這時候我們通常會再過濾掉一些不必要的名詞 (如:同義詞、補助詞) 等等。接著找出所謂的後選類別,並考慮其中的連結關係(Association),要包括多重性(如:一對多、多對一、多對多..等關係)

此時,根據候選類別可以找出如下的Domain Class Diagram,此時為概念性Conceptual Modeling所以還未具備任何屬性:

image

接著我們再繼續檢視類別的完整性,補足遺漏的類別。文件中規範的條件或限制一併考慮進來。決定名詞項目類別或是屬性。通常之前收集到的名詞項目均被定義為獨立的類別,但有時它可能是依附在某個類別下的屬性。然而,除非能夠確定該名詞項目所代表的只是一個數值或字串,否則最好還是將該名詞項目當成類別。

進一步檢視的結果:剛才的『送貨地址』、 『收件人』應為『送貨單』類別的屬性,而顧客應該要有姓名等資訊。推導出循序圖(Sequence Diagram),物件間作業的關係,完成合理的流程。

回到前面敘述之Scenario,顧客瀏覽商品,將商品置入購物車並結帳填寫送貨單等,這是一連串的動作與流程。使用Sequence Diagram我們便可輕易的推導出各個物件需要實作什麼作業(Operation/Method)以便可以完成一連串的工作。一般來說不只一個流程,因此在實際的分析方式會By功能來進行分析,這有許多不同的角度,也要視實際計統需求而定,從Use Case的角度來說,可說就是該Use Case的參與者會進行的動作。

因此顧客購物的Sequnce Diagram結果如下:

image

經由Sequence Diagram進一步檢視的結果,我們發現各個物件會需要哪些(Operation/Method),比如:商品會需要GetGoodsName()、購物籃會有InsertGood()等方法等等,因此此時類別圖變會成如下:

image

現在可以開使產生程式碼。在安裝了Visual Studio 2010 Feature Pack 2後,在UML Class Diagram途中按下滑鼠右鍵會有 [Generate Code]選項:

image

接著先使用預設的Class類別方式,如下圖:

image

此時Visual Studio 2010會建立一個GenerateCodeModelingTestProject的Library專案,包含UML Class Diagram的程式碼框架,如下圖,這時可以由Program撰寫所需要的程式碼。

image

如上範例展示了以Visual Studio 2010進行塑模設計的方法,下次有機會筆者再介紹更深入的部分,謝謝各位。

留言

這個網誌中的熱門文章

什麼是 gRPC ?

什麼是 gRPC(二)- 來撰寫第一個 Hello World 吧!

常見的程式碼壞味道(Code Smell or Bad Smell)