1. 程式人生 > >《構建之法》第五章讀書筆記

《構建之法》第五章讀書筆記

收集數據 效率 衡量 配置 測試 人在 模式 輸出 發現

第5章 團隊和流程 

一、非團隊和團隊

團隊的共同特點:

1、團隊有一致的集體目標,團隊要一起完成這目標。一個團隊的成員不一定要同時工作,例如接力跑。

2、團隊成員有各自的分工,互相依賴合作,共同完成任務。

二、軟件團隊的模式

軟件團隊的模式最初是混沌的一窩蜂的形式:一群人開始寫代碼,希望能寫出好軟件。隨著團隊的成熟和環境的變化,團隊模式會演變成下面幾種模式之一。

1、主治醫師模式:這樣的軟件團隊中有首席程序員,他負責處理主要模塊的設計和編碼,其他成員從各種角度支持他的工作(後備程序員、系統管理員、工具開發、編程語言專家、業務專家)。

2、明星模式:主治醫師模式運用到極點,可以退化為明星模式。

3、社區模式:社區由很多誌願者參與,每個人參與自己感興趣的項目,貢獻力量,大部分人不拿報酬。

4、業余劇團模式:在每一個項目中,不同的人會挑選不同的角色,在下一個項目中,這些人也許會換一個完全不同的角色類型。個人在團隊中聽從一個中央指揮的指導和安排。

5、秘密團隊:一些軟件項目在秘密狀態下進行,別人不知道他們具體在做什麽。這種模式的好處是:團隊內部以後極大的自由,較高的熱情,沒有外界的幹擾。

6、特工模式:軟件行業的一些團隊由一些有特殊技能的專業人員組成,負責解決一些棘手而有緊迫性的問題。

7、交響樂團模式:門類齊全、各司其職。當某個軟件領域處於穩定成長階段的時候,眾多大型軟件公司的開發團隊就會采取這種模式。

8、爵士樂模式:強調個性化的表達,強有力的互動,對變化的內容有創意的回應。

9、功能團隊模式:很多軟件公司的團隊最後都演變成功能團隊,具備不同能力的同事們平等合作,共同完成一個功能。

10、官僚模式:這種模式在軟件開發中會出問題,因為成員之間不光有技術方面的合作和領導,同時還混進了組織上的領導和被領導關系。

三、開發流程.

一群人在一起做軟件開發,總是要有一些方式方法,就像第一章提到的:我們在開發、運營、維護軟件的過程中有很多技術、做法、習慣和思想。軟件工程把這些相關的技術和過程統一到一個體系中,叫做“軟件開發流程”,軟件開發流程的目的是為了提高軟件開發、運營和維護的效率,以及提升用戶滿意度、軟件的可靠性和可維護性。

1、寫了再改模式:這種模式不需要太多其他準備或相關知識,上來就寫代碼,寫不出來就改,但要寫一個有實際用戶、解決實際需求的軟件,這個方法缺點就很大。

2、瀑布模型:他的適用範圍如果產品的定義非常穩定,但是產品的正確性非常重要,需要每一步驗證,產品模塊之間的借口、輸入和輸出能很好的用形式化的方法定義和驗證,使用的技術非常成熟,團隊成員都很熟悉這些技術,負責各個步驟的子團隊分屬不同的機構,或在不同的地理位置,不可能做到頻繁的交流。

3、瀑布模式的各種變形:生魚片模型、大瀑布帶小瀑布

4、統一流程:業務建模、需求、分析和設計、實現、測試、部署、配置和變更管理、項目管理、環境、初始階段、細化階段、構造階段、交付階段

5、老版驅動的流程:該模式的問題領導對許多技術細節是外行,未必懂得軟件項目的管理,領導的權威影響了自由的交流和創造,領導最擅長的管理方式是行政命令,這未必能管好軟件團隊或任何需要創造力的團隊,領導的精力有限,領導很忙時,團隊怎麽辦?

6、漸進交付的流程:很接近叠代式開發流程,當系統的主要需求和架構明確之後,軟件團隊進入了一個不斷演進的evolution循環中:開發→發布→聽取反饋→根據反饋做改進

7、TSP的原則:使用妥善定義的流程,流程中的每一步都是可以重復的、可以衡量結果的,團隊的各個成員對團隊的目標,角色,產品都有統一的理解,盡量使用成熟的技術和做法,盡量多地收集數據,並用數據來幫助團隊做出理性的決定,制定切合實際的計劃和承諾,團隊計劃要由負責具體執行的角色來制定,增加團隊的自我管理能力,專註於提高質量,爭取在軟件生命周期的早期發現問題,最有效提高質量的辦法是做全面而細致的設計工作。

《構建之法》第五章讀書筆記