UML2.0與UML1.x的異同
UML2.0完全建立在UML1.x基礎之上,大多數的UML1.x模型在UML2.0中都可以用。但UML2.0在用例圖、順序圖、活動圖和構件圖都有所改進,特別是改善了結構建模的性能。下面讓我們一起來看一下UML2.0與UML1.x的異同吧。
UML2.0與UML1.x的異同
1.UML簡介
1.1UML的定義
UnifiedModelingLanguage(統(tǒng)一建模語言)是國際對象管理組織OMG制定的一個通用的、可視化建模語言標準,可以用來描述(specify)、可視化(visualize)、構造(construct)和記載(document)軟件密集型系統(tǒng)的各種工件(artifacts,又譯制品)。是當今世界上面向對象系統(tǒng)開發(fā)領域中最激動人心的工具之一。
1.2UML的特點
UML的“通用性”主要是指不僅僅可以用它來描述軟件,而且還可以用它來描述一般企業(yè)或組織的業(yè)務流程以及由軟、硬件共同組成、以軟件為主的復雜系統(tǒng)(即所謂的軟件密集型系統(tǒng)),甚至還包括非軟件系統(tǒng)。
UML的“可視性”是指可以通過UML一系列的圖形符號,組成多種視圖(view)來直觀、清晰地表達系統(tǒng)分析設計中方方面面的、許多復雜的概念。UML主要是為了人的閱讀和使用而設計的,所以它采用了半形式化的,易于人們理解、交流的形式。
UML是一種分析設計專用的建模語言,它本身不是編程(programming)語言,不能直接執(zhí)行,卻可用它來生成可執(zhí)行的軟件程序。UML是一種抽象層次比C、C++、Java、VB、Delphi等文本高級語言更高的圖形語言,通過它我們可以抽象地表示用高級編程語言編寫的文本程序的邏輯結構和行為。相比傳統(tǒng)的第三代、第四代高級編程語言(3GL、4GL),UML能夠更加高效、準確地反映軟件設計的方案和思路,在當代軟件工程中是真正用來“設計程序”(designprograms)的語言。從這個意義上看,不妨稱UML為“甚高級”或第五代程序設計語言(5GL)。
UML基本上不能算作全新的發(fā)明,它并非學者教授、科研機構的最新研究成果,而是直接來自于產業(yè)界、工程界的實踐總結,是在歸納基礎上進行理論升華的產物,其核心內容反映了30多年來全球軟件工業(yè)的領導者在軟件設計構造領域的最佳實踐和成功經驗,因而具有很高的實用價值。
實踐證明,作為對象技術的核心,面向對象分析設計(OOAD)方法比傳統(tǒng)方法能更加準確、全面地描述物理現(xiàn)實世界和由邏輯概念構成的軟件世界。UML是用來表述OO概念的一種語言工具,而很奇妙,它本身作為一件產品同樣也是由世界級的軟件大師們用OO方法設計出來的,這使得UML具有傳統(tǒng)建模語言所不具備的極強的語義表達能力和非常靈活的可擴展性。
2.UML1.x與UML2.0比較
UML2.0完全建立在UML1.x基礎之上,大多數的UML1.x模型在UML2.0中都可用。但UML2.0在結構建模方面有一系列重大的改進,包括結構類、精確的接口和端口、拓展性、交互片斷和操作符以及基于時間建模能力的增強。
2.1UML的版本
UML1.x從1997年發(fā)布的UML1.0到2003年3月發(fā)布1.5版本,而UML2.x由2004年發(fā)布2.0版本,至今最新的版本已是UML2.1。
2.2UML2.0的新特點
UML2.0標準有以下特點:
◆first-class的擴展機制允許建模人員增加自己的元類(metaclass),從而可以更加容易地定義新的UMLProfile,將建模擴展到新的應用領域。
◆對基于組件開發(fā)的內置支持簡化了基于EJB、CORBA組件或COM+的應用建模;對運行時架構的支持允許在系統(tǒng)的不同部分進行對象和數據流建模;對可執(zhí)行模型(executablemodel)的支持也得到了普遍加強。
◆對關系更加精確的表示改進了繼承、組合和聚合以及狀態(tài)機的建模。
◆行為建模方面,改進了對封裝和伸縮性的支持,去掉了從活動圖到狀態(tài)圖的映射(注:活動圖不再是一種特殊的狀態(tài)圖),并改進了順序圖的結構。
◆對語言的句法和語義的簡化,以及整體結構上更好的組織。#p#
2.3UML2.0的組成的變化
UML2.0解決了用戶在使用UML1.x過程中所遇到的一些問題。下面我就針對uml2.0上層的變化作一個簡要的說明。
2.3.1用例圖
用例圖中的主體內容用例、參與者、通信關聯(lián)并沒有變化。不過如果用UML1.x,則只能用用例圖所歸屬的包來表達一組用例的邏輯組織關系,即用用例在模型中所處的物理位置表達邏輯組織關系。在UML2.0中,為每個用例增加了一個稱為“Subject”的特征,這項特征的取值可以作為在邏輯層面劃分一組用例的一項依據。用例所屬的“系統(tǒng)邊界”就是“Subject”的一種典型例子。
2.3.2順序圖
順序圖是最常用的一種圖示。我們用它來描述對象間的交互關系,著重體現(xiàn)交互的時間順序。
對于順序圖,UML2.0主要做了三大改進。
1.允許順序圖中明確的表達分支判斷邏輯。我個人認為這是一種非常實用的功能,能夠將以前要通過兩張圖才能表達的意思通過一個圖就表達出來了。但這并不意味著順序圖擅長表達這種邏輯,所以并不需要在順序圖中展現(xiàn)所有的分支判斷邏輯。
2.允許“縱向”與“橫向”地對順序圖進行拆分與引用。這就解決了以前一張圖由于流程過多造成幅面過大瀏覽不便的困難。
3.提供了一種新圖,稱為“交互縱覽圖”(InteractionOverviewDiagram),可以直觀地表達一組相關順序圖之間的流轉邏輯。以前遇到這種情況通常只能通過活動圖間接表達。
2.3.3活動圖
活動圖也是比較常用的一種圖示,接近于流程圖。
在UML2.0中,活動圖增加了許多新特性。例如泳道可以劃分層次,增加豐富的同步表達能力,在活動圖中引入對象等。
2.3.4構件圖
構件圖是在物理層面對系統(tǒng)結構及內容的直觀描述,最接近于通常意義上的模塊結構圖。
在UML2.0中,構件圖有比較明顯的改進。構件本身內容的表述更清晰,包括構件所提供的接口、所要求的接口、蓋構件所實現(xiàn)的類(邏輯內容)、以及蓋構件所對應的具體“制品”(artifact,即物理內容)。構件之間的依賴關系通過“組裝連接器”(assemblingconnector)更加明確地表達。其實構件圖的改進在一定程度上得益于UML2.0新引入的另一種圖以及相關的概念表述,即“組合結構圖”(compositestructurediagram)。
2.3.5新增加的圖
在表述結構的圖中,現(xiàn)增加了“包圖”(Packagediagram)和“組合結構圖”。“包圖”展現(xiàn)模型要素的基本組織單元,以及這些組織單元之間的依賴關系,包括引用關系(PackageImport)和擴展關系(PackageMerge)。在通用的建模工具中,一般可以用類圖描述包圖中的邏輯內容。“組合結構圖”描述系統(tǒng)中的某一部分(即“組合結構”)的內部內容,包括該部分與系統(tǒng)其他部分的交互點,這種圖能夠展示該部分內容“內部”參與者的配置情況。“組合結構圖”中引入了一些重要的概念:例如“端口”(port),“端口”將組合結構與外部環(huán)境隔離,實現(xiàn)了雙向的封裝,既涵蓋了該組合結構所提供的行為(PrrovidedInterface),同時也指出了該組合結構所需要的服務(RequiredInterface);再如“協(xié)議”(protocol),基于UML中的“協(xié)作”(collaboration)的概念,展示那些可服用的交互序列,其實質目的是描述那些可以在不同上下文環(huán)境中復用的協(xié)作模式。“協(xié)議”中所反映的任務由具體的“端口”承擔。
在表述行為的圖中,新增加了“交互縱覽圖”(InteractionOverviewDiagram)以及“計時圖”(TimingDiagram)。前面已經介紹過“交互縱覽圖”的內容與作用。“計時圖”是一種可選的交互圖,展示交互過程中的真實時間信息,具體描述對象狀態(tài)變化的時間點以及維持特定狀態(tài)的時間段。
3.本文小結
UML2.0的內容遠比前面介紹的要多。但是最重要的一點是,UML1.x模型在大部分情況下都將繼續(xù)有效。而其他需要提及的三大重要事項如下:
第一,交互框圖將活動框圖和順序框圖結合在一起,使活動框圖成為了一系列順序框圖的“主框圖”。
第二,在UML1.x中,活動框圖和狀態(tài)框圖具有同樣的語義。換句話說,它們表達同樣的事情,但用了不同的標記。在UML2.0中,活動框圖是基于Petri網絡令牌語義,而不是基于有限狀態(tài)自動控制,因此更具有表現(xiàn)力。雖然它對計算算法不是很重要,但是對過程建模很有幫助。
第三,UML2.0包含了表示結構元素(對象)之間數據流動的流程框圖(FlowDiagrams)。它與協(xié)作框圖(collaborationdiagram)中的信息流動類似,但不完全相同。
【編輯推薦】