1. 程式人生 > >UML及UML建模工具介紹

UML及UML建模工具介紹

UML 簡介

Unified Modeling Language (UML)又稱統一建模語言或標準建模語言,是始於1997年一個OMG標準,它是一個支援模型化和軟體系統開發的圖形化語言,為軟體開發的所有階段提供模型化和視覺化支援,包括由需求分析到規格,到構造和配置。 面向物件的分析與設計(OOA&D,OOAD)方法的發展在80年代末至90年代中出現了一個高潮,UML是這個高潮的產物。它不僅統一了Booch、Rumbaugh和Jacobson的表示方法,而且對其作了進一步的發展,並最終統一為大眾所接受的標準建模語言。

分類

UML定義了5類,10種模型圖。

五種類圖定義:

用例圖:從使用者角度描述系統功能,並指各功能的操作者。
靜態圖:包括類圖,包圖,物件圖。

  • 類圖:描述系統中類的靜態結構
  • 包圖:是包和類組成的,表示包與包之間的關係,包圖描述系統的分層結構
  • 物件圖:是類圖的例項

行為圖:描述系統動態模型和物件組成的交換關係。包括狀態圖和活動圖

  • 活動圖:描述了業務實現用例的工作流程
  • 狀態圖:是描述狀態到狀態控制流,常用於動態特性建模

互動圖:描述物件之間的互動關係

  • 順序圖:物件之間的動態合作關係,強調物件傳送訊息的順序,同時顯示物件之間的互動
  • 合作圖:描述物件之間的協助關係

實現圖:

配置圖:定義系統中軟硬體的物理體系結構

UML提供的基本模型圖包括:

(1)、用例圖:展示系統外部的各類執行者與系統提供的各種用例之間的關係
(2)、類圖:展示系統中類的靜態結構(類是指具有相同屬性和行為的物件,類圖用來描述系統中各種類之間的靜態結構)
(3)、物件圖:是類圖的一種例項化圖(物件圖是對類圖的一種例項化)
(4)、包圖:是一種分組機制。在UML1.1版本中,包圖不再看作一種獨立的模型圖)
(5)、狀態圖:描述一類物件具有的所有可能的狀態及其轉移關係(它展示物件所具有的所有可能的狀態以及特定事件發生時狀態的轉移情況)
(6)、時序圖/順序圖:展示物件之間的一種動態協作關係(一組物件組成,隨時間推移物件之間交換訊息的過程,突出時間關係)
(7)、合作圖:從另一個角度展示物件之間的動態協作關係(物件間動態協作關係,突出訊息收發關係)
(8)、活動圖:展示系統中各種活動的執行流程(各種活動的執行順序、執行流程)
(9)、構件圖:展示程式程式碼的物理結構(描述程式程式碼的組織結構,各種構件之間的依賴關係)
(10)、配置圖:展示軟體在硬體環境中(特別是在分散式及網路環境中)的配置關係(系統中硬體和軟體的物理配置情況和系統體系結構)

常用UML建模工具

工欲善其事必先利其器,本文向大家介紹幾款常用UML建模工具,UML是個好東西,但是過分的依賴於UML也不是一件好事,因為有時候它會把簡單的東西複雜化。

1、Rational Rose
官網:http://www-03.ibm.com/software/products/en/ratirosefami
Rational Rose是Rational公司出品的一種面向物件的統一建模語言的視覺化建模工具。用於視覺化建模和公司級水平軟體應用的元件構造。它包括了統一建模語言(UML),OOSE,以及OMT。其中統一建模語言(UML)由Rational公司3位世界級面向物件技術專家Grady Booch、Ivar Jacobson、和Jim Rumbaugh通過對早期面向物件研究和設計方法的進一步擴充套件而得來的,它為視覺化建模軟體奠定了堅實的理論基礎。
Rational Rose 是一個完全的、具有能滿足所有建模環境(Web開發,資料建模,Visual Studio和 C++ )靈活性需求的一套解決方案。Rose 允許開發人員,專案經理,系統工程師和分析人員在軟體開發週期內在將需求和系統的體系架構轉換成程式碼,消除浪費的消耗,對需求和系統的體系架構進行視覺化,理解和精練。通過在軟體開發週期內使用同一種建模工具可以確保更快更好的建立滿足客戶需求的可擴充套件的、靈活的並且可靠的應用系統。
在面向物件應用程式開發領域,Rational Rose是影響其發展的一個重要因素。Rational Rose自推出以來就受到了業界的矚目,並一直引領著視覺化建模工具的發展。越來越多的軟體公司和開發團隊開始或者已經採用Rational Rose,用於大型專案開發的分析、建模與設計等方面。
Rose2002功能上可以完成UML的9種標準建模,即靜態建模(用例圖類圖物件圖元件圖配置圖)和動態建模(合作圖序列圖狀態轉移圖活動圖),為了使靜態建模可以直接作用於程式碼,Rose提供了類設計到多種程式語言程式碼自動產生的外掛。同時,作為一款優秀的分析和設計工具,常用UML建模工具Rose具有強大的正向和逆向工程能力。正向工程這裡指的是由設計產生程式碼,逆向工程指由程式碼歸納出設計。通過逆向工程Rose可以對歷史系統作出分析,然後進行改進,再通過正向工程產生新系統的程式碼,這樣的設計方式我們稱之為再工程。

