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感到厭惡。





arrow
arrow

    橘子亂說話 發表在 痞客邦 留言(0) 人氣()