《代碼大全》筆記 03 - 三思而後行:前期準備

豆瓣讀書:https://book.douban.com/subject/1477390/

《Code Complete》2d ed,CC2

3.1 前期準備的重要性

  • 降低風險
    • 避免“解決了一個錯誤的問題”
    • 避免採用的開發方法不符合軟件特點
  • 程序員是軟件食物鏈的最後一環。產品經理挖出需求,架構師吃掉需求,設計師吃掉架構,而程序員則消化設計。

3.2 辨明你所從事的軟件的類型

  • 三種典型的軟件項目類別
    • 商業系統
    • 使命有關的系統
    • 性命攸關的嵌入式系統
  • 適合序列式開發方法的特點
    • 需求相當穩定
    • 設計直截了當,而且理解透徹
    • 開發團隊對於這一應用領域非常熟悉
    • 項目的風險很小
    • “長期可預測性”很重要
    • 後期改變需求,設計和編碼的代價可能比較昂貴
  • 適合迭代式開發方法的特點
    • 需求並沒有被理解透徹,或是不穩定
    • 設計很複雜、有挑戰性
    • 開發團隊不熟悉這一應用領域
    • 項目包含許多風險
    • “長期可預測性”不重要
    • 後期改變需求、設計和編碼的代價較低

3.3 問題定義的先決條件

  • 問題定義應該用客戶的語言來書寫,而且應該從客戶的角度來描述問題,不應該使用計算機專業術語。
  • 如果沒有明確的問題定義,那麼你可能會在構建期間解決錯誤的問題。

3.4 需求的先決條件

  • 明確需求,無需再猜測用戶想要什麼。
  • 需求變更在很多情況下無法完全避免,因爲開發過程幫助客戶更深入地了理解了自己的需求。
  • 應對需求變更的方法
    • 確保每一個人都知道需求變更的代價
    • 建立一套變更控制流程
    • 採用能適應變更的開發方法
    • 放棄這個項目
  • 對照需求覈對表進行檢查,確保需求已做好。

3.5 架構的先決條件

  • 架構的典型組成部分
    • 程序組織,系統結構
    • 主要的類
    • 數據設計
    • 業務規則
    • 用戶界面設計
    • 資源管理
    • 安全性
    • 性能
    • 可伸縮性
    • 互用性(與其他系統交互)
    • 國際化、本地化
    • 輸入輸出
    • 錯誤處理
    • 容錯性
    • 架構的可行性
    • 過度工程(多做比必要的工作)
    • 關於“買”還是“造”的決策
    • 關於複用的決策
    • 變更策略
    • 架構的總體質量
  • 對照架構覈對表進行檢查,確保架構已做好。

3.6 花費在前期準備上的時間長度

  • 一般來說,一個運作良好的項目會在需求、架構以及其他前期計劃方面投入 10% - 20% 的工作量和 20% - 30% 的時間。

對照前期準備覈對表進行檢查,確保前期準備工作已做好:

2019-08-24

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章