2、PowerDesigner
Power Designer 是Sybase公司的CASE工具集,使用它可以方便地對管理資訊系統進行分析設計,他幾乎包括了資料庫模型設計的全過程。利用Power Designer可以製作資料流程圖、概念資料模型、物理資料模型,還可以為資料倉庫製作結構模型,也能對團隊設計模型進行控制。他可以與許多流行的軟體開發工具,例如PowerBuilder、Delphi、VB等相配合使縮短開發時間和使系統設計更優化。
Power Designer是能進行資料庫設計的強大的軟體,是一款開發人員常用的資料庫建模工具。使用它可以分別從概念資料模型(Conceptual Data Model)和物理資料模型(Physical Data Model)兩個層次對資料庫進行設計。在這裡,概念資料模型描述的是獨立於資料庫管理系統(DBMS)的實體定義和實體關係定義;物理資料模型是在概念資料模型的基礎上針對目標資料庫管理系統的具體化。
PowerDesigner 6.0支援資料流圖,8.0支援UML的UseCase/sequence/class檢視。

3、Visual Paradigm for UML
官網:http://www.visual-paradigm.com/product/vpuml/
Visual Paradigm for UML (VP-UML)是一款功能強大、跨平臺、使用最便捷、直觀的UML建模和CASE工具,它可以整合在其他CASE工具或者其他IDE工具中,這種“一站購物式”的軟體解決方案要遠遠優於常規的Model-Code-Deploy的開發程序。
Visual Paradigm for UML支援UML建模、資料庫建模、物件關係對映、逆向工程和Java雙向工程等等,功能異常強大。

4、Jude
一個號稱中日xp合作開發出來的小uml工具,只有幾m的大小,功能也還不錯。也是java做的,速度還是很快的。如果不需要使用逆向工程之類的高階功能的話,強烈推薦這個常用UML建模工具,並且它是免費的。

5、SystemArchitect
一個很受歡迎的高階UML建模工具,支援雙向工程(Round-tripEngineering)。

6、StarUML
StarUML(簡稱SU),是一種建立UML類圖,是一種生成類圖和其他型別的統一建模語言(UML)圖表的工具。StarUML是一個開源專案之一發展快、靈活、可擴充套件性強(zj)。唯一不足之處,在反向工程時,只能生成類圖,不能生成類之間的關係。

Rational Rose & PowerDesigner & VISIO比較

ROSE是直接從UML發展而誕生的設計工具,它的出現就是為了對UML建模的支援,ROSE一開始沒有對資料庫端建模的支援,但是在現在的版本中已經加入資料庫建模的功能。ROSE主要是在開發過程中的各種語義、模組、物件以及流程,狀態等描述比較好,主要體現在能夠從各個方面和角度來分析和設計,使軟體的開發藍圖更清晰,內部結構更加明朗(但是它的結構僅僅對那些對掌握UML的開發人員,也就是說對客戶瞭解系統的功能和流程等並不一定很有效),對系統的程式碼框架生成有很好的支援。但對資料庫的開發管理和資料庫端的迭代不是很好。

PowerDesigner原來是對資料庫建模而發展起來的一種資料庫建模工具。直到7.0版才開始對面向物件的開發的支援,後來又引入了對UML的支援。但是由於PowerDesigner側重不一樣,所以它對資料庫建模的支援很好,支援了能夠看到的90%左右的資料庫,對UML的建模使用到的各種圖的支援比較滯後。但是在最近得到加強。所以使用它來進行UML開發的並不多,很多人都是用它來作為資料庫的建模。如果使用UML分析,它的優點是生成程式碼時對Sybase的產品PowerBuilder的支援很好(其它UML建模工具則沒有或者需要一定的外掛),其他面嚮物件語言如 C++,Java,VB,C#等支援也不錯。但是它好像繼承了Sybase公司的一貫傳統,對中國的市場不是很看看好,所以對中文的支援總是有這樣或那樣的問題。

VISIO原來僅僅是一種畫圖工具,能夠用來描述各種圖形(從電路圖到房屋結構圖),也是到VISIO2000才開始引進軟體分析設計功能到程式碼生成的全部功能,它可以說是目前最能夠用圖形方式來表達各種商業圖形用途的工具(對軟體開發中的UML支援僅僅是其中很少的一部分)。它跟微軟的office產品的能夠很好相容。能夠把圖形直接複製或者內嵌到WORD的文件中。但是對於程式碼的生成更多是支援微軟的產品如VB,VC++,C#,MS SQL Server 等(這也是微軟的傳統),所以它可以說用於圖形語義的描述比較方便,但是用於軟體開發過程的迭代開發則有點牽強。

相關文章: