概要 本文對為什麼需要設計文件範本進行了基本的論述,並提出了一個基本的設計文件範本。
關鍵詞 設計文檔,模板,敏捷,XP
目錄1. 為什麼要設計文件範本__ 12. 設計文件範本內涵__ 23. 設計文件範本要素__ 2參考__ 2
1. 為什麼要設計文件範本可以說現在是軟體過程的年代,從重量級的CMM(I)、RUP到輕量級的XP…。重量級的過程(CMM(I)、RUP等)強調文檔在軟體開發過程中的核心地位,而輕量級的過程(XP等)則強調以Code為主、文檔為次。可以看出它們都強調了文檔的重要性。
1. 為什麼要有設計文檔?l 好的設計文檔可以協助開發人員 “
整理清楚個人的思路”l 好的設計文檔可以協助團隊“
有效交流溝通”
2. 為什麼要有模板?l 好的模板不是固化而是引導開發人員的思路l 好的模板可以提供文檔的一致性、可讀性 因此,我們需要一份設計文件範本來引導而非固化我們對問題的認識和思考,規範文檔的書寫、提高文檔的可讀性和一致性以及可重用性,進而來協助我們進行有效溝通。
2. 設計文件範本內涵如果一個東西只流於形式,而沒有真正的內涵,那麼它的作用將微乎其微,而且日久就會被遺棄,設計文件範本也不例外。因此設計文件範本是應該有內涵的,應該體現人性,而不是去刻意以某種規則去固化人對問題的認識和思考。下表列出了我對於設計文件範本內涵的一些理解:
| 編號 |
內涵 |
基本描述 |
| 1 |
曆史性 |
設計文件範本應該體現出文檔的曆史,不但可以利於日後的維護,還可以依文尋人、避免重蹈覆轍等。 |
| 2 |
文學性 |
設計文件範本應該有一定的良好的組織方式來引導人的思路以及思考方式(既象小說又象新聞) |
| 3 |
藝術性 |
文設計檔模板應該有好的展現形式,來提高衍生出來的文檔的美感 |
| 4 |
科學性 |
設計文件範本應該體現出軟體設計的基本的方法論以及基本思想(如物件導向+敏捷) |
3. 設計文件範本要素依據上面提到的設計文件範本的內涵,下面的表格列出了一個典型的(物件導向)設計文件範本的基本要素:1. 版本曆史2. 概要3. 目錄4. 術語&符號5. 參考6. 提出問題7. 分析問題8. 測試設計9. 邏輯設計a) 體繫結構b) 處理邏輯c) 關鍵資料結構10. 實體設計
參考1.
敏捷強調:“設計文檔,這個不強調的,但是開發過程中能沒這個嗎?我看大多數嚴格的項目不能。做個比方,諸位參加過高考吧,設計文檔就是考試時候的草稿紙,你的原始碼是考卷,一切以考卷上的內容為準。設計文檔是可以扔掉的。有些神仙考試可以不用打草稿,有些牛人編程可以不寫文檔,這是一回事情。
編寫設計文檔可以整理清楚個人的思路,風格一致的設計文檔也方便團隊間的交流溝通,敏捷推崇面對面的交流,這是很好的,但有時候一個圖形抵過一大堆廢話,有記錄也有利於設計的逐步推進,不然容易反覆。當然也有缺點,寫文檔很花時間。
設計文檔寫到什麼程度,細到什麼層次,因團隊實際情況,人員的能力而異,一般來說,團隊成員間水平差別大就要多做些文檔。
設計文檔是不需要和代碼同步的,就像考卷不要和草稿紙同步一樣。”參考文檔:Do Agile Methods Require Documentation?2. “
和所有人類有目的的行為一樣,設計是一種藝術、是一種工程、是一種帶有臆測性的行為,也是一種實驗性的活動。”3. “
用來描繪原始碼的圖示只是設計的附屬物而不是設計本身“4. “
原始碼是設計最重要的表示“5. “
敏捷設計強調設計應當保持儘可能簡單、適當。它是一個持續的應用(設計) 原則、
模式以及實踐來改進軟體的結構和可讀性的過程。它致力於保持系統設計在任何時間都儘可能簡單、
乾淨以及富有表現力“6. “
代碼即文檔(Microsoft),建立在高度穩定的團隊基礎之上(這時,面對面的溝通強於文檔本身)”7. “
除非是必須馬上撰寫文檔而且意義重大,否則的話就乾脆不要寫它” (Martin)參考:On Documentation8. “
在敏捷方法中,設計文檔往往是由測試優先方法指導編寫的單元測試所構成的。這些單元測試都是如何使用各部分代碼的鮮活的例子。其它種類的設計文檔,像是類圖、互動圖、狀態圖、ER圖等也可能會酌情使用”