《配置管理最佳實踐》——第1章 源代碼管理 1.1為什麼源代碼管理如此重要
本節書摘來自異步社區《配置管理最佳實踐》一書中的第1章,第1.1節,作者: 【美】Bob Aiello , Leslie Sachs著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
第I部分 配置管理核心實踐
第1章 源代碼管理
源代碼管理是保護組裝成係統的所有工件(artifact)的學科。源代碼管理是配置管理的核心職能(function),直接影響著團隊的生產力和產品質量。不幸的是,很多公司並沒有意識到建立高效源代碼管理機製的重要性,缺乏實施源代碼管理的能力,缺少源代碼管理工具和流程。這一章將討論如何正確地進行源代碼管理。我曾經負責過多家分布全球的大公司的源代碼管理工作。源代碼管理必須確保產品發布的源代碼永遠都不能丟失。源代碼需要通過一種靈活和創新的方式進行管理。每個公司的情況都是不同的,所以常常需要針對不同的開發團隊采用不同的源代碼管理方法。但是不同的開發團隊之間也是有共性的,我們更要關注那些共性,關注那些滿足團隊最本質需求的方麵。源代碼管理通常為配置管理的其他方麵提供了基礎支持,尤其是在構建工程、發布管理和部署方麵。
這一章總體介紹了源代碼管理的很多方麵,包括目標、原則和基本概念。大部分配置管理的相關職能都是以源代碼庫為基礎的,包括構建工程、發布管理和部署,這些知識可以幫助你從整體結構上理解本章內容。本章首先列舉了我和同事的幾個實例,然後講述了如何實行源代碼管理,包括贏得管理層的支持。接下來,從基線以及創建配置管理時間機器1(CM time machine)來講一些源代碼管理的核心概念。和源代碼密切相關的是缺陷和需求跟蹤,這通常會與源代碼管理工具和流程集成到一起。接著討論了通過對源代碼管理進行分布式開發。無論是一個大團隊還是小團隊,都應該考慮采用合適的工具來支持開發團隊的工作。在這裏我列出了幾個常規的指導原則,主要涉及如何選擇正確的源代碼管理工具、如何通過API來擴展它,以及一些不要過度工程化源代碼管理方案的提示。即便質量是“免費的”,但是想做好配置管理的工作仍然需要資金的支持,尤其是考慮到一些培訓的需求。與其緊密相關的是定義一個滿足團隊需求的配置管理工具使用模型。我們也會討論在實施源代碼管理和建立源代碼管理過程中可能遇到的風險。最後,我分享了如何對待一些配置管理工具的高級用戶。
1.1 為什麼源代碼管理如此重要
源代碼管理之所以如此重要是因為既要保證資產是安全的,又要允許通過受控、可靠的配置庫對其進行訪問。源代碼管理提供了管理源代碼和把工件組裝成係統的工具和方法。在配置管理術語中,我們稱其為配置項(CI, Configuration Item)。所有開發團隊都需要識別和控製配置項。源代碼管理是公司開始實施軟件配置管理的開端。良好的源代碼管理可以讓你一邊處理長期的開發任務,一邊快速發布緊急補丁。敏捷和精益的源代碼管理非常重要,它為很多其他依賴有效源代碼管理的工作奠定了基礎。另外一個需要考慮的問題是,如果沒有實行有效的(可重複的)源代碼管理過程,很多糟糕的事情就會發生,包括開發中的重大中斷、不必要的缺陷和大量的重複工作所浪費的時間。
當糟糕的事情發生的時候
當糟糕的事情發生的時候,我的手機鈴聲就會響起。於是我總結了一條,當一切進展順利的時候,是沒有人會打給我的;經常是當人們遇到問題需要幫助的時候,就會打給我;而通常是在重大問題造成源代碼丟失或者其他問題的時候,就會立刻打給我。這本身可能就是我工作最好的一部分,因為它可以讓我看到自己的工作在軟件開發中有著顯著的積極影響。這裏首先需要了解的是為什麼糟糕的事情會發生。源代碼經常會因為下麵的原因而丟失:
源代碼管理工具和流程缺失
采用了不可靠的工具
用戶沒有經過培訓,所以即便是最好的工具也不能幫助他們
聊勝於無的發布和部署過程
複雜的分支導致用戶犯錯
溝通不暢和團隊合作很差
靈活部分太多導致複雜性
源代碼管理工具缺少有效的行政管理過程的支持
我曾經在大公司中處理過上邊說到的每一個問題。也曾經在源代碼管理問題可能會導致損失數百萬美元,甚至是災難性事件(比如飛機相撞)發生這樣的公司工作過。雖然很多同事都肯定規範的源代碼管理帶來的價值,但事實是很多人並不這麼認為。經常遇到很多經驗豐富的技術專家卻對源代碼管理最佳實踐一無所知。我曾經在一些大型金融服務公司工作,在那裏負責公司級源代碼管理實施。雖然作為配置管理的狂熱分子推廣最佳實踐是我的工作,但是想得到高級管理人員的認可並支持我的工作卻是一項挑戰。
最後更新:2017-06-02 19:36:05