人數

2010年7月11日 星期日

UML定義Unified Modeling Language統一塑模語言

UML定義 

  UML是Unified Modeling Language的簡稱,中譯為「統一塑模語言」,是一種以視覺化方法、訂定、建構及記錄系統用的一種語言。它是一種標記符號系統(notational system),目的在使用物件導向概念來塑模系統。
其中:
[Image]Unified:UML是一種標準語 言,廣泛運用於全世界。
[Image]Modeling:UML用途在於塑模(Modeling),也就是畫軟體藍圖。
[Image]Language:UML是一種塑模語言,而非程式語言或標示語言。
也就是說,UML是軟體系統發展人員用以建造模型,而這些模型使得工作團隊能夠將系統具象化(Visualization)、將系統結構及行為規格化 (Specification)、建構(Construction)系統、以及記錄(Documentation)發展系統過程中之各項決策。


 UML組成要素
事物(Things) 模型內基本成員,包括:結構事物(例如:類別、介面、合作與案例等)、行 為事物、分組事物與附註事物
關係(Relationships) 將事物組合在一起,包括:相依、結合、一般化與實現化關係。  
圖型(Diagrams) 一般是由連結的事物和關係繪製而成,包括:類別、物件、Use Case、循序、合作、狀態、活動、元件、部署圖等九種圖型。 
UML在軟體塑模中所扮演的角色 軟體發展之方法論中包含了程序(Process)及表示法 (Notation)兩個部份,其中:
(1) 程序指的是系統開發的流程,例:瀑布模式、漸增模式、擴展模 式、雛型模式、螺旋模式等。
(2) 表示法指的是建構軟體模型中所會用到之符號及規則。

UML所涵蓋的內容是表式法而非程序,UML是與程序無關的(Process Independent),也就是說,無論以任何程序來開發軟體系統,都可以使用UML來建構軟體模型。 
UML與物件導向方法之關係
(1) UML 之訂定與物件導向方法的確有非常密切之關係。
(2) UML中的各種符號及規則與物件導向語言(Java,C++)之 結構有完整對應。
(3) 但是,UML絕對不僅限用在物件導向軟體開發,UML中有些概念 與圖形甚至可說是與物件導向無關,因此,軟體開發時無論是否採用物件導向方法,UML都是適用的。
UML的重要性 
(1) UML是 OMG(Object Management Group)公佈的官方標準。
(2) UML已為全世界軟體業者所廣泛採用,各大軟體公司 (Microsoft、IBM、Oracle等)在其產品中均支援UML。
(3) UML的應用領域越來越廣(資料庫設計、韌體設計、資訊管理等)。
UML的目標 UML語言的開發有多個目標。首先也是最重要的目標是使UML成為一種通用的塑模語言,可提供所有建模者使用。

它並非某人專有,且建立在電腦界普遍認同的基礎上,即它包括了各種主要的方法,所以能作塑塑模語言來使用。 至少,我們希望它能夠取代OMT、Booch、Objectory以及參與UML提案的人所使用的建模方法。其次,我們採用的表示法源自OMT、 Booch、 Objectory及其他主要方法,目的在於讓UML的表示法盡可能為眾所熟習。

這意味著它能夠良好地支援設計工作,像封裝、區分有關事務、記錄模型架構的意圖。此外,我們希望UML 能處理當前軟體發展的種種問題,例如大規模的、分散的、平行運算(concurrency)、樣式(patterns)和團體開發等等。

UML的終極目標是盡量簡單尚且有能力對所需建造的系統能夠完整的塑造成型。UML需要有足夠的表達能力以便可以處理現代軟體系統中出現的所有概念,例如 平行和分散式運算,以及軟體工程機制,如封裝和元件。它必須是一種通用語言,就如同任何一種通用目的的程式設計語言一樣。遺憾的是,此意味著如果我們想要 處理的並非玩具一般的軟體系統,就不能夠太簡化。 
使用個案圖(Use Case Diagram) 以OO(物件導向)技術開發系統時,在需求 分析時常利用典型的情節(Scenario)來進行需求塑模,這種個案模式一直沒有統一的表達方式直到Ivar Jacobson等人(1996) 才將使用個案的表達正式化。
使用個案圖表示從使用者之觀點描述系統的行為者與系統間之互動行為與關係,包含了行為者和使用個案二個元件,此法在資料與展示格式上僅利用文字描述,若能 搭配結構化中的藍圖與資料詞彙則可補強其不足之處。
使用案例是專業分工的依據,是專案進度評量的重要因素。

行為者(Actor) = 參 與者
環境中與系統有互動關係的人或事物,有該使用個案的啟動者即主要行為者(Primary Actor)與其他參與者即次要行為者(Secondary Actor)。
參與者被繪製成一個火柴棒形狀的小人並將名稱置其下方。

