2011年1月11日 星期二

軟體專案管理第十六週課程心得_什麼是configuration management

什麼是configuration management

光就譯名,Configuration Management這在台灣有人翻譯成建構管理、組態管理、構型管理、或稱之為型態管理;在大陸則稱為配置管理。Configuration Management這個管理作業,因為台灣專案管理環境尚未成熟使然,常常使得光看字意而缺乏實際運作經驗的人很難瞭解其中的要義,或者與version control很難界分清楚。

本周的第十五章型態管理,因為焜安同學有事未能與課故由老師代打,老師在課堂直接就指出現實環境中因為軟體專案的成本與期限壓力,台灣地區甚少有軟體公司會於專案團隊中安排專門的Configuration Management人員與工具,加以Configuration Management也會增加程式開發人員開發作業的複雜度,因此一般有規模的公司也僅僅是作到版本控管(version control)。接續報告的子嵐同學因為並未實際接觸到軟體的開發與維護,因此對於此部分有著些許的陌生。幸而代興同學於銀行的資訊單位工作,無私的與大家分享了銀行在資訊系統的維護或者建構上,對於系統維護與變更的流程規定與實際經驗,其中從需求的提出到確認,以及程式變更的分析、申請、測試與上線都有著一套秩序井然的規定。

說實話,肥蝦也是身處在台灣的軟體產業之中,雖然也過使用單位,但對於Configuration Management也是僅有初淺的認識,尤其是對應到PMI所出版的”Practice Standard for Project Configuration Management”這一本內文僅有26頁,加上附錄也才共51頁的手冊,更是顯得所知有限,在此就只能以管窺天的向大家報告肥蝦的認知與心得,還請 先進們不吝指正。

()型態管理的標準定義

PMBOK的第三版與第四版中,就Configuration 這個字眼的落點處主要在Enterprise Environment Factors中的PMIS(Project Management Information System)Organizational Process AssetsOrganizational corporate knowledge base、第四章整合管理、第五章範疇管理,以及第八章8.1.3品質規劃的產出中的程序改善計畫(Process Improvement Plan)有著Process Configuration。就內文來說兩版間最大的差別在於第三版2004有強調PMO(Project Management Office)Configuration Management中可扮演的角色5.5 control scope 4.3Develop Project Management Plan的工具與技能Project Management Information System中都明列了Configuration Management System。但在第四版2008就將Configuration Management Plan明示於專案管理計畫十二個子計畫與三個基準之中。在PMI所出版的”Practice Standard for Project Configuration Management”第一章介紹中,開門見山所說的定義「Project Configuration Management (PCM) is the collective body of processes, activities, tools, and methods used to manage certain items during the project life cycle. These items are normally referred to as Configuration Items (CIs). Configuration management (CM) typically describes the mechanisms for managing the physical state of these items during their life cycle.」此說明除了集合美國國防部與IEEE的定義外,更加上的生命週期-專案跟型態項目。大陸的機械工業出版社出版,韓萬江姜立新兩位先生在其著軟件項目管理案例教程第九章軟件項目配置管理計劃中對於配置管理所下的定義:「配置管理是在整個系統週期中對一個系統中的配置項進行標識和定義的過程,這個過程是通過控制某個配置項及其後續變更,通過記錄並報告配置項的狀態以及變更要求,證明配置項的完整性和正確性實現的。」

肥蝦對於【軟體專案管理】第十五章開頭列示美國國防部對於型態項目(以下為方便暨與書本一致起見,將Configuration統稱為型態),以及IEEE對於型態管理的說明描述實在是不太認同,不認同的原因是型態項目說:「軟體或硬體的組合元件能夠滿足使用者的需求,而且能夠應用在型態管理上之用途者。」而型態管理定義為:「在整個軟體生命週期中,針對型態項目予以定義與控制各種變更、記錄與報告型態項目的實際狀況,以確保其整體性(Integrity)與可追蹤性(Tractability)的管理過程。」如此把型態項目的說明推到說是要能夠應用在型態管理上之用途;型態管理又說是針對型態項目,那到底什麼是型態?什麼又是型態管理? 對於僅有接觸過版本管理、變更管理,而沒有實際執行過完整型態管理的肥蝦來說,這些說明實在是更令人感到玄上加玄。

