貴陽醫學院計算機教研室 唐翠娥
UML(Unified Modeling Language)作為一個優秀的“交流語言”、“代碼生成工具”和“系統設計工具”自1997年誕生以來,受到無數廠商、組織、專家學者的追捧和擁護,它提供的用例圖、狀態圖、活動圖、類圖等功能各一,基本涵蓋了軟件工程的各個方面。它不但支持面向對象的分析與設計,還支持從需求分析開始的軟件開發的全過程。但國內的正規大型軟件項目比較少,軟件工程技術起步很晚;市場上也難以找到一本有“中國特色”的能夠上程序員快速掌握自己所需的知識的教材,所以國內的在項目中使用UML的都是鳳毛麟角,即便使用了,也是在很小的范圍內,完全沒有發揮出UML1%的功效。作者在參閱大量的文獻資料以及最具權威性的文章,將UML相關知識和UML建模技術的目的與原則、使用對象以及使用UML建模應該注意的事項概述如下,供UML初學者共享。
70年代中期,公認的面向對象的建模語言開始出現,從1989年到1994年,其數量從不到十種增加到了五十多種。在眾多的建模語言中,語言的創造者努力推崇自己的產品,并在實踐中不斷完善。但不同的建模語言大多雷同,各有千秋,并且存在某些細微的差別。OO方法的用戶并不了解不同建模語言的優缺點及相互之間的差異,因而很難根據應用特點選擇合適的建模語言,極大地妨礙了用戶之間的交流。因此極有必要在精心比較不同的建模語言優缺點及總結面向對象技術應用實踐的基礎上,組織聯合設計小組,根據應用需求,取其精華,去其糟粕,求同存異,統一建模語言。UML的出現既統一了Booch、OMT、OOSE,以及其他方法,又統一了面向對象方法中使用的符號,并且在提出后不久就被OMG接納為其標準之一。從而改變了數十種面向對象的建模語言相互獨立且各有千秋的局面,使得面向對象的分析技術有了空前發展。
UML(Unified Modeling Language)作為一種建模語言,是面向對象開發中的一種通用的圖形化、可視化的建模語言,它能讓系統構造者用標準的、易于理解的方式建立起能夠表達出他們想象的系統藍圖。它提供一種機制,以便不同人之間有效地共享和交流設計結果。
UML統一建模語言包括語義和表示法兩個部分。
(1)UML語義描述基于精確元模型定義,元模型為所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發者能在語義上取得一致,消除了因人而異的最佳表達方法所造成的影響;
(2)UML表示法定義符號的表示法,為開發者或開發工具使用這些圖形符號和文本語法為系統建模提供了標準。
UML的重要內容可以由下列五類圖(共9種圖形)來定義:
第一類是用例圖,從用戶角度描述系統功能,并指出各功能的操作者。
第二類是靜態圖(Static diagram),包括類圖、對象圖和包圖。
類圖定義系統中的類,表示類之間的聯系如關聯、依賴、聚合等類,用于描述系統中類的靜態結構,在系統的整個生命周期都是有效的。
對象圖是類圖的實例,幾乎使用與類圖完全相同的標識。他們的不同點在于對象圖顯示類的多個對象實例,而不是實際的類。一個對象圖是類圖的一個實例。
包圖由包或類組成,表示包與包之間的關系。包圖用于描述系統的分層結構。
第三類是行為圖(Behavior diagram),包括狀態圖和活動圖,用于描述系統的動態模型和組成對象間的交互關系。
狀態圖描述類的對象所有可能的狀態以及事件發生時狀態的轉移條件,通常是對類圖的補充。在項目設計中并不需要為所有的類畫狀態圖,只需對那些有多個狀態,其行為受外界環境的影響并且發生改變的類畫狀態圖。
活動圖描述滿足用例要求所要進行的活動以及活動間的約束關系,有利于識別并行活動。
第四類是交互圖(Interactive diagram),包括順序圖和合作圖(合稱為交互圖),用于描述對象間的交互關系。
順序圖顯示對象之間的動態合作關系,它強調對象之間消息發送的順序,同時顯示對象之間的交互。
合作圖描述對象間的協作關系,可顯示信息交換和以及對象之間的關系。合作圖和順序圖相似,用于顯示對象間的動態合作關系。在項目設計中,如果強調時間和順序,則使用順序圖;如果強調上下級關系,則選擇合作圖。
第五類是實現圖(Implementation diagram),包括構件圖和配置圖。
其中構件圖描述代碼部件的物理結構及各部件之間的依賴關系。一個部件可能是一個資源代碼部件、一個二進制部件或一個可執行部件。它包含邏輯類或實現類的有關信息。
配置圖定義系統中軟硬件的物理體系結構。它可以顯示實際的計算機和設備以及它們之間的連接關系,也可顯示連接的類型及部件之間的依賴性。
UML作為一種建模語言,主要用于系統開發人員之間、開發人員與用戶之間的交流,其主要功能如下:
(1)為軟件系統的產生建立可視化模型;
(2)規約軟件系統的產出;
(3)定義再開發軟件系統過程中需要做的重要分析、設計和實現的規格說明,使建立的模型準確、無歧義并且完整;
(4)構造軟件系統的產出;
(5)為軟件系統的產出建立文檔;
(6)可以為系統的體系結構及其所有細節建立文檔。
UML的目標是以面向對象的方式來描述任何類型的系統,具有很寬的應用領域。其中最常用的是用于建立軟件系統的模型,但它同樣可以用于描述非軟件領域的系統,如機械系統、企業機構或業務過程,具有實時要求的工業系統或工業過程等。此外,適用于系統開發過程中從需求規格描述到系統完成后測試的不同階段。總之,UML是一個通用的標準建模語言,可以對任何具有靜態結構和動態行為的系統進行建模。
UML建模技術就是用模型元素來組建整個系統的模型,模型元素包括系統中的類、類和類之間的關聯、類的實例相互配合實現系統的動態行為等。UML提供了多種圖形可視化描述模型元素,同一個模型元素可能會出現在多個圖中對應多個圖形元素,人們可以從多個視圖來考察模型。
UML建模技術主要分為結構建模、動態建模。
結構建模是從系統的內部結構和靜態角度來描述系統的,在靜態視圖、用例視圖、實施視圖和配置視圖中適用,采用了類圖、用例圖、組件圖和配置圖等圖形。
動態建模是從系統中對象的動態行為和組成對象間的相互作用、消息傳遞來描述系統的,在狀態機視圖、活動視圖和交互視圖中適用,采用了狀態機圖、活動圖、順序圖和合作圖等圖形。
3.2.1 建模技術的目的與原則
(1)幫助項目設計人員按照實際情況或按需要的樣式對系統進行可視化設計;提供一種詳細說明系統的結構或行為的方法;給出一個指導系統構造的模板;對所做出的決策進行文檔化;
(2)僅當需要模型時,才構建它;
(3)選擇要創建什么模型對如何動手解決問題和形成解決方案有著意義深遠的影響;每一種模型可以在不同的精度級別上表示;最好的模型是與現實相聯系的;單個模型是不充分的,對每個重要的系統最好用一組幾乎獨立的模型去處理。
3.2.2 UML建模技術的使用對象
(1)業務建模:以領域專家為主,需求分析人員是主力,系統分析員、架構師可參與;
(2)需求模型:以需求分析人員為主,系統分析員是主力,領域專家提供指導,架構師和資深開發人員參與;
(3)設計模型:高層設計模型以架構師為主,系統分析員從需求方面提供支持,資深開發人員從技術實現方面提供支持。詳細設計模型則以資深開發人員為主,架構師提供指導;
(4)實現模型:以資深開發人員(設計人員)為主,架構師提供總體指導;
(5)數據庫模型:以數據庫開發人員為主,架構師提供指導,資深開發人員(設計人員)予以配合。
3.2.3 建模需要注意的問題
建模時,對軟件開發過程是有要求的,必須是用例驅動,以架構為中心,迭代和遞增的開發,如果軟件開發組織的軟件開發過程不能滿足這三點要求,那么的使用效果就會大打折扣。
綜上所述,建模雖然是軟件建模的有利武器,也要遵循一定的規則來使用,否則就不能很好地發揮它的價值,也會事倍功半。理解使用的前提,并認真按照這些方法進行實施,相信會有理想的效果。
通過對大量的文獻資料以及最具權威性的文章分析,可以對UML建模技術的特性和發展現狀作出如下判斷:
(1)已進入全面應用階段的事實標準;
(2)應用領域正在逐漸擴展,包括嵌入式系統建模、業務建模、流程建模等多個領域;
(3)成為“產生式編程”的重要支持技術。
[1]Bailey,Diane E.and Barley,Stephen R.Return to work:Toward post-industrial engineering[J].IIE Transactions,2005,37:737-752.
[2]Yves vanderperren,Wol fgang Mueller an d Wim Pehaene.UML for electronic systems design:a comprehensive overview[J].Design Automation for Embedded Systems.2009,12(4):261-292.
[3]Yyan Labiche.The UML is more than Boxes and Lines[M].Canada:Lecture Notes in Computer Science,2009,275-386.
[4]Object Management Group.UML Specif i cation l.5[EB/OL].http://www.omg.org/uml,2003-11-05.
[5]周飛,楊根興,蔡立志.基于UML的測試用例生成方法研究[J].計算機應用與軟件,2009,26(2):107-110.
[6]張慶,雷航.一種基于UML狀態圖的面向對象類級測試模型[J].計算機工 程,2005,31(21):75-77.
[7]覃釗璇,曾一,柴艷欣等.基于UML活動圖的多態性測試用例生成[J].計算機工程,2010,36(11):83-84.
[8]李留英,王戟,齊治昌.UML statecharts的測試用例生成方法[J].計算機研究與發展,2001,38(6):691-697.
[9]蔣俊.基于UML的面向對象建模技術的研究[J].信息與電腦,2010(4):148.
[10]李興鵬.基于UMI高校教務管理系統的分析與設計[J].電腦知識與技術,2007,22:899-900
[11]趙雪峰.基于UML的教學評價系統建模[J].計算機與信息技術,2010.
[12]張從亮.基于UML的面向對象軟件分析與建模[J].信息與電腦(理論版),2010(4):74-75.