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