軟件工程:實(shí)踐者的研究方法第9章軟件配置管理

字號(hào):

第9章 軟件配置管理
    當(dāng)建造計(jì)算機(jī)軟件時(shí),變化(change)是不可避免的,并且,變化使得共同工作在某一項(xiàng)目中的軟件工程師之間的彼此不理解程度更加增高。當(dāng)變化進(jìn)行前沒(méi)有經(jīng)過(guò)分析、變化實(shí)現(xiàn)前沒(méi)有被記錄、沒(méi)有向那些需要知道的人報(bào)告變化、或變化沒(méi)有以可以改善質(zhì)量及減少錯(cuò)誤的方式被控制時(shí),則不理解性將會(huì)產(chǎn)生。Babich[BAR86]對(duì)此有如下陳述:
    協(xié)調(diào)軟件開(kāi)發(fā)以減少不理解性到最小程度的技術(shù)稱為配置管理。配置管理是對(duì)正在被一個(gè)項(xiàng)目組建造的軟件的修改標(biāo)識(shí)、組織和控制的技術(shù),其目標(biāo)是通過(guò)限度地減少錯(cuò)誤,來(lái)限度地提高生產(chǎn)率。
    軟件配置管理(SCM)是貫穿于整個(gè)軟件過(guò)程中的保護(hù)性活動(dòng)。因?yàn)樽兓赡馨l(fā)生在任意時(shí)間,SCM活動(dòng)被設(shè)計(jì)來(lái)(1)標(biāo)識(shí)變化,(2)控制變化,(3)保證變化被適當(dāng)?shù)貙?shí)現(xiàn),以及(4)向其他可能有興趣的人員報(bào)告變化。
    明確地區(qū)分軟件維護(hù)和軟件配置管理是很重要的。維護(hù)是發(fā)生在軟件已經(jīng)被交付給客戶,并投入運(yùn)行后的一系列軟件工程活動(dòng),而軟件配置管理則是當(dāng)軟件項(xiàng)目開(kāi)始時(shí)就開(kāi)始,并且僅當(dāng)軟件退出運(yùn)行后才終止的一組跟蹤和控制活動(dòng)。
    軟件配置管理的主要目標(biāo)是使改進(jìn)變化可以更容易地被適應(yīng),并減少當(dāng)變化必須發(fā)生時(shí)所需花費(fèi)的工作量。本章,我們將討論在管理變化中必須發(fā)生的特定活動(dòng)。
    9.1軟件配置管理
    軟件過(guò)程的輸出信息可以分為三個(gè)主要的類別:(1)計(jì)算機(jī)程序(源代碼和可執(zhí)行程序),(2)描述計(jì)算機(jī)程序的文檔(針對(duì)技術(shù)開(kāi)發(fā)者和用戶),以及(3)數(shù)據(jù)(包含在程序內(nèi)部或在程序外部)。這些項(xiàng)包含了所有在軟件過(guò)程中產(chǎn)生的信息,總稱為軟件配置。
    隨著軟件過(guò)程的進(jìn)展,軟件配置項(xiàng)(Software Configuration Items,SCI)迅速增長(zhǎng)。系統(tǒng)規(guī)約產(chǎn)生了軟件項(xiàng)目計(jì)劃和軟件需求規(guī)約(以及硬件相關(guān)的文檔),這些然后又產(chǎn)生了其他的文檔,從而建立起一個(gè)信息層次。如果每個(gè)SCI僅僅簡(jiǎn)單地產(chǎn)生其他SCI,則幾乎不會(huì)產(chǎn)生混淆。不幸的是,另一個(gè)變量進(jìn)入到過(guò)程中,即變化,為了任意的理由,變化可能隨時(shí)發(fā)生。事實(shí)上,正如第一本系統(tǒng)工程法[BER80]中所說(shuō):不管你在系統(tǒng)生命期的什么地方,系統(tǒng)都將會(huì)發(fā)生變化,并且對(duì)變化的希望將持續(xù)于整個(gè)生命期中。
    變化的起源是什么呢?對(duì)這個(gè)問(wèn)題的回答就象變化本身一樣那么多變。然而,有四種基本的變化源:
    ·新的商業(yè)或市場(chǎng)條件,引起產(chǎn)品需求或業(yè)務(wù)規(guī)則的變化。
    ·新的客戶需要,要求修改信息系統(tǒng)產(chǎn)生的數(shù)據(jù)、產(chǎn)品提供的功能、或基于計(jì)算機(jī)的系統(tǒng)提供的服務(wù)。
    ·改組和/或企業(yè)規(guī)模減小,導(dǎo)致項(xiàng)目?jī)?yōu)先級(jí)或軟件工程隊(duì)伍結(jié)構(gòu)的變化。
    ·預(yù)算或進(jìn)度的限制,導(dǎo)致系統(tǒng)或產(chǎn)品的重定義。
    軟件配置管理是一組用于在計(jì)算機(jī)軟件的整個(gè)生命期內(nèi)管理變化的活動(dòng)。SCM可被視為應(yīng)用于整個(gè)軟件過(guò)程的軟件質(zhì)量保證活動(dòng)。在下面幾節(jié)中,我們考察能夠幫助我們管理變化的主要的SCM任務(wù)和重要的概念。
    9.1.1基線
    變化是軟件開(kāi)發(fā)中必然的事情??蛻粝M薷男枨?,開(kāi)發(fā)者希望修改技術(shù)方法,管理者希望修改項(xiàng)目方法。這些修改是為什么?回答實(shí)際上相當(dāng)簡(jiǎn)單,隨著時(shí)間的流逝,所有相關(guān)人員也就知道更多信息(關(guān)于他們需要什么、什么方法、以及如何實(shí)施并賺錢(qián)),這些附加的知識(shí)是大多數(shù)變化發(fā)生的推動(dòng)力,并導(dǎo)致這樣一個(gè)對(duì)于很多軟件工程實(shí)踐者而言難于接受的事實(shí):大多數(shù)變化是合理的!
    基線是一個(gè)軟件配置管理的概念,它幫助我們?cè)诓粐?yán)重阻礙合理變化的情況下來(lái)控制變化。IEEE(IEEE Std.610.12-1990)定義基線如下:
    已經(jīng)通過(guò)正式復(fù)審和批準(zhǔn)的某規(guī)約或產(chǎn)品,它因此可以作為進(jìn)一步開(kāi)發(fā)的基礎(chǔ),并且只能通過(guò)正式的變化控制過(guò)程的改變。
    一種類比方式描述基線的方式是:
    考慮某大飯店的廚房門(mén),為了減少?zèng)_突,一個(gè)門(mén)被標(biāo)記為“出”,其他門(mén)被標(biāo)記為“進(jìn)”,門(mén)上有機(jī)制,允許它們僅能朝適當(dāng)?shù)姆较虼蜷_(kāi)。
    如果某侍者在廚房里拿起一盤(pán)菜,將它放在托盤(pán)上,然后,他意識(shí)到他拿錯(cuò)了盤(pán)子,他可以迅速而非正式地在他離開(kāi)廚房前改變成正確的盤(pán)子。
    然而,如果他已經(jīng)離開(kāi)了廚房,并將菜給了顧客,然后被告知他犯了一個(gè)錯(cuò)誤,那時(shí),他就必須遵循下面一組規(guī)程:(1)查看帳單以確定是否錯(cuò)誤已經(jīng)發(fā)生;(2)向顧客道歉;(3)通過(guò)“進(jìn)”門(mén)返回廚房;(4)解釋該問(wèn)題,等等。
    基線類似于飯店中從廚房里傳送出去的盤(pán)子,在軟件配置項(xiàng)變成基線前,變化可以迅速而非正式地進(jìn)行,然而,一旦基線已經(jīng)建立,我們就得象通過(guò)一個(gè)單向開(kāi)的門(mén)那樣,變化可以進(jìn)行,但是,必須應(yīng)用特定的、正式的規(guī)程來(lái)評(píng)估和驗(yàn)證每個(gè)變化。
    在軟件工程的范圍內(nèi),基線是軟件開(kāi)發(fā)中的里程碑,其標(biāo)志是有一個(gè)或多個(gè)軟件配置項(xiàng)的
    交付,且這些SCI已經(jīng)經(jīng)過(guò)正式技術(shù)復(fù)審而獲得認(rèn)可(第8章)。例如,某設(shè)計(jì)規(guī)約的要素已經(jīng)形成文檔并通過(guò)復(fù)審,錯(cuò)誤已被發(fā)現(xiàn)并糾正,一旦規(guī)約的所有部分均通過(guò)復(fù)審、糾正、然后認(rèn)可,則該設(shè)計(jì)規(guī)約就變成了一個(gè)基線。任何對(duì)程序體系結(jié)構(gòu)(包含在設(shè)計(jì)規(guī)約中)進(jìn)一步的變化只能在每個(gè)變化被評(píng)估和批準(zhǔn)之后方可進(jìn)行。雖然基線可以在任意的細(xì)節(jié)層次上定義,但最常見(jiàn)的軟件基線如圖9-1所示。