close

 

 淺談UML

資策會數位教育研究所講師 郭惠民

 

UML是什麼?
UML是Unified Modeling Language的簡稱,中譯為「統一塑模語言」。其中:
    ●Unified:UML是一種標準語言,廣泛運用於全世界。
   
Modeling:UML用途在於塑模(Modeling),也就是畫軟體藍圖。
   
Language:UML是一種塑模語言,而非程式語言或標示語言。
也就是說,UML是軟體系統發展人員用以建造模型,而這些模型使得工作團隊能夠:將系統具象化(Visualization)、將系統結構及行為規格化 (Specification)、建構(Construction)系統、以及記錄(Documentation)發展系統過程中之各項決策。

什麼是塑模?
作曲家會將其腦袋中的旋律譜成樂曲,建築師會將其設計之建築物畫成藍圖,行銷廣告人員會將其創意製作成簡報;這些樂曲藍圖簡報就是模型(Model),而建構這些模型的過程就稱為塑模(Modeling)。
軟體開發如同音樂譜曲及建築設計,其過程中也必須將需求、分析、設計、實作、佈署等各項工作流程之構想與結果予以呈現,這就是軟體系統之塑模。

為什麼要塑模?
絕大部份的音樂演奏都需要樂譜(除了少數即性式表演外)!
絕大部份的建築施工都需要藍圖(除非要蓋的是一間狗屋)!
同樣的,所有軟體系統的建構最好都有適當的分析設計藍圖,因為軟體開發的過程絕對不是任意的、隨性的、且戰且走的、天馬行空的。
UML在軟體塑模中所扮演的角色是什麼?
軟體發展之方法論中包含了程序(Process)及表示法(Notation)兩個部份,其中:
   
程序指的是系統開發的流程,例:瀑布模式、漸增模式、擴展模式、雛型模式、螺旋模式等。
   
表示法指的是建構軟體模型中所會用到之符號及規則。
UML所涵蓋的內容是表式法而非程序,UML是與程序無關的(Process Independent),也就是說,無論以任何程序來開發軟體系統,都可以使用UML來建構軟體模型。
UML與物件導向方法之關係
    ●UML之訂定與物件導向方法的確有非常密切之關係。
   
UML中的各種符號及規則與物件導向語言(Java,C++)之結構有完整對應。
   
但是,UML絕對不僅限用在物件導向軟體開發,UML中有些概念與圖形甚至可說是與物件導向無關,
        例:Use Case Diagram及Statechart Diagram
   
因此,軟體開發時無論是否採用物件導向方法,UML都是適用的。

UML的重要性
   
UML是OMG公佈的官方標準。
   
UML已為全世界軟體業者所廣泛採用,各大軟體公司(Microsoft、IBM、Oracle等)
       在其產品中均支援UML。
   
UML的應用領域越來越廣(資料庫設計、韌體設計、資訊管理等)。

UML的現行版本
UML現行版本為1.5版(http://www.omg.org/technology/documents/formal/uml.htm),但2.0版將近完成,應會在短期內正式公佈(http://www.omg.org/uml)。

UML的內容到底是什麼?
UML對於軟體開發相關人員而言,其實就只是一組符號及規則,其中包括:
1.Basic Building Blocks(都有其相對的符號)
    (1) Things
       
Structura˙Things:Class、Interface、Collaboration、Use Case、Active Class、Component、Node
       
Behaviora˙Things:Interaction、State Machine
       
Grouping Things:Package
       
Annotation Things:Note
    (2) Relationships:Association、Generalization、Dependence、Realization
    (3) Diagrams
       
Structural:Class、Object、Component、Deployment
       
Behavior:Use Case、Activity、Statechart、Sequence、Collaboration
2.Rules(符號的使用規則)
    Name、Scope、Visibility、Integrity、Execution
3.Common Mechanisms(各類符號及圖形通用的機制)
    Specification、Adornments、Common Division、Extensibility Mechanisms

如何學習UML?
   
找本淺顯易懂的入門書籍,先掌握UML的全貌,千萬不要被過多抽象的軟體工程專有名詞所絆住。記住:UML只是一組符號而已!
   
先學習讀圖,讓自己先習慣於UML之各種符號,尤其注意UML中以擴充機制(Extensibility Mechanisms)所產生之符號,此部份最容易使初學者迷惑。
   
練習畫圖,訓練自已將心中之構想以UML符號呈現出來,注意各類符號之正確表示法,不要隨意更改之。
   
選用適當之CASE工具,Rationa˙Rose,Microsoft Visio,Borland Together都是很好的軟體工具。
如何應用UML於軟體開發?
   
選擇一個適當之開發程序(Process),例:RUP
   
選擇一個適當之UML發展工具,例:Rationa˙Rose
   
相關人員接受完整之訓練

 

 

所有UML使用者都必須學會用例圖
文/邱郁惠 2010-05-27

動手學UML第 8 回用例圖是元素最少的一款UML圖,可以用來表達系統對外提供的服務或功能,也是開發人員和使用者溝通的主要圖款


前面幾回所介紹的活動圖,可以讓開發團隊大致理解了企業流程的運作;接下來,我們要進一步透過UML的「用例圖」(Use Case Diagram)來捕捉並釐清需求。

用例圖可以表達系統對外提供的服務或功能,也是開發人員用來和使用者溝通的最主要圖款。但是,只透過用例圖的圖形化表達,是不足夠的,還有許多繁瑣的需求細節需要透過一般的文字,細膩地記錄下來才行。

因此,在實務上,除了用例圖,我們還會產出文字格式的「用例敘述」(Use Case Narrative)。所以說,用例圖與用例敘述,圖文相依,缺一不可。

不過,由於用例敘述不是UML標準的一部分,因此並沒有標準的用例敘述格式可以使用。至於VS2010/UML,也理所當然地,並沒有提供任何的用例敘述格式了。

所以,我只會在稍後內容中簡單說明用例敘述,但不深入討論。你要是對用例敘述有興趣深入,可以參考《寫給SA的UML/UseCase實務手冊》一書,該書花了許多篇幅細談用例圖與用例敘述。

VS2010中的用例圖
用例圖是元素最少的一款UML圖,所以並沒有區分中級和高級概念,它的全部元素和概念都屬於初級概念。因此我們可以推論,UML官方的專家學者認為用例圖屬於入門且常用圖款,所有的UML學習者都必須學習用例圖。

圖1 用例圖的工具箱
不過,請你看到圖1的VS2010/UML用例圖工具箱,很有趣的是,我標示了一個中級概念「產出物」(Artifact)。其實,產出物不只是中級概念,而且它還是「部署圖」(Deployment Diagram)內的元素,它並不是用例圖的元素。

先簡單說明一下「產出物」,它代表一種實際存在的實體資訊片段,其內記錄著重要的規格,通常使用於或產出於軟體開發過程中,或者是部署或操作系統時需要使用到或產出的實體產出物。
最常見的產出物,像是:

● UML模式的電子檔(model files)

● 原始程式碼的電子檔(source files)

● 批次執行的腳本檔(scripts)

● 二進元的可執行檔(binary excutable files)

● 資料庫中的資料表(table)

● 開發過程中產出的可交付物

● word文件的電子檔

● 電子郵件

在初步認識產出物後,我們可以合理的推想,VS2010/UML特別將「產出物」放到用例圖的工具箱中,是為了方便我們連結某一個用例與它的敘述文件檔(用例敘述),或者是根據用例所產出的其他細部設計圖。

接下來,我們先回過頭來看用例圖中的初級概念,談完初級概念之後,我們才來繼續討論產出物和用例敘述的概念。

用例圖初級概念:參與者
由於,用例圖主要用來表達系統對外提供的功能或服務,所以在用例圖中會出現位於系統外部的物件,這些系統外部的物件會跟系統互動,以便獲取期望的產出。

因此,我們會用「參與者」(Actor)來代表位於系統外部的物件,它會跟系統交換資料或信號(signal)。常見的參與者有下列三種:

● 角色(role):一般會直接使用系統的人類使用者,但參與者指得不是某一個實體的人,而是指人所扮演的角色。

● 實體(entity):像是其他的連線系統、主機、外部資料庫、硬體設備。

● 服務(service):近年來新興的虛擬參與者,像是網路服務(Web Service)或是雲端服務(Cloud Service)。

其實,UML預設的參與者圖示,只是個簡單的樹枝狀人型圖示,不像VS2010/UML設計的人像圖示。請你比較圖2的VS2010/UML的參與者圖示,和圖3的StarUML參與者圖示,StarUML中的樹枝狀人型圖示才是UML真正預設的圖示。

圖2 VS2010的參與者

圖3 參與者[StarUML]


在用例圖的定位上,我們會希望可以拿用例圖來跟使用者溝通需求,所以如果能夠用更多樣且豐富的圖像來代表參與者,可以讓溝通更活潑有趣,也更貼近使用者。在這個圖示的擴充性上頭,UML是允許開發人員自行設計專屬的圖示的。

那麼,我們可不可以在VS2010/UML中直接使用自訂的參與者圖示呢?想像一下,假設我們開發一套財務系統,主要的參與者有財務專員和部門主管,那我們乾脆拿某一位人氣最高的財務專員以及該部門主管的大頭照來當參與者圖示,這樣的溝通一定會更直接有力。

這個自訂參與者圖示的功能,其實很簡單,但是貼心又有趣,VS2010/UML輕易就可以做到了。請你打開參與者的性質表,如圖4所示,在「圖片路徑」(Image Path)處選定你自訂的參與者圖示。

圖4 設定圖片路徑


最後,我們再回過頭來看圖4的參與者性質表中,有一個是否為「抽象」(Is Abstract)參與者的設定,這個性質要配合「一般化關係」(Generalization)來談,比較有意義,所以我們稍後再來討論。

再者,參與者性質表中的「能見度」(Visibility)欄位,也不適合單獨談論,配合「子系統」(Subsystem)元素來談,會更容易理解,所以我們也暫時把這個概念挪後討論。


詳細

 

WIKI

統一塑模語言UML,Unified Modeling Language)是非專利的第三代塑模規約語言。UML是一種開放的方法,用於說明、可視化、構建和編寫一個正在開發的、物件導向的、軟體密集系統的製品的開放方法。UML展現了一系列最佳工程實踐,這些最佳實踐在對大規模,複雜系統進行塑模方面,特別是在軟體架構層次已經被驗證有效。