使用個案(Use Case)使用者透過介面要求系統所做一系列相關的事件流,包含了最主要的事件即基本路徑(Basic Course)與其他衍生事件或可能發生的錯誤即替代路徑(Alternative Courses)。
Use Case圖形描述了一個系統的功能,以及此系統的使用者。
元素包含:
行為者(actor):表示此系統的使用者,包括人類的使用者及其他系統。
使用案例(Use Case):表示由一個系統提供給使用者的功能或服務。

外圍的矩形表示系統的界線,系統名稱在矩形的上面。人形圖式表示這個行為者是人類。備份系統的矩形圖式表示這個行為者是另一個系統。備份系統的行為者名稱 前面加上一個<>,他說明備份系統是一個行為者。原型和人形圖式是相等的。橢圓形所表示的是使用案例(Use Case)。行為者和使用案例有直線,此線表示此行為者使用或參與Use Case所提供的功能。這條線也叫溝通。有一個標示Uses原型的箭頭,他是用以說明搜尋技術Use Case被移除技術Use Case及尋找技術Use Case呼叫,或包含於兩者之中,這個箭頭稱為一個使用(use)關係。

類別圖(Class Diagram)表示系統存在之類別、介面及它們間之靜態資料結構與邏輯關係
通常以三層表示
類別名:正體字,具體類別;斜體字:抽象類別,介面:、屬性層、方法層 屬性與方法有四種封裝方式
(1) public:以符號 + 表示
(2) private:以符號 - 表示
(3) protected:以 符號 # 表示
(4) static:以 符號 _ 表示
描述介面的類別圖:沒有private的封裝
描述物件的類別圖:描述類別的實體,名稱下需加底線關係類別間的關係包括了 [Image]依賴 / 相依(Dependency)
(1) 使用的關係,表達一個類別會用到另一個類別
(2) 另一個類別的改變會影響到使用他的類別,但反之不必然
(3) 一類別的區域變數,方法參數,方法返回值,對靜態方法呼叫時是另一個類別時稱之
(4) 以虛線開箭頭表示。------->

一般化 (Generalization)
(1) 繼承的關係,包括了類別間的繼承,介面間的繼承,類別對介面的實作等
(2) 以實線空心箭頭表示。

關聯/結 合(Association)
(1) 同一層級的類別間靜態的結構關係
(2) Java語言中是使用實體屬性實作的
(3) 其關係有雙向與單向,建議多用單向
(4) 關係有基數(Multiplicity),關係有名稱,但通常均予以省略
(5) 以實線段表示。 — 依關聯的類別個數來分
二元關聯(Binary Association)
多元關聯(n-ary Association)

依描述整體與部分的關係來分(不同層級的類別)
聚合 / 聚集(Aggregation): 以實線且整體端加一個空心的菱形表示。◇— 合成 / 組合(Composition): 整體物件需負責部分物件的生命週期,以實線且整體端加一個實心的菱形表示。 ◆— 實現化 (Realization)
(1) 以介面實現其他類別之描述
(2) 以虛線空心箭頭表示。 基數(Multiplicity) =多重性
在類別連線上與類別之旁以數字標示與之關聯的數量。

物件圖(Object Diagram)描述系統於某一時間點的靜態結構,也 稱為案例圖,包含了物件與連線二個元件。
物件間的關係稱為連線(Link)。

循序圖(Sequence Diagram)循 序圖(Sequence Diagram)敘述物件之間的互動關係。這些互動關係被模組化為訊息的交換。這些圖所關注的焦點在類別及他們所交換的訊息,藉以達成某些預期的行為。循 序圖其實是一種互動圖,元素包含:
[Image]類別角 色:表示此物件在互動關係中所扮演的角色。
[Image]生命線: 表示一個物件存活的一段時間。
[Image]活動:表 示一個物件執行一項操作方式所經過的時間。
[Image]訊息:表 示物件之間所進行的溝通。 [Image] 此圖最頂端的物件是類別角色。每個物件所延伸出來的虛線代表生命線,在生命 線上的小四方形代表活動。在生命線之間的水平箭頭所表示的是物件之間的交換訊息。水平箭頭上標示了在類別角色之間所傳遞的訊息。

合作圖(Collaboration Diagram)著重表達物件間之連結結構,並能同時展現物件間的訊息傳遞與處理之程序,包含了類別之 物件、連結、訊息與操作等元件。
Rational Rose可將循序圖直接轉換成合作圖。
合作圖與循序圖相比較,少了物件生命線與焦點控制,多了路徑與序數

連結(Link)以直線連接二個物件也就是物件間的路徑(Path)。

訊息(Message)訊息發生順序以自然數或杜威數等編號來表達。

活動圖(Activity Diagram)狀態圖(State Diagram)元件圖(Component Diagram)部署圖(Deployment Diagram)

網路資源 / 參考資料
淺談 UML
UML 手冊
物件導向的天空
軟體工程
《UML教學手冊》/ Thomas A. Pender






沒有留言: