UML的規範(Specification )文件分成兩部分,一部分為UML infrastructure(基礎結構),定義UML語言的基礎語法。另一部分是UML Superstructure(上層結構),則是定義使用者延伸的語法。兩者互補而構成完整的UML視覺化語言(Visual Language),兩個規範文件總共大約一千頁左右,一般人大概不會去看的!所以...
這裡推薦兩本對於學習UML有助益的書籍。第一本是「UML精華第三版」,這本可說是僅寫到UML精華之處,對於初學者來說建議瀏覽過一遍有印象就好,後續學習UML更能體會作者所說的奧義,不急著第一次就看懂。第二本是「UML物件導向系統分析與設計」,雖然沒有涵蓋完整的UML內容,但是淺顯易懂平易近人,加上這本書從實務開發上介紹UML讓讀者更有感覺!
(原書名:UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3/E)
目前UML 2.3中定義了14種圖(Diagram),分成結構圖(Structure Diagram)與行為圖(Behavior Diagram)兩大類,如下所述:
- 結構圖(Structure Diagram)
- 類別圖(Class Diagram)
- 合成結構圖(Composite Structure Diagram)
- 元件圖(Component Diagram)
- 配置圖(Deployment Diagram)
- 物件圖(Object Diagram),第一版是實例圖(Instance Diagram)
- 套件圖(Package Diagram)
- 輪廓圖(Profile Diagram)
- 行為圖(Behavior Diagram)
- 活動圖(Activity Diagram)
- 使用案例圖(Use Case Diagram)
- 狀態機圖(State Machine Diagram)
- 互動圖(Interaction Diagram)
- 循序圖(Sequence Diagram)
- 通訊圖(Communication Diagram),第一版是合作圖(Collaboration Diagram)
- 互動概圖(Interaction Overview Diagram)
- 時序圖(Timing Diagram)
這次推薦兩本書籍當中都有提到軟體開發流程和物件導向分析與設計(屬於方法論的部分),UML存在的目的也就是應用在開發、分析與設計之中,若能應用UML於此過程中,我認為學習上將可避免只見樹或只見林的窘境!值得注意的是,UML是創始於Grady Booch, Ivar Jacobson與 James Rumbaugh三位物件導向大師之手(請參考Martin Fowler著的「UML精華第三版」書中1.3節),這是否代表UML只能應用於物件導向程式語言(OOP)之上?
上述所說的是開發方法論所用的描述語言,從工具的角度來看,目前微軟在「Visual Studio 2010 Ultimate 企業旗艦版」工具中已經支援五種最常見的UML Diagram,並且整合程式碼撰寫開發流程,我認為對於UML具有指標性意義(不是紙上談兵而已),這五種UML分別是:
- 行為圖(Behavior Diagram)
- 結構圖(Structure Diagram)
使用案例圖說明使用者與軟體系統之間的關係,而活動圖說明使用案例的運作流程,循序圖則解釋活動圖運作時物件之間的互動情形。軟體系統使用元件圖將系統模組化設計,而每個元件中則包含多個類別組成,這部分由類別圖說明物件的設計。從開發上來看這五個Diagram彼此互相關聯,也難怪Visual Studio 2010會引進使用。
對於未來,期望UML可以順利發展純熟,Martin Fowler提到UML的三個使用方式:草稿(Sketch)、藍圖(Blueprint)、程式語言(Programming Language)。目前大多數都將UML使用於設計草稿,藍圖方式則有賴於友善的開發工具配合(如Visual Studio之類),最困難的就是直接將UML當作一種程式語言使用,相信這會是夢想中的軟體開發方式!
###
對於未來,期望UML可以順利發展純熟,Martin Fowler提到UML的三個使用方式:草稿(Sketch)、藍圖(Blueprint)、程式語言(Programming Language)。目前大多數都將UML使用於設計草稿,藍圖方式則有賴於友善的開發工具配合(如Visual Studio之類),最困難的就是直接將UML當作一種程式語言使用,相信這會是夢想中的軟體開發方式!