2010年7月12日 星期一

敏捷軟體開發 原則, 樣式, 及實務

因為讀碩士關係很久沒好好咬一本磚頭書了(教科書跟論文不算的話...)
好不容易這幾天看完,乘著記憶猶新打一下筆記

先說說整體感想,
這是個可以看到很多思考過程的書,而不是條列式列一推優缺點的,也沒甚麼亂憑空喊話。
隨處可見用直接用程式碼跟UML思考(不是輔助用喔!),對我這程式黑手而言好多了。
翻譯也是上上之作,基本上直接靠敘述用中文思考就ok。

內容
  • 1,2章:不免俗的還是宣揚一下門派心法及教義。
  • 3,4,5章:敏捷開發中耳熟能詳開發方式, Plan, Test, Refactor。
  • 6章:兩個人共同寫一個保齡球計分,藉由互相討論慢慢組合出一個程式來,而不是一個人悶著頭寫,可以看得出來Plan, Test, Refactor是慢慢延生出來。說實話,這種互動對我而言是一個很妙的體驗,而且居然能產生出個還挺精美的程式,跟中間思考過程比起,我想對於搭擋編程的認識或許是更重要。
  • 7章:嗅出程式那裏會壞掉。
  • 8. SRP: 類別改變的原因只有一個。
  • 9. OCP: 可對外擴充並對內部修改封閉,但要決定封閉跟擴充那些東西是很困難的,這要來自抽象化慨念本身的合理性,抗拒草率的抽象畫跟抽象化本身一樣重要。
  • 10. Liskov代換:子類別必須可以替換他們的父類別。
  • 11. DIP:高階與低階應依賴於同一抽象概念,實做細節要依賴抽象。
  • 12. ISP:介面必須切割成它應該做的事,也就是內聚力。
  • 13~17章:薪資系統,主要有一些簡化靜態結構的Patterns,像Command, Singleton, NullObject之類的。
  • 17~19章:思考如何修改或擴充系統,也是前面的幾個Pattern的真正延伸,我覺得這邊也很棒,而不像有些書只說Pattern好,也不知道好在哪...orz。
  • 20~22章:用測量方式量化依賴度跟穩定度,過程大略還懂,不過真的要自己做就沒法度了。
  • 23~27章:氣象台研究,複雜的互動,處理不同版本差異,外部Library處理的Patterns應用。
  • 28~30章:教育訓練系統,只看懂用Vistor做報表...囧。
總結
  • 個人及互動勝過流程與工具
  • 可用的軟體勝過詳盡的文件
良好溝通做出來的可用軟體才是好軟體。