什么是UML
UML(Unified Modeling Language,UML)是一個(gè)通用的可視化建模語(yǔ)言標(biāo)準(zhǔn),用于對(duì)軟件進(jìn)行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)制品的文檔。
提到語(yǔ)言,很多小伙伴開始產(chǎn)生恐懼了,你腦子中可能會(huì)飄過English、Java、C#、PHP等這些神獸,它們可能把不少人折騰的夠嗆。
但UML不是一門程序設(shè)計(jì)語(yǔ)言,而是一種可視化的建模語(yǔ)言。之所以稱它為語(yǔ)言,因?yàn)閁ML提供了用于交流的詞匯及規(guī)則,用戶在這些詞匯與規(guī)則框架下可以對(duì)同一軟件進(jìn)行無(wú)障礙的交流,使各種用戶對(duì)于同一事物產(chǎn)生相同的認(rèn)識(shí)。
這要從上個(gè)世紀(jì)60年代末開始,隨著計(jì)算機(jī)技術(shù)的不斷普及,人們對(duì)軟件的需求量與日俱增,軟件的規(guī)模也在不斷擴(kuò)大,軟件的復(fù)雜度也在日益增加。由于缺乏科學(xué)的理論指導(dǎo),造成軟件的開發(fā)進(jìn)度難以保障,軟件開發(fā)成本在不斷爬升,不斷變化的用戶需求對(duì)無(wú)法保證質(zhì)量的軟件也是雪上加霜,又沒有相關(guān)的文檔資料作為參考,使軟件維護(hù)變得異常困難。人們形象的稱之為軟件危機(jī)。
怎么辦?那必須把軟件開發(fā)工作當(dāng)做工程來干。因此,軟件工程的概念也應(yīng)運(yùn)而生。軟件工程旨在研究軟件生產(chǎn)的客觀規(guī)律,建立軟件生產(chǎn)的有關(guān)概念、原則、方法、技術(shù)和工具,以指導(dǎo)軟件生產(chǎn)活動(dòng)。當(dāng)然取得了令人滿意的效果。
隨著人們對(duì)軟件工程研究的不斷深入,面向?qū)ο蟮某绦蛟O(shè)計(jì)進(jìn)入人們的視野。20世紀(jì)80年代到90年代初,誕生了很多面向?qū)ο蟮姆治雠c設(shè)計(jì)方法,也出現(xiàn)了一大堆介紹面向?qū)ο蠓椒ǖ臅_@有點(diǎn)像百家爭(zhēng)鳴的感覺。
每一位書籍作者都領(lǐng)導(dǎo)者一批實(shí)踐者,這些方法有很多相似之處,但又有細(xì)微的差別。
這給同一領(lǐng)域的實(shí)踐者也帶來困惑,在談?wù)撏皇挛飼r(shí),他們可能拿出不同的面向?qū)ο蟊硎痉椒ǎ@嚴(yán)重阻礙了他們對(duì)同一事物的理解和交流。
這個(gè)時(shí)候,有人提議,我們統(tǒng)一一下,使用相同的標(biāo)準(zhǔn)吧。眾人似乎沒聽到他的呼聲,無(wú)人理睬。有一個(gè)組織叫OMG(Object Management Group)也嘗試著對(duì)面向?qū)ο筮M(jìn)行標(biāo)準(zhǔn)化,但只收到所有方法學(xué)家的一封公開抗議信。這讓Martin Fowler(UML精粹:標(biāo)準(zhǔn)對(duì)象建模語(yǔ)言簡(jiǎn)明指南的作者)想起一則笑話:
A:方法學(xué)家和恐怖分子之間有什么區(qū)別呢?
B:恐怖分子可以談判。
在1995 OOPSLA(Object-Oriented Programming Systems,Languages and Applications)年度會(huì)議上,Grady Booch和Jim Rumbaugh首次公開描述了他們合并后的方法,即統(tǒng)一方法文檔0.8。
經(jīng)過一系列的各方較量,1997年1月,各方組織一起提交了方法標(biāo)準(zhǔn)的建議書,Rational和其他組織一起協(xié)作,發(fā)布了UML文檔1.0版本。這也是第一次被叫做統(tǒng)一建模語(yǔ)言。
又經(jīng)過各方掰手腕的過程,OMG采納1.1版作為官方的OMG標(biāo)準(zhǔn)。又經(jīng)過一系列修改,UML1.4和UML1.5已經(jīng)比較成熟。
很多人們?cè)谡務(wù)揢ML時(shí),會(huì)把創(chuàng)造者的功勞主要?dú)w于Grady Booch、Ivar Jacobson和Jim Rumbaugh,把他們稱為“三友”(Three Amigos)。
![]() |
![]() |
![]() |
| Grady Booch | Ivar Jacobson | Jim Rumbaugh |
當(dāng)然也有人表示了反對(duì),認(rèn)為他們?cè)谇捌谧龀隽艘欢ǖ呢暙I(xiàn),但在后期OMG委員會(huì)的人員做了很多貢獻(xiàn),而三人中Jim Rumbaugh在后期是唯一做出貢獻(xiàn)的人。
(1)方法和表示法方面
在以往出現(xiàn)的方法和表示法方面,UML合并了許多面向?qū)ο蠓椒ㄖ斜黄毡榻邮艿母拍睿瑢?duì)每種概念,UML都給出了清晰的定義、表示法和有關(guān)術(shù)語(yǔ)。使用UML可以對(duì)已有的各種方法建立的模型進(jìn)行描述,并比原來的方法描述得更好。
(2)軟件周期方面
在軟件開發(fā)的生命期方面,UML對(duì)開發(fā)的要求具有無(wú)縫性。開發(fā)過程中的不同階段可以采用相同的一整套概念和表示法,在同一個(gè)模型中,它們可以混合使用,而不必轉(zhuǎn)換概念和表示法。這種無(wú)縫性對(duì)迭代的增量式軟件開發(fā)至關(guān)重要。
(3)在應(yīng)用領(lǐng)域方面
在應(yīng)用領(lǐng)域方面,UML適用于各種領(lǐng)域的建模,包括大型的、復(fù)雜的、實(shí)時(shí)的、分布的、集中式數(shù)據(jù)或計(jì)算的、嵌入式的系統(tǒng)等。
(4)編程語(yǔ)言和開發(fā)平臺(tái)方面
在實(shí)現(xiàn)的編程語(yǔ)言和開發(fā)平臺(tái)方面,UML可應(yīng)用于運(yùn)行各種不同的編程實(shí)現(xiàn)語(yǔ)言和開發(fā)平臺(tái)的系統(tǒng)。
(5)開發(fā)過程方面
在開發(fā)過程方面,UML是一種建模語(yǔ)言,不是對(duì)開發(fā)過程的細(xì)節(jié)進(jìn)行描述的工具。就像通用程序設(shè)計(jì)語(yǔ)言可以進(jìn)行許多風(fēng)格的程序設(shè)計(jì)一樣。
(6)內(nèi)部概念方面
在內(nèi)部概念方面,在構(gòu)建UML元模型的過程中,應(yīng)特別注意揭示和表達(dá)各種概念之間的內(nèi)在聯(lián)系。試圖用多種適用于已知和未知情況的辦法把握建模中的概念,這個(gè)過程會(huì)增強(qiáng)對(duì)概念及其適用性的理解。這不是統(tǒng)一各種標(biāo)準(zhǔn)的初衷,但卻是統(tǒng)一各種標(biāo)準(zhǔn)最重要的結(jié)果之一。
UML的組成可以使用下圖來說明。

|
新聞熱點(diǎn)
疑難解答
圖片精選