UML集成了BoochOMT物件導向軟體工程的概念,將這些方法融合為單一的,通用的,並且可以廣泛使用的塑模語言。UML打算成為可以對併發和分布式系統的標準塑模語言。

UML並不是一個工業標準,但在Object Management Group的主持和資助下,UML正在逐漸成為工業標準。OMG 之前曾經呼籲業界向其提供有關物件導向的理論及實現的方法,以便製作一個嚴謹的軟體塑模語言(Software Modeling Language)。有很多業界的領袖亦真誠地回應OMG,幫助她建立一個業界標準。

 

在UML系統開發中有三個主要的模型:

  • 功能模型:從用戶的角度展示系統的功能,包括使用個案圖。
  • 物件模型:採用物件,屬性,操作,關聯等概念展示系統的結構和基礎,包括類圖。
  • 動態模型:展現系統的內部行為。包括序列圖,活動圖,狀態圖。

區分UML模型和UML圖是非常重要的,UML圖,包括使用個案圖、協作圖、活動圖、序列圖、部署圖、構件圖、類圖、狀態圖,是模型中信息的圖形表達方式,但是UML模型獨立於UML圖存在。XML的當前版本只提供了模型信息的交換,而沒有提供圖信息的交換。

UML使用一套與Java語言或其他物件導向語言等價物,同時也是本體論等價物的圖形標記

UML並不是一個方法學,也不要求使用一個方法學,但是UML對於Rational 統一過程來說是必不可少的。

UML 2.0 中一共定義了13 種圖示(diagrams)。為方便了解,可分類成右側的結構。

結構性圖形(Structure diagrams) 強調的是系統式的塑模:

行為式圖形(Behavior diagrams) 強調系統模型中觸發的事件:

溝通性圖形(Interaction diagrams), 屬於行為圖形的子集合,強調系統模型中的資料流程:

協定狀態機是狀態機的子變種。它用來塑造網路通訊協定模型。

UML 並不限定 UML 要素型別非得是某圖形上的型別。一般來說,每個 UML 要素大約會出現在圖的所有型別。這種彈性在 UML 2.0 部分被限定。

為了要保持工程圖的傳統,在您的 UML 圖上加註用途、約束、或意圖永遠無傷大雅。

UML 2為了符合模型驅動架構(Model Driven Architecture)的需求做了大幅度的修改除在圖形基礎上擴充及變化了部份的展現方式外,也增加了一些圖形標準元件,比前一版多出了由循序圖與互 動圖所混合而成的互動概圖(Interaction Overview Diagram)、強調時間點的時序圖(Timing Diagram)與合成結構圖(Composite Structure Diagram),此外,在UML2中,UML1合作圖轉變為通訊圖(Communication Diagram),且在循序圖中也添加了互動框(Interaction Frame)的概念,還有增加一些運算子(如sd、loop、alt等)。同時,UML2支援模型驅動架構(MDA)倡議,提供穩定的基礎架構,容許軟體 開發程序增添自動化作業。此外,MDA把大型的系統分解成幾個元件模型,並與其他模型保持連結,使得UML更加精確。

[編輯] 概念

UML 從來源中使用相當多的概念. 我們將之定義於統一塑模語言術語彙表。下面僅列代表性的概念.

對於結構而言

執行者屬性元件介面對象

對於行為而言

活動事件訊息方法操作狀態用例

對於關係而言

聚合關聯組合相依廣義化 (or 繼承)。

其他概念

WIKI

arrow
arrow
    全站熱搜

    ASTRUE 發表在 痞客邦 留言(0) 人氣()