()從軟體開發遭遇到的問題看型態管理的定義

因此肥蝦建議,我們從實務現狀中,去瞭解現在一般在開發專案之時容易碰到的問題,也許對於型態管理會有一番不同的體會。肥蝦把我【軟體專案管理】與軟件項目管理案例教程中對於軟體開發工作碰到屬於型態管理可協助改善的問題整理如下表:

項次

問題

出處

1

多人同時更新某一個軟體。

【軟體專案管理】

2

多人共用一個程式碼,部分程式已被更新,但是仍然有些人不知程式內容已經更新。

【軟體專案管理】

3

使用的版本不一致。

【軟體專案管理】

4

發現程式的錯誤原因,無法有效通知相關的人員。

【軟體專案管理】

5

許多設計人員原本可以共用一支程式,但是設計者卻自行開發相同的程式。

【軟體專案管理】

6

找不到某個文件的歷史版本。

軟件項目管理案例教程

7

開發人員使用錯誤的版本修改程式碼或文件。

軟件項目管理案例教程

8

開發人員未經授權修改程式碼或文件,或修改的結果不能及時反應到各個相關部分,導致研發過程不一致。

軟件項目管理案例教程

9

人員流動,交接工作不徹底造成關鍵程式遺失。

軟件項目管理案例教程

10

已修復的錯誤在新版本中出現。

軟件項目管理案例教程

11

沒有保存歷史版本的相關文件,無法重新編譯歷史版本。

軟件項目管理案例教程

12

因協同開發或者異地研發,版本變更混亂。

軟件項目管理案例教程

肥蝦綜合以上的問題,自大的定義了一個針對型態項目的定義:「從專案開始到專案結束之間所有專案進行的文件、開發環境、開發流程、開發工具、程式碼、界面、產出,攸關軟體專案完成的一切要項。」在不考慮多人共同開發之下,就比如由您一人獨挑大樑,從老闆或業務簽下合約開始,到交付出產出,這一連串過程中所要的需求訪談、確認、評估,決定平台、架構、模組元件等設計,工作分派與時程基準,開發過程的溝通記錄,會議與追蹤稽核的記錄,程式與變數的命名規則,程式的版本、品質管控,後續的單元、整合、系統、驗收測試案例與結果,這以上的種種一切有關於專案都應該加以控管;但是一個專案經理或管理團隊,應就公司與客戶的環境與文化、專案成本與時程負擔、專案成敗關鍵等內外在因素進行取捨,就是要於型態管理之前要先行確認型態項目。換言之,就是要先確認專案開發中有哪些要項是在攸關專案成功的!我們所必要與利害關係人溝通的!必須保有正確性、完整性、可見性、協調性、可歸責性、可追蹤性、可重複性、可回溯性、與可控制性的重要項目!

圖一】

參考【軟體專案管理】圖15.1所繪的軟體開發程序,肥蝦把從硬體需求分析到硬體型態項目測試的硬體型態項目發展過程曲線移除,因為硬體型態項目,也應從系統分析需求中的非功能需求開始管控起。因此從系統需求分析到安裝的過程中,都應該有必須被列為型態項目的重要元素。

為了達成專案目標,確保專案努力的成果與方向的正確性,對於認定為型態項目要特別在意變更管理的提出、評估、確認、修改、測試與釋出過程的一致性與充分性,因此對於型態項目現今的狀態,變更的管理,都要能確實的掌控,因此肥蝦以為應該參考”Practice Standard for Project Configuration Management”加上型態管理規劃。何為?因為要確認何種項目為型態要項,型態項目的命名規則,型態變更的流程,型態檢測的頻率與指標,型態項目的存放實體與位置等這一切,應該要有一個先視、全面觀的計畫。因此【軟體專案管理】圖15.1型態項目的管理工作肥蝦修改後繪製如【圖二】。

至於專案管理、專案型態管理與專案變更管理,三者之間的範圍與相關性,可以圖三】表示:

