統一建模語言UML 是一種應用于任何軟件開發過程的標記法和語義語言。它可以用來描述問題的需求和解決方案,其作用和地位非常類似于結構化程序設計中的數據分析和數據流圖,數據流圖實際上也是一種描述問題和解決方案的語言,所不同的是UML主要采用面向對象的方式解決問題,而數據流圖更適合描述結構化的解決問題方式。
UML有兩類主要的構件:結構圖和行為圖。
其中結構圖用來靜態描述軟件的構成和部署情況,而行為圖是UML中最有特色的部分,它能夠用來描述軟件各組成部分的相互關系和互動方式,進而闡述軟件的工作方式和狀態如何變化的過程。
(1)首先來看結構圖。
結構圖可以分成4種特定類型的圖:類圖、對象圖、組件圖和部署圖。
類圖和對象圖用來描述軟件的基礎構件(類)。
類圖描述了軟件中各個類的構成:包括屬性、操作以及許多類型的角色和關聯,特別是它能描述各個類之間的固有關系,比如繼承、包含等。
對象圖更關注的是類的不同實例的關系,多用于具體示例的設計。
部署圖描述組件安裝后在哪里配置組件,以及為這些系統如何交互建立模型,這種圖重點是描述軟件的物理結構以及各個物理組成部分如何交互的方法。
組件圖則用于說明系統組件之間如何交互,它還描述了組件由那些類構成,顯示了類和源文件之間的依賴關系。
UML最重要的是它的行為圖,用于顯示組件、類、用戶和系統之間相互作用的過程。如果說數據流圖是通過數據的變化來體現軟件的功能的話,那么,行為圖則是通過對象和系統狀態的改變來描述軟件的工作過程和功能。
(2)UML有5種行為圖:用例圖、活動圖、序列圖、協作圖和狀態圖。
用例圖主要用來圖示化系統的主事件流程,它主要用來描述客戶的需求,即用戶希望系統具備的完成一定功能的動作,通俗地理解用例就是軟件的功能模塊,所以是設計系統分析階段的起點,設計人員根據客戶的需求來創建和解釋用例圖,用來描述軟件應具備哪些功能模塊以及這些模塊之間的調用關系,用例圖包含了用例和參與者,用例之間用關聯來連接,這種關聯可以是泛化、包含和擴展,并連接到參與者,以求把系統的整個結構和功能反映給非技術人員(通常是軟件的用戶),對應的是軟件的結構和功能分解。
活動圖是對用例圖的進一步細化,用來分析較為復雜的用例中的行為,并顯示它們之間的交互作用,所以活動圖關注于用例的兩個方面:一方面是描述用例內部的工作過程,另一方面描述用例之間的交互作用。具體描述哪一方面取決于活動的范圍是在一個用例內部還是跨越多個用例。所謂活動實際上指軟件一個業務工作流程,它有一個開始狀態和一個或多個結束狀態,活動圖則表示這個業務流程需要哪些用例參加以及以怎樣的順序和方式參加,即這個業務流程有可能需要用到哪些功能模塊。對應的是軟件的一項功能的實現可能用到哪些模塊。
序列圖則反映了如何用對象來實現用例,描述的是一個用例中對象之間的相互作用的控制流程。對象之間是通過消息來通信的,序列圖就是在時間軸上對象的生命周期內詳細描述對象之間通信的每個步驟,并指出在通信的每個階段處理控制權位于何處,其結果就是顯示出了對象之間交互的每個路徑,它對應的是程序邏輯結構設計,有點像程序流程框圖。
協作圖仍然是描述用例的實現,但是它的描述比順序圖更加詳細,協作圖描述了每個對象在用例中的作用和角色,對象之間的交互關系也更具體,因為協作圖實際上是類圖和順序圖的交集,由于類圖已經設計出來了,類對象之間的通信內容也可以更具體(即調用哪個對象的哪個函數),和順序圖不同的是它不是在時間軸上描述對象之間的交互過程,而是采用序號表示對象交互的順序。它對應的是更細化的流程圖,我認為有了這個圖之后設計階段基本可以結束了,軟件可以進入編程階段。
狀態圖不是用來描述用例的,而是用來描述用例中單個對象及其行為狀態的改變方式的,即對象可以有那些狀態,以及在響應事件的過程中如何由一個狀態變遷到另一個狀態,在這里可以把對象看成是一個獨立的子系統,可以用一個狀態機來反映系統對外界的反應,而狀態圖就是描述這個狀態機的。這個圖目的在于說明如何實現對象,有了這個圖,對象就可以編程實現了,它對應的是對象內部實現流程,當然這個流程是封裝在對象內部,對其它對象是不可見的。
posted on 2007-05-24 11:38
cheng 閱讀(479)
評論(0) 編輯 收藏 所屬分類:
UML