結隊程式設計是xp極限程式設計的乙個關鍵實踐,如果把結隊程式設計放到整個xp裡面會更容易體現出它的價值,所以我覺得分析結隊程式設計的乙個整體思路是:
1、適用場景:xp的適用性在**,什麼樣的專案中適合採用xp,在這樣的專案中xp可以起到什麼作用。如果離開了適用場景,xp的適用性都要重新考慮,所以就更不用談結隊程式設計了;
2、實施條件:
從理論上我們面對的專案可以從xp那裡得到很大的價值,但實際中我們的團隊具不具備實施xp的條件,即並不是什麼樣的團隊都可以採用xp,特別是結隊程式設計;
3、結隊程式設計的位置和價值:
結隊程式設計在整個xp中的地位,它和其他哪些關鍵實踐有著相輔相成的關係,它可以應對專案實施的哪些問題;
4、結隊程式設計遇到的問題:
結隊程式設計在實施的過程中,會遇到這樣那樣的阻礙和問題,這些阻礙和問題,可能是因為不恰當的使用引起,可能是因為對xp關鍵實踐的區域性採用引起,或其他。
1、適合場景:
適合採用xp的專案特徵為:規模小,時間緊,需求變化多,質量要求高
而且我覺得這些特徵不是「或」的關係,而是「並」的關係。
如果只是規模小、時間緊,但是需求變化不大,那麼敏捷所強調的「擁抱變化」就談不上了;
如果只是需求變化多,但是時間比較充足,那麼可以側重原形驅動方法;
如果規模比較大,需要幾十個/上百個人、半年甚至一兩年的專案,那麼採用稍微重量級的rup,還是要穩妥些。
所以如果我們懷疑xp以及結隊程式設計的價值或者實施性的時候,可以考慮考慮我們面對的專案,是不是適合採用xp來開發,在這裡我覺得應該強調的特徵是需求變化多。
2、實施條件:
在實施條件上,我覺得團隊需要具有xp的文化是很重要的,團隊成員需要達成乙個共識,就是認同xp開發會給專案以及自己帶來價值,這種共識需要若干個因素,如團隊意思/共享意識等等。
此外xp對團隊成員的技術水平要求也較高
如果團隊不具有xp的思想意識,以及必要的技術水平的話,那麼就更談不到結隊程式設計的效果了(當然部分水平相當的人還是可以在適當的情況下,採用區域性結隊程式設計)
3、結隊程式設計的位置和價值
在xp中,乙個關鍵的假設就是「只注重眼前需求的簡單設計而通過重構來適應需求變化」的代價和成本小於「對系統進行充分詳細的設計,但是隨著需求的變化設計失效」的代價和成本。
所以結隊程式設計的價值在於,我們無法在專案的初期進行乙個詳細的設計,即使完成乙個設計,隨著需求的變化,設計也是需要頻繁的改動,因此與其我們花費大量的時間和精力來維護不穩定的設計文件的一致性,不如我們簡化、延遲設計,用簡單的實現來滿足當前的需求,而依賴重構來適應需求的變化。
所以結隊程式設計的價值在於:
1、使**實現的無錯誤、且最簡單;
2、更好的、更有效地使**易於重構;
3、進行及時、有效的重構,避免單人開發的惰性而不願重構。
如果我們覺得我們有很成熟的設計,很穩定的架構,可以說我們的系統不需要重構就可以滿足所有需求,那麼我覺得結隊程式設計的價值就大幅度下降了;
如果我們覺得我們的需求會不斷變化,我們的設計需要不斷的進行調整重構,那麼結隊程式設計是這種重構最好的保障和實施。
4、結隊程式設計遇到的問題:
結隊程式設計會帶來效率的降低
在乙個具有實施xp能力的團隊,出現這樣的問題往往是
i、由於人員的變動,來了新成員
在這種情況下,前期確實會對其搭檔產生一定的影響,但是磨刀不誤砍柴工,通過結隊程式設計,可以最快的使新成員進入狀態,通過後期的高效完全可以彌補前期的消極影響;
ii、後面坐著的人跟不上寫**的人的思路,寫**的人要不斷對其講解
結隊程式設計不僅僅只是一起寫**,在寫**之前也需要一起對需求進行**,一起討論設計方案,達成共識之後才再一起寫測試用例,一起編碼,一起測試。
如果出現跟不上的情況,那麼趕緊停下來,需要討論的時候到了。
iii、由於每個人有不同的習慣風格,坐在後面的人不習慣寫**人的**風格
這正是xp另乙個關鍵實踐的必要性:**規範。在採用xp方法後,要求所有成員編寫的**都想出自於乙個人之手寫的,這樣才能使**本身就是設計,方便所有成員溝通維護。
通過**規範之後,也才使xp強調的另乙個關鍵實踐「**共同擁有」成為有效。
iv、結隊搭檔步調不一樣,如乙個人有事或打**,或去洗手間,另乙個同伴豈不空閒
如果乙個人有事那麼另乙個人可以對設計與實現重新進行思考,思考仍然是軟體開發中最重要的事情之一。
此外自己也休息一下,也不是一件很壞的事,呵呵。
結隊程式設計很累
結隊程式設計確實是強度非常大的一件事情,在結隊的時候我們就不可能邊寫**邊帶著耳機聽**了,呵呵。
但是結隊可以使兩個人精神更加集中,可以擴充套件思路以創造更簡單,更嚴謹,更便於修改重構的**,所以這正應對了專案時間緊的要求。
因為xp是一件強度很大的過程,所以xp強調40小時/周的另一實踐
極限程式設計 xp程式設計 總結
1.什麼是xp程式設計 極限程式設計 xp是勇氣,交流,反饋和簡單。xp是軟體開發過程中的紀律,它規定你 必須在程式設計前些測試,必須兩個人一起程式設計,必須遵守程式設計規範 xp是把最好的實踐經驗提取出來,形成了乙個嶄新的開發方法。2.xp適用範圍 極限程式設計,也被叫做xp,適用於中小型團隊在需...
極限程式設計(XP)發布工具
極限程式設計 xp 發布工具 瀏覽次數 1556 本文關鍵字 extreme programming,xp,projectcards,extremeplanner,極限程式設計 文章工具 推薦給朋友 列印文章 最近很長一段時間,我都在忙於乙個完整生命週期實現專案。這些天我的責任更側重於架構和業務開發...
什麼是xp 極限程式設計 ?
極限程式設計 extreme programming,xp 是一門針對業務和軟體開發的規則,它的作用在於將兩者的力量集中在共同的 可以達到的目標上。它是以符合客戶需要的軟體為目標而產生的一種方 xp使開發者能夠更有效的響應客戶的需求變化,哪怕是在 軟體生命週期 的後期。它強調,軟體開發是人與人合作進...