上圖正說明了PMBOK第三版(2004)把型態管理系統(Configuration Management Sysytem)與變更管理系統(Change Control System)納進於專案管理資訊系統(Project Management Information System)之內的原因。

雖說廣意的專案型態管理工具應該包含型態管理系統,但說實話,也可能肥蝦的經驗有限,目前市場上主流的專案管理資訊系統對這一塊均是非常Weak甚至付之闕如。現行實務上,大多使用CVS作為版本管控與文件的管控,【軟體專案管理】書本上所提到的Rational ClearCase因為要價不菲,除非身為IBM的協力夥伴,不然甚少使用;就像那微軟的協力廠商多用Visual SourceSafe一樣。現在已有把專案管理、軟體開發與版本管理整合的趨勢,就如微軟所提出Visual Studio 2010藍圖一樣,這麼的宏大,但是價格也跟這圖四】藍圖一樣的偉大。

()產品型態管理與專案型態管理

最後,肥蝦要進一步說明產品型態管理與專案型態管理間的互動與關聯。專案的產出可能是產品、服務或結果,假設一個研發新網路下單資訊應用系統的專案,專案結束後將交付一套網路下單系統,該系統也會對應一個產品的生命週期,在以專案所產生的網路下單系統必須以產品的Business Idea為始,引發出資訊開發專案,因應專案的型態項目,產品推廣中也將印製與提供系統的操作手冊予公司的客戶與業務人員;同時也將交付系統維護與管理手冊予資訊部門;也將交付系統網路配置圖與維護手冊予網管部門,這將成為也將對應將該產品型態管控的項目,因此產品與專案的流程整合如圖五】

再以Institute of Configuration Management2003年所提供的BUSINESS PROCESS INFRASTRUCTURE,以及焜安同學預擬報告的期刊” Combined application of Product Lifecycle and Software Configuration Management systems for ITER remote handling”為例,肥蝦把兩個重要圖型整合如下圖六】。

因此在商業觀點來看型態管理,將呈現出”Practice Standard for Project Configuration Management”第二章所說明的圖七】架構。

記得肥蝦網站中有一位匿名的先進問了一個問題,肥蝦將其中對於Configuration Management的陳述摘要如下:「其實一直不是很懂Configuration Management,看了一些您的文章後...有點了解 它是屬於PMIS系統中版本或變更相關的部分,是這樣解釋的嗎? 不過..... (1)在第四版P 94中又提到"focus on the spec of both the deliverables and the processes" 覺得 越來越混亂 (2)Product Configuration又是什麼呢? 是指功能性嗎? 可以舉個例子嗎? 謝謝您!! (3)在第四版P 110中又提到configuration management activities such as how changes to the product, service, or result requirements will be initiated, how impacts will be analyzed.....怎麼又跟版本不太像呢??」這位先進已把第四版(2008)中對於描述Configuration Management的頁次都明白標示,可見該位先進對於PMBOK的精研程度。但是肥蝦以為PMBOK4.5 Perform Integrated Change Control(9495)中對於Configuration Management的說明僅是以整合變更控制程序(integrated change control process)中所涵蓋的Configuration Management加以說明;在5.1 搜集需求(Collect Requirements)產出中的Requirement Management Plan(110)所說明的Configuration Management actives也僅是就Configuration Management中對於需求處理部分的活動。

因此肥蝦在網站上回答了如下的言語:「基本上CM包含了所謂的版本控管,更遠大於版本控管,不只是程式碼,文件,開發的SDK....都包含在CM之內!(開發的工具版本當然也要控管,不然團隊中有人用JDK1.1,JDK1.2,JDK1.6,那不就亂套了) PMI中又把它分為Project Configuration ManagementProduct Configuration Management(如產品技術手冊等)! 然後中間又有CM Interface.」意思是,除了專案開發所對應的Project Configuration Management之外,對於Project完成所交付的產品也有著Product Configuration Management並且彼此間有著緊密的關聯。

以上是肥蝦對型態管理的初淺認識,還請 先進們多多指正!

沒有留言:

張貼留言