前 言
隨著企業(yè)信息化的深入,軟件項(xiàng)目需求的日益復(fù)雜、變更頻繁, 傳統(tǒng)的個(gè)人英雄主義的開(kāi)發(fā)方式已經(jīng)越來(lái)越不能適應(yīng)發(fā)展的需要。從軟件企業(yè)的發(fā)展戰(zhàn)略來(lái)說(shuō),如何在技術(shù)日新月異、人員流動(dòng)頻繁的情況下,建立本公司的知識(shí)庫(kù)及經(jīng)驗(yàn)庫(kù), 把企業(yè)中分散的隱性的財(cái)富,即個(gè)人的知識(shí)及經(jīng)驗(yàn)轉(zhuǎn)變?yōu)槠髽I(yè)的知識(shí)和經(jīng)驗(yàn),以便提高工作效率,縮短產(chǎn)品周期, 加強(qiáng)企業(yè)的競(jìng)爭(zhēng)力,具有至關(guān)重要的作用。采用科學(xué)的管理思想,輔之以先進(jìn)的管理工具,已經(jīng)成為企業(yè)未來(lái)發(fā)展必不可少的手段。
如果軟件開(kāi)發(fā)機(jī)構(gòu)不能有效地控制和使用軟件資源,則在面對(duì)風(fēng)險(xiǎn)時(shí)可能導(dǎo)致軟件開(kāi)發(fā)活動(dòng)出現(xiàn)各種問(wèn)題。由于不能很好地管理軟件過(guò)程,使得一些好的開(kāi)發(fā)方法和技術(shù)沒(méi)有起到預(yù)期的作用。項(xiàng)目的成功往往是通過(guò)工作組的杰出努力,這種僅僅建立在依賴(lài)特定高素質(zhì)開(kāi)發(fā)人員基礎(chǔ)上的成功,不能保證全組織的持續(xù)穩(wěn)定的軟件生產(chǎn)和質(zhì)量的長(zhǎng)期提高。因此,要降低軟件開(kāi)發(fā)過(guò)程的風(fēng)險(xiǎn)、保證軟件產(chǎn)品質(zhì)量,必須加強(qiáng)管理,而軟件配置管理是企業(yè)過(guò)程改善和能力提升的基礎(chǔ)。
存在的問(wèn)題
對(duì)于一個(gè)軟件企業(yè)或者一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),可能遇到過(guò)或者正在被以下問(wèn)題所困擾,如:
1、版本難以控制
一個(gè)軟件往往由許多的模塊組成,在不同的階段(基礎(chǔ)功能、新增功能),很可能為了適應(yīng)不同的環(huán)境(如不同的操作系統(tǒng))、根據(jù)不同客戶(hù)的要求開(kāi)發(fā)了特點(diǎn)各異的版本,這些版本之間有大量的共享模塊,以及屬于自己的模塊。在后將這些模塊組裝成系統(tǒng)的某個(gè)版本時(shí)才發(fā)現(xiàn),所需模塊版本無(wú)法確定;
圖表、源代碼、文檔等等,經(jīng)過(guò)多人次修改后,發(fā)現(xiàn)實(shí)際有用的版本卻不知去向了;
團(tuán)隊(duì)中并行開(kāi)發(fā)引起的沖突。例如:編程人員 A和B共同修改同一個(gè)模塊,兩人經(jīng)過(guò)幾個(gè)晝夜的奮戰(zhàn)之后,又都回存到服務(wù)器上,但到了程序試運(yùn)行的時(shí)候,才發(fā)現(xiàn)有一個(gè)人的修改被沖掉了!
有的模塊沒(méi)有經(jīng)過(guò)測(cè)試,直接進(jìn)入了產(chǎn)品之中;
2、資源變化頻繁
某些開(kāi)發(fā)人員在軟件項(xiàng)目開(kāi)發(fā)的過(guò)程中離去,由于他負(fù)責(zé)使用或維護(hù)的文檔或者資源不完善,使得后續(xù)人員接手他的工作時(shí)困難重重,造成開(kāi)發(fā)過(guò)程的停滯。
由于沒(méi)有控制好軟件變化過(guò)程,消耗了大量人力物力,導(dǎo)致項(xiàng)目嚴(yán)重超期、預(yù)算超支;
項(xiàng)目經(jīng)過(guò)了幾次大改動(dòng),幾乎記不起原來(lái)是什么樣子了;或者說(shuō),根據(jù)用戶(hù)提出的多次變更要求更改后的成型軟件,與用戶(hù)的需要相距甚遠(yuǎn)。
軟件變化未經(jīng)控制進(jìn)入開(kāi)發(fā)或維護(hù)活動(dòng)之中,引入更嚴(yán)重的問(wèn)題。例如:某程序員未經(jīng)正常的軟件變化申請(qǐng),自行修改軟件中的某一錯(cuò)誤,雖然局部錯(cuò)誤是改正了,但由于沒(méi)有考慮到局部改動(dòng)對(duì)全局的影響,使得整個(gè)系統(tǒng)不能正常工作。
3、配置審核問(wèn)題
對(duì)軟件生命周期中的變化沒(méi)有正常的審核過(guò)程:比如在上述示例中導(dǎo)致的問(wèn)題。
對(duì)于客戶(hù)所提出的變更要求,缺少必要的審查和確認(rèn)程序。
物理配置審核問(wèn)題:比如發(fā)布出去的產(chǎn)品中,缺少文檔,或者文檔與應(yīng)用不一致。
4、項(xiàng)目開(kāi)發(fā)中的組織管理問(wèn)題
項(xiàng)目開(kāi)始之后,每人每天都在編程序,但卻不知道他們的進(jìn)展如何。
項(xiàng)目開(kāi)發(fā)過(guò)程中,一部分人晝夜奮戰(zhàn),另一部分人則無(wú)事可干。
整個(gè)項(xiàng)目的開(kāi)發(fā)可控性差,無(wú)法做到階段控制。
軟件配置管理SCM Software Configuration Management
軟件配置管理SCM (Software Configuration Management),是一套規(guī)范、高效的軟件開(kāi)發(fā)基礎(chǔ)結(jié)構(gòu),作為管理軟件開(kāi)發(fā)過(guò)程有效的方法,SCM早已被發(fā)達(dá)軟件產(chǎn)業(yè)的發(fā)展和實(shí)踐所證明。SCM可以系統(tǒng)地管理軟件系統(tǒng)中的多重版本;全面記載系統(tǒng)開(kāi)發(fā)的歷史過(guò)程;管理和追蹤開(kāi)發(fā)過(guò)程中危害軟件質(zhì)量以及影響開(kāi)發(fā)周期的缺陷和變化;SCM對(duì)開(kāi)發(fā)過(guò)程進(jìn)行有效地管理和控制,完整、明確地記載開(kāi)發(fā)過(guò)程中的歷史變更,形成規(guī)范化的文檔,不僅使日后的維護(hù)和升級(jí)得到保證,而且更重要的是,這還會(huì)保護(hù)寶貴的代碼資源,積累軟件財(cái)富,提高軟件重用率,加快投資回報(bào)。
軟件配置管理作為軟件開(kāi)發(fā)過(guò)程的必要環(huán)節(jié)和軟件開(kāi)發(fā)管理的基礎(chǔ),支持和控制著整個(gè)軟件生命周期,同時(shí)對(duì)軟件開(kāi)發(fā)過(guò)程的宏觀管理,即項(xiàng)目管理,也有重要的支持作用。良好的配置管理能使軟件開(kāi)發(fā)過(guò)程有更好的可預(yù)測(cè)性,使軟件過(guò)程具有可重復(fù)性,使用戶(hù)和主管部門(mén)對(duì)軟件質(zhì)量和開(kāi)發(fā)小組有更強(qiáng)的信心。若要有效的實(shí)施軟件配置管理,必須要培養(yǎng)軟件開(kāi)發(fā)者的管理意識(shí),結(jié)合開(kāi)發(fā)組織的實(shí)際情況制訂出相應(yīng)的配置管理規(guī)范,由開(kāi)發(fā)人員依據(jù)規(guī)范,通過(guò)專(zhuān)業(yè)化的配置管理工具來(lái)實(shí)現(xiàn)。
如何實(shí)施配置管理
根據(jù)CMM二級(jí)中的闡述,軟件配置管理的目標(biāo)是在項(xiàng)目的整個(gè)軟件生命周期中建立和維護(hù)軟件產(chǎn)品的完整性,它是軟件過(guò)程和管理過(guò)程不可缺少的部分。配置管理在軟件開(kāi)發(fā)過(guò)程中的重要地位已不言而喻。許多軟件企業(yè)已深深體會(huì)到這一工作的重要性,而在實(shí)施或正在準(zhǔn)備實(shí)施。以往實(shí)踐經(jīng)驗(yàn)證明,在軟件開(kāi)發(fā)組織中實(shí)施或改進(jìn)配置管理,僅僅依靠工具往往不能取得令人滿(mǎn)意的效果,而需要軟件開(kāi)發(fā)組織指派擁有較高技術(shù)水平、管理水平的人員負(fù)責(zé),尚須投入一定人力、物力和時(shí)間來(lái)重點(diǎn)進(jìn)行以下工作:
組建配置管理過(guò)程構(gòu)造小組
建立或改進(jìn)一個(gè)企業(yè)的配置管理過(guò)程往往需要在初期投入一定的人力物力,通常需要組建一個(gè)配置管理過(guò)程構(gòu)造小組進(jìn)行這項(xiàng)工作。小組成員中包括:技術(shù)支持專(zhuān)家,配置管理技術(shù)專(zhuān)家、質(zhì)量保證部門(mén)代表、項(xiàng)目負(fù)責(zé)人員代表、有關(guān)開(kāi)發(fā)人員代表等。