Extreme programming (XP)
Major practices :
● Incremental planning
需求被記錄在user story card上面,這些stories會以需要被開發的時間跟stories間的相對優先順序等等來決定要不要加入到release中。這些stories會被開發者分割成細部的task。
● Small releases
最重要的功能 (minimal useful set 且能提供最大的商業價值的功能) 優先被開發。系統會頻繁地釋出新版本,新的功能會累加在第一個發行的版本上。每天產出多個版本
● Simple design
適量的設計來滿足當前的需求,不用多太多的設計。
● Test-first development ( writing test before code )
在功能實作前使用自動化單元測試framework來寫測試程式去對那個功能做測試。
● Refactoring
因為變化不可預期,只要code有可以改善的部分,開發者應該要及時修改code,如此可使得code變得精簡也好維護。
● Pair programming
開發者以兩人一組,可以互相監督輔助。
● Collective ownership
因為pair programming而使開發者們可以互相了解對方的code在做什麼,因此也負責全部的code,不管是誰都可以更改code。
● Continuous integration
持續將完成的新功能整合到系統中,整合完後也必須完成所有的單元測試
● Sustainable pace
大量加班是不被接受的,通常會導致code品質不佳與生產力下降。
● On-site customer
客戶也是開發者團隊中的一員,如此可以與開發者們做頻繁的溝通,符合客戶需求。
優點與缺點
1. Refactoring的優點使得code品質好也好維護 (減少撰寫文件) 跟容易改code,缺點是有些changes需要改整個code的架構,這會很花時間。
2. Test-first development使得產品品質變好,因為只要有新功能加進來都會被自動測試,有問題產生一下子就能知道。但缺點是開發者不太喜歡做測試而比較prefer寫code,寫testing的code也可能會偷懶,而且有些測試也很難以"incremental"的方式來實作,也很難判斷說這些測試是否完整。
3. 客戶幫助開發者寫可接受的testing,但有些客戶有可能對testing process感到厭惡。
留言列表