加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
Visual Studio 2010 Ultimate ─ 軟體品質與團隊效率(1)
輕鬆建構軟體藍圖
文/歐宣修

Microsoft Visual Studio 2010將模型工具部份全部翻新,把原本Visual Studio Team System 2008 Architecture Edition包含的Application Designer、System Designer、Logical Datacenter Designer、Deployment Designer,作用於塑模非功能性需求(Non-functional Requirement)全部拿掉了!改成支援目前主流的UML based的物件導向系統分析設計(Object Oriented System Analysis and Design)方法論,用於塑模功能性需求,以及逆向工程會用到的一些實用圖形。雖然筆者認為UML based分析方法比較適用於Projected-based型態專案開發,或是Product-based型態專案初期開發,但是可以肯定的是,已能符合多數系統分析設計的需求。

相較於其它繪製UML工具,使用Visual Studio 2010最大的好處,即在於功能已被內建在Ultimate企業旗艦版中,塑模、架構設計、程式開發都在同一個IDE下,用慣了Visual Studio的開發人員,無需使用其它工具並重新熟悉。

其次是UML圖形可與Team Foundation Server的工作項目(Work Item)結合,使用者需求與實際開發的工作,或測試案例都可連結在一起,如此一來當專案的需求變更時,可以很容易追蹤到會影響的工作項目,進而提升專案管理的能力。

目前Visual Studio 2010可以繪製如活動圖表(Activity Diagram)、元件圖表(Component Diagram)、類別圖表(Class Diagram)、順序圖表(Sequence Diagram)、使用案例圖表(Use Case Diagram)等圖形,雖然不是支援所有UML圖形,但是這些經典的圖形用於系統分析與設計已經足夠。


物件導向系統分析
如圖1中,我們可以將塑模過程的產出,集中管理在一個專案。在物件導向系統分析方面,首先從使用案例(Use Case)出發,用於將你的客戶需求加入分類,如圖2。


圖1:專案設定。



圖2:依模組彙整的使用案例圖表(Use Case Diagram)。


透過UML模型總管(Model Explorer)(圖3),可以階層式管理你的模組、使用案例,你可以進一步描述動態的系統流程,活動圖便是很好用的圖形,如圖4。至於靜態的使用者介面描述,令入印象深刻的工具莫過於SketchFlow。


圖3:在UML模型總管中完整的物件結構。



圖4:活動圖表範例。



利用SketchFlow展現使用者需求
SketchFlow是Microsoft Expression的新功能,透過它你可以從使用者介面從十分抽象的手繪畫面開始,如圖5,逐漸演化成具體的Silverlight或WPF控制項。過程當中,你甚至可以將所有畫面串連起來,製作成動畫,讓使用者更能直覺感受到系統未來運作流程,以協助確認使用者介面需求。並且在整個使用者介面演進過程,轉換出不同的產出,如產生Word文件,製作正式的系統分析規格書。(圖6)


圖5:透過SketchFlow製作使用者介面初稿。



圖6:SketchFlow運用流程。



物件導向系統設計
接下來是物件導向系統設計,依據物件導向系統分析結果加入衍伸,產生產品需求,因為兩者重點不同,系統分析重點在於了解使用者的需求,所以我們所運用的圖形必須貼近一般使用者,而系統設計則是在於告訴開發人員如何實作系統以符合使用者的需求,UML類別圖表用於描述系統靜態結構,有那些類別、介面、作業、屬性等。(圖7)


圖7:UML類別圖表範例。


靜態結構完成後,接下來描述動態部份。Visual Studio的順序圖表能直接運用UML類別圖表裡的類別與作業,如圖8。通常順序圖表用於交代一段連續程式流程,讓系統的靜態與動態流程是緊密結合的,在過去的Visio UML圖形是辦不到的。


圖8:順序圖表範例。



Work Item的結合
在Visual Studio 2010,工作項目(Work Item)已經能支援多階層,所以專案經理可以將專案工作拆解成工作分解結構(Work Breakdown Structure),系統分析師、系統設計師依此回報工作進度與工作產出,以及追蹤需求間的關係與變化。

如此使用案例會與使用者本文(User Story)工作項目(Work Item)連接起來,使用者本文(User Story)你可以視作需求的集中管控點,相關文件、異動、關係都能方便管理,如圖9,你甚至可以規劃後續測試所需的測試案例(Test Cases)(圖10)。


圖9:使用者本文(User Story)工作項目(Work Item)。



圖10:使用案例(Use Case)相關工作項目(Work Item)查詢。



逆向工程
很多時候,我們可能需接手別人的專案,但可能缺乏部份或甚至根本無法取得相關系統文件,但透過逆向工程,我們就能夠從一堆程式碼中找出系統的主要結構,反向產出部份的系統分析設計文件,協助我們了解系統架構。

Visual Studio 2010能應用的Reverse Engineering類型可分為靜態與動態,靜態指的是整個程式碼的靜態結構,如組件或類別間的關係;動態則是程式碼執行的順序,如某個程式碼區段相關方法之呼叫順序。


圖層圖表(Layer Diagram)看軟體結構
至於系統靜態部份,我們可以運用圖層圖表,它可以讓我們以高階角度來看整個軟體結構,細膩度你可以自由選擇,從專案、Namespace、類別,到方法皆可,Visual Studio 2010會自動幫你找出這些元件的關係,並且後續進行驗證工作。例如從方案總管(Solution Explorer)展現的元件或物件,透過「產生相依性(Generate Dependencies)」功能建立圖層圖表,它們之間的關係如圖11會自動被建立。


圖11:圖層圖表範例。


接下來我們可以定義每個圖層包含什麼工作產品(Artifact),很簡單,你可以直接拖曳相關文件至對應圖層,然後對圖層按右鍵選擇「檢視連結(View Links)」,即可檢視此相關工作產品。(圖12)


圖12:圖層總管(Layer Explorer)。


最後要說明的是,圖層圖表基本上為一Snapshot(快照)圖形,後續即使你程式碼有了更動,圖形並不會自動跟著更新,所以你必須定期執行「驗證架構(Validate Architecture)」,以驗證目前系統實際架構與此圖層圖表是否一致。(圖13)


圖13:驗證架構(Validate Architecture)結果。



架構總管(Architecture Explorer)與相依性圖形(Dependency Graph)
架構總管(Architecture Explorer)可以讓我們從特定點出發,追?相關類別、方法、成員間的關係,如圖14;相依性圖形(Dependency Graph)則是可協助了解程式碼的結構與關係,你可以透過架構總管產生相依性圖形,它提供多種展現方式,如由上而下(圖15)、由左而右、追溯矩陣(圖16)等方式。


圖14:架構總管之類別檢視。



圖15:由上而下展現的相依性圖形。



圖16:追溯矩陣展現的相依性圖形。



從程式碼產生順序圖
順序圖可直接繪製程式動態流程,也能透過逆向工程,依選擇程式碼片段來自動產生此圖形。你可以在Visual Studio 2010裡選擇某段你有興趣的程式碼片段,按右鍵選擇「產生順序圖表」,如圖17,即可產生(參考圖18)。


圖17:產生順序圖表選項



圖18:從程式碼產生的順序圖。



結語
Visual Studio 2010已能支援主要的UML圖形,協助我們進行物件導向系統分析與設計。SketchFlow能讓我們能製作從簡單至真實的使用者介面。針對逆向工程,微軟想得更多,圖層圖表、架構總管與相依性圖形都是協助我們將現有系統抽象化、圖形化的實用工具。