軟體設計(總體設計、概要設計、詳細設計)中常用的圖有哪些?

除了面向對象設計常用到的UML圖外,還用到那些圖?


謝題主 @西湖卧龍 之邀!

如今敏捷開發一般不推薦詳細設計,系統總體設計、概要設計可合併為架構(Architecture)設計。

描述軟體設計,常用的 UML 圖已涵蓋了多個設計層次,有描述系統各個側面的靜態圖與動態圖,基本夠用了。參考:

在軟體開發過程中,有哪些UML圖是比較常用的? - 軟體開發

一些人以為 UML 建模一上來就要 OOD(面向對象設計),畫許多很精細的圖,這是誤解。Robustness Diagram(健壯圖)是 OOA(面向對象分析)時常用的一類圖,相當於概要設計,對系統和架構作出一種初步、穩定的分解,是常見的一種敏捷開發、敏捷建模實踐。如下圖:

(圖片來源:http://vip.cs.utsa.edu/classes/cs4393f2005/lectures/cs4393week6.html)

關於 UML 資料庫建模(表圖),參考:

http://sparxsystems.com.au/resources/uml_datamodel.html

此外,UML 是一種抽象、通用的建模語言,高度可擴展是一大優點。如果 UML 的基本圖形不夠用,建議優先考慮採用 UML 的擴展機制(標記值、版型、profiles 等)來定製一些符號以滿足你的需求。

如還不夠,可考慮 SysML、ArchiMate、BPMN 等其他建模語言。

Mind Map(思維導圖)也是一種常用的圖,但本質上是一種樹狀圖,與描述樹形的 UML 類圖等價。


謝邀

贊同 @張恂老師 的回答

圖表的應用和你面對的項目規模,應對的風險密切相關。大象級項目的有時候會把圖表作為項目的交付物,這裡說需要例如UML這樣的完整的符號系統來描述。

圖表的重要風險是到了後期很難維護圖表與實現的一致性,另外圖表是很難驗證,缺少自動化手段。

在我的實際應用中,更多的用在需求分析階段,用來挖掘和說明業務需求。

絕大多數情況下圖表不是項目的目標,只是用來溝通的工具。除此之外,@張恂老師 提到的mindmap,應用也比較廣泛。


圖是一種用來說明的工具,所以只要是你認為能更好的說明你的意圖,任何圖都是可以的。

比如:軟體界面設計,你可以畫界面的草圖,當你描述界面間動態關係的時候 你會發現靜態的圖也說不清楚了,於是就會想辦法做成可交互的草圖。

比如,給用戶畫像,文字說不清楚了就畫漫畫唄。

平常用的最多的還是在白板上隨便畫的圖,筆隨意動,只要能說明你想要表達的意思即可。


推薦閱讀:

Daily Scrum(每日站會)有沒有替代方案?
敏捷開發與瀑布開發相比有什麼優勢?
軟體開發管理流程的困惑——為什麼最後開發的一堆東西都成了無用的代碼堆積?
如何實施 SCRUM ?

TAG:編程 | 軟體架構 | 敏捷開發 | 軟體設計 | UML建模 |