1 引言
1.1 什麼是配置管理
配置管理(Configuration Management)是通過技術或行政手段對軟件產品及 其開發過程和生命周期進行控制、規范的一系列措施。配置管理的目標是記錄軟件產品的演化過程,確保軟件開發者在軟件生命周期中各個階段都能得到精確的產品配置。
配置管理過程是對處於不斷演化、完善過程中的軟件產品的管理過程。其最終目標是實現軟件產品的完整性、一致性、可控性,使產品極大程度地與用戶需求相吻合。它通過控制、記錄、追蹤對軟件的修改和每個修改生成的軟件組成部件來實現對軟件產品的管理功能。
1.2 配置管理在軟件開發過程和項目管理過程中的作用
隨著軟件系統的日益復雜化和用戶需求、軟件更新的頻繁化,配置管理逐漸成為軟件生命周期中的重要控制過程,在軟件開發過程中扮演著越來越來重要的角色。一個好的配置管理過程能覆蓋軟件開發和維護的各個方面,同時對軟件開過程的宏觀管理,即項目管理,也有重要的支持作用。良好的配置管理能使軟件開發過程有更好的可預測性,使軟件系統具有可重復性,使用戶和主管部門用軟件質量和開發小組有更強的信心。
軟件配置管理的最終目標是管理軟件產品。由於軟件產品是在用戶不斷變化的需求驅動下不斷變化,為了保證對產品有效地進行控制和追蹤,配置管理過程不能僅僅對靜態的、成形的產品進行管理,而必須對動態的、成長的產品進行管理。由此可見,配置管理同軟件開發過程緊密相關。配置管理必須緊扣軟件開發過程的各個環節:管理用戶所提出的需求,監控其實施,確保用戶需求最終落實到產品的各個版本中去,並在產品發行和用戶支持等方面提供幫助,響應用戶新的需求,推動新的開發周期。通過配置管理過程的控制,用戶對軟件產品的需求如同普通產品的訂單一樣,遵循一個嚴格的流程,經過一條受控的生產流水線,最後形成產品,發售給相應用戶。從另一個角度看,在產品開發的不同階段通常有不同的任務,由不同的角色擔當,各個角色職責明確,泾渭分明,但同時又前後銜接,相互協調。好的配置管理過程有助於規范各個角色的行為,同時又為角色之間的任務傳遞提供無縫的接合,使整個開發團隊象一個交響樂隊一樣和諧而又錯雜地行進。
正因為配置管理過程直接連接產品開發過程、開發人員和最終產品,這些都是項目主管人員所關注的重點,因此配置管理系統在軟件項目管理中也起著重要。配置管理過程演化出的控制、報告功能可幫助項目經理更好地了解項目的進度、開發人員的負荷、工作效率和產品質量狀況、交付日期等信息。同時配置管理過程所規范的工作流程和明確的分工有利於管理者應付開發人員流動的困境,使新的成員可以快速實現任務交接,盡量減少因人員流動而造成的損失。
1.3 配置管理方案的構成
配置管理過程對軟件開發有如此重要的影響,它的構造、實施過程也必定相當復雜。不借助工具,純粹靠手工方式或只利用簡單的工具來實現配置管理是很難做到滿意程度的,而且其中的繁瑣龐雜最終必定讓管理者一愁莫展。因此,實現配置管理過程的通常做法是借助於專業化的配置管理工具,結合開發組織的實際情況制訂出相應的配置管理規范,由開發人員在工作過程中依據規范,通過配置管理工具來實現。在這整個過程中,由配置管理工具負責那些非智能的、可自動化的管理過程,如身份角色驗證、修改軌跡記錄、版本控制等;由配置管理規范來控制那些需要開發人員用智力去判斷的因素,如需求合理性和優先級判定、任務分工、產品的結構定義、版本發行方案確定等等。配置管理工具的采用和配置管理規范的制訂是緊密聯系的,二者構成了一個軟件開發機構的整體配置管理方案。這種方案是因組織的差異和配置管理工具的差異而變化的。構造一個配置管理方案涉及到軟件開發組織和開發過程的各個方面,是一個復雜的工程應該當作一個項目來做。本文試圖給出一個構造配置管理方案的基本策略和主要步驟。
2 組建配置管理方案構造小組
構造或完善一個軟件開發組織的配置管理過程需要在構造初期花費較大的人力物力。這種工作一般是由一個臨時組成的軟件配置管理過程構造小組來完成。這個小組負責構造配置管理過程中的所有工作,包括了解本組織的現有開發、管理現狀,選擇配置管理工具,制訂配置管理規范,安排試驗項目的實施,溝通部門間關系,獲得管理者支持和開發人員的認同。
配置管理過程構造小組的成員應該包括:
小組負責人 其對整個構造過程負責。主要職責是協調與其它部門或與上級主管的關系,監督工作進程,協調小組內部關系。
技術支持專家 其負責在技術、設備方面為本組提供支持和服務,並負責本同其它部門就技術問題進行聯絡,如了解相關項目情況、開發環境、開發人員狀況等。
配置管理技術專家 其對配置管理過程的構造和配置管理工具十分熟悉。主要任務是指導配置管理過程的構造,幫助制訂配置管理規章,負責對開發人員進行配置管理工具的培訓。通常是配置管理工具提供商或專門的配置管理顧問機構的人員擔當此任。
配置管理系統用戶代表 他們是從將來要在實際的項目開發過程中使用該系統、遵照該過程的開發人員中挑選出來的。他們負責從構造初期了解配置管理系統和規程,根據開發經驗協助制訂、修改配置管理規程,並在試驗項目中擔任部分開發角色。這部分成員應包括軟件開發項目經理、設計人員、編碼、測試和構造、發布人員。
該項目小組成立後,將按後述步驟開展配置管理過程的構造工作。
3 對目標機構進行了解、評估
“知已知彼,百戰不殆”。配置管理過程的構造過程也是如此,必須對相互作用的雙方都有較透徹的了解才能達到預期的效果。因此首先要做的事情是調查了解,既要了解目標機構(即將要采用該配置管理過程的軟件開發組織)的情況,又要了解配置管理工具的情況。
目標機構的調查評估工作由配置管理技術專家領導,配置管理系統用戶代表參與,提供基本信息,並由小組負責人協調,對相關部門人員進行深入調查獲得較全面的數據。
對目標機構的了解、評估應從這幾個方面入手:人員、技術、工作流程、現有項目和期望值。
3.1 人員評估
人員評估的目的是了解目標機構的員工對現有配置管理過程的評價和對采用新工具、制訂新規范的態度,預測新的配置管理過程構造中的工作難點和可能遇到的阻力。調查的方面包括:
該組織員工對引入新工具的反應,以前是否有過類似的償試。 該組織負責人對新工具、新流程的支持程度。 開發人員的素質、教育程度、溝通能力。 開發隊伍的穩定性。 該組織的溝通渠道是否通暢。
3.2 技術評估
對目標機構技術方面的的調查、評估將直接導致對工具的選擇。要了解的信息有:
目標機構有哪些可用的計算資源。 在什麼軟硬件平台上進行開發。 是否存在資源瓶頸,是什麼。 現用什麼開發工具,用戶對該工具評價如何。 現用什麼網絡環境。 使用什麼編程語言。 目標平台是否與開發平台一致。 代碼更新程度如何,新編代碼、重用代碼和歷史代碼各占什麼比例。
3.3 現有流程評估
對目標組織現有工作流程的評估直接影響新的配置管理流程和規章的制訂。調查的方面是:
現有流程的成熟性、適用性和執行情況。 現有流程是否能進一步提高自動化程度。 現用什麼開發模型。 對分析、設計、編碼、測試、產品管理等過程是否有嚴格的成文規范,如何保證該規范的執行。 開發流程中的哪些質量控制信息被收集,如何使用。
3.4 項目評估
配置管理系統對正在開發的產品、正在進行的項目有直接的影響,因此對即將納入管理的項目應有充分的了解。了解的方面有:
項目的平均工期(人月)。 項目的組織方式,是主程序員制還是開發小組制,按深度結構還是按廣度結構組織。 項目的產品規模(功能模塊數、源碼行數)。 項目開發支持狀況,是否有專門的開發環境、開發工具和配置管理等方面的支持人員。
3.5 期望值評估
對目標機構的開發、管理人員對新系統的期望值的了解有利於對症下藥,解決其當前緊要問題,提高對新系統的信心。調查的方面包括:
對當前本組織的生產率和產品質量的滿意程度,期望有怎樣的提高。 對現有流程的評價,現有流程中哪個環節希望改進或加強。 期望增減哪些文檔或規則。 期望等到什麼樣的通信交流方式,現有方式的優缺點是什麼。 期望收集哪些新的開發度量數據或簡化哪些數據。
4 配置管理工具及其提供商評估
通過對目標組織的評估,了解該組織的現狀和需求後,就需要選擇適合該組織的配置管理工具。市場上現有的配置管理工具不下數十種,它們各有所長,在功能,性能等方面有較大的差別,只有經過仔細地對產品及其提供商進行分析評估,核對目標機構的需求,才能挑選出合適的工具,實現一個理想的配置管理過程。
這種評估可從三個方面進行:配置管理工具的評估、供應商評估和其它用戶使用經驗的評估。
4.1 配置管理工具評估
對工具的評估應側重於功能的適用性,而不應一味強調功能的全面性。產品評估應了解如下問題:
該產品的哪一方面功能可解決目標組織的當前問題滿足該組織在配置管理上的需求。 該產品在目標機構的峰值負荷下的運行效率將如何。 該產品對並發使用的支持情況如何 該產品與現有系統、工具、流程、環境的兼容性如何。 該產品的成熟性和穩定性如何。 該產品是否易學易用。 該產品的購買、安裝、實施、維護費用是否可以接受
通過對目標組織的評估,了解該組織的現狀和需求後,就需要選擇適合該組織的配置管理工具。市場上現有的配置管理工具不下數十種,它們各有所長,在功能,性能等方面有較大的差別,只有經過仔細地對產品及其提供商進行分析評估,核對目標機構的需求,才能挑選出合適的工具,實現一個理想的配置管理過程。
這種評估可從三個方面進行:配置管理工具的評估、供應商評估和其它用戶使用經驗的評估。
4.1 配置管理工具評估
對工具的評估應側重於功能的適用性,而不應一味強調功能的全面性。產品評估應了解如下問題:
該產品的哪一方面功能可解決目標組織的當前問題滿足該組織在配置管理上的需求。 該產品在目標機構的峰值負荷下的運行效率將如何。 該產品對並發使用的支持情況如何 該產品與現有系統、工具、流程、環境的兼容性如何。 該產品的成熟性和穩定性如何。 該產品是否易學易用。 該產品的購買、安裝、實施、維護費用是否可以接受