軟工 - 人月神話節錄


1. 人月? 人力時間單位,一個人做一個月

2. 程式→軟體,要有"通用性"、"完整測試"、"齊全的文件"、"可維護性"

3. 單純用人月來衡量工作是危險的 → 每個人的工作難以切割且需要溝通

4. 在時程落後的專案增加人手,只會更落後 → 因為新人需要教育、溝通

5. 軟體規劃時程安排 → 1/3 規劃 + 1/6 Coding + 1/4 組件測試 + 1/4 系統完整測試

6. 應以最少的人力完整一個專案

7. 工作應區分為 → Architecture (架構) + Implementation (實作)

8.  第二系統效應 → 比起初次設計更加謹慎,二次設計可能把第一次設計的構想全部加入且增加新元素,然而可能出現過度設計的風險

9. 工作手冊的必要性,每個參與專案的成員都能看到手冊的完整內容,且手冊保持更新

10. 寫程式花的時間不能作為預估整個程式開發的時間 → 線性推算無意義

11. Waterfall 開發缺點 → 一次做完設計,系統測試在最後階段,出錯才回頭找問題點花費成本太多。

12. Incremental Design → 漸進式開發,慢慢加入新功能,確保系統隨時能正常執行

13. 實作一個Prototype是必要的 

Unit test → 
目的:在"單獨"的情況下,確認一段程式沒有問題
範圍:一個 method 或一個 class

TDD
目的:在Coding前,想清楚系統如何進行和運作
範圍:著重功能是否實現 → 跨越好幾個 class
作法:先寫錯誤測資 → 試圖通過測資 → 調整設計

留言