20 世紀80 年代,,隨著面向?qū)ο蠹夹g(shù)成為研究的熱點,先后出現(xiàn)了幾十種面向?qū)ο蟮能浖_發(fā)方法,。其中,,Booch、OMT 和OOSE等方法得到了廣泛的認可,。然而,,采用不同方法進行建模不利于開發(fā)者之間的交流。而UML則統(tǒng)一了Booch,、OMT 和OOSE 的表示方法,,而且對其作了進一步的發(fā)展。1997 年,,UML 被國際對象組織OMG采納為面向?qū)ο蟮慕UZ言的國際標(biāo)準(zhǔn),,它溶入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù),。UML不限于支持面向?qū)ο蟮姆治雠c設(shè)計,,還支持從需求分析開始的軟件開發(fā)的全過程。數(shù)年來,,UML憑借其簡潔明晰的表達方式,、超凡脫俗的表達能力,一路殺將出來,,為業(yè)界所廣泛認同,!目前,在多數(shù)大型企業(yè)的正規(guī)化開發(fā)流程中,,開發(fā)人員普遍使用UML進行模型的建立,。作為一名軟件開發(fā)人員,我們必須學(xué)會UML,。因為UML就是那個統(tǒng)一的"文字",,統(tǒng)一的"度",、"量"、"衡",,不理解UML,,作為軟件設(shè)計統(tǒng)一王國的國民,將是艱難而痛苦的,。
作曲家會將其腦袋中的旋律譜成樂曲,,建筑師會將其設(shè)計的建筑物畫成藍圖,這些樂曲,、藍圖就是模型(Model),,而建構(gòu)這些模型的過程就稱為建模(Modeling)。軟件開發(fā)如同音樂譜曲及建筑設(shè)計,,其過程中也必須將需求,、分析、設(shè)計,、實現(xiàn),、布署等各項工作流程的構(gòu)想與結(jié)果予以呈現(xiàn),這就是軟件系統(tǒng)的建模,。 那么為什么要建模呢,?經(jīng)典答案是:建立大廈和建立狗窩的區(qū)別是建設(shè)狗窩不需要設(shè)計,要生產(chǎn)合格的軟件就要有一套關(guān)于體系結(jié)構(gòu),、過程和工具的規(guī)范,。 OMG官方發(fā)布的UML的當(dāng)前最高版本為2.0,可以從http://www./上下載,。 UML由圖和元模型組成,,圖是語法,元模型是語義,。UML主要包括三個基本構(gòu)造塊:事物(Things),、關(guān)系(Relationships)和圖(Diagrams)。本次連載我們將對UML的這些基本組成部分及UML工具和應(yīng)用進行介紹,,使讀者對UML形成初步的整體印象,。在其后的幾次連載里,再以數(shù)個實例對這些內(nèi)容逐步展開,。 1.1 UML的基本構(gòu)造塊 1.1.1事物 事物是是實體抽象化的最終結(jié)果,,是模型中的基本成員,UML中包含結(jié)構(gòu)事物,、行為事物,、分組事物和注釋事物,。 ?。?)結(jié)構(gòu)事物(Structural things) 結(jié)構(gòu)事物是模型中的靜態(tài)部分,,用以呈現(xiàn)概念或?qū)嶓w的表現(xiàn)元素,是軟件建模中最常見的元素,,共有以下七種: 類(Class):類是指具有相同屬性,、方法、關(guān)系和語義的對象的集合,; 接口(Interface):接口是指類或組件所提供的服務(wù)(操作),,描述了類或組件對外可見的動作; 協(xié)作(Collaboration):協(xié)作描述合作完成某個特定任務(wù)的一組類及其關(guān)聯(lián)的集合,,用于對使用情形的實現(xiàn)建模,; 用例(Use Case):用例定義了執(zhí)行者(在系統(tǒng)外部和系統(tǒng)交互的人)和被考慮的系統(tǒng)之間的交互來實現(xiàn)的一個業(yè)務(wù)目標(biāo); 活動類(Active Class):活動類的對象有一個或多個進程或線程,?;顒宇惡皖惡芟嘞螅皇撬膶ο蟠淼脑氐男袨楹推渌脑厥峭瑫r存在的,; 組件(Component):組件是物理的,、可替換的部分,包含接口的集合,,例如COM+ ,、JAVA BEANS等; 結(jié)點(Node):結(jié)點是系統(tǒng)在運行時存在的物理元素,,代表一個可計算的資源,,通常占用一些內(nèi)存和具有處理能力。 ?。?)行為事物(Behavioral things) 行為事物指的是UML模型中的動態(tài)部分,,代表語句里的"動詞",表示模型里隨著時空不斷變化的部分,,包含兩類: 交互(ineraction):交互是由一組對象之間在特定上下文中,,為達到特定的目的而進行的一系列消息交換而組成的動作; 狀態(tài)機(state machine):狀態(tài)機由一系列對象的狀態(tài)組成,。 ?。?)分組事物(Grouping things) 可以把分組事物看成是一個"盒子",模型可以在其中被分解,。目前只有一種分組事物,,即包(package)。結(jié)構(gòu)事物,、動作事物甚至分組事物都有可能放在一個包中,。包純粹是概念上的,只存在于開發(fā)階段,而組件在運行時存在,。 ?。?)注釋事物(Annotational things) 注釋事物是UML模型的解釋部分。 1.1.2關(guān)系 關(guān)系是將事物聯(lián)系在一起的方式,,UML中定義了四種關(guān)系: ?。?)依賴(Dependencies):兩個事物之間的語義關(guān)系,其中一個事物發(fā)生變化會影響另一個事物的語義,; ?。?)關(guān)聯(lián)(Association):一種描述一組對象之間連接的結(jié)構(gòu)關(guān)系,如聚合關(guān)系(描述了整體和部分間的結(jié)構(gòu)關(guān)系),; ?。?)泛化(Generalization):一種一般化-特殊化的關(guān)系; ?。?)實現(xiàn)(Realization) :類之間的語義關(guān)系,,其中的一個類指定了由另一個類保證執(zhí)行的契約。 1.1.3圖 圖是事物集合的分類,,UML中包含多種圖: ?。?)類圖(Class Diagram):類圖描述系統(tǒng)所包含的類、類的內(nèi)部結(jié)構(gòu)及類之間的關(guān)系,; ?。?)對象圖(Object Diagram):對象圖是類圖的一個具體實例; ?。?)包圖(Package Diagram):包圖表明包及其之間的依賴類圖,; (4)組件圖(Compoment Diagram,,也稱構(gòu)件圖):組件圖描述代碼部件的物理結(jié)構(gòu)以及各部件之間的依賴關(guān)系,; (5)部署圖(Deployment Diagram):部署圖定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu),; ?。?)用例圖(Usecase Diagram):用例圖從用戶的角度出發(fā)描述系統(tǒng)的功能、需求,,展示系統(tǒng)外部的各類角色與系統(tǒng)內(nèi)部的各種用例之間的關(guān)系,; (7)順序圖(Sequence Diagram):順序圖表示對象之間動態(tài)合作的關(guān)系,; ?。?)協(xié)作圖(Collaboration Diagram):合作圖描述對象之間的協(xié)作關(guān)系; ?。?)狀態(tài)圖(Statechart Diagram):狀態(tài)圖描述一類對象的所有可能的狀態(tài)以及事件發(fā)生時狀態(tài)的轉(zhuǎn)移條件,; ?。?0)活動圖(Activity Diagram):活動圖描述系統(tǒng)中各種活動的執(zhí)行順序。 上述十種圖可歸納為五類,,如表1.1,。 表1.1 UML圖分類
|
|
來自: 傷心莫哭 > 《VC編程技術(shù)》