敏捷軟件開發_UML<一>
所看書籍是:敏捷軟件開發_原則、模式與實踐_C#版(美)馬丁著,這本書寫的非常棒,感謝作者。該歸納總結的過程按照我讀的順序寫。
UML
在建造橋樑,零件,自動化設備之前需要建模分析可行性,軟件在編寫之前也需要建立模型,看看類和邏輯的設計是否合理,這樣的建模過程就是UML。
###類圖
類圖就是來描述一個類本身或和其他類的調用關係。
- +public
- -private
- #protected
實現/泛化
- 集成
- 實現接口
組合
- 部分可以離開整體
聚合
- 部分不能離開整體
關聯
- 持有對其他對象引用的實例變量
依賴
- 局部變量/方法的參數或則靜態方法的調用
注意
- 關係的強弱:泛化/實現>組合>聚合>關聯>依賴
對象圖
表示系統執行的某個特定時刻的一組對象和關係,可以看成是內存快照。
該圖大部分是從相應的類圖中推導而來沒啥用。
順序圖
描述算法的實現,重點在於消息的順序。比較常繪製的動態模型。
例子
- 對象下面畫有橫線,類沒有,對象名:類
- 垂下來的線爲生命線
- 中間矩形垂下來的矩形:激活,表示一個函數的執行時間
- 虛線表示返回參與者並傳回返回值
- 箭頭:消息。返回值:消息名稱(參數)
- 帶圓圈的箭頭:消息的參數
注意
- 循環:框起來 [for each id in idlist]
- 容易被勿用和濫用
###協作圖
描述算法的實現,重點在於對象之間的關係
狀態圖
其實就是有限狀態機(FSM)。
例子:
- 實心黑球:初始僞狀態,從這個狀態開始運轉
- 圓矩形:狀態。上層放狀態的名字,下層放一些特定動作和事件,表示進入或則退出時要做什麼,
- 箭頭:遷移。上面有觸發該遷移的事件名稱和要執行的動作
注意
- entry和exit:標準事件,不管寫不寫都會觸發
- 超狀態:幾個狀態遷移時間相同時,可以組成一個超狀態。遷移時會出發超狀態的entry和exit
如何使用UML
在使用UML的過程中,需要先通過行爲優先的方式寫出狀態圖,先是局部狀態再是整體狀態,抽象出會改變的,將每一種改變的類型實例化,中間再通過各種設計模式隔離
行爲優先
從項目的功能入手,用戶的交互入手寫出每一種功能,大體的類有了後,再抽象出會改變的類,通過設計模式隔離
檢查結構
檢查每一種功能實現是否合理
想象代碼
想想出代碼的樣子做微調