軟件配置管理(Configuration Management)是指用于控制系統(tǒng)一系列變化的學(xué)科,通
過一系列技術(shù)、方法和手段來維護產(chǎn)品的歷史、鑒別和定位產(chǎn)品獨有的版本,并在產(chǎn)品的開
發(fā)和發(fā)布階段控制變化,通過有序管理和減少重復(fù)性工作,保證生產(chǎn)的質(zhì)量和效率。
不同于配置管理,軟件配置管理以計算機為載體(不論工具和產(chǎn)品),不光維護產(chǎn)品的
狀態(tài),歷史紀錄,同樣還支持存儲、恢復(fù)和產(chǎn)品制造。軟件配置管理是軟件工程中涉及概念
較多的一項內(nèi)容,為了便于說明,下面給出一些軟件配置管理相關(guān)術(shù)語(主要是軟件配置管
理計劃規(guī)范GB/T 12505-90)的定義和說明。
(1) 項目委托單位(Project Entrust Organization)
項目委托單位指為產(chǎn)品開發(fā)提供資金,通常也是(但有時也未必確定產(chǎn)品需求的單位或
個人。
(2) 項目承辦單位(Project Undertaking Organization)
項目承辦單位指為項目委托單位開發(fā)、購置或選用軟件產(chǎn)品的單位或個人。
(3) 軟件開發(fā)單位(Software Development Organization)
軟件開發(fā)單位是指直接或間接受項目委托而直接負責(zé)開發(fā)軟件的單位或個人。
(4) 用戶(User)
用戶指實際使用軟件來完成某項計算、控制或數(shù)據(jù)處理等任務(wù)的單位或個人。
(5) 軟件(Software)
軟件指計算機程序及其有關(guān)的數(shù)據(jù)和文檔,也包括固化了的程序。
IEEE 給出的定義為:計算機程序、方法、規(guī)則、相關(guān)的文檔資料以及在計算機上運行
時所必須的數(shù)據(jù)。
由此可見,軟件已不再只是一個程序和一本使用手冊,而是包括大量的程序、文檔和
數(shù)據(jù)。
(6) 軟件對象(Software Object)
軟件對象是在項目進展過程中產(chǎn)生的、可由軟件配置管理加以控制的任何實體。每個
軟件對象都具有一個唯一的標識符、一個包含實際信息的對象實體、一組用于描述其自身特
性的屬性與關(guān)系,以及用于與其他對象進行關(guān)系操作與消息傳遞的機制。
軟件對象按其生成方式可分為源對象(Source Object)與派生對象(Derived Object),
按其內(nèi)容結(jié)構(gòu)形式可分為原子對象(Atomic Object)與復(fù)合對象(Derived Object),按其內(nèi)
部結(jié)構(gòu)形式可分為原子對象(Atomic Object)與復(fù)合對象(composite Object),按照軟件開
發(fā)的不同時刻(狀態(tài))可分為可變對象(Mutable Object)與不可變對象(Immutable Object).
(7) 配置(Configuration)
配置指在配置管理中,軟件或硬件所具有的(即在技術(shù)文檔中所陳述的或產(chǎn)品所實現(xiàn)
的)那些功能特性和物理特性。
(8) 重要軟件(Critical Software)
重要軟件指其故障會影響到人身安全,會導(dǎo)致重大經(jīng)濟損失或社會損失的軟件。
(9) 軟件生存周期(Software Life Cycle)
軟件生存周期指從對軟件系統(tǒng)提出應(yīng)用需求開始,經(jīng)過開發(fā),產(chǎn)生出一個滿足需求的計
算機軟件系統(tǒng),多面手投入運行,直至該軟件系統(tǒng)“退役”為止。其間經(jīng)歷系統(tǒng)分析與軟件
定義、軟件開發(fā)以及系統(tǒng)的運行與維護等3 個階段。其中軟件開發(fā)階段一般又分成需求分析、
概要設(shè)計、詳細設(shè)計、編碼與單元測試、組裝與集成測試、系統(tǒng)測試以及安裝與驗收等6
個階段。
(10) 軟件開發(fā)庫(Software Development Library)
軟件開發(fā)庫指在軟件生存周期的某一個階段期間,存放與該階段軟件開發(fā)工作有關(guān)的
計算機可讀信息和人工可讀信息的庫。
(11) 配置項(Configuration Item)
配置項指一個配置中的實體,它滿足一項最終使用功能,并能在給定的參考點上意象
標識。在GB/T 11457-1995《軟件工程術(shù)語》中給出配置項另外一個定義:為了配置管理目
的而作為一個單位來看待的硬件和/或軟件成分,滿足最終應(yīng)用功能并被指明用于配置管理
的硬件/軟件,或它們的集合體。
軟件配置管理的對象是軟件配置項,它們是在軟件工程過程中產(chǎn)生的信息項。按照
ISO9000-3 的規(guī)定,軟件配置可以是:
-與合同、過程、計劃和產(chǎn)品有關(guān)的文檔和數(shù)據(jù);
-源代碼、目標代碼、和可執(zhí)行代碼;
-相關(guān)產(chǎn)品,包括軟件工具、庫內(nèi)的可利用軟件、外購軟件及用戶提供的軟件。
組成上述信息的所有項目構(gòu)成了一個軟件配置,而其中的每一項便于工作稱為一個軟
件配置項,這是配置管理的基本單位。在軟件開發(fā)過程中,最早的軟件配置項是系統(tǒng)軟件規(guī)
格說明書,隨著軟件開發(fā)過程的不斷深入,軟件配置項也迅速增加。
軟件配置項基本可劃分為兩種類別:
-軟件基準——經(jīng)過正式評審和認可的一組軟件配置項(文檔和其他軟件產(chǎn)品),它們作
為下一步的軟件開發(fā)工作的基礎(chǔ),并且只有通過正式的變更控制堆積才能被更改。例如:設(shè)
計報告是編碼工作的基礎(chǔ),設(shè)計報告可作為軟件基準。
-非基準配置項——沒有正式評審認可的一組軟件配置項。
這可以從下面角度劃分軟件配置項。
一個軟件系統(tǒng)劃分為幾個配置項要由項目經(jīng)理所確定的開發(fā)策略決定。讀者可以參考
NASA 給出的軟件配置項劃分原則( 《NASA Software Configuration Management
Guidebooks》,1995),每個軟件或某集合符合如下條件之一,可視為一個軟件配置項:
-該軟件集合是獨立設(shè)計、實現(xiàn)和測試的;
-該軟件集合對總體性能是關(guān)鍵的,或存在高風(fēng)險的,或關(guān)系到系統(tǒng)安全性;
-該軟件集合極為復(fù)雜,涉及高新技術(shù),或有嚴格的性能要求;
-該軟件集合與其他現(xiàn)有軟件項目或由其他機構(gòu)提供的軟件之間有直接接口;
-預(yù)計該軟件集合在成為可運行軟件之后會有比常規(guī)更多的修改;
-該軟件集合包括了某個特定范圍的所有功能,如應(yīng)用軟件、操作系統(tǒng)等;
-該軟件集合安裝在與系統(tǒng)其他部分不同的計算機平臺上;
-該軟件集合被設(shè)計成可重復(fù)使用的。
下面介紹軟件配置項的命名/編號。
軟件的每個組件/部件的標識必須唯一,以便于用該標識符來跟蹤和報告軟件配置項的
狀態(tài)。通常,對每一個軟件配置項要賦予一個標識名稱或符號,軟件配置項的各部分又在該
標識符下附上描述符。NASA-CM-GDBK 給出的一個標識例子是:組成航天飛機飛行軟件的
軟件配置項可標識為FS(Flight Software for a Spacecraft);而該飛行軟件的組成部分,例如
飛行執(zhí)行程序可標識為FS_EX,表示它是FS 軟件配置項的第二層次組件;該執(zhí)行程序的各
元件(子程序)可編號為FS_EX_001、FS_EX_002 等。
因此,可以根據(jù)“型號代號_分系統(tǒng)/設(shè)備配置代號_所處研制階段代號_軟件產(chǎn)品分類編
號_配置項編號”原則來對各軟件配置項及其組件、子程序及相關(guān)描述文檔進行命名、編號。
在軟件的事個生存周期中,一般包括制定計劃,分析評估、設(shè)計,測試,運行/維護等
狀態(tài)。相應(yīng)地可以把軟件配置管理分為設(shè)計態(tài),測試態(tài),受控態(tài)和運行態(tài)4 種狀態(tài),其中受控態(tài)即指軟件配置管理項處于配置管理狀態(tài)。
(12) 軟件受控庫(Software controlled Library)
軟件受控庫指在軟件生存周期的某一個階段結(jié)束時,存放作為階段產(chǎn)品而釋放的,與軟
件開發(fā)工作有關(guān)的計算機可讀信息和人工可讀信息的庫。軟件配置管理就是對軟件受控庫中
的各軟件項進行管理,因此軟件受控庫也叫做軟件配置管理庫。
(13) 軟件產(chǎn)品庫存(Software Product Library)
軟件產(chǎn)品庫指在軟件生存周期的系統(tǒng)測試階段結(jié)束后,存放最終產(chǎn)品、交付給用戶運
行或在現(xiàn)場安裝的軟件的庫。軟件產(chǎn)品庫可在分系統(tǒng)、系統(tǒng)層上分別設(shè)立并維護。如果軟件
產(chǎn)品庫中的產(chǎn)品需要更改則應(yīng)將些產(chǎn)品在產(chǎn)品庫中加鎖,撮軟件受控庫中相應(yīng)的軟件配置
項,履行受控庫中的更改控制手續(xù),直至更改完成并確認其能完成指定功能和性能后,方可
再次存入軟件產(chǎn)品庫。
(14) 配置管理(Configuration Management)
配置管理是對以下各項在運用技術(shù)上和行政上的管理和監(jiān)視的一門學(xué)科。對一個配置
項的功能特性和物理特性進行標識并寫成文檔;對這些特性的更改進行控制;對更改處理過
程和實施狀態(tài)進行記錄和報告;以及對是否符合規(guī)定需求進行驗證。
(15) 接口控制(Interface Control)
接口控制指描述由一個或多個部門提供的,兩個或兩個以上的配置項接口的所有功能
特性和物理特性的過程。在這些功能特性和物理特性實現(xiàn)之前,要確保對它們所做的修改
已經(jīng)評審和批準。
(16) 版本(Version)
版本是某一配置項的已標識了的實例(Instance)。也可以說,不可變的源對象經(jīng)質(zhì)量
檢查合格后所形成的新的相對穩(wěn)定的格局(配置)稱為軟件版本。
每個軟件對象可具有一人版本組,它們彼此間具有特定的關(guān)系,這種關(guān)系用以描述其演
變情況,通常軟件對象的版本組呈樹形結(jié)構(gòu)。
(17) 版本控制(Version Control)
版本控制就是管理在在軟件生存周期中建立起惡報某一配置項的不同版本。
在軟件工程過程中所涉及的軟件對象都要加以標識。在對象成為基線以前可能要做多
次變更,在成為基線之后也可能需要頻繁地變更。
(18) 釋放(Release)
釋放指在軟件軟件周期的各個階段結(jié)束時,由該階段向下階段提交該階段產(chǎn)品的過程。
它也指將系統(tǒng)測試階段結(jié)束時所花籃的最終產(chǎn)品向用戶提交的過程,這個過程也叫做交付
(Delivery)。
(19) 基線(Baseline)
基線指一個配置項在其生存周期的某一特定時間,被正式標明、固定并經(jīng)正式批準的
版本。也可以說,基線是軟件生存周期中各開發(fā)階段末尾的特定點,又稱里程碑。只有由正
式技術(shù)評審而得到的軟件配置項協(xié)議和軟件配置的正式的技術(shù)評審而得到的軟件配置協(xié)議
和軟件配置的正式文本才能成為基線。它的作用是使各階段工作的劃分更加明確化,使本來
連續(xù)的工作在這些點上斷開,以便于檢驗和肯定階段成果。
一個軟件配置項一旦成為基線,就把它存放到項目數(shù)據(jù)庫(也稱項目信息庫或軟件倉
庫)中。當(dāng)一位軟件組織成員想要對基線配置項進行修改時,就把它從項目數(shù)據(jù)庫中復(fù)制到
該工程師的專用工作空間(例如ClearCase 的視圖)中。這個活動記錄在一個記事文件中。
總之,基線是軟件配置管理的一個很需要概念。從某種意義上講,它是在軟件開發(fā)過
程中為進行質(zhì)量控制而引入的,它是開發(fā)進度表上的一個參考點與度量點,是后續(xù)開發(fā)的穩(wěn)
定基礎(chǔ)。基線的形成實際上就是對某些配置進行凍結(jié)。
(20) 軟件配置(Software Configuration)
軟件配置指一個軟件產(chǎn)品在軟件生存周期各個階段所產(chǎn)生的各種形式(機器可讀或人工
可讀)和各種版本的文檔、程序及其數(shù)據(jù)的集合。該集合中的每一個元素稱為該軟件產(chǎn)品軟
件配置中的一個配置項。
軟件工程過程的輸出信息有 3 種:計算機程序,描述計算機程序的文檔(包括技術(shù)文
檔和用戶文檔),數(shù)據(jù)結(jié)構(gòu)。在軟件工程過程中產(chǎn)生的所有的信息項(文檔、報告、程序、
表格、數(shù)據(jù))就構(gòu)成了軟件配置。軟件配置是軟件開發(fā)進展到某一時刻時產(chǎn)生的全部信息所
形成的一種格局,它反映并描述了軟件開發(fā)階段的狀況。
軟件配置的具體形態(tài)可分為以下兩種。
-不可直接執(zhí)行的材料。例如書寫的文檔、程序清單、測試數(shù)據(jù)、測試結(jié)果等。
-可直接執(zhí)行的材料。例如目標代碼、數(shù)據(jù)庫信息等。它們可由計算機處理,存儲于某
種存儲介質(zhì)上。
(21)功能基線(Functional Baseline)
功能基線指在系統(tǒng)分析與軟件定義階段結(jié)束時,在經(jīng)過正式評審和批準的系統(tǒng)設(shè)計規(guī)格
說明書中對開發(fā)系統(tǒng)的規(guī)格說明;或是指在經(jīng)過項目委托單位和項目承辦單位雙方簽字同意
的協(xié)議書或合同中,所規(guī)定的對開發(fā)軟件系統(tǒng)的規(guī)格說明;或是由下級申請并經(jīng)上級同意或
直接由上級下達的項目任務(wù)書中所規(guī)定的對開發(fā)軟件系統(tǒng)的規(guī)格說明。功能基線是最初批準
的功能配置標識。
(22)分配基線(Allocated Baseline)
分配基線指在軟件需求分析階段結(jié)束時,經(jīng)過正式評審和批準的軟件需求規(guī)格說明。分
配基線是最初批準的分配配置標識。
(23)產(chǎn)品基線(Product Baseline)
產(chǎn)品基線指在軟件組裝與系統(tǒng)測試階段結(jié)束時,經(jīng)過正式評審和批準的有關(guān)軟件產(chǎn)品的
全部配置項的規(guī)格說明。產(chǎn)品基線是最初批準的產(chǎn)品配置標識。
(24)基線配置管理(Baseline Configuration Management)
基線配置管理指建立經(jīng)正式評審和認可,并作為進一步開發(fā)工作的基礎(chǔ)的基線的過程。
某些(如軟件設(shè)計和代碼)軟件工作產(chǎn)品應(yīng)該有在預(yù)先確定點上建立的基線,并且應(yīng)該對這
些項施加嚴格的更改控制過程。當(dāng)與顧客打交道時,這些基線提供控制和穩(wěn)定性。
(25)基線管理(Baseline Management)
基線管理是指在配置管理中,運用技術(shù)上和行政上的管理來指定一些文檔和更改這些文
檔,這些文檔在某些特定時刻正式標識和建立起基線。
(26)軟件基線審計(Software Baseline Audit)
軟件基線審計是指對于軟件基線庫的結(jié)構(gòu)、內(nèi)容和設(shè)施的考查,以便查證基線是否符合
描述基線的文檔。
(27)軟件基線庫(Software Baseline Library)
軟件基線庫是指存儲配置項及相連記錄的倉庫。
(28)配置管理庫系統(tǒng)(Configuration Management Library System)
配置管理庫系統(tǒng)是存取軟件基線庫內(nèi)容的工具和規(guī)程。
(29)配置單元(Configuration Unit)
配置單元是可放入配置管理庫系統(tǒng)的、可從庫中檢索的一個配置項。
(30)過程能力基線(Process Capability Baseline)
過程能力基線是指用文檔記載的,對在典型環(huán)境下由于遵循某特定過程通常所能實現(xiàn)預(yù)
期結(jié)果的范圍的特性描述。
(31)配置控制組/委員會(Configuration Control Board)
配置控制組/委員會是指一組負責(zé)評估和審批配置項的變更人員,以確保所有的變更都
是經(jīng)過審核的。
(32)配置標識(Configuration Identification)
配置標識是軟件配置管理的一個要素,由為系統(tǒng)所選的配置項及記錄它們功能的物理特
性的技術(shù)文檔組成;經(jīng)核準的配置項的技術(shù)文檔是由說明書、圖、表等組成的。為了方便對
軟件配置項進行控制和管理,不致造成混亂,要給它們命名,這就是配置標識的任務(wù)。
配置標識主要目的是對變更配置項的軟件行為及變更結(jié)果提供一個可跟蹤的手段,避免
軟件開發(fā)行為在不受控,混亂的情況下進行,也有利于軟件開發(fā)工作以基線漸進的方式完成。
(33)變更管理(Change Management)
變更管理是軟件配置管理的一個要素,由評估、協(xié)調(diào)、批準或不批準以及對正式構(gòu)造配
置標識的配置項實施變更等活動組成。
變更管理主要目的是控制和協(xié)調(diào)不同責(zé)任的軟件開發(fā)人員進行有效的交流,使軟件開發(fā)
人員不會在無序的環(huán)境下各自為戰(zhàn),導(dǎo)致團隊開發(fā)的效率出現(xiàn)不可逾越的瓶頸。軟件生存期
內(nèi)全部的軟件配置是軟件產(chǎn)品的真正代表,必須使其保持精確。軟件工程過程中某一階段的
變更,均要引起軟件配置的變更,對這種變更必須嚴格加以控制和管理,保持修改信息,并
把精確、清晰的信息傳遞到軟件工程過程下一步驟。
(34)配置狀態(tài)統(tǒng)計(Configuration Status Accounting)
配置狀態(tài)統(tǒng)計是軟件配置管理的一個要素,由有效管理所需的記錄和報告信息組成。這
些信息包括經(jīng)核準的配置標識表、需要變更的配置狀態(tài)和實施經(jīng)審核的變更狀態(tài)。
狀態(tài)統(tǒng)計主要目的是在版本控制與過程管理的基礎(chǔ)上,通過量化的數(shù)據(jù)和報表展現(xiàn)軟件
開發(fā)進度的狀態(tài)。
(35)配置審核(Configuration Auditing)
配置審核是軟件配置管理的一個要素,它根據(jù)需求、標準或合同協(xié)議檢驗軟件產(chǎn)品。
配置審核主要目的是以用戶和開發(fā)團隊均認可的衡量尺度(例如與用戶簽定的軟件合
同),通過功能審核及物理審核兩種方式,對軟件實施過程和軟件功能的完整性、正確性進
行檢驗審核。配置審核確保軟件配置管理系統(tǒng)作用正確,保證測試過后的配置項功能滿足需
求。
配置審核分為非正式審核和正式審核。
在軟件生存周期的關(guān)鍵階段采取非正式審核。例如,在開始系統(tǒng)設(shè)計前,一般要進行配
置審核,檢驗需求規(guī)格配置的完整性和正確性。在軟件音樂會客戶前采取正式審核。
正式審核包括功能型和物理型兩種類型。功能配置審核(FCA)是通過對測試方法、測
試流程及測試報告的評價,鑒定軟件配置項的實際性能是否符合設(shè)計文檔所確定的要求。物
理配置審核(PCA)是對配置項的音樂會版本的正式檢測,鑒定該版本是否與所確定的技術(shù)
和文檔相一致,并保證軟件音樂會版本中已完成了所有已批準的更改,包括了所有要求的軟
件項目、數(shù)據(jù)、工作規(guī)程和文檔。
軟件配置管理的 4 個關(guān)鍵要素為配置標識、變更管理、配置審核、配置狀態(tài)統(tǒng)計。
(36)開發(fā)配置管理(Developmental Configuration Management)
開發(fā)配置管理是指運用技術(shù)上和行政上的管理來指定和控制軟件和其相關(guān)的技術(shù)文檔,
它們定義一個軟件工作產(chǎn)品在開發(fā)期間不斷進化的配置。開發(fā)配置管理自在開發(fā)者的直接控
制之下。置于開發(fā)配置管理下的配置項不是基線,雖然在開發(fā)的某些點上,它們可能被基線
化并置于基線配置管理之下。
(37)關(guān)鍵過程域(Key Process Area)
一組相關(guān)的活動,當(dāng)這些活動共同完成時,能實現(xiàn)對建立過程能力至關(guān)重要的一組目標。
每個關(guān)鍵過程域已經(jīng)定義在單個成熟度等級上。CMU—SEI 確定它們是一些主要構(gòu)成單元,
用于幫助確定一個組織的軟件過程能力和了解為更高成熟度等級前進所做的改進。軟件配置
管理是CMM(軟件能力成熟度模型)中等級2 的關(guān)鍵過程域。
常用的軟件配置管理英文縮寫:
CI Configuration Item 配置項
SCM Software Configuration Management 軟件配置管理
SCMP Software Configuration Management Plan 軟件配置管理計劃
CR Change Request 變更請求
SCN Specification Change Notice 說明變更注意
FCA Functional Configuration Audit 功能配置審核
GUI Graphical User Interface 圖形用戶界面
PCA Physical Configuration Audit 物理配置審核
VDD Version Description Document 版本說明文檔
ECP Engineering Change Proposal 工程變更建議書
CPCI Computer Program Configuration Item 計算機程序配置項
CSCI Computer Software Configuration Item 計算機軟件配置項
SCCB Software Configuration Control Board 軟件配置控制組/委員會