天天看點

UML和Rose

在面向對象的軟體開發中,如果軟體

由近百個或更多對象構成,單憑簡單的分析是很難理清的。同時為了利于大中型軟體的維護和再使用,在具體寫代碼之前進行軟體結構分析也是很有必要的。這就需要有一個CASE(Computer Aided Software Engineering)工具來輔助分析。而當今國際CASE工具內建了新的面向對象的設計分析方法—UML。所謂UML即統一模型語言(Unified Modeling Language)的縮寫。它是運用統一的、标準化了的标記和定義來實作面向對象的軟體分析和設計的一種方法。它綜合了Rambaugh所提出的“對象模型技術”(Object Modeling Technique,OMT),Booch和Jacobson提出的“面向對象軟體工程”(Object Oriented Software Engineering,OOSE)等設計分析方法,并由Object Management Group(OMG)于1997年底标準化了的一種新的面向對象的軟體設計方法。它主要由不同定義的圖表(Diagram)和關系(Relationship)構成,适用于軟體分析、設計的各個方面;同時也對商務過程的管理與分析提供幫助。

這裡首先得給出UML不同的标記(圖表和關系)的定義。

UML的圖表和關系

UML的圖表可以從動态、靜态和實作(Implementation)三個角度來觀察、分析和表達一個模型。

1. 動态的角度是由應用圖(UseCase Diagram)、順序圖(Sequence Diagram)、協作圖(Collaboration Diagram)、狀态圖(State Diagram)和行為圖(Activity Diagram)構成。應用圖反映客戶與系統之間的關系,比如說客戶的要求,系統的響應等,它是從客戶的層次來反映模型;順序圖和協作圖描繪了對象執行的過程。順序圖是以時間為坐标來描繪這個過程。協作圖則是按對象之間的關系來聯接,并标注出這一個過程;狀态圖表現的着重點是對象的狀态變化,比如說狀态變化時需要什麼條件;行為圖是一種特殊的狀态圖,它的狀态、狀态變化都是發生于一個過程的内部,對于一般的狀态圖,更常用于表現外部(異步)觸發的的狀态變化。

2.類圖(ClassDiagramm)是屬于靜态的角度。它是由類、類的屬性(Attribute)、類的方法(Method)、及類與類之間的關系來反映一個模型。

3.元件圖(Component Diagram)和開發圖(Deployment Diagram)屬于實作的角度。元件圖表達了如何把類、對象內建在實際軟體子產品中。例如一個類,特定的資料是在執行檔案中還是在動态庫裡。開發圖從實體層次指出了系統子產品之間的聯系。

4.UML裡的四個常用的關系(Relationship)是:

實作(Realization):代表一個類是一個新類型(stereo type)類的實作這種關系。所謂新類型即是不同于一般的UML元素,它是有自己特殊的屬性和結構的元素,用于UML模型的擴充。例如Java中的Interface類是UML中未定義的,則可用stereo type來擴充。

集合(Aggregation):代表一個類是另一個類的一部份這種關系。

協作(Association):代表兩個類之間的操作關系。即類與類之間可以通過句柄對對方的屬性,方法進行操作。它也可連接配接在同一個類上。

概括(Generalization):代表一個類是其他一個(多個)類的子類。

基于UML的軟體分析與設計

軟體開發正常情況下按照如下步驟進行。首先是了解系統(客戶)需求,其次是系統分析,再次是代碼編寫,最後是代碼的維護和擴充。

1.系統(使用者)需求

它是問題提出的過程,軟體大體要實作什麼功能,有什麼參與者。而應用圖(Use Case Diagram)所表達的正是參與者(Actor)與軟體應用(Use Case),應用和系統響應之間的關系。

在了解系統需求的過程中,就可以給應用圖添加上相應的Actor與Use Case。在了解系統需求的後期,則可以把不同Actor與Use Case間的關系用相應的連線連接配接和對連線的定義使之清晰。之後可對Use Case的系統響應進行分析,即把系統執行順序畫出來,這已經進入系統分析階段。

2.系統分析

在這一階段,需要把軟體的功能細節化,同時考慮資料間的關系(層次),然後建立與之對應的對象,接着分析對象間的關系(即軟體結構)并定義對象的屬性(Attribute)和方法(Method)。常用的分析方法有流程圖、泡泡圖和由上到下等,但都隻能反映系統的某一個方面,要把它們綜合起來,即是UML的分析方法。

首先當然是對Use Case的分析,可按時間順序,把一個個過程标注出來,并分析哪一些過程屬于哪一個對象,這是順序圖。同時UseCase中還可以使用協作圖和狀态圖。協作圖是按對象之間的關系來聯接,适用于時間順序不嚴格的過程變化。狀态圖的分析重點在于狀态,即資料的變化,常用于觀察過程的參數和資料的變化,它在類圖分析中也使用。其次是把上一步分析的過程和資料整理成對象的方法(Method)和屬性(Attribute),并在類圖中畫出來,

每一個類即代表一個對象。對于類中的操作(Operation),還可用狀态圖來分析運作過程。完成類的繪制後,要把相近的類劃歸在一起,形成一個包(Package),接着把這些類用相應的關系(繼承、接口等)連接配接起來。類與類之間的關系在不同的面向對象的語言中有着各自的特殊之處,但都可用UML的關系(實作、集合、協作、概括)表達出來。

最後是在基于作業系統和特定語言的基礎上分析整個系統需要哪些子產品,對應于什麼檔案(比如在Windows中exe、dll、vxd等檔案),這可在元件圖中标記出來。如果設計的系統子產品處于不同實體層次,比如一個網絡系統,有多個Server(Database server、Web server等)和多個Client,而軟體子產品分布在不同的Server裡運作,這時需要使用開發圖,分析系統在實際環境運作時子產品的分布和運作條件。

3.代碼編寫

這一過程是把抽象的軟體模型轉變為具體的代碼。使用CASE工具建立了相應的模型,或者說建立起一個多視角的相關資料庫系統(RDMS)之後,則可使用軟體直接産生基于此模型的對應代碼架構(比如Java代碼,見表1)。至此一個具有清晰結構的軟體系統就已經有了雛形。往後的階段隻需要把某一種具體代碼往架構裡填充。

4.代碼的維護和擴充

面向對象的程式設計方法,主要目的就是為了讓程式更容易維護,擴充。為了改動和添加代碼,一般情況下就得通讀源代碼和注釋,然後才明白程式的結構和完成的功能,進而修改。但對于UML設計出來的軟體,先看其模型中不同視角的圖表就可以把軟體結構清晰的表達出來了。

同時在建立模型時所寫的文檔,也會加入源代碼中。另外,有的CASE工具還提供COM接口,也就是說,可以通過程式設計把這些工具建立的模型進行分析,輸出相應的報表、文檔。以上3點都說明了用UML建立模型利于軟體的維護和擴充。

Rational Rose

Rational公司推出的Rational Rose 98i是目前最好的基于UML的CASE工具。它把UML和諧地內建進面向對象的軟體開發過程中。不論是在系統需求階段,還是在對象的分析與設計、軟體的實作與測試階段,它都提供了清晰的UML表達方法和完善的工具,友善建立起相應的軟體模型。它有良好的界面,可通過編輯*.MNU純文字檔案,修改和定義主菜單,添加運作子產品。它可生成各種代碼和資料架構,如C++、Java、Visual Basic,IDL(Interface Design Language)、DDL(Data Definition Language)等。

它有Rose Script,類似Office中的VBA(Visual Basic for Application),直接調用Rose模型的對象。對于模型中需要有特定資料結構,生成Rose不直接支援的代碼的程式員,可考慮用其進行模型的擴充,直接在模型中加入特定資料結構。值得補充的是,因為Rose的接口是按照Microsoft COM(Compent Object Model)的标準制定的接口,是以也可以在VB或VC++環境中程式設計,對模型進行資料添加。它有Add-In Manager,可把編寫好的RoseScript和COM元件在Rational Rose中添加或卸出。

UML是一個普遍的、抽象的分析方法,因而并不是每個CASE工具都可能,或都需要把100%的UML內建到各自的環境中。Rational Rose中就沒有行為圖(Activity Diagram)。

微軟的Repository

按UML來設計模型,用于生成代碼隻是UML的用途之一。Microsoft公司的Repository也是以UML為基礎設計的一個模型(與Rose模型類似)。UML在Repository中得到充分的實際運用,在這模型上可以把不同平台、不同程式的資料交換緊密連接配接起來。它由四個部分組成。

1.Open Information Model(OIM):它實際上是一組中繼資料(Meta Data),描述了不同資料的結構和它們之間的關系,它是Repository的基礎;

2.Repository Engine:以SQL Server為基礎的對象管理系統,提供COM接口和SQL的API;

3.SDK和Visual Modeling Enviroment:在此環境下可以建立一個與實際開發環境相聯系的模型并用此模型開發程式,Microsoft公司已經把它內建于Visual Studio 6.0中;

4.XML Interchange Format:XML是新的、将要替代HTML的下一代标示語言(Markup Lanuage),在網絡裡,不同Repository資料庫間的資料可以變成XML的格式來交換資料,新出的Repository 2.0允許直接用XML語句來改動模型(OIM)的資料。

随着更多軟體廠商對UML的關注,UML必将在更廣泛的領域發揮作用,成為提升軟體設計與開發效率的利器。 

繼續閱讀