UML造型——使用EA时序图工具的开发实践和经验
Enterprise Architect(下面簡稱EA)是一款基于OMG UML的可視化模型與設計工具。提供了對軟件系統的設計和構建、業務流程建模和基于領域建模的支持,被企業和組織不僅應用于對系統的建模,還用于推進模型在整個應用程序開發周期中實現。
在EA工具建模平臺上。提供例如以下經常使用設計模型:
Business Process 業務流程模型
Requirements 需求分析模型
Use Case 用例模型
Domain Model 領域模型
Class 類設計模型
Database 數據庫設計模型
Component 組件模型
Deployment 部署模型
Testing 測試模型
Maintenance 維護模型
Project Management 項目管理模型
User Interface 用戶接口模型
對于現階段我們能用到的最多的就是類設計模型、數據庫設計模型、用例設計模型、組件模型和部署模型。我們能夠依據自己的須要選擇所要創建的模型。當然假設不選或選錯了在后期還能夠進行更改所以這一步是無關緊要的。本文重點介紹基于類設計模型的時序圖設計實踐。
序列圖主要用于依照交互發生的一系列順序。顯示對象之間的這些交互。非常象類圖,開發人員一般覺得序列圖僅僅對他們有意義。然而,一個組織的業務人員會發現,序列圖顯示不同的業務對象怎樣交互。對于交流當前業務怎樣進行非常實用。除記錄組織的當前事件外。一個業務級的序列圖能被當作一個需求文件使用,為實現一個未來系統傳遞需求。在項目的需求階段。分析師能通過提供一個更加正式層次的表達,把用例帶入下一層次。那種情況下,用例經常被細化為一個或者很多其它的序列圖。
組織的技術人員能發現,序列圖在記錄一個未來系統的行為應該怎樣表現中,很實用。在設計階段,架構師和開發人員能使用圖,挖掘出系統對象間的交互,這樣充實整個系統設計。
序列圖的主要用途之中的一個,是把用例表達的需求,轉化為進一步、更加正式層次的精細表達。
用例經常被細化為一個或者很多其它的序列圖。序列圖除了在設計新系統方面的用途外,它們還能用來記錄一個存在系統(稱它為“遺產”)的對象如今怎樣交互。當把這個系統移交給還有一個人或組織時。這個文檔非常實用。
序列圖的主要目的是定義事件序列。產生一些希望的輸出。重點不是消息本身,而是消息產生的順序。只是,大多數序列圖會表示一個系統的對象之間傳遞的什么消息,以及它們發生的順序。
圖依照水平和垂直的維度傳遞信息:垂直維度從上而下表示消息/調用發生的時間序列,并且水平維度從左到右表示消息發送到的對象實例。
本實踐軟件項目中。已經完畢用例模型(圖中Use Case Model部分)設計。以“流程全生命周期管理”用例為例進行深入設計。
第一步:在類模型(圖中Class Model)中加入包“Add a Package”,命名為“流程管理”。例如以下圖1所看到的,建立“流程管理”包。并同一時候生成“流程管理”用例圖。
第二步:打開“流程管理”用例圖,畫“流程全生命周期管理”用例。
放置序列圖的位置跟一般的圖形不大一樣,并非放置在特定的"包"(Package)中。通常。序列圖是表達對象怎樣合作。進而來完畢某一個用例的任務的。因此,序列圖似乎要放在用例其中才合理。所以,我們先到上一步生成“流程管理”用例圖中畫出須要細化的用例。
圖1
第三步:在“流程全生命周期管理”用例里,創建類模型圖和時序圖,例如以下圖2所看到的過程:
(1)在“流程全生命周期管理”用例圖示中,點擊鼠標右鍵,彈出(2)窗體。
(2)選擇“Add”。彈出(3)窗體;
(3)選擇“Add Diagram...”。
圖2
結果如圖3所看到的,形成“流程全生命周期管理”類圖和時序圖。
圖3
第四步:在類模型圖中創建類及其屬性(Attributes...)和方法(Operation...)
例如以下圖4所看到的,拖拽Class到類圖(Class Diagram)設計窗口中,雙擊或右擊選擇屬性。在彈出的對話框中的常規選項卡中加入信息。當中名稱“流程模型管理列表”為類名。構造類型能夠選擇此類是窗口類還是邊界類還是業務類、實體類等等,本例中選擇為“form”。可見性為類的可見性分別可設為public、private、protected。階段和版本依據自己的須要設置。備注為給該類加入的備注說明。選擇編譯的語言以方便生成源碼。點擊具體信息選項卡,能夠向類中加入屬性、方法及方法的參數和相關說明。
圖4
第五步:為類加入屬性和方法
圖5
第六步:畫時序圖
在Project Browser窗體中,雙擊打開“流程全生命周期管理”時序圖窗體,Toolbox窗體中有例如以下組件:
Actor:角色/運行者,通經常使用于用例場景圖中,在描寫敘述用戶交互時表示當前用戶/操作者。
Lifeline:生命線,最經常使用。比如系統、子系統、崗位角色、模塊、類。當畫一個序列圖的時候,放置生命線符號元件。橫跨圖的頂部。生命線表示序列中。建模的角色或對象實例。
Boundary、Control、Entity是三種特殊的生命線對象類型,通常一起使用(MVC模式、控制模式):
Boundary:邊界對象,剛開始學習的人用得少,在MVC模式、控制模式、需求分析過渡到系統設計中用得多些,可用于表示交互界面、子系統。
Control:控制對象。用于表示業務邏輯、分工協調的職責對象,採用控制模式分析設計時用得多。
Entity:實體對象。用于表示須要永久保存或較長生命期的數據對象。比如票據、文件、數據庫(通常不直接說數據庫等技術實現方式,而說邏輯意義的名稱)。
Fragment:片段,表示某一局部序列圖單元。比如條件分支、循環、子圖或子圖鏈接,后者可用于序列圖分層建模。
EndPoint:結束點,表示流程退出、異常退出、子圖結束,一般與“Diagram Gate”搭配使用。
Diagram Gate:圖入口,表示進入序列圖的一個入口。
用于在子序列圖中表示是在什么情況下由上一級序列圖進來的
(Interaction Relationships)消息:為了顯示一個對象(比如。生命線)傳遞一個消息給另外一個對象,你畫一條線指向接收對象,包含一個實心箭頭(假設是一個同步調用操作)或一個棍形箭頭(假設是一個異步訊號)。消息/方法名字放置在帶箭頭的線上面。正在被傳遞給接收對象的消息,表示接收對象的類實現的一個操作/方法。
1、拖拽Actor到圖板中。命名為“流程管理者”。再從Project Browser樹形文件夾中,拖拽“流程模型管理列表”到圖板中,形成例如以下圖6所看到的效果。
圖6
或者直接點擊工具箱中的生命線(Lifeline)命令。在圖上分別加入多個生命線,輸入生命線名稱后大致調整各個生命線的位置。
2、通過消息來表示圖中對象間的互動關系,在圖7中。點擊工具箱中的消息箭頭命令,在一個生命線虛線上按下鼠標左鍵。拖動到還有一個生命線虛線上再松開鼠標左鍵,然后雙擊消息線就能夠輸入消息名稱了。
圖7
按本案例。先定義出類的順序,則是選擇消息名稱,例如以下圖8所看到的。
圖中:初始化默認列表()、流程模型新增()、選中流程()等方法,都是在類“流程模型管理列表”定義好的,在這里直接選用。也能夠點擊button“Operations”。現添加。
圖8
第七步:序列圖分層
使用序列圖分層技術能夠讓一個圖不至于太復雜,在不同層次的序列圖中表達不同級別的細節。在上圖中。雙擊交互引用框“具體做什么”就能進入子序列圖,在子序列圖中表達更具體的內容。
操作方法:創建單獨的序列圖(子序列圖,比例如以下圖“流程模型管理列表”時序圖)。在模型樹上將“流程模型管理列表”子序列圖節點拖到當前序列圖上,在彈出的對話框中選擇第一個類型“交互引用框”:
圖9
完畢鏈接子時序圖操作時,在當前時序圖上產生圖示。
終于效果例如以下圖10所看到的,點擊其所鏈接的時序圖“ref/流程模型管理列表”的圖標。則展示出圖11,流程模型管理列表內部的時序圖,展現其分層逐級深入的效果。
圖10
圖11
使用UML經驗與愿景。
序列圖把人當作系統。
軟件開發的目的就是要改進當前的現實,可能是引進一個新系統,也可能是升級現有的系統。序列圖強迫思考動作背后的目的。當中,消息代表責任分配而不是數據流動。
使用EA進行UML建模。是個非常好的選擇。在實際工作中,首先保證開發完整的用例模型。用以確定需求范圍和規劃目標;其余的模型,依據工作需求,設計到能夠接受的粒度,假設資源同意,則按規范進行設計更好。
在開發時序圖時。盡量要逐級精細、深入。反過來。假設編碼進行不順暢。則應再回到時序圖開發過程中。逐步求解,再深入剖析。使開發代碼盡量簡潔、邏輯清晰。假設其它目的,故弄玄虛,不在此討論。
初次使用EA工具,不足之處在所難免,歡迎反饋討論。
參考:
維基百科.Enterprise Architect
UML建模--序列圖建模技巧
百度文庫.EA教程
《軟件方法》UMLChina 潘加宇 2012.11
UML建模—EA的使用(一) EA基本設置及類的設計周響 2013.4
《UML與Enterprise Architect 7.5團隊開發實務手冊》3.2.5 在EA中繪制序列圖賴信仁 電子工業出版社 2010.3
軟件項目開發過程中需要業務建模用例圖的做法小勇偉 2015.3
總結
以上是生活随笔為你收集整理的UML造型——使用EA时序图工具的开发实践和经验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Gradle 批量修改生
- 下一篇: Android ViewRoot、Dec