標準建模語言UML在軟件開發中的應用

 

一 標準建模語言UML
<script language="JavaScript1.1" src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/tech;sz=1x1;ord=1664181337?" type="text/javascript"> </script> <script language="VBScript" type="text/javascript"> on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) </script>
面向對象的分析與設計(OOA&D)方法的發展在80年代末至90年代中出現了一個高潮,UML是這個高潮的產物。它不僅統一了Booch、Rumbaugh和Jacobson的表示方法,而且對其作了進一步的發展,並最終統一爲大衆所接受的標準建模語言。
面向對象技術和UML的發展過程可用下圖來表示,標準建模語言的出現是其重要成果。在美國,截止1996年10月,UML獲得了工業界、科技界和應用界的廣泛支持,已有700多個公司表示支持採用UML作爲建模語言。1996年底,UML已穩佔面向對象技術市場的85%,成爲可視化建模語言事實上的工業標準。1997年11月17日,OMG採納UML 1.1作爲基於面向對象技術的標準建模語言。UML代表了面向對象方法的軟件開發技術的發展方向,具有巨大的市場前景,也具有重大的經濟價值和國防價值。
點擊放大
圖1 UML的發展歷程
UML 1.0 Team
Digital Equipment Contributions include
*  Hewlett-Packa multi-modeling and refinements
   i-Logi x business modeli
* ICON Computing use cases and responsibilities,
* Intellicorp state machine semantics,
* MCI Systemhouse types, classes and instances
* Microsoft interfaces and components,
* Oracle collaborations and patterns,
* Rational Software distribution and concurrency,
* Texas Instruments meta-metamodel,
* Unisys glossary
* = co-submitter OMG and RM-ODP technology perspective

二 UML語言的特徵
  • 不是一種可視化的程序設計語言,而是一種可視化的建模語言。
  • 是一種建模語言規格說明,是面向對象分析與設計的一種標準表示。
  • 不是過程,也不是方法,但允許任何一種過程和方法使用它。
三 UML語言的目標
  • 易於使用,表達能力強,進行可視化建模。
  • 與具體的實現無關,可應用於任何語言平臺和工具平臺;
  • 與具體的過程無關,可應用於任何軟件開發過程;
  • 簡單並且可擴展,具有擴展和專有化機制,便於擴展,無需對核心概念進行修改;
  • 爲面向對象的設計與開發中涌現出的高級概念(如協作、框架、模式和組件)提供支持,強調在軟件開發中,對架構、框架、模式和組件的重用;
  • 與最好的軟件工程實踐經驗集成;
  • 可升級,具有廣闊的適用性和可用性;
  • 有利於面向對象工具的市場增長。
四 UML語言概述
由視圖view,圖diagram,模型元素model element和通用機制general mechanism等幾個部分組成
  • 視圖是表達系統的某一方面特徵的UML建模元素的子集,由多個圖構成,是在某一個抽象層上,對系統的抽象表示。
  • 圖是模型元素集的圖形表示,通常爲弧(關係)和頂點(其他模型元素)相互連接構成的。
  • 模型元素代表面向對象中的類、對象、消息和關係等概念,是構成圖的最基本的常用概念。
  • 通用機制用於表示其它信息,比如註釋、模型元素的語義等。另外,它還提供擴展機制,使UML語言能夠適應一個特殊的方法(或過程),或擴充至一個組織或用戶。
在後續文章中,我繼續介紹UML的模型、視圖、圖與系統架構建模。
標準建模語言UML在軟件開發中的應用-1 
標準建模語言UML在軟件開發中的應用-2 
標準建模語言UML在軟件開發中的應用-3 
 
 
五 UML的模型、視圖、圖與系統架構建模
UML是用來描述模型的,用模型來描述系統的結構或靜態特徵,以及行爲或動態特徵。從不同的視角爲系統的構架建模,形成系統的不同視圖(VIEW)
  • 用例視圖(use case view),強調從用戶的角度看到的或需要的系統功能,是被稱爲參與者的外部用戶所能觀察到的系統功能的模型圖;
  • 邏輯視圖(logical view),展現系統的靜態或結構組成及特徵,也稱爲結構模型視圖(structural model view)或靜態視圖(static view);
  • 併發視圖(concurrent view),體現了系統的動態或行爲特徵,也稱爲行爲模型視圖(behavioral model view)、動態視圖(dynamic view);
  • 組件視圖(component view),體現了系統實現的結構和行爲特徵,也稱爲實現模型視圖(implementation model view) ;
  • 配置視圖(deployment view),體現了系統實現環境的結構和行爲特徵,也稱爲環境模型視圖(environment model view)或物理視圖(physical view)。
圖2:UML的Architecture
 

九種圖

  • 用例圖use case diagram,描述系統功能
  • 類圖class diagram,描述系統的靜態結構
  • 對象圖object diagram,描述系統在某個時刻的靜態結構
  • 序列圖sequence diagram,按時間順序描述系統元素間的交互
  • 協作圖Collaboration diagram,按照時間和空間順序描述系統元素間的交互和它們之間的關係
  • 狀態圖state diagram,描述了系統元素的狀態條件和響應
  • 活動圖activity diagram,描述了系統元素的活動
  • 組件圖component diagram,描述了實現系統的元素的組織
  • 配置圖deployment diagram,描述了環境元素的配置,並把實現系統的元素映射到配置上
    根據它們在不同架構視圖的應用,可以把9種圖分成:
  • 用戶模型視圖:用例圖
  • 結構模型視圖:類圖、對象圖
  • 行爲模型視圖:序列圖、協作圖、狀態圖、活動圖(動態圖)
  • 實現模型視圖:組件圖
  • 環境模型視圖:配置圖
1. USE CASE圖
圖3.1: USE CASE圖
圖3.2: USE CASE圖
元素之間的關係
  • 角色之間的關係:擁有與類相同的關係描述,用通用化關係描述若干個角色之間的行爲。
  • 用例之間的關係:
    (1) 擴展關係:插入基用例所未知的附加行爲,只有基用例能實例化。
    (2) 概括關係:一般化關係,特殊用例繼承和增加了基用例的特徵。
    (3) 包含關係:用例可以簡單的合併其他的用例,將其作爲自身行爲的片段。
圖3.3: USE CASE圖
圖3.4: USE CASE圖
圖3.5: USE CASE圖
圖3.6: USE CASE圖
實現
  • 用例實現爲協作:序列圖、協作圖、活動圖
  • 功能分配
  • 邊界對象、控制對象、實體對象
圖3.7:邊界
理解Use Case和Actor
  1. Use Case絕不是錦上添花的東西,一方面它可以促進與用戶溝通,理解正確的需求,另一方面它可以劃分系統與外部實體的界限,是系統設計的起點,而最終應該落實到類和實現代碼上。
  2. Use Case View與Logical View應該有明確的相關性。UML中從Use Case到類包的關聯可以用依賴(或實現)關係描述。
  3. Actor不是指人,而是指代表某一種特定功能的角色,因此同一個人可能對應很多個Actor。Actor是虛擬的概念,可以指外部系統和設備。
  4. Use Case是對系統行爲的動態描述,它是OO設計的起點,是類、對象、操作的來源,而通過邏輯視圖的設計,可以獲得軟件的靜態結構。
2. 類圖Class Diagram
  • 名字、屬性、操作、可見性
    關係
  • 關聯關係:普通、遞歸、限定、或關聯、有序關聯,關聯類
  • 聚合:複合聚合-實心菱形
  • 通用化:普通、受限
  • 依賴:兩個模型元素(類、組合、用例)之間的語義上的連接關係。
  • 包(Package)
圖4.1:類圖
圖4.2:類圖
圖4.3:類圖
圖4.4:類圖
 
圖4.5:類圖
 
圖4.6:類圖
 
圖4.7:類圖
圖5:包
本系列文章介紹面向對象的分析與設計方法。標準建模語言的特徵,標準建模語言在軟件開發的利用。並介紹了建模的方法用視圖在建模中的作用。本節中我們會比較四種UML依賴關係異同,並進行全篇總結。
四種UML依賴關係異同
  • 綁定關係位於模板(如C++模板)和用其生成的模型元素之間,該元素完全是模板的實例化,爲添加任何新的東西。
  • 可溯關係是兩個元素或元素集合之間的概念連接,用於描述位於不同語義層或多種視點下的同一個概念。這些元素間並沒有任何特定的映射關係,關係的方向可被忽略。通常用於跟蹤需求,或幫助建模者跟蹤多個模型的變化。
  • 使用關係表示一個元素爲了實現或完成其全部的功能需要其它元素或元素集合的配合,例如類與類之間的多種方法調用關係。
  • 細化關係是不同語義層(如分析和設計)之間模型元素的依賴關係,表示客戶可由供應者導出。這一導出關係不一定非要用算法來描述,可以完全人爲決定,因此細化關係可描述的語義範圍較廣,包括:模型的逐步細化、優化、變換、模板、模型合成、框架組成等等。
  • 綁定和使用關係只能用於同一模型中元素的連接,而可溯和細化關係可用於連接多個模型的元素。
         圖6:關係
3.      對象圖
是類圖的變體,表示類的對象實例,是類圖的一個範例
 圖7:對象圖
4.      狀態圖
顯示類的所有對象可能具有的狀態,以及引起狀態變化的事件,可以爲系統描述整體狀態圖
                  圖8.1:狀態圖
                     圖8.2:狀態圖
                     圖8.3:狀態圖
                  圖8.4:狀態圖
5.      序列圖
  • 反映隨時間對象之間的動態協作關係
  • 反映對象之間已發送消息的先後順序
  • 說明對象之間的交互過程
  • 以及在某一具體位置有何事件發生
圖9.1:序列圖
                 圖9.2:序列圖
                   圖9.3:序列圖
                  圖9.4:序列圖
6.協作圖
動態協作,顯示對象和它們之間的關係(上下文相關)
                 圖10.1:協作圖
                        圖10.2:協作圖
                         圖10.3:協作圖
7.      活動圖
  • 反映一個連續的運動流
  • 某個操作的執行時的活動狀況
  • 描述一個操作執行過程中(操作實現的實例化)所完成的工作(動作)。
  • 描述對象內部的工作。
  • 顯示如何執行一組相關的動作,以及這些動作如何影響它們周圍的對象。
  • 顯示用例的實例是如何執行動作以及改變對象狀態。
  • 說明一次商務活動中的工人(角色)、工作流、組織和對象是如何工作的。
  • 動作、轉移、泳道、對象、信號
   圖11.1:活動圖
               圖11.2:活動圖
                  圖11.3:活動圖
                 圖11.4:活動圖  
                    圖11.5:活動圖

 

8.    組件圖
  • 組件包含邏輯類及邏輯類的實現信息
  • 用來反映代碼的物理結構
  • 源組件、二進制組件、可執行組件
  • 鏈接時的組件、運行時的組件
  • Main programs,主程序
  • Packages,構件包
  • Subprograms,子程序
  • Tasks,獨立線程
  • EXE,可執行文件
  • DLL,動態連接庫
圖12.1:組件圖
                  圖12.2:組件圖
9.    部署圖
  • 顯示系統中軟件和硬件的物理架構
  • 節點、連接、組件、對象
               圖13.1:部署圖
 
圖13.2:部署圖
圖13.3:部署圖
模型元素
圖14:模型元素
通用機制
  • 修飾、筆記、規格說明
  • 擴展機制
  • 版類、加標籤值、約束
              圖15:通用機制
 
Rose Stereotype
 

Association:extend

  • Association:extend
  • Association:include
  • Association:communicate
  • Association:subscribe
  • Association:realize
  • Class:Table
  • Component:Database
UML的圖與模型的對應關係
  • 用例模型--用用例圖、順序圖、協作圖、狀態圖和活 動圖描述。
  • 分析、設計模型--用類圖和對象圖、順序圖、協作圖、狀態圖和活動圖描述。
  • 實現模型--可用組件圖、順序圖和協作圖描述。
  • 實施模型--配置圖
  • 測試模型--測試模型引用了所有其他模型,所以它使用他們對應的所有圖。
                          圖16:圖與模型的對應關係
七  總結
     建模工具是幫助設計者實現任何複雜的工程項目的有力工具,在軟件工程中,它能夠把模型與實際應用緊密地聯繫起來。通過模型與代碼之間的映射,可以直接爲不同的程序開發環境生成系統結構的框架,通過建立模型和代碼間的映射,可以確保代碼改進時模型也隨之更新了,而且通過模型與代碼間的自動連接,建模工具可以確保良好的設計實施。
 
發佈了32 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章