歷史
統一建模語言(UML,UnifiedModelingLanguage)是面向對象軟體的標準化建模語言。UML因其簡單、統一的特點,而且能表達軟體設計中的動態和靜態信息,目前已成為可視化建模語言的工業標準。在軟體無線電系統的開發過程中,統一建模語言可以在整個設計周期中使用,幫助設計者縮短設計時間,減少改進的成本,使軟硬體分割最優。UML的演化可以分為幾個階段:
第一階段是3位面向對象(OO,Object-Oriented)方法學家Booch、Rumbaugh和Jacobson共同努力,形成了UML0.9;
第二階段是公司的聯合行動,由十幾家公司(DEC、HP、I-Logix、IBM、Microsoft、Oracle、TI、RationalSoftware等)組成了UML成員協會,將各自意見加入UML,以完善和促進UML的定義工作,形成了UML1.0和1.1,並向對象管理組織(OMG,ObjectManagementGroup)申請成為建模語言規範的提案;
第三階段是在OMG控制下對版本的不斷修訂和改進,其中UML1.3是較為重要的修訂版。
UML由3個要素構成:UML的基本構造塊、支配這些構造塊如何放置在一起的規則和運用於整個語言的公用機制。
UML有3種基本的構造塊:事物、關係和圖。
事物是對模型中最具有代表性的成分的抽象,包括結構事物,如類(Class)、接口(Interface)、協作(Collaboration)、用例(UseCase)、主動類(ActiveClass)、組件(Component)和節點(Node);行為事物,如互動(Interaction)、態機(Statemachine)、分組事物(包,Package)、注釋事物(註解,Note)。
關係用來把事物結合在一起,包括依賴、關聯、泛化和實現關係。
主要內容
UML是在Booch、OMT、OOSE等面向對象的方法及其它許多方法與資料的基礎上發展起來的。UML表示法集中了不同的圖形表示方法,剔除了其中容易引起的混淆、冗餘或者很少使用的符號,同時添加了一些新的符號。其中的概念來自於面向對象技術領域中眾多專家的思想。
UML從考慮系統的不同角度出發,定義了用例圖、類圖、對象圖、狀態圖、活動圖、序列圖、協作圖、構件圖、部署圖等9種圖。這些圖從不同的側面對系統進行描述。系統模型將這些不同的側面綜合成一致的整體,便於系統的分析和構造。儘管UML和其它開發工具還會設計出許多派生的視圖,但上述這些圖和其它輔助性的文檔是軟體開發人員所見的最基本的構造。其中:
UML用例圖與OOSE中的用例圖類似。
UML的類圖綜合了OMT、Booch等面向對象方法中的類圖。
UML狀態圖是對DavidHarel所提出狀態圖的改進。
UML活動圖的基本語義和狀態圖大致相同,它類似於許多方法(包括面向對象技術之前的一些方法)中的工作流圖。
UML的協作圖是通過對Booch方法的對象圖、Fusion方法的對象互動圖以及其它一些方法中的相關圖表改造而成的。
UML的構建圖和部署圖是在Booch方法中的模組和進程圖(處理關係圖、處理器圖)的基礎上發展起來的。
UML簡化了建模方法,它揚棄了Booch、OMT或OOSE等方法中的糟粕,而代之以其它方法中的精華。UML一般不引入新的概念和符號,只有在沒有現有的解決方法可以借鑑時,UML的開發者們才考慮加入新的概念。UML的開發者們是在設計一種語言(儘管只是一種圖形化語言),因此必須在簡明(所有元素一律用方框和文字表示)和繁瑣(為每個元素設計單獨的符號)之間權衡。儘管如此,UML中還是增添了衍型和擴展機制等一些新的元素,因為這些元素在其它建模語言的實踐中已經被證明是非常有用的。
用例圖主要用來描述用戶、需求、系統功能單元之間的關係。它展示了一個外部用戶能夠觀察到的系統功能模型圖。
【用途】:幫助開發團隊以一種可視化的方式理解系統的功能需求。
類圖顯示了一組類、接口、協作以及他們之間的關係。在UML中問題域最終要被逐步轉化,通過類來建模,通過程式語言構建這些類從而實現系統。類加上他們之間的關係就構成了類圖,類圖中還可以包含接口、包等元素,也可以包括對象、鏈等實例。
對象圖(ObjectDiagram)是顯示了一組對象和他們之間的關係。使用對象圖來說明數據結構,類圖中的類或組件等的實例的靜態快照。對象圖和類圖一樣反映系統的靜態過程,但它是從實際的或原型化的情景來表達的。
對象圖顯示某時刻對象和對象之間的關係。一個對象圖可看成一個類圖的特殊用例,實例和類可在其中顯示。對象也和合作圖相聯繫,合作圖顯示處於語境中的對象原型(類元角色)。
對象圖是類圖的實例,幾乎使用與類圖完全相同的標識。他們的不同點在於對象圖顯示類的多個對象實例,而不是實際的類。一個對象圖是類圖的一個實例。由於對象存在生命周期,因此對象圖只能在系統某一時間段存在。
分類
UML定義了5類,10種模型圖
五種類圖定義
1.用例圖:從用戶角度描述系統功能,並指各功能的操作者。
2.靜態圖:包括類圖,包圖,對象圖。
類圖:描述系統中類的靜態結構
包圖:是包和類組成的,表示包與包之間的關係,包圖描述系統的分層結構
對象圖:是類圖的實例
3.行為圖:描述系統動態模型和對象組成的交換關係。包括狀態圖和活動圖
活動圖:描述了業務實現用例的工作流程
狀態圖:是描述狀態到狀態控制流,常用於動態特性建模
4.互動圖:描述對象之間的互動關係
順序圖:對象之間的動態合作關係,強調對象傳送訊息的順序,同時顯示對象之間的互動
合作圖:描述對象之間的協助關係
5.實現圖:配置圖:定義系統中軟硬體的物理體系結構
十種模型圖定義
(1)、用例圖:展示系統外部的各類執行者與系統提供的各種用例之間的關係
(2)、類圖:展示系統中類的靜態結構
(3)、對象圖:是類圖的一種實例化圖(對象圖是對類圖的一種實例化)
(4)、包圖:是一種分組機制。在UML1.1版本中,包圖不再看作一種獨立的模型圖)
特點
(1)UML統一了各種方法對不同類型的系統、不同開發階段以及不同內部概念的不同觀點,從而有效的消除了各種建模語言之間不必要的差異。它實際上是一種通用的建模語言,可以為許多面向對象建模方法的用戶廣泛使用。
(2)UML建模能力比其它面向對象建模方法更強。它不僅適合於一般系統的開發,而且對並行、分散式系統的建模尤為適宜。
(3)UML是一種建模語言,而不是一個開發過程。
套用領域
UML的目標是以面向對象圖的方式來描述任何類型的系統,具有很寬的套用領域。其中最常用的是建立軟體系統的模型,但它同樣可以用於描述非軟體領域的系統,如機械系統、企業機構或業務過程,以及處理複雜數據的信息系統、具有實時要求的工業系統或工業過程等。總之,UML是一個通用的標準建模語言,可以對任何具有靜態結構和動態行為的系統進行建模。
此外,UML適用於系統開發過程中從需求規格描述到系統完成後測試的不同階段。在需求分析階段,可以用用例來捕獲用戶需求。通過用例建模,描述對系統感興趣的外部角色及其對系統(用例)的功能要求。分析階段主要關心問題域中的主要概念(如抽象、類和對象等)和機制,需要識別這些類以及它們相互間的關係,並用UML類圖來描述。為實現用例,類之間需要協作,這可以用UML動態模型來描述。在分析階段,只對問題域的對象(現實世界的概念)建模,而不考慮定義軟體系統中技術細節的類(如處理用戶接口、資料庫、通訊和並行性等問題的類)。這些技術細節將在設計階段引入,因此設計階段為構造階段提供更詳細的規格說明。
編程(構造)是一個獨立的階段,其任務是用面向對象程式語言將來自設計階段的類轉換成實際的代碼。在用UML建立分析和設計模型時,應儘量避免考慮把模型轉換成某種特定的程式語言。因為在早期階段,模型僅僅是理解和分析系統結構的工具,過早考慮編碼問題十分不利於建立簡單正確的模型。
UML模型還可作為測試階段的依據。系統通常需要經過單元測試、集成測試、系統測試和驗收測試。不同的測試小組使用不同的UML圖作為測試依據:單元測試使用類圖和類規格說明;集成測試使用部件圖和合作圖;系統測試使用用例圖來驗證系統的行為;驗收測試由用戶進行,以驗證系統測試的結果是否滿足在分析階段確定的需求。
總之,標準建模語言UML適用於以面向對象技術來描述任何類型的系統,而且適用於系統開發的不同階段,從需求規格描述直至系統完成後的測試和維護。
發展歷史
1997年,OMG組織(ObjectManagementGroup對象管理組織)發布了統一建模語言(UnifiedModelingLanguage,UML)。UML的目標之一就是為開發團隊提供標準通用的設計語言來開發和構建計算機套用。UML提出了一套IT專業人員期待多年的統一的標準建模符號。通過使用UML,這些人員能夠閱讀和交流系統架構和設計規劃--就像建築工人多年來所使用的建築設計圖一樣。2003年,UML已經獲得了業界的認同。
UML的是要成為一種標準的統一語言,使得IT專業人員能夠進行計算機應用程式的建模。UML的主要創始人是JimRumbaugh、IvarJacobson和GradyBooch,他們最初都有自己的建模方法(OMT、OOSE和Booch),彼此之間存在著競爭。最終,他們聯合起來創造了一種開放的標準。UML成為"標準"建模語言的原因之一在於,它與程式設計語言無關。而且,UML符號集只是一種語言而不是一種方法學。因為語言與方法學不同,它可以在不做任何更改的情況下很容易地適應任何公司的業務運作方式。
UML不是一種方法學,不需要任何正式的工作產品。而且它還提供了多種類型的模型描述圖(diagram),當在某種給定的方法學中使用這些圖時,它使得開發中的應用程式的更易理解。UML的內涵遠不只是這些模型描述圖,但是對於入門來說,這些圖對這門語言及其用法背後的基本原理提供了很好的介紹。通過把標準的UML圖放進工作產品中,精通UML的人員就更加容易加入項目並迅速進入角色。最常用的UML圖包括:用例圖、類圖、序列圖、狀態圖、活動圖、組件圖和部署圖。
UML語言開發始於1994年8月,當時Rational軟體公司的Booch和Rumbaugh著手進行統一的Booch方法和OMT方法,以便以後得到一種統一的建模語言。1995年10月,他們發布了統一方法(UM)的初級版本。同年秋天,Jacobson加盟聯合開發小組,並力圖把OOSE方法也統一進來。
經過Booch、Rumbaugh和Jacobson的努力,UML0.9和0.91版在1996年的6月和10月出版。1996年,OMG(對象管理組)發布了向外界徵集關於面向對象建模標準方法的訊息。UML的3位創始人開始與來自其它公司的軟體工程方法專家和開發人員一道制定了一套OMG感興趣的方法,並設計了一種被軟體開發工具提供者、軟體開發方法學家和開發人員這些最終用戶接受的建模語言。與此同時,其它一些相關人員也在做這項富有競爭性的工作。1997年9月1日產生了UML1.1,並提交到OMG進行討論。
OMG於1997年11月正式接納了UML1.1,然後成立任務組不斷的修訂,並產生了UML1.2、1.3和1.4版本,其中UML1.3是較為重要的修訂版本。該組織正在對UML進行重大修訂,其目標是推出UML2.0,做為向ISO提交的標準方案。
公認的面向對象建模語言出現於20世紀70年代中期。從1989年到1994年,其數量從不到十種增加到了五十多種。在眾多的建模語言中,語言的創造者努力推崇自己的產品,並在實踐中不斷完善。但是,OO方法(Object-OrientedMethod,面向對象的方法)的用戶並不了解不同建模語言的優缺點及相互之間的差異,因而很難根據套用特點選擇合適的建模語言,於是爆發了一場“方法大戰”。20世紀90年代中,一批新方法出現了,其中最引人注目的是Booch1993、OOSE和OMT-2等。
GradyBooch是面向對象方法最早的倡導者之一,他提出了面向對象軟體工程的概念。1991年,他將以前面向Ada的工作擴展到整個面向對象設計領域。Booch1993比較適合於系統的設計和構造。
JamesRumbaugh等人提出了面向對象的建模技術(OMT,一種軟體開發方法)方法,採用了面向對象的概念,並引入各種獨立於語言的表示符。這種方法用對象模型、動態模型、功能模型和用例模型,共同完成對整個系統的建模,所定義的概念和符號可用於軟體開發的分析、設計和實現的全過程,軟體開發人員不必在開發過程的不同階段進行概念和符號的轉換。OMT-2特別適用於分析和描述以數據為中心的信息系統。
Jacobson於1994年提出了OOSE方法,其最大特點是面向用例(Use-Case),並在用例的描述中引入了外部角色的概念。用例的概念是精確描述需求的重要武器,但用例貫穿於整個開發過程,包括對系統的測試和驗證。OOSE比較適合支持商業工程和需求分析。
此外,還有Coad/Yourdon方法,即著名的OOA/OOD,它是最早的面向對象的分析和設計方法之一。該方法簡單、易學,適合於面向對象技術的初學者使用,但由於該方法在處理能力方面的局限,截至2013年已很少使用。
概括起來:首先,面對眾多的建模語言,用戶由於沒有能力區別不同語言之間的差別,因此很難找到一種比較適合其套用特點的語言;其次,眾多的建模語言實際上各有千秋;第三,雖然不同的建模語言大多雷同,但仍存在某些細微的差別,極大地妨礙了用戶之間的交流。因此在客觀上,極有必要在精心比較不同的建模語言優缺點及總結面向對象技術套用實踐的基礎上,組織聯合設計小組,根據套用需求,取其精華,去其糟粕,求同存異,統一建模語言。
1994年10月,GradyBooch和JimRumbaugh開始致力於這一工作。他們首先將Booch93和OMT-2統一起來,並於1995年10月發布了第一個公開版本,稱之為統一方法UM0.8(UnitiedMethod)。1995年秋,OOSE的創始人IvarJacobson加盟到這一工作。經過Booch、Rumbaugh和Jacobson三人的共同努力,於1996年6月和10月分別發布了兩個新的版本,即UML0.9和UML0.91,並將UM重新命名為UML(UnifiedModelingLanguage)。
1996年,一些機構將UML作為其商業策略已日趨明顯。UML的開發者得到了來自公眾的正面反應,並倡議成立了UML成員協會,以完善、加強和促進UML的定義工作。當時的成員有DEC、HP、I-Logix、Itellicorp、IBM、ICONComputing、MCISystemhouse、Microsoft、Oracle、RationalSoftware、TI以及Unisys。這一機構對UML1.0(1997年1月)及UML1.1(1997年11月17日)的定義和發布起了重要的促進作用。
UML是一種定義良好、易於表達、功能強大且普遍適用的建模語言。它融入了軟體工程領域的新思想、新方法和新技術。它的作用域不限於支持面向對象的分析與設計,還支持從需求分析開始的軟體開發的全過程。
面向對象技術和UML的發展過程可用上圖來表示,標準建模語言的出現是其重要成果。在美國,截止1996年10月,UML獲得了工業界、科技界和套用界的廣泛支持,已有700多個公司表示支持採用UML作為建模語言。1996年底,UML已穩占面向對象技術市場的85%,成為可視化建模語言事實上的工業標準。1997年11月17日,OMG採納UML1.1作為基於面向對象技術的標準建模語言。
圖形
圖聚集了相關的事物及其關係的組合,是軟體系統在不同角度的投影。圖由代表事物的頂點和代表關係的連通圖表示。下面對常用的幾類圖進行簡單介紹。
(1)類圖(ClassDiagram)。展現了一組對象、接口、協作和它們之間的關係。類圖描述的是一種靜態關係,在系統的整個生命周期都是有效的,是面向對象系統的建模中最常見的圖。
(2)對象圖(ObjectDiagram)。展現了一組對象以及它們之間的關係。對象圖是類圖的實例,幾乎使用與類圖完全相同的標示。
(3)用例圖(UseCaseDiagram)。展現了一組用例、參與者(actor)以及它們之間的關係。用例圖從用戶角度描述系統的靜態使用情況,用於建立需求模型。
(4)互動圖。用於描述對象間的互動關係,由一組對象和它們之間的關係組成,包含它們之間可能傳遞的訊息。互動圖又分為序列圖和協作圖,其中序列圖描述了以時間順序組織的對象之間的互動活動;協作圖強調收發訊息的對象的結構組織。
(5)狀態圖(StateDiagram)。由狀態、轉換、事件和活動組成,描述類的對象所有可能的狀態以及事件發生時的轉移條件。通常狀態圖是對類圖的補充,僅需為那些有多個狀態的、行為隨外界環境而改變的類畫狀態圖。
(6)活動圖(ActiveDiagram)。一種特殊的狀態圖,展現了系統內一個活動到另一個活動的流程。活動圖有利於識別並行活動。
(7)組件圖(ComponentDiagram)。展現了一組組件的物理結構和組件之間的依賴關係。部件圖有助於分析和理解組件之間的相互影響程度。
(8)部署圖(DeploymentDiagram)。展現了運行處理節點以及其中的組件的配置。部署圖給出了系統的體系結構和靜態實施視圖。它與組件圖相關,通常一個節點包含一個或多個構建。
需要指出的是,UML並不限定僅使用這9種圖,開發工具可以採用UML來提供其他種類的圖,但到目前為止,這9種圖在實際套用中最常用的。
套用
目前,UML已成功套用於電信、金融、政府、電子、國防、航天航空、製造與工業自動化、醫療、交通、電子商務等領域中。在這些領域中,UML的建模包括大型、複雜、實時、分散式、集中式數據或者計算,以及嵌入式系統等,而且還用於軟體再生工程、質量管理、過程管理、配置管理的各方面。在軟體無線電技術中,UML的套用是可行的,而且具有優勢。
建模語言可被不同種類的無線電通信和H/S(Hardware/Software)描述語言所套用。軟體無線電的對象需要具有可配置性及組件可重用性。系統設計階段對語言的要求表現在功能和結構兩個方面。功能設計需要一種對通信規範進行建模的語言,而結構設計要求一種對軟體和硬體組件進行建模的語言。軟體無線電可以選擇許多語言,一般來講,UML的性能在面向對象和適應性方面是較好的。
進行聯合設計的UML在序列圖、狀態圖、合作圖以及實時擴展的幫助下,能很好地為組件和模組之間的相互聯繫構造模型,而且能在整個設計周期中使用,以幫助設計者縮短設計時間、降低改進成本並使軟/硬體分割最優。與UML相比,一些建模語言有其自身的缺陷。比如SDL在傳統意義上缺乏模組性,VHDL對軟體建模來說效率不高等。
UML將硬體和軟體作為一個整體來進行建模。例如,由於規範的不穩定性,設計者可以從硬體移動一些協定到軟體。在UML的幫助下,硬體組件和軟體組件之間將會有更大的透明度。便攜性和綜合效率將會增加。
通常來講,對於使用UML進行硬體軟體聯合設計而言可以套用下面的技術:
(1)UML的模型特性可幫助設計者將協定分割成硬體模組和軟體模組,它們之間的相互關係可以用UML的類圖或組件圖進行描述;
(2)UML狀態圖或序列圖可使互動處理的通信更加簡明扼要;
(3)軟體綜合和硬體綜合可通過使用實時嵌入式UML而被建模,實時嵌入式UML以將並行任務分配給一個特定的處理器為目標,並將計算步驟分解到各個時鐘周期中;
(4)一旦設計者通過使用類圖或組件圖獲得接口和組件的信息,則不同種類規範的並發執行和聯合仿真都將變得更容易。
綜合來看,UML作為一種最合適的建模語言,其套用於軟體無線電之中是可實現的,也是非常有前途的。UML在軟體無線電中得以套用,必將極大地促進軟體無線電技術的發展。
建模工具
ProcessOn線上設計器支持UML統一建模語言的定義和語義,同時支持UML的用例圖和靜態圖線上建模。