當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 建筑OA系統(tǒng) > 工程項(xiàng)目管理軟件系統(tǒng)
綜合輔導(dǎo)之什么是軟件配置管理?
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
作為軟件配置管理工作者,差不多都有這樣的經(jīng)驗(yàn):在認(rèn)識(shí)新朋友時(shí),當(dāng)別人問起自己所從事的職業(yè),自然回答到,“我從事軟件配置管理工作”。接著,十有八九,會(huì)被問到下一個(gè)問題“什么是軟件配置管理?”??偙粏柕较嗤膯栴},倒還稱不上是苦惱,真正的苦惱在于回答這個(gè)問題,因?yàn)檐浖渲霉芾碚媸遣惶菀渍f得清……解釋了半天,結(jié)果往往是,“你這份工作好玄妙啊。隔行如隔山啊,我是搞不懂了?!?BR> 是的,軟件配置管理,確實(shí)不太好解釋。軟件開發(fā)過程中的其它工作,似乎都比它容易理解??荚?大開發(fā)工程師在編寫源代碼;測(cè)試工程師在測(cè)試,挑毛病;需求分析師跟用戶確定需求,并且用精確嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言表達(dá)出來……雖說這樣說未必嚴(yán)謹(jǐn),但是至少能夠得到一個(gè)大致的印象。但是,軟件配置管理呢?軟件配置管理是什么?下面是軟件配置管理的一個(gè)權(quán)威定義:
“A discipline applying technical and administrative direction and surveillance to identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements.”
“一套應(yīng)用技術(shù)上和管理上的指導(dǎo)和監(jiān)督的方法,用來:識(shí)別和記錄配置項(xiàng)的功能特征和物理特征;控制這些特征的變更;記錄和報(bào)告變更的處理和執(zhí)行的狀態(tài);以及驗(yàn)證其符合特定的需求?!?BR> 如果你看得一頭霧水,別擔(dān)心,這不是你能力上的問題。大部分人和你的感受相同。這個(gè)定義,以及類似的權(quán)威定義,都高度抽象。用一兩句話,確實(shí)很難把握好軟件配置管理這個(gè)概念。需要更多的描述,才能把它說清楚。事實(shí)上,這一整本書,就是在認(rèn)識(shí)和理解軟件配置管理。而在這一章中,我們將用一些我們相對(duì)熟悉的概念來打比方,做對(duì)比,來講解軟件配置管理這個(gè)概念。通過這樣一種方式,讓大家對(duì)軟件配置管理有一個(gè)初步的,但比較正確的認(rèn)識(shí)。
與圖書管理作對(duì)比
軟件配置管理,是關(guān)于軟件資產(chǎn)的管理。什么是軟件資產(chǎn)呢?源代碼,設(shè)計(jì)文檔,可以運(yùn)行的程序,這些在軟件研發(fā)過程中產(chǎn)生的有價(jià)值的東西,都是軟件資產(chǎn)。軟件配置管理就是關(guān)于這些內(nèi)容的管理。那么,具體有什么要管理的呢?讓我們把它和圖書館的圖書管理做個(gè)對(duì)比。
它們有一些相似點(diǎn)。首先,圖書管理管的是圖書資產(chǎn);軟件配置管理管的是軟件資產(chǎn)。這兩種管理,管的都是信息資產(chǎn)。其次,圖書管理,需要把圖書進(jìn)行分類,以便檢索,需要將圖書存放在合適的地方,以便存取,還要防止蟲吃鼠咬;考試/大而軟件配置管理也類似,需要把軟件資產(chǎn)——主要是源代碼,放在合適的目錄結(jié)構(gòu)里,放在合適的地方存儲(chǔ),防止丟失或者弄亂。再次,在圖書館,要記錄誰(shuí)借出了哪本書,還沒還。這是為了保證,圖書館的書不會(huì)丟失;
而軟件配置管理中也類似,需要記錄誰(shuí)“借”出了什么文件,什么時(shí)候“還”的。在這一“借”一“還”的過程中,程序員修改了它,而軟件配置管理記錄下了這些修改。那么,為什么要記錄呢?
因?yàn)檐浖Y產(chǎn)與圖書資產(chǎn)不同,軟件資產(chǎn)在不斷變化,不斷演進(jìn)。項(xiàng)目初始的時(shí)候,可能只有一份簡(jiǎn)單的項(xiàng)目計(jì)劃,而項(xiàng)目結(jié)束時(shí),已是可以交付給用戶的產(chǎn)品。如果縮小視野,單就某個(gè)源代碼文件來看,也會(huì)看到,通常它會(huì)在項(xiàng)目的某個(gè)時(shí)刻,被某個(gè)程序員創(chuàng)建第一個(gè)版本,然后,可能有不同的程序員,不斷修改它,產(chǎn)生新的版本。軟件配置管理關(guān)心:是不是這個(gè)文件的各個(gè)歷史版本應(yīng)該被記錄,以便今后翻閱?是不是各次修改的修改者、修改的原因應(yīng)該被記錄,以便將來可以理解當(dāng)時(shí)的情形,理解為什么做出這樣的改動(dòng)?更扣人心弦的是,當(dāng)兩個(gè)人同時(shí)想要修改一個(gè)文件的時(shí)候,可能會(huì)導(dǎo)致其中一個(gè)人的改動(dòng)丟失,也就是常說的版本覆蓋。那么,是讓他們一個(gè)改完了另一個(gè)再改呢,還是讓他們同時(shí)改,在將來合并?等等。
所以說,軟件配置管理是關(guān)于不斷演進(jìn)的軟件資產(chǎn)的管理。
為什么稱作配置管理?
機(jī)器由零部件組成。例如,汽車一般由底盤、發(fā)動(dòng)機(jī)、車身和電器設(shè)備四大部分組成。其中,汽車底盤一般包括傳動(dòng)系、轉(zhuǎn)向系、制動(dòng)系和行駛系。傳動(dòng)系主要由離合器、變速器、傳動(dòng)軸和減速器等部件組成。再往下,基本就是零件了。
機(jī)器由正確型號(hào)的零部件配置而成。每個(gè)零件都有型號(hào)、編號(hào)。零件組成的部件也有。一直到整個(gè)機(jī)器,一輛汽車。要保證制造出來的機(jī)器是正確的,就要保證選取了所有正確型號(hào)的零部件。那么,容易想到,應(yīng)該有某種列表或文檔,標(biāo)明各零部件型號(hào)和組成關(guān)系,也就是說,標(biāo)明配置信息。而當(dāng)配置有變動(dòng)的時(shí)候,要更新這樣的列表或文檔。并且,這種變動(dòng)不能隨隨便便,是否應(yīng)該先讓總工程師批準(zhǔn)?是否應(yīng)該做相應(yīng)的測(cè)試?這些都屬于對(duì)配置的管理。
從軟件配置管理的視角看,軟件也是這么配置起來的。往小了說,各個(gè)源代碼文件的正確版本配置在一起,編譯產(chǎn)生了正確的可運(yùn)行程序。往大了說,若干軟件組件的特定版本,配置構(gòu)成了特定的軟件產(chǎn)品。而有些軟件組件,可能參與了不止一個(gè)軟件產(chǎn)品的配置構(gòu)成。而當(dāng)某個(gè)軟件組件參與不止一個(gè)軟件產(chǎn)品的配置構(gòu)成的時(shí)候,可能是這個(gè)軟件組件的同一個(gè)版本,也可能是不同版本???,問題有多復(fù)雜!不管理怎么行!
軟件配置管理,與對(duì)機(jī)械系統(tǒng)的配置的管理相比,是有一些自己的特點(diǎn)的。主要有兩點(diǎn):第一,軟件更容易發(fā)生變化,向前演進(jìn)。一個(gè)程序員,修改一個(gè)Bug,可能5分鐘就搞定了,于是,5分鐘前與5分鐘后,已經(jīng)是不同的版本了。更何況,不止一個(gè)程序員在工作。如此快速的、眾多的變化,如果靠一個(gè)書記員手工記錄相關(guān)信息,那恐怕比較累。所以需要某種自動(dòng)化的工具,提供這方面的支持。
第二,軟件的耦合性更高。當(dāng)程序員為某個(gè)任務(wù)改動(dòng)源代碼的時(shí)候,經(jīng)常要改動(dòng)不止一個(gè)文件??荚?大在目錄結(jié)構(gòu)上,這些文件可能相距遙遠(yuǎn)。組件/模塊間的接口,往往并不像把鼠標(biāo)線插到USB口上那么簡(jiǎn)單。某個(gè)模塊的變化,常會(huì)影響到相關(guān)模塊這個(gè)特點(diǎn),使得在軟件領(lǐng)域,需要格外關(guān)心整體性。要盡可能早的、盡可能頻繁的集成,保證產(chǎn)品作為整體,是可運(yùn)行的。另一方面,一個(gè)模塊、一個(gè)源文件,可能被幾個(gè)程序員改動(dòng):出于不同的目的,改動(dòng)不同的位置,甚至相同的位置。因此,版本更容易混亂,或相互覆蓋。需要軟件配置管理工具提供相應(yīng)支持,提供便利,同時(shí)避免出現(xiàn)問題。
其它一些比喻
保險(xiǎn)柜
軟件配置管理為軟件開發(fā)提供了一個(gè)保險(xiǎn)柜。保險(xiǎn)柜里,存的都是值錢的東西。存進(jìn)保險(xiǎn)柜,是因?yàn)榕伦约翰恍⌒呐獊G,或者被偷走。軟件資產(chǎn)也一樣,甚至比金戒指之類的更值錢。軟件資產(chǎn)也會(huì)丟失,特別是源代碼。比如,一個(gè)軟件項(xiàng)目完成后,如果沒有進(jìn)行存儲(chǔ)/歸檔等工作,等再過幾個(gè)月,想基于版本1.0開發(fā)版本2.0的時(shí)候,可能會(huì)發(fā)現(xiàn)1.0的源代碼找不著了……無奈,只好從頭寫。這是自己不小心弄丟的情況。軟件資產(chǎn)還有可能被竊取或泄漏?;⒁曧耥竦母?jìng)爭(zhēng)對(duì)手,無孔不入的商業(yè)間諜……所以,一定要把軟件資產(chǎn)放進(jìn)類似保險(xiǎn)柜的地方。
巖釘
這是來自攀巖者的經(jīng)驗(yàn)。系上保險(xiǎn)繩,每向上攀一小段,就在巖壁上打個(gè)巖釘。這樣,即使偶爾失手,也不會(huì)從半山墜到谷底,只是向下滑一小段。軟件開發(fā)也是一樣,適當(dāng)?shù)谋4鏆v史版本,可以在失手的時(shí)候回退到上一個(gè)安全的地方。這里的版本,不僅僅指具體某個(gè)文件的版本,也指整個(gè)產(chǎn)品的版本。不僅指源文件,也包括需求、設(shè)計(jì)、測(cè)試用例……當(dāng)我們關(guān)心軟件產(chǎn)品的部署和運(yùn)行情況時(shí),版本還意味著,某個(gè)軟件,上次安裝的版本是多少?這次升級(jí)到哪個(gè)版本?如果升級(jí)失敗,應(yīng)該回退到上一個(gè)版本。
腳印
一步一個(gè)腳印。這有兩個(gè)含義。首先,先走好這一步,踩實(shí)了,踩穩(wěn)了,再走下一步。軟件研發(fā)也是這樣,需要里程碑;需要基線;需要每個(gè)迭代結(jié)束時(shí),內(nèi)部或外部的發(fā)布。這些是項(xiàng)目的腳印。在每個(gè)腳印處,我們要認(rèn)真檢查,是不是踩實(shí)踩穩(wěn)了。這可能是通過相關(guān)人員的評(píng)審,領(lǐng)導(dǎo)的審批,可能是通過軟件測(cè)試,也可能是通過某些檢查。
其次,一個(gè)個(gè)的腳印,就構(gòu)成了足跡。它告訴我們,我們是如何一路走來的,走的是哪條路。必要的時(shí)候,我們可能會(huì)回顧。還有可能,我們會(huì)回到半路,以便從那里再闖一條新路出去。對(duì)應(yīng)到軟件開發(fā),我們就是要保存歷史上的版本,已備將來的不時(shí)之需。
好了好了,據(jù)說所有的類比和比喻都是蹩腳的。軟件配置管理是什么?軟件配置管理就是軟件配置管理。如果再多說幾句,那就是:它是關(guān)于不斷演進(jìn)的軟件資產(chǎn)的管理。這涉及到存儲(chǔ)和安全;涉及到記錄它演進(jìn)的歷史;涉及到讓修改和變更井然有序,避免出現(xiàn)版本丟失、版本覆蓋等混亂情況;涉及到保證軟件代碼集成在一起的質(zhì)量……讓我們?cè)陔S后的章節(jié)里,更細(xì)致地學(xué)習(xí)和研究吧!
項(xiàng)目管理師考試資料庫(kù)
點(diǎn)擊進(jìn)入:考試大項(xiàng)目管理師考試在線模擬測(cè)試
考試大項(xiàng)目管理師考試網(wǎng)校課堂
- 1監(jiān)理工程師《建設(shè)工程質(zhì)量控制》復(fù)習(xí)重點(diǎn)(26)
- 2一分成本就是兩分利潤(rùn) 初創(chuàng)企業(yè)花錢需謹(jǐn)慎
- 3[四川]行車道寬3.75×2m隧道竣工圖131張(結(jié)構(gòu)排水裝修監(jiān)測(cè))
- 4施工現(xiàn)場(chǎng)食堂管理制度有哪些?
- 5造價(jià)工程師工程計(jì)價(jià)復(fù)習(xí)要點(diǎn):安拆費(fèi)
- 6福建省3年內(nèi)將陸續(xù)建成11條鐵路 投入逾9700億
- 7黑龍江2015年注冊(cè)造價(jià)工程師考試科目
- 8低成本如何開家化妝品專賣店?
- 9湖北枝城水土流失現(xiàn)狀調(diào)查及應(yīng)對(duì)措施
- 102011一級(jí)建造師專業(yè)工程管理與實(shí)務(wù)(機(jī)電)試題15
- 11淺議節(jié)能健康與清洗空調(diào)機(jī)
- 12【碩士】高校新校區(qū)建設(shè)與管理的分析與探討
- 13混凝土攪拌站微機(jī)控制系統(tǒng)的詳細(xì)解讀
- 14太原某工程框架結(jié)構(gòu)模板工程施工技術(shù)交底(依據(jù)2002質(zhì)量驗(yàn)收規(guī)范編制)
- 15膠粘劑的環(huán)保問題與對(duì)策
- 162015年消防工程師二級(jí)消防安全技術(shù)綜合能力簡(jiǎn)答模擬題(4)
- 17商品混凝土攪拌站在使用過程中應(yīng)遵循的注意事項(xiàng)
- 18焊接基礎(chǔ)知識(shí)培訓(xùn)(圖文并茂 詳細(xì)全面)
- 192015年監(jiān)理工程師《投資控制》每日一練(4.15)
- 20中鐵十四局集團(tuán)張?zhí)畦F路項(xiàng)目部召開工程推進(jìn)會(huì)
- 21山東無棣建設(shè)工程項(xiàng)目實(shí)現(xiàn)網(wǎng)上審批
- 22內(nèi)蒙古造價(jià)員考試報(bào)名條件
- 23[重慶]市政道路維修改造施工圖設(shè)計(jì)26張(路面雨水口護(hù)欄)
- 24泵送混凝土結(jié)構(gòu)工程施工技術(shù)交底
- 25回填土下沉有哪些預(yù)防措施
- 26淺論混凝土渠道防滲凍害產(chǎn)生的原因分析和防治維修
- 27招標(biāo)師法規(guī)輔導(dǎo):民法通則的基本原則
- 28二級(jí)消防工程師消防安全技術(shù)綜合能力簡(jiǎn)答題集15
- 29關(guān)于工作流程與工作流程圖的說法,正確的是什么
- 302015二級(jí)建造師《建筑工程》:勞務(wù)分包合同
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