標準答案nowdays是相當簡單:畫UML圖。
早在幾年的答案對子級已經「畫流程圖」,「畫Nassi-Shneiderman的圖表」,「畫Warnier /奧爾圖」,「繪製數據流圖」 ...等
他們在同一時間都會是好的答案和不好的答案。現實是,沒有單一的正確答案的問題,原因很簡單,沒有人真正知道什麼軟件實際上是。
在人們跳上我的喉嚨之前,讓我解釋一下我的意思。
當建築師爲建築物打印藍圖時,最終產品是清晰的:它將是一個具有牆,門,窗等的物理結構。我們的建築師將畫出一條線並說:「這是一堵牆「;將畫另一條線,並說,「這是從屋頂到地下室的電視天線電纜」。使用一些有關尺寸(比例尺),顏色和線條類型的約定,他將能夠向他人傳達需要建立的內容以及如何組合在一起。
細節上可能存在一些誤解,但沒有人會懷疑他們正在查看的2D模型實際上代表了建築物。即使需要多個圖表(例如每層一個圖表),將它們聯繫起來也相當容易。
對於一個軟件系統我們還沒有達到那個水平!第一個問題是「你將如何建模軟件」?
如果您使用面向對象的方法,您會將您的軟件描述爲一組屬於「對象」的「對象」,它們彼此相關(如「類圖」中所述),並具有給定的行爲(一種「狀態圖」)並以某種方式相互作用(如一組「協作圖」中所述)。
沒有任何一個圖表可以顯示軟件系統的所有方面。這就是爲什麼UML包含許多不同類型的圖表。
如果您使用的是結構化方法,您將會將您的系統描述爲將其輸入轉換爲輸出(DFD)和作爲集合數據實體(作爲ER圖)的一組處理組件。
只要所有相關方都清楚其含義,任何圖都可以使用。實際上,通過在白板上畫兩個盒子並在它們之間插入一條線來開始設計會話是很常見的:「好的,那就是瀏覽器連接到我們的網絡服務器......」。
問題在於每個圖表的含義。實際上,我們有一種很好的表示系統數據部分的常見方式:實體關係圖(或類圖的「靜態部分」)可以直接轉換爲實時數據庫。我認爲這是因爲關係數據庫對關係代數有充分的理由,同時它們使用任何人都可以掌握的簡單概念(表,外鍵,連接......)。所有其他數據表示已被清除(不再有更多的層狀數據庫!)。
我們缺乏的是軟件動態方面常見的公認觀點;一些統一的觀點認爲,理論上既合理又不難使用。
這就是我的建議。
- 請記住,架構的最小目的是創建一個對系統的共同理解。
- 儘可能多地學習圖表。
- 使用最合適的圖表來說明您想要關注的方面。
- 提供一種將不同圖表聯繫起來的方式(以我的經驗來說,這是最容易被忽視的方面,最終你會得到一堆非常細緻的模型,這些模型不合適!!!)。
- 不斷修改模型以反映您在設計過程中獲得的新理解。
每個人的回答都很有用,但是因爲我只能選擇一個,所以你是最完整的。我想我會嘗試學習UML和你提到的一些圖表。那麼我認爲重要的一點是,你有一種方法可以清楚地爲自己和團隊中的其他人表達自己的計劃。 – 2010-02-14 22:59:30