統一模組化語言UML輕松入門(1)――基本概念
---------------------------------------------------------------------
宋寶華 email:[email][email protected][/email]
公元前260年,秦、趙之間發生了空前慘烈的長平之戰。趙軍戰敗,40多萬人被坑殺。從此,六國再也無力抵禦秦軍的進攻。前230~前221年,秦王嬴政陸續滅掉六國,建立起我國曆史上第一個統一的中央集權的封建國家。秦朝的統一,結束了諸侯長期割據混戰的局面。其後,秦始皇在全國範圍内統一文字及度、量、衡,為後世建立了不朽的功勳。
UML(Unified Modeling Language,統一模組化語言)者,模組化界強秦也!20 世紀80 年代,随着面向對象技術成為研究的熱點,先後出現了幾十種面向對象的軟體開發方法。其中,Booch、OMT 和OOSE等方法得到了廣泛的認可。然而,采用不同方法進行模組化不利于開發者之間的交流。而UML則統一了Booch、OMT 和OOSE 的表示方法,而且對其作了進一步的發展。1997 年,UML 被國際對象組織OMG采納為面向對象的模組化語言的國際标準,它溶入了軟體工程領域的新思想、新方法和新技術。UML不限于支援面向對象的分析與設計,還支援從需求分析開始的軟體開發的全過程。數年來,UML憑借其簡潔明晰的表達方式、超凡脫俗的表達能力,一路殺将出來,為業界所廣泛認同!目前,在多數大型企業的正規化開發流程中,開發人員普遍使用UML進行模型的建立。作為一名軟體開發人員,我們必須學會UML。因為UML就是那個統一的“文字”,統一的“度”、“量”、“衡”,不了解UML,作為軟體設計統一王國的國民,将是艱難而痛苦的。
作曲家會将其腦袋中的旋律譜成樂曲,建築師會将其設計的建築物畫成藍圖,這些樂曲、藍圖就是模型(Model),而建構這些模型的過程就稱為模組化(Modeling)。軟體開發如同音樂譜曲及建築設計,其過程中也必須将需求、分析、設計、實作、布署等各項工作流程的構想與結果予以呈現,這就是軟體系統的模組化。
那麼為什麼要模組化呢?經典答案是:建立大廈和建立狗窩的差別是建設狗窩不需要設計,要生産合格的軟體就要有一套關于體系結構、過程和工具的規範。
UML由圖和元模型組成,圖是文法,元模型是語義。UML主要包括三個基本構造塊:事物(Things)、關系(Relationships)和圖(Diagrams)。本次連載我們将對UML的這些基本組成部分及UML工具和應用進行介紹,使讀者對UML形成初步的整體印象。在其後的幾次連載裡,再以數個執行個體對這些内容逐漸展開。
1.1 UML的基本構造塊
1.1.1事物
事物是是實體抽象化的最終結果,是模型中的基本成員,UML中包含結構事物、行為事物、分組事物和注釋事物。
(1)結構事物(Structural things)
結構事物是模型中的靜态部分,用以呈現概念或實體的表現元素,是軟體模組化中最常見的元素,共有以下七種:
類(Class):類是指具有相同屬性、方法、關系和語義的對象的集合;
接口(Interface):接口是指類或元件所提供的服務(操作),描述了類或元件對外可見的動作;
協作(Collaboration):協作描述合作完成某個特定任務的一組類及其關聯的集合,用于對使用情形的實作模組化;
用例(Use Case):用例定義了執行者(在系統外部和系統互動的人)和被考慮的系統之間的互動來實作的一個業務目标;
活動類(Active Class):活動類的對象有一個或多個程序或線程。活動類和類很相象,隻是它的對象代表的元素的行為和其他的元素是同時存在的;
元件(Component):元件是實體的、可替換的部分,包含接口的集合,例如COM+ 、JAVA BEANS等;
結點(Node):結點是系統在運作時存在的實體元素,代表一個可計算的資源,通常占用一些記憶體和具有處理能力。
(2)行為事物(Behavioral things)
行為事物指的是UML模型中的動态部分,代表語句裡的“動詞”,表示模型裡随着時空不斷變化的部分,包含兩類:
互動(ineraction):互動是由一組對象之間在特定上下文中,為達到特定的目的而進行的一系列消息交換而組成的動作;
狀态機(state machine):狀态機由一系列對象的狀态組成。
(3)分組事物(Grouping things)
可以把分組事物看成是一個“盒子”,模型可以在其中被分解。目前隻有一種分組事物,即包(package)。結構事物、動作事物甚至分組事物都有可能放在一個包中。包純粹是概念上的,隻存在于開發階段,而元件在運作時存在。
(4)注釋事物(Annotational things)
注釋事物是UML模型的解釋部分。
1.1.2關系
關系是将事物聯系在一起的方式,UML中定義了四種關系:
(1)依賴(Dependencies):兩個事物之間的語義關系,其中一個事物發生變化會影響另一個事物的語義;
(2)關聯(Association):一種描述一組對象之間連接配接的結構關系,如聚合關系(描述了整體和部分間的結構關系);
(3)泛化(Generalization):一種一般化—特殊化的關系;
(4)實作(Realization) :類之間的語義關系,其中的一個類指定了由另一個類保證執行的契約。
1.1.3圖
圖是事物集合的分類,UML中包含多種圖:
(1)類圖(Class Diagram):類圖描述系統所包含的類、類的内部結構及類之間的關系;
(2)對象圖(Object Diagram):對象圖是類圖的一個具體執行個體;
(3)包圖(Package Diagram):包圖表明包及其之間的依賴類圖;
(4)元件圖(Compoment Diagram,也稱構件圖):元件圖描述代碼部件的實體結構以及各部件之間的依賴關系;
(5)部署圖(Deployment Diagram):部署圖定義系統中軟硬體的實體體系結構;
(6)用例圖(Usecase Diagram):用例圖從使用者的角度出發描述系統的功能、需求,展示系統外部的各類角色與系統内部的各種用例之間的關系;
(7)順序圖(Sequence Diagram):順序圖表示對象之間動态合作的關系;
(8)協作圖(Collaboration Diagram):合作圖描述對象之間的協作關系;
(9)狀态圖(Statechart Diagram):狀态圖描述一類對象的所有可能的狀态以及事件發生時狀态的轉移條件;
(10)活動圖(Activity Diagram):活動圖描述系統中各種活動的執行順序。
上述十種圖可歸納為五類,如表1.1。
表1.1 UML圖分類
類型
包含
靜态圖
類圖、對象圖、包圖
行為圖
狀态圖、活動圖
用例圖
互動圖
順序圖、協作圖
實作圖
元件圖、部署圖
1.2 UML工具與應用
“工欲善其事,必先利于器”,為了有效的利用UML,我們需要首先獲得一個UML工具軟體。
目前,業界使用最廣泛的UML模組化工具為Rational Rose。Rational Rose中可實作正向(為模型産生相應的代碼)、逆向(從使用者原來的軟體系統導出該系統的模型)和雙向工程(實作模型和代碼之間的循環工程),進而保證模型與代碼的高度一緻。Rational Rose支援C++、Visual C++、Java、Smalltalk、Ada、Visual Basic、PowerBuilder等語言和開發工具,并能為CORBA 應用生成接口定義語言(IDL),為資料庫應用生成資料庫描述語言(DDL)等。另外,Rational Rose為團隊開發和規範的開發過程管理提供了良好的支援。
對于小規模應用,我們可以使用微軟公司Office套件中的Visio,其中提供了對UML各種圖的繪制支援。
從應用的角度上來講,面向對象的系統設計一般需要完成如下工作:
(1)描述需求;
(2)根據需求建立系統的靜态模型;
(3)描述系統的行為。
(1)和(2)中所建立的模型是靜态的(采用用例圖、類圖、對象圖、元件圖和部署圖等),是标準模組化語言UML中的靜态模組化機制;而(3)中所建立的模型則表示執行時的序列、狀态或互動關系(以狀态圖、活動圖、順序圖和協作圖描述),是标準模組化語言UML中的動态模組化機制。
由此可以看出,标準模組化語言UML的主要内容也可以歸納為靜态模組化機制和動态模組化機制兩大類。
此外,需要說明的是,UML隻是一種模組化語言,它獨立于具體的模組化過程。是以,利于它模組化時,可遵循任何類型的模組化過程。盡管如此,UML的作者們為我們推薦了RUP(Rational Unified Process)。RUP由Rational軟體公司首創,其最重要的特點有三:
(1)軟體開發是由用例驅動的;
(2)軟體開發是以體系結構設計(Architectural Design)為中心;
(3)軟體開發是個疊代過程。
RUP包括四個階段,每個階段又分為若幹次疊代,每次疊代都有一個核心工作流,如圖1.1所示。
圖1.1 RUP的流程
本文轉自 21cnbao 51CTO部落格,原文連結:http://blog.51cto.com/21cnbao/120274,如需轉載請自行聯系原作者