摘要:UML(統(tǒng)一建模語言)是軟件工程領(lǐng)域的一種建模語言,是在多種面向?qū)ο蠼7椒ǖ幕A(chǔ)上發(fā)展起來的。UML現(xiàn)在已成為軟件企業(yè)事實上的工業(yè)標(biāo)準(zhǔn)。UML采用元模型對其進(jìn)行描述,它是4層元模型體系結(jié)構(gòu)模式中的一層。此模式還有另外三個層次,分別是元-元模型層、模型層和用戶對象層。UML既有其無可比擬的優(yōu)勢,也存在一些不足,在未來發(fā)展中UML定能揚長避短發(fā)揮其優(yōu)勢。
關(guān)鍵詞:UML對象建模元模型模型層用戶對象層
1 UML的提出
UML是軟件工程領(lǐng)域的一種建模語言,是在多種面向?qū)ο蠼7椒ǖ幕A(chǔ)上發(fā)展起來的。在1995年,Gray Booch和Janes Rumbaugh將他們的面向?qū)ο蠼7椒ńy(tǒng)一為Unified Method V0.8。一年之后Ivar Jacobson加入其中,共同將該方法統(tǒng)一為二義性較少的UML 0.9。同時,這三位杰出的方法學(xué)家被稱為“三友(Three Amigos)”。很快用戶也認(rèn)識到可對軟件系統(tǒng)進(jìn)行可視化、描述、構(gòu)造和文檔化的通用建模語言所帶來的益處。他們充滿激情地將這種語言的早期草案應(yīng)用于不同的領(lǐng)域。受用戶強(qiáng)烈需求的驅(qū)動,建模工具廠商也很快在它們的產(chǎn)品中加入了對UML的支持。UML成了事實上的工業(yè)標(biāo)準(zhǔn)。1996年,一個由建模專家組成的國際性隊伍“UML伙伴組織”開始同“三友”一起工作,計劃將UML提議作為OMG(Object Management Group)的標(biāo)準(zhǔn)建模語言。1997年1月,伙伴組織向OMG提交了最初的提案UML 1.0。經(jīng)過了九個月的緊張修訂,于1997年9月提出了最終提案UML 1.1,這個提案在1997年11月被OMG正式采納為對象建模標(biāo)準(zhǔn)。在一個規(guī)范被采納后不久,將成立一個修訂任務(wù)組,負(fù)責(zé)該規(guī)范的修訂。1997年9月,OMG采納UML 1.1規(guī)范之后不久,特許成立了第一個UML修訂任務(wù)組(Revision Task Forces,RTF),負(fù)責(zé)收集有關(guān)評論,并且提出修改建議。該RTF提交的第一個主要產(chǎn)品是一個編輯版本UML 1.2,它改編了規(guī)范,使之與其他OMG規(guī)范更為一致。盡管這一版本糾正了印刷和語法錯誤,以及某些明顯的邏輯上的不一致,但還是沒有涉及對重要技術(shù)的改進(jìn)。該RTF的第二個主要的產(chǎn)品是其技術(shù)版本UML 1.3,它修正和改善了UML 1.1的遺留問題,并矯正了在此之后發(fā)現(xiàn)的許多小錯誤。該RTF一致推薦OMG批準(zhǔn)其UML 1.3最終草案,并于1999年6月提交了一份最終報告。被推薦的規(guī)范隨后被提交給組織委員會和平臺技術(shù)委員會以獲得批準(zhǔn)。
2 UML體系結(jié)構(gòu)演變
UML采用元模型對其進(jìn)行描述,它是4層元模型體系結(jié)構(gòu)模式中的一層,其他層次分別是元-元模型層、模型層和用戶對象層。其中元模型層由元-元模型層導(dǎo)出,UML的元-元模型層在OMG MOF的元-元模型中定義,而UML元模型中的元類是MOF元-元類的實例。
元模型的體系結(jié)構(gòu)模式可以用來定義復(fù)雜模型所要求的精確語義,這種復(fù)雜模型通常需要被可靠地保存、共享、操作以及在工具之間進(jìn)行交換。它具有如下特點。①它在每一層都遞歸地定義語義結(jié)構(gòu),從而使語義更精確、更正規(guī)。②它可以用來定義重量級和輕量級擴(kuò)展機(jī)制。③它在體系結(jié)構(gòu)上將UML元模型與其他基于4層元模型體系結(jié)構(gòu)的標(biāo)準(zhǔn)(比如MOF和用于模型交換的XMI Facility)統(tǒng)一起來。
在元模型層,UML元模型又被分解為3個邏輯子包:基礎(chǔ)包、行為元素包和模型管理包。其中基礎(chǔ)包是描述模型靜態(tài)結(jié)構(gòu)的語言底層結(jié)構(gòu),支持類圖、對象圖和構(gòu)件圖和部署圖等結(jié)構(gòu)圖。行為元素包是描述模型動態(tài)行為的語言上層結(jié)構(gòu),支持不同的行為圖。模型管理包則定義了對模型元素進(jìn)行分組和管理的語義,它描述了幾種分組結(jié)構(gòu),包括包、模型和子系統(tǒng)。行為元素包和模型管理包都依賴于基礎(chǔ)包。
UML 1.3是建模語言規(guī)范第一個成熟的發(fā)布。它糾正并調(diào)整了從UML 1.1中繼承下來的遺留問題,而且修正了最終提交后的一年來所發(fā)現(xiàn)的大多數(shù)錯誤。
解決UML 1.1的遺留問題:①完善活動圖的語義和表示法增加了狀態(tài)的動態(tài)激發(fā)語義,定義了執(zhí)行條件線程的語義和表示法,而且增加了對象流功能。為了做這些修訂,還需要對活動圖所依賴的狀態(tài)機(jī)語義做以下修改:為同步并發(fā)的活動加入“同步狀態(tài)”、精化信號的語義、為合并狀態(tài)轉(zhuǎn)換定義附加的偽狀態(tài)。②清理關(guān)系的標(biāo)準(zhǔn)元素。引入關(guān)系元類來組織各種類型的關(guān)系,并且把依賴構(gòu)造型改造為依賴和流。依賴和其他關(guān)系名稱的一致性也有所改進(jìn)。③體系結(jié)構(gòu)的一致性。通過加入物理元模型和XMI(XML metadata Interchange)、DTD(Document Type Definition)定義,提高了UML l.3元模型的體系結(jié)構(gòu)跟MOF和XMI Facility的一致性。從UML語義邏輯元模型導(dǎo)出的物理元模型包含了一些支持產(chǎn)生IDL(Interface Definition Language)和XMI DTD的修改(例如將關(guān)聯(lián)類轉(zhuǎn)化為類)。
其他變化:①靜態(tài)結(jié)構(gòu)圖。放寬了限制,使類和接口之間可以關(guān)聯(lián),并且在類中可以聲明信號。信號被定義為一個類元,可以操作。另外,還重新定義了模板和強(qiáng)類型的語義。②用例圖。用例之間的關(guān)系被重新定義為三種主要類型:泛化、包含和延伸。③交互圖。放寬了限制,使用戶可以描述角色或?qū)嵗6覅f(xié)作也可以泛化。④模型管理圖。改進(jìn)了模型和子系統(tǒng)的語義和表示法,將它們從包中分離出來,并使之更容易使用。澄清了對包的訪問和引入權(quán)限的區(qū)別。
盡管UML規(guī)范的核心是語法和語義定義,但它還包括模型交換、語言擴(kuò)展以及約束等方面的定義。UML 1.3對這些相關(guān)規(guī)范都進(jìn)行了錯誤糾正,并使之與核心語言的改進(jìn)保持一致。
為UML 2.0確立路標(biāo):該RTF在最終報告中明確了因為超出其范圍或時間不允許而不能做的各種改進(jìn)。他們建議下一個RTF應(yīng)特別注意擴(kuò)展性和文檔管理方面的問題。對目前的擴(kuò)展機(jī)制,用戶和工具開發(fā)商已經(jīng)發(fā)現(xiàn)了一些重要問題,而涌入新UML外圍的提案可能會加劇這些困難。在文檔管理方面,物理元模型和XMI DTD規(guī)范的加入大幅度地增加了UML規(guī)范的長度,并使它變得笨拙難用。下一次UML修訂將會把物理建模規(guī)范拆分為單獨的文檔。
該RTF還進(jìn)一步建議負(fù)責(zé)起草UML 2.0 RFP的工作組考慮以下問題:①體系結(jié)構(gòu):使用嚴(yán)格的元模型方法定義一個與MOF元一元模型嚴(yán)格一致的物理元模型。給出改進(jìn)的指導(dǎo)方針,以決定哪些部分應(yīng)該定義在核心語言中,哪些部分應(yīng)定義在UML的外圍或標(biāo)準(zhǔn)模型庫中。②擴(kuò)展性:提供同4層元模型體系結(jié)構(gòu)一致的擴(kuò)展機(jī)制。提高外圍規(guī)范的嚴(yán)密程度,使其支持用戶對語言定制能力不斷增加的要求。③構(gòu)件:增強(qiáng)基于構(gòu)件的軟件開發(fā)的語義和表示法。④關(guān)系:提供“精化”和“追蹤”依賴關(guān)系的基本語義。在多個抽象層次上定義關(guān)聯(lián)的語義。⑤狀態(tài)圖和活動圖:定義獨立于狀態(tài)圖語義的活動圖語義。在活動圖和狀態(tài)圖中提供更隨意的并發(fā)。詳細(xì)說明狀態(tài)機(jī)的泛化。⑥模型管理:重新定義模型和子系統(tǒng)的表示法和語義,以增強(qiáng)對企業(yè)體系結(jié)構(gòu)視圖的支持。⑦總體機(jī)制:定義一種模型版本管理的機(jī)制。詳細(xì)說明圖的互換機(jī)制。
3UML的應(yīng)用與未來
UML是在多種面向?qū)ο蠼7椒ǖ幕A(chǔ)上發(fā)展起來的軟件建模語言,在軟件領(lǐng)域使用很廣泛。從UML面世以來,便引起了計算機(jī)業(yè)界的重視,OMG的采納和大公司的支持把它推上了事實上的工業(yè)標(biāo)準(zhǔn)的地位,使它擁有越來越多的用戶。它被廣泛地用于應(yīng)用領(lǐng)域和多種類型的系統(tǒng)建模。近幾年以來,UML還被運用于軟件再工程、質(zhì)量管理、過程管理和配置管理等方面。
對UML的討論和評價,無論是在Internet上的交流討論,還是UML研討會,或是學(xué)術(shù)期刊上發(fā)表的文章,都是既肯定其成績,又指出其缺點和錯誤,并且積極地給出建設(shè)性意見。總的來說:①UML取得重要成功是毋庸置疑的,它已成為在軟件工業(yè)中占主導(dǎo)地位的建模語言,并在許多領(lǐng)域的軟件開發(fā)中得到應(yīng)用。②UML還存在一些問題,自它產(chǎn)生之日起就從未離開過批評:用戶和教師抱怨它內(nèi)容龐大、難學(xué)難教而且太過復(fù)雜;學(xué)者認(rèn)為它缺乏一個精練的核心和定義良好的外圍;建模實踐者認(rèn)為它缺少支持自己領(lǐng)域建模要求的機(jī)制;工具開發(fā)商則因為規(guī)范本身的不確定性而產(chǎn)生理解上的偏差。③UML的關(guān)鍵問題是過于龐大和復(fù)雜,以及在語言體系結(jié)構(gòu)、語義等方面仔在理論缺陷。產(chǎn)生這些問題的一個重要原因是在形成規(guī)范的過程中不得不照顧多種方法流派的觀點和多家公司的利益。
盡管存在一些問題,但瑕不掩瑜,UML在未來定會克服不足,揚長避短,為軟件開發(fā)做出有力的支持!
參考文獻(xiàn):
[1]《軟件工程》張海藩.清華大學(xué)出版社.2009.8.
[2]《軟件構(gòu)件技術(shù)》夏榆濱.清華大學(xué)出版社.
[3]《軟件構(gòu)件技術(shù)研究》.賈春花,劉曉英.中國商務(wù)出版社,2010.9.