軟體設計(總體設計、概要設計、詳細設計)中常用的圖有哪些?
除了面向對象設計常用到的UML圖外,還用到那些圖?
謝題主 @西湖卧龍 之邀!
如今敏捷開發一般不推薦詳細設計,系統總體設計、概要設計可合併為架構(Architecture)設計。
描述軟體設計,常用的 UML 圖已涵蓋了多個設計層次,有描述系統各個側面的靜態圖與動態圖,基本夠用了。參考:
在軟體開發過程中,有哪些UML圖是比較常用的? - 軟體開發
一些人以為 UML 建模一上來就要 OOD(面向對象設計),畫許多很精細的圖,這是誤解。Robustness Diagram(健壯圖)是 OOA(面向對象分析)時常用的一類圖,相當於概要設計,對系統和架構作出一種初步、穩定的分解,是常見的一種敏捷開發、敏捷建模實踐。如下圖:
關於 UML 資料庫建模(表圖),參考:
http://sparxsystems.com.au/resources/uml_datamodel.html
此外,UML 是一種抽象、通用的建模語言,高度可擴展是一大優點。如果 UML 的基本圖形不夠用,建議優先考慮採用 UML 的擴展機制(標記值、版型、profiles 等)來定製一些符號以滿足你的需求。
如還不夠,可考慮 SysML、ArchiMate、BPMN 等其他建模語言。
Mind Map(思維導圖)也是一種常用的圖,但本質上是一種樹狀圖,與描述樹形的 UML 類圖等價。
謝邀
贊同 @張恂老師 的回答圖表的應用和你面對的項目規模,應對的風險密切相關。大象級項目的有時候會把圖表作為項目的交付物,這裡說需要例如UML這樣的完整的符號系統來描述。圖表的重要風險是到了後期很難維護圖表與實現的一致性,另外圖表是很難驗證,缺少自動化手段。
在我的實際應用中,更多的用在需求分析階段,用來挖掘和說明業務需求。
絕大多數情況下圖表不是項目的目標,只是用來溝通的工具。除此之外,@張恂老師 提到的mindmap,應用也比較廣泛。圖是一種用來說明的工具,所以只要是你認為能更好的說明你的意圖,任何圖都是可以的。
比如:軟體界面設計,你可以畫界面的草圖,當你描述界面間動態關係的時候 你會發現靜態的圖也說不清楚了,於是就會想辦法做成可交互的草圖。比如,給用戶畫像,文字說不清楚了就畫漫畫唄。
平常用的最多的還是在白板上隨便畫的圖,筆隨意動,只要能說明你想要表達的意思即可。推薦閱讀:
※Daily Scrum(每日站會)有沒有替代方案?
※敏捷開發與瀑布開發相比有什麼優勢?
※軟體開發管理流程的困惑——為什麼最後開發的一堆東西都成了無用的代碼堆積?
※如何實施 SCRUM ?