我們進一步從軟件工程的角度來考慮這個問題,對于任何一個軟件企業來說,開發出滿足用戶需求的、高質量的軟件產品是其追求的目標,而實現這一目標的關鍵是建立起一個穩定、可控、可重用的軟件流程。軟件企業要想永葆競爭優勢就必須不斷地改進它的軟件開發流程,而要進行軟件開發流程改進就需要有明確的、量化的對現狀的分析和對未來的預期,這些數據來源于對軟件過程的度量,而進行度量的前提和基礎就是軟件配置管理。所以,軟件配置管理工作是以整個軟件流程的改進為目標,是為軟件項目管理和軟件工程的其他領域打好基礎,以便于穩步推進整個軟件企業的能力成熟度。
軟件配置管理對于軟件開發管理是如此重要,它的主要思想和具體內容在于版本控制。版本控制是軟件配置管理的核心思想之一,是指對軟件開發過程中各種程序代碼、配置文件及說明文檔等文件變化的管理。通俗一點說,這就如我們寫文章要脫稿好幾次,而版本控制就是要將每一次文章的改動都記錄下來,我們可以在事后隨時恢復到其中的任何一次改動前的狀態。版本控制最主要的功能就是追蹤文件的變更。它將什么時候、什么人更改了文件的什么內容等信息忠實地記錄下來。每一次文件的改變,文件的版本號都將增加,比如:1.1.2,1.1.3,1.2.1。除了記錄版本變更外,版本控制的另一個重要功能是并行開發。軟件開發往往是多人協同作戰,版本控制可以有效地解決版本的同步以及不同開發者之間的開發通訊問題,提高協同開發的效率。并行開發中最常見的不同版本軟件的Bug修正問題,就可以通過版本控制中分支與合并的方法有效地解決。比如,軟件已經發布了1.0版本,開發小組在為該軟件添加新的功能,正在進行2.0版本的開發。而此時,如果Release 1.0中發現了Bug必須修正,我們就必須從Release 1.0中建立bugfix分支,進行必要的修正后,發布修正版Release 1.1,而這個版本的發布與2.0版本的開發沒有直接關系。當2.0版本測試結束后,要與1.0版本中bugfix分支合并,從而發布2.0的版本。在這個并行開發過程中,創建分支和分支的合并起了非常重要的作用。
許多人將軟件的版本控制和軟件配置管理等同起來,這是非常錯誤的觀念。版本控制雖然在軟件配置管理中占據非常重要的地位,但這并不是它的全部,對開發者工作空間的管理、編譯管理等都是軟件配置管理不可分割、不可或缺的部分。而且,簡單地使用版本控制,并不能解決開發管理中的深層問題。
軟件配置管理給開發者帶來的好處是顯而易見的,但對于項目管理者來說,他所關心的角度與開發者是不一樣的,他更關注項目的進展情況,這不是簡單的版本控制能夠解決的。項目管理者從管理者的角度去運用軟件配置管理中的各種記錄數據,將有巨大的收獲。
從這些記錄數據中,我們可以了解到誰在什么時候改了些什么、為什么改;我們可以了解到開發項目進展得如何、完成了多少工作量;我們可以了解到開發工程師的資源是否充分使用、工作是否平衡等。這些統計分析就是CMM2中對軟件配置管理的明確要求:軟件配置管理(SCM)提供軟件產品的狀態統計,統計包括尋找軟件開發的瓶頸和解決辦法,并據此衡量軟件產品的成熟度。SCM的度量準則是:平均嚴重程度,嚴重程度級的分布,平均關閉時間,嚴重程度的圖示,各配置項或子系統的圖示等。如果我們真正做好軟件配置管理,取得CMM2認證將是一個簡單而輕松的過程。
做好軟件配置管理還會給項目經理帶來許多方便,有利于對整個開發團隊進行管理,但管理的效果還要取決于整個開發團隊成員的配合程度。所以在深入軟件配置管理過程中,又提出了過程驅動的概念,這是一個更加抽象的管理思想,它更加強調管理,對整個業務流程進行預定義,將變更流程化,從而可以自動處理業務。
軟件本身是思維邏輯和數據的固化,而思維邏輯和數據是無形的,軟件配置管理就是對這些無形的思維邏輯和數據進行變更記錄,使之可以度量、統計分析和管理。
只有做好了軟件配置管理,我們才能避免在軟件開發中使項目管理、風險管理、質量管理、過程管理成為空中樓閣,我們才能腳踏實地走向軟件開發規范化管理的高峰。
文章來源于領測軟件測試網 http://www.kjueaiud.com/