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

字號:

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