|
1 簡介 現(xiàn)在,軟件配置管理的環(huán)境及其工具越來越得到人們的重視,這一點(diǎn)從CM體系中提供的概念譜中就顯而易見。本文對這些概念進(jìn)行了闡明。首先,在一典型的CM情形中,我們 對CM和CM體系做了更為廣泛的定義。 1.1 配置管理的定義軟件配置管理是一控制軟件系統(tǒng)演變的學(xué)科。關(guān)于CM的經(jīng)典討論在條文[3]、[4]中進(jìn)行了闡述。IEEE標(biāo)準(zhǔn)729-1983就CM以下的內(nèi)容進(jìn)行了規(guī)范的定義。 在IEEE標(biāo)準(zhǔn)729-1983中,軟件配置管理的定義包括: 標(biāo)識(shí)——識(shí)別產(chǎn)品的結(jié)構(gòu)、產(chǎn)品的構(gòu)件及其類型,為其分配唯一的標(biāo)識(shí)符,并以某種形式提供對它們的存取。 控制——通過建立產(chǎn)品基線,控制軟件產(chǎn)品的發(fā)布和在整個(gè)軟件生命周期中對軟件產(chǎn)品的修改。例如,它將解決哪些修改會(huì)在該產(chǎn)品的最新版本中實(shí)現(xiàn)的問題。 狀態(tài)統(tǒng)計(jì)——記錄并報(bào)告構(gòu)件和修改請求的狀態(tài),并收集關(guān)于產(chǎn)品構(gòu)件的重要統(tǒng)計(jì)信息。例如,它將解決修改這個(gè)錯(cuò)誤會(huì)影響多少個(gè)文件的問題。 審計(jì)和審查——確認(rèn)產(chǎn)品的完整性并維護(hù)構(gòu)件間的一致性,即確保產(chǎn)品是一個(gè)嚴(yán)格定義的構(gòu)件集合。例如,它將解決目前發(fā)布的產(chǎn)品所用的文件的版本是否正確的問題。 生產(chǎn)——對產(chǎn)品的生產(chǎn)進(jìn)行優(yōu)化管理。它將解決最新發(fā)布的產(chǎn)品應(yīng)由哪些版本的文件和工具來生成的問題。 過程管理——確保軟件組織的規(guī)程、方針和軟件周期得以正確貫徹執(zhí)行。它將解決要交付給用戶的產(chǎn)品是否經(jīng)過測試和質(zhì)量檢查的問題。 小組協(xié)作——控制開發(fā)統(tǒng)一產(chǎn)品的多個(gè)開發(fā)人員之間的協(xié)作。例如,它將解決是否所有本地程序員所做的修改都已被加入到新版本的產(chǎn)品中的問題。 軟件配置管理的解決方案涉及面很廣,將影響軟件開發(fā)環(huán)境、軟件過程模型、配置管理系統(tǒng)的使用者、軟件產(chǎn)品的質(zhì)量和用戶的組織機(jī)構(gòu)。 配置管理解決方案將影響過程模型和模型的使用者,是因?yàn)樗鼜?qiáng)行推行組織的方針政策和工作規(guī)程,并對工作過程進(jìn)行跟蹤。它從開發(fā)和維護(hù)的及時(shí)性方面影響產(chǎn)品的質(zhì)量。例如,配置管理機(jī)制可以保證為每一個(gè)發(fā)布的版本提供內(nèi)容清單,通過一致性維護(hù)提高產(chǎn)品的質(zhì)量。配置管理解決方案通常在組織范圍內(nèi)推行,實(shí)際上配置管理系統(tǒng)是組織內(nèi)部信息交換的中心,它影響組織內(nèi)的每一個(gè)成員及組織的業(yè)務(wù)流程。 總之,一個(gè)配置管理解決方案的制定包括配置管理計(jì)劃、過程的定義、與使用者的交流、自動(dòng)化支持和做出管理決定等活動(dòng)。 軟件組織應(yīng)該提出不同層次的配置管理視角,這些層次包括:公司級、項(xiàng)目級、程序員級和應(yīng)用級。公司級視角提供組織的全貌圖和配置管理過程的描述;項(xiàng)目級視角是與項(xiàng)目相關(guān)的各項(xiàng)目組可以使用不同的配置管理方案;程序員級視角是專門為程序員提供的且具有某些特定的配置管理功能;應(yīng)用級視角關(guān)心的是配置管理如何應(yīng)用到具體的問題中去。 1.2 CM系統(tǒng)的定義至于怎樣才算是構(gòu)成CM系統(tǒng)的,對此還沒有普遍接受的定義。例如:假如系統(tǒng)有版本控制功能,它是否就是一個(gè)CM系統(tǒng)呢?理想的CM系統(tǒng)是基于以上定義提供所有功能的系統(tǒng)。但是, 實(shí)際中的系統(tǒng)只能提供某種程度上實(shí)現(xiàn)的版本控制功能、配置識(shí)別功能、系統(tǒng)構(gòu)建功能、系統(tǒng)建模功能,或某種程度上提供CM的意識(shí)就被軟件工程大家族認(rèn)為是CM系統(tǒng)了。應(yīng)注意的是, 現(xiàn)有的CM體系提供只是一種功能的綜和而不是一標(biāo)準(zhǔn)的體系。本報(bào)告提及15個(gè)CM系統(tǒng),目前至少有40個(gè)系統(tǒng)可以為今所用。 這里,有必要將CM系統(tǒng)和CM工具兩概念區(qū)分一下。CM系統(tǒng)可看作是其支持環(huán)境的一部分且以這種形式被售出。譬如,在RATIONAL[14]環(huán)境下CM功能成為該環(huán)境必不可少的一部分。CM工具可看作是一獨(dú)立的工具。譬如,版本控制系統(tǒng)(RCS)只是一個(gè)工具,因?yàn)樗杀话惭b在一個(gè)現(xiàn)有環(huán)境中。由于這種區(qū)分在本文不是那么重要,術(shù)語CM系統(tǒng)就被用來表示這兩概念。 1.3 CM以用戶為導(dǎo)向的典型情形在討論CM體系之前,我們描述了一個(gè)簡單、典型的、以用戶為導(dǎo)向的CM系統(tǒng)來作參考。在此情形下,包含了具有不同職責(zé)的人員:負(fù)責(zé)軟件小組的項(xiàng)目經(jīng)理、負(fù)責(zé)CM規(guī)程和方針的配置經(jīng)理、負(fù)責(zé)軟件產(chǎn)品開發(fā)與維護(hù)的軟件工程人員、負(fù)責(zé)驗(yàn)證產(chǎn)品正確性的測試人員、負(fù)責(zé)確保產(chǎn)品高質(zhì)量的質(zhì)量保證經(jīng)理、使用產(chǎn)品的用戶。 每一角色都有他們的目標(biāo)和任務(wù)。對項(xiàng)目經(jīng)理來講,其目標(biāo)是確保產(chǎn)品在一定的時(shí)間框架里得以開發(fā)。因此,經(jīng)理監(jiān)控開發(fā)過程并發(fā)現(xiàn)問題,解決出現(xiàn)的問題。這些又必須通過對軟件系統(tǒng)的現(xiàn)狀形成報(bào)告并予以分析以及對系統(tǒng)進(jìn)行審核才能完成。 配置經(jīng)理的目標(biāo)是確保用來建立、更改及編碼測試的規(guī)程和方針得以貫徹執(zhí)行,同時(shí)使有關(guān)項(xiàng)目的信息容易獲得。為了對編碼更改形成控制,經(jīng)理引入對正規(guī)請求更改的機(jī)制,評估更改的機(jī)制[通過更改控制機(jī)構(gòu)(CCB),由它負(fù)責(zé)批準(zhǔn)對軟件系統(tǒng)的更改],和批準(zhǔn)更改的機(jī)制。經(jīng)理負(fù)責(zé)為工程人員創(chuàng)建并宣導(dǎo)任務(wù)單,基本上創(chuàng)建項(xiàng)目的框架。同時(shí),經(jīng)理還收集軟件系統(tǒng)中構(gòu)件的相關(guān)數(shù)據(jù),比如說用以判斷系統(tǒng)中出現(xiàn)問題的構(gòu)件的信息。 對于軟件工程人員,他們的目標(biāo)是有效地創(chuàng)造出產(chǎn)品。這就意味著工程人員在創(chuàng)建產(chǎn)品、編碼測試及支持文檔的產(chǎn)生中不必相互間干涉。與此同時(shí),他們能有效地進(jìn)行溝通與協(xié)作。他們利用工具以幫助創(chuàng)建性能一致的軟件產(chǎn)品,通過相互通知要求的任務(wù)和完成的任務(wù)來進(jìn)行溝通與協(xié)調(diào)。做出的更改通過將它們進(jìn)行融合、分散和沖擊而得知。產(chǎn)品中的所有元素的演變連同其更改的原因及實(shí)際更改的記錄都予以保留。工程人員在創(chuàng)建、變更、測試及編碼的匯合上有自己的工作范圍。在某一點(diǎn)上,編碼會(huì)形成一個(gè)基線,它使得進(jìn)一步開發(fā)得以延續(xù),為其它平行開發(fā)得以進(jìn)行。 測試的目標(biāo)是確保產(chǎn)品經(jīng)過測試達(dá)到要求。這里包括產(chǎn)品某一特定版本的測試和對某個(gè)產(chǎn)品的某種測試及其結(jié)果予以記錄。將錯(cuò)誤報(bào)告給相關(guān)人員并通過回歸測試進(jìn)行修補(bǔ)。 質(zhì)量保證經(jīng)理的目標(biāo)是確保產(chǎn)品的高質(zhì)量。這意味著特定的規(guī)程和方針應(yīng)當(dāng)完成并得到相關(guān)的批準(zhǔn)。錯(cuò)誤應(yīng)得到糾正并應(yīng)對變化的部分進(jìn)行充分測試??蛻敉对V應(yīng)予以跟蹤。 不同的客戶使用的產(chǎn)品版本也是不同的??蛻艨偸亲裱?span>規(guī)則來做變更要求、錯(cuò)誤顯示及產(chǎn)品改進(jìn)。 理想的CM系統(tǒng)在這種情形下應(yīng)能夠支持所有這些目標(biāo)、角色和任務(wù)。這也意味著這些角色、任務(wù)和目標(biāo)決定了一CM系統(tǒng)要求的功能。本文提出的一些概念就是為了解決這些問題。 1.4 本文的結(jié)構(gòu)在簡介中就CM和CM系統(tǒng)進(jìn)行了定義,列出一典型的CM情形,這樣一來也就暗示了CM體系的要求。第二節(jié)描述了CM系統(tǒng)中以用戶為導(dǎo)向的一些問題。這些問題影響用戶對CM系統(tǒng)的期望。第三節(jié)描述了CM概念譜。第四對CM體系的未來做了探討,第五節(jié)是結(jié)論。附錄是本文CM體系索引的概覽。 2 CM體系用戶的有關(guān)問題許多與CM有關(guān)的問題直接影響到CM系統(tǒng)的用戶?,F(xiàn)有的CM體系從不同的角度解決這些問題。盡管本文是為了就現(xiàn)有CM體系的特色進(jìn)行探討,但對這些問題的闡述仍然有必要因?yàn)樗鼈冇绊懙接脩魧σ?/span>CM系統(tǒng)的期望。這些問題包括: 用戶的角色問題: 不同CM體系用戶對CM體系的功能的要求也就不同。 集成問題: 不同的集成問題影響到CM系統(tǒng)的功效。 啟用CM的時(shí)機(jī)問題: 一項(xiàng)目組何時(shí)啟用CM系統(tǒng)取決于該CM系統(tǒng)的能力。 控制水平問題; 一CM系統(tǒng)對產(chǎn)品及產(chǎn)品的管理的控制水平可以是不同的。 過程與產(chǎn)品問題: 一理想的CM系統(tǒng)提供CM的過程、產(chǎn)品及其附件。 自動(dòng)化水平問題: CM功能的實(shí)現(xiàn)總是手工與自動(dòng)程序的統(tǒng)一。 功能問題: CM體系具備實(shí)現(xiàn)CM眾多功能的許多特點(diǎn)。 以下將對此做進(jìn)一步說明。 2.1 用戶的角色問題正如1。3節(jié)中的情形表示的一樣,CM體系的用戶是多種多樣的。每一個(gè)用戶都有特定的角色,對CM也有不同的觀點(diǎn),因此,對CM系統(tǒng)的要求也就不同。這種要求是很分明的同時(shí)又是互補(bǔ)的。圖1是一功能組描述了項(xiàng)目經(jīng)理、配置經(jīng)理、軟件工程人員、質(zhì)量保證經(jīng)理及客戶對CM系統(tǒng)的期望。圖1中的每一個(gè)方框代表的是一主要的功能區(qū)域。圖1顯示在方框外(審核、統(tǒng)計(jì)、構(gòu)件、結(jié)構(gòu)與創(chuàng)建)在任何CM系統(tǒng)中都可獨(dú)立存在的功能區(qū)域,但當(dāng)與團(tuán)隊(duì)和過程功能合并時(shí),就得到一個(gè)完整的(或綜合的)CM系統(tǒng)了。
創(chuàng) 建 結(jié) 構(gòu)
圖1:CM功能要求 功能區(qū)域有: l 構(gòu)件:標(biāo)識(shí)、分類、存取構(gòu)成產(chǎn)品的組件。 l 結(jié)構(gòu):表示產(chǎn)品的架構(gòu)。 l 創(chuàng)建:支持產(chǎn)品的構(gòu)建及其產(chǎn)品的附件。 l 審核:對產(chǎn)品及其過程的審核予以保留。 l 統(tǒng)計(jì):采集與產(chǎn)品、過程相關(guān)的數(shù)據(jù)。 l 控制:控制產(chǎn)品變更的方式及時(shí)間。 l 過程:支持產(chǎn)品演變的管理。 l 團(tuán)隊(duì)協(xié)作:促進(jìn)項(xiàng)目組開發(fā)及產(chǎn)品維護(hù)。
以下將對這些功能區(qū)域的進(jìn)一步探討。 u 對于元素的要求,用戶要:記錄元素的版本及其差異,差異的原因;確定構(gòu)成配置及配置版本的組件群;標(biāo)識(shí)出產(chǎn)品的基線及其外延產(chǎn)品,確定表示項(xiàng)目組件群及附件項(xiàng)目環(huán)境。而且,用戶需要數(shù)據(jù)庫來存取組件及CM信息,同時(shí)還有資源和對象編碼、執(zhí)行情況、圖表、文檔和基線。 u 對于機(jī)構(gòu)的要求而言,用戶要:通過表示產(chǎn)品組件庫的系統(tǒng)模型來模擬產(chǎn)品的結(jié)構(gòu);標(biāo)明組件、版本、配置的界面使之可以重用;確定及維護(hù)組件間的關(guān)系;選擇兼容的組件使之形成有效的、一致的產(chǎn)品版本。 u 對構(gòu)建的要求而言,用戶要:容易創(chuàng)建產(chǎn)品的手段;能隨時(shí)靜態(tài)分析產(chǎn)品的現(xiàn)狀;通過減少組件的堆積和節(jié)省區(qū)間來優(yōu)化系統(tǒng)創(chuàng)建的機(jī)制;進(jìn)行更改分析以預(yù)測因更改而導(dǎo)致的細(xì)小分化的手段;隨時(shí)都能對產(chǎn)品的任何部分、在任何階段容易得到更新。 u 對于審核的要求而言,用戶要:所有更改的歷史記錄;所有與產(chǎn)品相關(guān)的組件與其演變的追溯性;完成任務(wù)的所有細(xì)節(jié)的日志。 u 對于統(tǒng)計(jì)的要求而言, 用戶要:統(tǒng)計(jì)記錄的機(jī)制,產(chǎn)品現(xiàn)狀的檢驗(yàn),有關(guān)產(chǎn)品和過程的所有方面的報(bào)告能較易產(chǎn)生。 u 對于控制要求而言,用戶要:為避免不必要的變更或變更沖突對系統(tǒng)中的組件的獲取應(yīng)予以控制,對于更改要求的表格及問題報(bào)告形成在線支持;錯(cuò)誤查找的手段及何時(shí)對何人會(huì)產(chǎn)生什么影響;在不同但相關(guān)的產(chǎn)品版本之間以受控的方式進(jìn)行更改告知;將產(chǎn)品進(jìn)行分割的手段以限制更改影響。 u 對于過程要求而言,用戶要:對生命周期模型及組織方針予以支持;確定要完成的任務(wù)及如何完成、何時(shí)完成的能力;將相干的事務(wù)的訊息在適當(dāng)?shù)娜藛T之間進(jìn)行溝通的能力;將產(chǎn)品的經(jīng)驗(yàn)文檔化的手段。 u 對于團(tuán)隊(duì)協(xié)作的要求而言, 用戶要:個(gè)人和小組的工作區(qū)間;在匯合時(shí)產(chǎn)生沖突的解決辦法;對產(chǎn)品的創(chuàng)建及其維護(hù)予以支持的手段。
注意:圖中過程方框與團(tuán)隊(duì)方框代表功能區(qū)域極為重要的部分。這是因?yàn)樗鼈冇绊懰衅渌鼌^(qū)域或受到所有其它區(qū)域的影響。對于用戶來講,理想的CM系統(tǒng)隨團(tuán)隊(duì)協(xié)作和過程的完全融合應(yīng)當(dāng)能支持所有的功能區(qū)域。但目前還沒有此類系統(tǒng)。 2.2 CM系統(tǒng)的集成任何CM系統(tǒng)在某種程度上都能與它的環(huán)境融合。CM系統(tǒng)可與其它工具并存或完全融合。適合與不同環(huán)境方面融合的有:過程、工具組和數(shù)據(jù)庫。過程集成是將CM系統(tǒng)的使用模式(指CM過程)同環(huán)境的使用模式(指軟件生命周期過程)的結(jié)合;工具組的集成是將CM系統(tǒng)安裝在環(huán)境中使之至少能環(huán)境中其它所有工具共存。譬如,在編輯過程中, 每當(dāng)用戶發(fā)出“SAVE”命令時(shí),用戶就會(huì)要求CM功能能建立一新的版本。數(shù)據(jù)集成指的是CM數(shù)據(jù)庫的邏輯定位——它是否能與現(xiàn)存環(huán)境的數(shù)據(jù)庫能做某種方式的合并,或它的數(shù)據(jù)庫是否獨(dú)立存在的,或它能否利用其它數(shù)據(jù)庫中的信息。所有此類集成都是普通的工具集成和技術(shù)的轉(zhuǎn)換問題。但,由于CM將影響到環(huán)境中的絕大部分物件并貫穿每一物件生命周期的所有階段,CM系統(tǒng)的集成勢必對環(huán)境中的很多工具有重要影響。大多數(shù)CM系統(tǒng)能與其它工具共存,有些環(huán)境把CM看成其必不可少的一部分。 2.3 何時(shí)啟用CM系統(tǒng)對于在開發(fā)和維護(hù)產(chǎn)品過程中, 項(xiàng)目組何時(shí)啟用CM系統(tǒng)是不定的。有些項(xiàng)目組選擇在產(chǎn)品經(jīng)歷開發(fā)生命周期并準(zhǔn)備發(fā)到用戶地時(shí)開始啟用。有的選擇在項(xiàng)目一開始就將一切置于CM下。二者都有各自的一般費(fèi)用。譬如,項(xiàng)目組可能基于變更要求的費(fèi)用上來決定何時(shí)啟用。如果有許多的手工程序(如:將變更申請表歸檔、尋求CCB的批準(zhǔn)與確認(rèn)可),項(xiàng)目組會(huì)選擇在大部分開發(fā)完成之后將軟件置于CM的控制之下。但如果變更要求程序能在線很快地得到處理,CM將在軟件生命周期的早期就被用上。理論上講,CM在產(chǎn)品的整個(gè)生命周期都能派上用場 —— 從創(chuàng)建、開發(fā)、產(chǎn)品發(fā)放、交付、使用到維護(hù)。在理想的情形下,CM能在較少的花費(fèi)下對此予以支持,由此CM才能在項(xiàng)目中盡可能早地予以應(yīng)用。 然而,現(xiàn)有的CM系統(tǒng)只關(guān)注生命周期的某一特定的階段,用戶因此受到限制。 2.4 CM的控制水平很多的程序、方針和工具組合一塊來支持CM的應(yīng)用。它們在對用戶的支持和產(chǎn)品的演變予以不同程度控制水平支持。譬如,它們會(huì)要求開發(fā)人員遞交正式的書面的更改請求。配置經(jīng)理則會(huì)建立一個(gè)工作區(qū)間給軟件開發(fā)人員。配置經(jīng)理可從受控庫存中抽取所要的文檔并將其置于該開發(fā)人員的工作區(qū)間里。當(dāng)然,不同的程序、規(guī)定和工具事實(shí)上允許開發(fā)人員也可以通過電子郵件的方式將更改請求通知配置經(jīng)理及CCB的其他成員。成員之間通過電子郵件予以迅速回應(yīng)。一經(jīng)批準(zhǔn),更改請求將被指派給開發(fā)人員,他可以直接從庫存中抽取相關(guān)的文件并作出更改。所有這些無需手工介入。由于CM系統(tǒng)會(huì)自動(dòng)記錄所有的登入,更改過程的正式記錄就可創(chuàng)建。 前一種情形可被看成對行動(dòng)具有積極的控制,后者較為松且被動(dòng)。在前一種情形中由于手工耗費(fèi)的原因,經(jīng)常性的更改不予以主張,而后者恰恰相反。這種不同的控制水平在產(chǎn)品生命周期的特定階段有其適用性。譬如,前者更適合維護(hù)而后者適合開發(fā)。不管CM系統(tǒng)這么用,它對于用戶和產(chǎn)品的演變歷史都有一定程度的控制。它將驅(qū)動(dòng)用戶的過程并將其加強(qiáng)?,F(xiàn)有的CM系統(tǒng)提供或松或緊的控制水平但很少能靈活地允許用戶選擇控制的種類。 2.5 過程與產(chǎn)品的區(qū)分CM包括過程和產(chǎn)品。CM過程表示執(zhí)行CM是所需的一系列工作任務(wù)。從根本上講,過程是一個(gè)計(jì)劃,它定義要做什么、誰來做及如何做。支持這過程是管理的功能。過程模型將組織的方針、程序和軟件開發(fā)生命周期模型通盤考慮。CM的產(chǎn)品是工程管理任務(wù)的結(jié)果。CM系統(tǒng)的功能需要為二者予以支持?,F(xiàn)有的CM系統(tǒng)提供一些產(chǎn)品及過程的支持,但在同一CM系統(tǒng)中一般不能形成對二者完全支持。 2.6 CM自動(dòng)化水平目前,CM一般是手工和自動(dòng)程序二者兼而有之。無需任何在線支持來實(shí)施CM也是可能的。但這樣做的效率很低。我們的目標(biāo)是將CM中非創(chuàng)造性的部分盡量多地自動(dòng)化。譬如,書面更改表格和對此回應(yīng)的監(jiān)控一般只在組織方針里予以記錄,而不能在線獲取與加強(qiáng)。 2.7 CM系統(tǒng)功能現(xiàn)有的CM系統(tǒng)提供的只是所有不同種類的用戶的部分功能。但隨時(shí)間的推移和用戶的需求和環(huán)境結(jié)構(gòu)的能力得到更好理解后,這種情況將可能得以改進(jìn)。以下部分描述的是現(xiàn)有CM系統(tǒng)概念范圍。 3 配置管理系統(tǒng)概念光譜圖以上部分解釋了有關(guān)配置管理系統(tǒng)需求問題的范圍,本部分將細(xì)述配置管理系統(tǒng)的具體功能,并對于支持前文所述某些功能的概念特別加以考察。這些概念將被組織成一幅光譜圖來表示配置管理系統(tǒng)的演化過程。每個(gè)概念都將置于一個(gè)特定的配置管理系統(tǒng)中來描述。以下是要討論的我們感興趣的配置管理系統(tǒng)概念中的功能,包括:組件,過程,結(jié)構(gòu)和特色架構(gòu)的組合,團(tuán)隊(duì)概念。圖2展示了整個(gè)概念光譜圖和它們對應(yīng)的,有代表性的配置管理系統(tǒng)實(shí)例,然后給出每個(gè)概念的一個(gè)簡單描述并著重突出它的優(yōu)勢。在本部分的末尾,將對概念和概念光譜圖的作用和局限性作一個(gè)分析總結(jié)。
演化的方向
*系統(tǒng)實(shí)例
*表示本節(jié)點(diǎn)所示概念的系統(tǒng)實(shí)例
圖2:配置管理概念光譜圖
3.1 注意事項(xiàng)值得指出的是要討論的概念和系統(tǒng)僅僅是現(xiàn)有系統(tǒng)的表示,而不是現(xiàn)有系統(tǒng)完整的評估和總結(jié)。對于每個(gè)概念,都用一個(gè)配置管理系統(tǒng)實(shí)例來討論。但是需要注意的是,許多配置管理系統(tǒng)實(shí)際上提供了不止一個(gè)光譜圖所示概念。既然談到配置管理系統(tǒng)自然形成的功能時(shí)沒有通用的術(shù)語,而這些概念是直接從特定配置管理系統(tǒng)中提取——所以每一個(gè)配置管理系統(tǒng)有自己的概念和定義。為了注意力集中,概念的描述都盡量簡化。這樣一來,就無法對所有概念的能力(不是它們的系統(tǒng))面面俱到。但是,因?yàn)橐岢龈拍罟庾V圖和精簡出一個(gè)配置管理系統(tǒng)概念集的緣故,簡化是必要的。本文參考的每種配置管理系統(tǒng)在附錄中都有一個(gè)簡評,它提供了每種系統(tǒng)配置管理能力一個(gè)更全面的清單。 3.2 組件的概念組件的概念是與標(biāo)明和訪問軟件產(chǎn)品的組件相關(guān)。它們包括下文所描述的庫和分布式組件。 3.2.1 庫庫的概念是配置管理系統(tǒng)的根本。修訂控制系統(tǒng)(Revision Control System(RCS))[15]提供了ASCII碼文件庫的概念。從效果上來說,庫是集中控制的文件庫并提供對庫中所存儲(chǔ)文件的版本控制。任何庫中的文件都被視為在確定的配置管理之下。庫中的文件是不會(huì)變的——它們不能被更改。任何更改被視為創(chuàng)建了一個(gè)新版本的文件。文件所有的配置管理信息和文件的內(nèi)容都存貯在庫中。所以,任何配置的管理和控制都與庫中的文件相關(guān)聯(lián)。當(dāng)工作于一個(gè)文件時(shí),用戶將某個(gè)版本的文件導(dǎo)入工作目錄,然后開始工作,處理完了,然后將文件導(dǎo)回庫中。這樣就生成了這個(gè)文件的新版本。所以用戶不可能導(dǎo)出一個(gè)文件并同時(shí)在庫中修改源文件。 從庫的角度來看,導(dǎo)出的文件自動(dòng)被鎖定直到文件重新被導(dǎo)入,一個(gè)版本號(hào)自動(dòng)與新版本文件相關(guān)聯(lián)。這樣一來,用戶可以隨時(shí)根據(jù)特定的版本號(hào)來導(dǎo)出任何文件(缺省的是最新的版本)。對最新版本的修改的結(jié)果是產(chǎn)生一個(gè)新的,順序遞增的版本;而對更老版本的修改的結(jié)果是產(chǎn)生一個(gè)分支版本。在版本編號(hào)策略和使用模式共同作用下,產(chǎn)生了文件版本歷史樹,用來表示祖先和后代版本。庫中不但存儲(chǔ)了文件的不同版本,更改的理由,而且存儲(chǔ)誰在什么時(shí)候替換了某個(gè)版本的文件等文件歷史信息。請注意,對于每個(gè)不同版本文件,不是所有的代碼都存儲(chǔ)起來,而只是不同版本間實(shí)際的差異才存儲(chǔ)起來:這稱為增量。這種方法有利于節(jié)省空間和節(jié)省對最新文件版本的訪問時(shí)間。另外,可以根據(jù)狀態(tài)給文件加上標(biāo)簽,然后基于狀態(tài)的值進(jìn)行導(dǎo)出。它們同樣也可以根據(jù)修訂版本號(hào),日期和作者進(jìn)行導(dǎo)出操作。庫總是和文件所在的目錄相關(guān)聯(lián)??偠灾瑤觳蹲脚渲霉芾硇畔⒉巡煌姹镜奈募鎯?chǔ)為不可修改的對象。 3.2.2 分布式組件Sherpa設(shè)計(jì)管理系統(tǒng)(The Sherpa Design System(DMS))[7]提供一個(gè)文件庫,其中的文件分散分布在不同的硬件平臺(tái)上。在邏輯上,庫是集中控制的,但在物理上,庫中的數(shù)據(jù)是分布的。Sherpa 設(shè)計(jì)管理系統(tǒng)自己知道數(shù)據(jù)的分散分布,并把這個(gè)因素考慮到配置管理系統(tǒng)中去,例如,在提供必要的文件格式轉(zhuǎn)換時(shí)提供一定的容錯(cuò)能力。這樣,對于用戶來說,數(shù)據(jù)的分布是透明的——用戶對庫進(jìn)行的任何工作感覺上和所有文件放在自己的本地工作站上一樣。一組地理上分散分布的用戶可以針對同樣配置的文件一起工作。多個(gè)文件的副本可以在不同的工作站上存在。Sherpa設(shè)計(jì)管理系統(tǒng)總是知道最新文件版本的位置。任何對從庫中所導(dǎo)出文件的更改會(huì)導(dǎo)致所有分散的本地工作站上的副本更新,因?yàn)橄到y(tǒng)知道所有本地副本放置的位置。更新可以是一步一步交互式樣地發(fā)生,也可以是批處理式地完成。有效的,分散分布的用戶能夠直接訪問集中控制的庫。對他們來說,配置管理能力看起來遍布整個(gè)異構(gòu)網(wǎng)絡(luò)。 3.3 過程的概念處理與過程相關(guān)的功能的概念有以下幾個(gè):上下文管理,約定,變更請求和生命周期模型。以下是詳細(xì)描述。 3.3.1 環(huán)境管理PowerFrame[13]是專為計(jì)算機(jī)輔助工程/設(shè)計(jì)領(lǐng)域而設(shè)計(jì)的系統(tǒng)。對于用戶,它實(shí)際上是把文件系統(tǒng)和配置管理底層的細(xì)節(jié)屏蔽起來。用戶只能夠看見和他們特定工作領(lǐng)域相關(guān)的,一個(gè)電路設(shè)計(jì)的世界,而PowerFrame管理工作中的上下文。項(xiàng)目的數(shù)據(jù)不是隱藏在目錄里而是顯式地用圖形表示出來。貫穿整個(gè)工作過程的始終,PowerFrame提供工作流管理,來引導(dǎo)團(tuán)隊(duì)的成員。例如:工具—運(yùn)行可能涉及電路的生成,置電路有效,然后通過進(jìn)行仿真來決定他們的性能特點(diǎn)。在這一串的動(dòng)作中,PowerFrame自動(dòng)根據(jù)工具—運(yùn)行提取相關(guān)的上下文,諸如數(shù)據(jù)集,命令文件和激活工具的選項(xiàng)等等。 等下一次,用戶僅僅需要選擇電路設(shè)計(jì)和工具功能就能開展工作。用戶所看到的是:針對特定任務(wù)的合適的工具,特定的數(shù)據(jù)表示表格:如邏輯圖和布局設(shè)計(jì);與特定任務(wù)相關(guān)的數(shù)據(jù);和特定工作領(lǐng)域相關(guān)的命令表。用戶可以在不同的尺度上執(zhí)行不同的動(dòng)作:如上下文數(shù)據(jù)中一個(gè)簡單的數(shù)據(jù)項(xiàng)或者到整個(gè)配置管理。用戶不必去操心象版本控制或文件之間的關(guān)系等這些任務(wù),因?yàn)樵谄聊槐澈?,系統(tǒng)知道如何從不同版本的電路設(shè)計(jì)提取數(shù)據(jù),系統(tǒng)完成了這些任務(wù)。從效果上來看,配置管理系統(tǒng)針對特定工作領(lǐng)域捕捉用戶工作的上下文,通過這樣的方式減少了用戶的工作,如記住如何到達(dá)某個(gè)具體工作狀態(tài),所有的數(shù)據(jù)項(xiàng)和它們的關(guān)系是什么等。 3.3.2 約定ISTAR[9]環(huán)境根據(jù)正式的約定提供對部分軟件開發(fā)過程的建模。所謂約定是指指定輸入和輸出條件下任務(wù)的執(zhí)行。約定的產(chǎn)物被記錄下來作為配置項(xiàng)。一個(gè)約定把信息流,包括從任務(wù)的開始到完成,任務(wù)之間結(jié)果的傳遞和產(chǎn)品中組件的傳遞,進(jìn)行建模。并且,約定之間也是可交換的。怎樣來滿足約定呢?約定的滿足是根據(jù)一定的接受標(biāo)準(zhǔn),把輸出傳遞給過程模型中的特定的元素,如生命周期的不同階段,或人等。約定的產(chǎn)物活動(dòng)被隨后記載下來。因?yàn)椴煌募s定產(chǎn)物(如通信)會(huì)被記載下來,所以約定中的工作過程是被監(jiān)視的。從效果來看,約定表示一個(gè)工作團(tuán)隊(duì)在一個(gè)配置項(xiàng)下的正式計(jì)劃和記錄。 3.3.3 需求變更在LIFESPAN中,軟件需求變更表現(xiàn)在文檔的需求變更和相關(guān)過程模型的變更。LIFESPAN通過一系列的表單來實(shí)現(xiàn)需求變更的建模,在通過一系列狀態(tài),任務(wù)和角色來實(shí)現(xiàn)過程的變更??蛻艨梢蕴峤挥脕泶_認(rèn)錯(cuò)誤或請求為組件版本升級的在線軟件性能報(bào)告。這就允許此報(bào)告能被反饋給那些可以診斷出此問題的原始設(shè)計(jì)和編程人員來研究。對于軟件性能報(bào)告和改變沖突分析的反應(yīng),一個(gè)在線的設(shè)計(jì)變更被提交表決。確切的說這就詳細(xì)到什么組件被改變和怎樣改變的問題。LIFESPAN分析了誰將會(huì)被此變化影響。然后那些人就會(huì)被自動(dòng)的選出組成控制變更委員會(huì)。關(guān)于設(shè)計(jì)變更的報(bào)告將會(huì)通過電子郵件來通知他們,不管他們是否同意這些變更,都必須在一定的時(shí)間內(nèi)對此做出表決。一旦設(shè)計(jì)變更被通過,一種可變更的代碼的新開發(fā)版本就產(chǎn)生了。則設(shè)計(jì)變更就此開始使用而那種代碼的變更就被鎖定。在變更完成后,新的版本形成了,需要被提交給具有QA特權(quán)的人來檢測并批準(zhǔn)。經(jīng)過批準(zhǔn)后代碼變更就需要一種確認(rèn)狀態(tài),設(shè)計(jì)變更的狀態(tài)也變?yōu)榇_認(rèn)的,有關(guān)的用戶就被通過電子郵件來通知一種新的版本可以使用了。用戶收到軟件狀態(tài)報(bào)告表,這就取消了原始的軟件性能報(bào)告。因此,軟件性能報(bào)告,設(shè)計(jì)變更和軟件狀態(tài)報(bào)告不僅為用戶和維護(hù)人員提供了一種交流的方式,而且體現(xiàn)了這種特殊變更需求的歷史變更;在過程中變更的狀態(tài)報(bào)告;變更完成的最終審計(jì)結(jié)果;改變沖突分析的機(jī)制和確保相關(guān)人員按時(shí)完成任務(wù)。結(jié)果需求變更就促成了那種變更的過程。 3.3.4 生命周期模型變更和配置控制提供了對一種特殊的生命周期模型的理解,此模型在某種程度上支持一個(gè)生命周期中的各階段及人員之間的轉(zhuǎn)變,而那些任務(wù)和數(shù)據(jù)管理能在那些階段被執(zhí)行。他通過把這些階段分為對產(chǎn)品的開發(fā),測試,鑒定和推出來實(shí)現(xiàn)。這種劃分允許象軟件工程師和測試員這樣不同種類的使用者能夠在同樣的代碼下同步的實(shí)行他們的工作。階段和獨(dú)立工作的劃分及其間的轉(zhuǎn)變通過貫穿于代表每一階段的獨(dú)立配置的代碼來實(shí)現(xiàn)。就是說,產(chǎn)品作為一系列的基線被開發(fā)。每一基線存在四種配置:開發(fā),測試,鑒定和生產(chǎn)。配置是組件的一個(gè)層次。每一基線包括一種特殊的方法。代碼的開發(fā)就是開發(fā)配置,通過反復(fù)對配置進(jìn)行的測試,然后確認(rèn)配置,最后生產(chǎn)顧客使用的配置產(chǎn)品。為了順利到達(dá)下一階段,交互作用的草案必須要被不同的用戶(例如項(xiàng)目經(jīng)理和測試經(jīng)理)批準(zhǔn)這一轉(zhuǎn)變。任何時(shí)候,對于一組件所通過的標(biāo)準(zhǔn)是由他所屬的配置體現(xiàn)的。結(jié)果,生命周期模型經(jīng)過不同的配置狀態(tài)被實(shí)現(xiàn)。 3.4 結(jié)構(gòu)和解釋的概念所要了解的概念是:選擇一種結(jié)構(gòu)的組件;獲得一組件和其結(jié)構(gòu)的變更;描述一產(chǎn)品的結(jié)構(gòu);存取這種結(jié)構(gòu);構(gòu)造這種產(chǎn)品以及保持這種結(jié)構(gòu)的各個(gè)部件的一致性稱之為變化集,系統(tǒng)建模,子系統(tǒng),對象池,屬性和一致性維修。見下述。 3.4.1 修改集合ADC把在數(shù)據(jù)庫中的一個(gè)基本概念 — 各部件之間的版本的不同 — 抽象成一種不同的關(guān)系,這種關(guān)系對于用戶是可以訪問的。這樣不同的關(guān)系伴隨著與之相匹配的文件以及其它變化的細(xì)節(jié)組成了變化集。ADC把變化構(gòu)造成變化集中的配置,變化集可用來構(gòu)造某種配置的定制外形。這種變化集有一個(gè)名字,這意味著它可用在操作中,用戶制定一個(gè)公式來創(chuàng)建某個(gè)配置的特殊實(shí)例。這個(gè)公式指定一個(gè)被選中的變化集都適應(yīng)的基本線。一個(gè)變化集可視為與以前的變化集是相聯(lián)系的(即版本的歷史的延續(xù))或是相互獨(dú)立的(即歷史版本的可選部分被應(yīng)用),特別是變化集。 因此,用戶要么從最延版本中工作,要么在一種配置定制版本下工作。由于某些變化以及誰,何時(shí)引起的這些變化等細(xì)節(jié),這個(gè)變化集可以捕獲對在某個(gè)配置中所有文件的變化。用戶指定這種變化的范圍,ADC自動(dòng)的紀(jì)錄這些變化的細(xì)節(jié)。例如,由于一個(gè)錯(cuò)誤用戶想使主要變化適合某種配置。用戶指出一個(gè)變化集,對這些文件做出許多變化。在這個(gè)變化集中被捕獲的:由于對在配置中所有文件做出的變化所有原代碼都得改變(在這個(gè)配置中對每個(gè)文件來說是不同的);所有有關(guān)文件的改變;以及誰,何時(shí)做出的改變。當(dāng)用戶瀏覽每個(gè)文件或變化集時(shí)可以看見很多信息??傊?,變化集表示對某種產(chǎn)品和創(chuàng)建一個(gè)配置的各種版本方式的邏輯變化。此配置不必依賴于本配置的最新版本信息。 3.4.2 系統(tǒng)模型系統(tǒng)建模用來描述軟件產(chǎn)品—軟件產(chǎn)品的結(jié)構(gòu)﹑組件和如何組建它。Jasmine系統(tǒng)建模就是用戶能變更的文本描述以及一些工具可以用這些描述來存取完成他們的任務(wù)。Jasmine系統(tǒng)建模是由體現(xiàn)以下四類信息的集和函數(shù)來描述的:(1)組件產(chǎn)品的關(guān)系,(2)綁定的信息版本,(3)構(gòu)造規(guī)則,(4)驗(yàn)證規(guī)則。關(guān)系描述為象子組件等級的產(chǎn)品模塊的分解,產(chǎn)品的獨(dú)立性(比如模塊組建的順序)和基于屬性的組件組(比如各種資源和對象模塊的分組)。通過關(guān)系描述的產(chǎn)品稱之為模板且獲得它的結(jié)構(gòu)。通過這些函數(shù)操作和關(guān)系用戶可以使用簡單關(guān)系定義復(fù)雜關(guān)系。這就能使Jasmine工具來解決用戶定義的查詢,比如:通過改變一個(gè)特定的組件來影響那個(gè)組件。系統(tǒng)建模包括進(jìn)一步了解該產(chǎn)品系列的歷史。此系列產(chǎn)品描述了該產(chǎn)品的后續(xù)版本。某種產(chǎn)品的用戶指定的版本構(gòu)成了一個(gè)產(chǎn)品系列。和每一版本關(guān)聯(lián)的是創(chuàng)建日期﹑作者等屬性。構(gòu)造規(guī)則記錄了現(xiàn)有的組件是如何生成的和將來的組件是如何構(gòu)造的。比如記錄編譯器﹑版本和所需的編譯選項(xiàng) 。驗(yàn)證規(guī)則指定合和記錄對產(chǎn)品的結(jié)構(gòu)和組織的限制比如資源和綁定模塊必須匹配(意思是所有的綁定模塊都是由那些資源模塊編譯而成的)為了選擇一種組件版本,用于系列的選擇方式是避免使用體現(xiàn)查找模塊路徑的內(nèi)容來評估的。被選定的結(jié)果模塊易把圖像的數(shù)據(jù)對象當(dāng)作一種模塊。象瀏覽器﹑模塊查看器﹑調(diào)試器和模塊間的分析器等工具能引用和處理系統(tǒng)建模。最終,系統(tǒng)建模是來自于實(shí)例產(chǎn)品的抽象,為了全面描述產(chǎn)品,系統(tǒng)建模用工具來維護(hù)產(chǎn)品的完整性。 3.4.3 子系統(tǒng)Rational環(huán)境提供了把一個(gè)很大的Ada產(chǎn)品分成多個(gè)小模塊以及限制變更影響范圍的功能。這些小模塊被稱為子系統(tǒng),子系統(tǒng)包括接口說明書和實(shí)現(xiàn)主體并指出配置項(xiàng)目,因此,他們可被看為一個(gè)整體并通過他們的名稱被評價(jià)。在一個(gè)子系統(tǒng)內(nèi)的組件不可被其他子系統(tǒng)內(nèi)的組件所訪問除非為了被輸出而通過接口說明書將這些組件指明。Rational環(huán)境檢查實(shí)現(xiàn)主體完全匹配上接口說明書所需的運(yùn)行時(shí)間。結(jié)果是,工作可以在實(shí)現(xiàn)主體上展開而獨(dú)立于當(dāng)用戶想用時(shí)就可以被改變的接口說明書,到接口被改變時(shí)僅針對那個(gè)子系統(tǒng)中的組件會(huì)發(fā)生二次編譯。這時(shí)使用了這個(gè)接口產(chǎn)品的任何模塊都將進(jìn)行二次編譯。對一個(gè)接口說明書所作的更改可能需要整個(gè)產(chǎn)品進(jìn)行二次編譯。子系統(tǒng)對其組件進(jìn)行了版本控制,子系統(tǒng)本身可以是一個(gè)特定版本。用戶可以用過組合匹配系統(tǒng)的版本來形成該品的一個(gè)特殊產(chǎn)品。概括的說,子系統(tǒng)為用戶指示了一種方法,它限制了變化和二次編譯所帶來的影響,并提供了檢查一個(gè)產(chǎn)品的各組成部分的有效性的環(huán)境。 3.4.4 對象池運(yùn)用系統(tǒng)建模的概念,DSEE已擁有一切必須的信息,此信息能夠確認(rèn)產(chǎn)生一個(gè)生成對象的特殊版本需要些什么。生成的對象被放置在用戶們共享的對象池中。一旦用戶暗示了對對象屬性的需求DSEE就能夠共享。被產(chǎn)生的對象池包括一個(gè)由轉(zhuǎn)換工具生成的二進(jìn)制代碼和其它對象組成的集合。每一個(gè)被產(chǎn)生的對象和其所有的信息有聯(lián)系,而這些信息是關(guān)于其包括原始版本的系統(tǒng)建模和與轉(zhuǎn)換項(xiàng)一起使用的轉(zhuǎn)換工具,被包括的用戶注釋的出處﹑日期﹑時(shí)間﹑人員和引出的位置.這個(gè)信息被認(rèn)為是一個(gè)BCT.當(dāng)DSEE構(gòu)建一個(gè)系統(tǒng)時(shí),會(huì)為系統(tǒng)中每一個(gè)組件計(jì)算需要得到的BCT數(shù)。DSEE在對象池中查找來看生成的對象和所需的一個(gè)已存在的對象是否匹配。如果匹配,它就被用;如果不匹配,它被構(gòu)建。因此,任何時(shí)候一個(gè)用戶需要一個(gè)特殊的生成對象時(shí)(或是一個(gè)一致的對象)。DSEE能夠從對象池中再使用從而消除了生成這個(gè)對象的需要。用戶不需要知道生成現(xiàn)存對象要做的;DSEE作了全部的檢測。一旦池中的對象成為死亡的(基于一階段無作用)DSEE能夠刪除他們,從而釋放空間。這就節(jié)省了大量的編譯時(shí)所需的時(shí)間和空間,再使用的工作已經(jīng)在進(jìn)行。DSEE也提供了各種不同的對象池,例如從源文件中得到的對象仍是對提供給特殊用戶的庫的檢測。結(jié)果,CM系統(tǒng)使再生成組件的需求最佳化且最大數(shù)量的分享生成對象。 3.4.5 屬性Adele系統(tǒng)通過用一個(gè)有數(shù)據(jù)建模能力的關(guān)系數(shù)據(jù)庫實(shí)體來普及庫和系統(tǒng)的建模。產(chǎn)品在一個(gè)數(shù)據(jù)模型方面被描述,Adele基于那個(gè)模型進(jìn)行它的運(yùn)算。產(chǎn)品的組件被描繪為擁有屬性和關(guān)系的數(shù)據(jù)庫對象。屬性和每一對象及那個(gè)對象的特性相關(guān)。屬性有一個(gè)名字和一個(gè)值。一個(gè)例子是名為delta的用于描繪對象是否存在于ASCΠ表中從而能夠被理解的屬性;它可以有一個(gè)為真或?yàn)榧俚闹?。有兩種屬性被區(qū)別:預(yù)先確定和用戶確定。前者被Adele管理而后者被用戶定義和聲明。一個(gè)預(yù)先確定,特殊的屬性是“類型“。這個(gè)命令屬性是強(qiáng)制的且對每一對象都是不可變的。它在Adele中表現(xiàn)為主要的的CM實(shí)體(例如對象的組成,文獻(xiàn),修改和元素)。關(guān)系在對象間獨(dú)立定義,例如對象B源自對象A。用戶能夠按照對象的特性而不是按照一系列對象的特殊版本來描述一個(gè)配置。Adele例示和構(gòu)建一個(gè)配置用來選取規(guī)則和強(qiáng)制圍繞屬性和關(guān)系為中心。用戶能夠按照所需特性對一產(chǎn)品定義任何結(jié)構(gòu)。從而用戶能在一經(jīng)由其特性的抽象的高水平描述一產(chǎn)品,其優(yōu)于按照冗長的文件列表的組成來描述。 3.4.6 一致性維護(hù)CMA提供了配置的釋義和確認(rèn),其是基于一個(gè)對于產(chǎn)品的抽象描述也是基于有關(guān)形成配置的組件的使用用法成功或不成功的信息。數(shù)據(jù)建模便利的包括預(yù)先確定用戶所描述的配置的屬性和關(guān)系?;谀切傩院完P(guān)系的語義,CMA能夠決定一配置(就是一系列組件的實(shí)例)是否是可用的。成為可用的,一配置必須是完全的,無歧義的,一致的和沒有歪斜的版本。這意味著一個(gè)配置必須有全部組件所需的實(shí)例組成且不必包括多重的一個(gè)組件的實(shí)例。屬性的等級描述了象約束,類型和版本這樣的用戶定義的特性。關(guān)系的等級表現(xiàn)了各種依賴性,例如,合理性,兼容性,構(gòu)成,實(shí)例和可繼承的獨(dú)立性。每次一個(gè)新的配置被組建,CMA就利用經(jīng)由先前對形成配置的組件的使用在數(shù)據(jù)庫中積累的信息。這樣,CMA預(yù)見配置是否可用。這種新的配置為了將來分析可用性而加入數(shù)據(jù)庫。從而,用戶能夠依靠系統(tǒng)來識(shí)別任何不一致以及在構(gòu)建和重復(fù)使用用配置時(shí)保護(hù)此不一致。 3.5 團(tuán)隊(duì)概念描述工作在一個(gè)工程項(xiàng)目上的軟件工程團(tuán)隊(duì)間的獨(dú)立、合作、同步的術(shù)語是工作區(qū),透明檢查和協(xié)調(diào)。描述如下: 3.5.1 工作空間工作空間為開發(fā)人員提供獨(dú)立的工作空間。 在“形狀”中的工作空間是被設(shè)計(jì)用來防止用戶之間的相互干擾。它提供了在配置管理下的能在可調(diào)對象上持續(xù)的工作空間。工作空間是通過版本狀態(tài)模型來獲得的。這就意味著屬性“狀態(tài)”是和構(gòu)件的版本相連系的。依靠那種狀態(tài)(例如狀態(tài)“忙”或“凍結(jié)”),構(gòu)件或者被認(rèn)為是一個(gè)私有的工作區(qū)或者被認(rèn)為是一個(gè)公有的庫。“忙”構(gòu)件是可調(diào)的并且不能被其他人所使用,象“凍結(jié)”就是一個(gè)對公共使用來說能獲得的但不可調(diào)的例子。構(gòu)件被提交給公共庫的同時(shí)使得它們在被適當(dāng)?shù)挠脩糇C明后,對公共用途來說是可獲得的。在效力上,工作區(qū)提供工作的獨(dú)立性且建立在一個(gè)全局的、長期的為不可調(diào)對象的庫和一個(gè)為可調(diào)對象且私有的短期的庫之間的區(qū)別。 3.5.2 透明視圖透明視圖提供從主配置庫到工作區(qū)的訪問機(jī)制,該機(jī)制具有防止非法存取的功能。 軟件管理系統(tǒng)通過使工作區(qū)成為一個(gè)透明(清晰)的對象和提供在那個(gè)工作區(qū)的庫的透明檢查來增強(qiáng)了工作區(qū)的術(shù)語。這就意味著僅僅用戶感興趣的文件版本能在工作區(qū)中看到,所有其他的版本都不可見(盡管它們在物理上是存在的)。例如,任何對最新公有版本的變化都不需在工作區(qū)里顯示出來,用戶從公有變化中分離出來,并且工作區(qū)提供給用戶一個(gè)特定庫的外表。相關(guān)工作區(qū)版本計(jì)數(shù)的版本控制提供在工作區(qū)中。新版本是私有的并且在從工作區(qū)中釋放出來之前是不可能被公共用戶所見的。一個(gè)配置從公有庫中檢測出來提供給工作區(qū)。用戶訪問分配給自己的工作區(qū)。工作區(qū)里的組件有效地屬于那個(gè)工作區(qū)而非一個(gè)用戶。僅僅在那個(gè)工作區(qū)已登記的用戶才能改變配置,且僅有那個(gè)工作區(qū)的構(gòu)件能被訪問??偟膩碚f透明檢查通過防止對一個(gè)配置的非授權(quán)訪問而提供了一個(gè)檢查機(jī)制。 3.5.3 協(xié)調(diào)控制協(xié)調(diào)控制協(xié)調(diào)開發(fā)組成員對同一配置項(xiàng)的修改。 網(wǎng)絡(luò)軟件環(huán)境(NSE)[12]協(xié)調(diào)控制代表了一個(gè)工作協(xié)調(diào)單元。它反應(yīng)了工程的結(jié)構(gòu)并且支持工作的獨(dú)立性、用戶間的相互影響和合并變化。一個(gè)協(xié)調(diào)包含一個(gè)環(huán)境和一系列命令。環(huán)境提供了類似于工作區(qū)和透明檢查的術(shù)語。它顯示了用來存儲(chǔ)資源和派生對象的目錄結(jié)構(gòu)。那些命令,例如“獲得”、“退后”、“重新同步”和“解決”,在不同環(huán)境中提供相互活動(dòng)。它們代表了用來協(xié)調(diào)和同步用戶間活動(dòng)的協(xié)議,也代表了實(shí)際變化的通信。用戶獨(dú)立地工作在他們自己的環(huán)境里,改變相同的或不同的配置。用戶用配置的新版本來更新庫。網(wǎng)絡(luò)軟件環(huán)境支持將變化合并到庫里。但是它檢查什么已存在于庫里(可能被其他用戶放置在那兒)而且不和正在進(jìn)行的變化產(chǎn)生沖突。假如有沖突,網(wǎng)絡(luò)軟件環(huán)境提示用戶注意合并問題,同時(shí)提供減少?zèng)_突的幫助。對于任何庫的變化,用戶能請求進(jìn)入他們自己的工作區(qū)??偠灾瑓f(xié)調(diào)同步和協(xié)作團(tuán)隊(duì)們改變工程產(chǎn)品的相同或不同部份。 3.6 光譜摘要和分析圖2代表了一個(gè)不同配置管理系統(tǒng)的配置管理術(shù)語光譜。這些術(shù)語和它們的目標(biāo)是:捕獲不可調(diào)文件歷史的庫;在配置管理下數(shù)據(jù)分布的已分布構(gòu)件;一個(gè)工作單元計(jì)劃的合同;一套捕獲配置變化和允許最新版本獨(dú)立配置選項(xiàng);增強(qiáng)一個(gè)組織軟件進(jìn)化過程變化的生命周期模型;完整地描述和記錄結(jié)構(gòu)和建立工程的系統(tǒng)建模;使得重使用的派生對象的對象池能優(yōu)化產(chǎn)品構(gòu)建;允許基于特性的配置選擇屬性而非一長串文件列表;支持持續(xù)的自動(dòng)檢查和配置組件之間非持續(xù)的預(yù)測;分離可調(diào)配置的私有變化工作區(qū);一個(gè)查看配置和防止非授權(quán)訪問的可調(diào)配置的透明檢查;一個(gè)協(xié)調(diào)配置變化的團(tuán)隊(duì)協(xié)調(diào)。這些術(shù)語代表了配置管理系統(tǒng)功能方面的先進(jìn)性。 光譜拓樸的目的是顯示一個(gè)術(shù)語的進(jìn)化過程。例如,圖2從左到右總的來說有不同過程的建模、捕獲組件、描述產(chǎn)品的構(gòu)件,優(yōu)化產(chǎn)品工程。特定構(gòu)件間相互關(guān)聯(lián)的協(xié)調(diào)團(tuán)隊(duì)工作。光譜的“臂”顯示了相關(guān)過程。例如,需求變化和生命周期模型(如本書描述的一樣)是相關(guān)聯(lián)的:生命周期模型小計(jì)了一個(gè)特定變化需求模型,同時(shí)變化需求操作了一個(gè)庫。 有一些術(shù)語在光譜上沒有顯示。那些不能顯示的術(shù)語如:構(gòu)件的細(xì)微進(jìn)化(例如從版本標(biāo)識(shí)到配置標(biāo)識(shí)到不同配置的不同版本);系統(tǒng)建模過程(例如從命令文件的進(jìn)化到創(chuàng)造文件到系統(tǒng)模型如版本對象);“角色”的識(shí)別和不同類型的變化(例如增強(qiáng)反病毒功能,病毒出現(xiàn)提示);目前的研究工作。 在本書上簡化了從配置管理系統(tǒng)是提煉出來的術(shù)語。相對于已實(shí)施的系統(tǒng)來說是為了找到一些共同的術(shù)語。沒有共同的詞匯來表達(dá)術(shù)語。術(shù)語和它們的實(shí)施之間的區(qū)別并不總是清晰的。例如,工作區(qū)的實(shí)施在不同配置管理系統(tǒng)中變化,同時(shí)為用戶提供不同的功能。此外,工作區(qū)的術(shù)語應(yīng)該是所有實(shí)施的最低共同命名或相反?既然協(xié)調(diào)統(tǒng)計(jì)了工作區(qū)和檢查的術(shù)語,那么工作區(qū)、透明檢查、協(xié)調(diào)又真的是同一術(shù)語嗎?或者它們真的如在光譜上顯示的一樣是三個(gè)術(shù)語嗎? 另外一個(gè)在提煉術(shù)語時(shí)的難點(diǎn)是大多數(shù)配置管理系統(tǒng)都有過多的術(shù)語。那就是一個(gè)術(shù)語有許多目的(這些目的在配置管理系統(tǒng)中通常是不統(tǒng)一的)。例如,Rational子系統(tǒng)術(shù)語在光譜中被看作為限制變化范圍而提供支持。然而,子系統(tǒng)比那個(gè)術(shù)語提供了更多的功能。它們能:提供一個(gè)名字范圍邊界,支持系統(tǒng)分區(qū),代表一個(gè)基線,一個(gè)工作區(qū),代表一個(gè)意思(為工作在不同的配置或一個(gè)團(tuán)隊(duì)的同一配置)。檢查接口提供的細(xì)微變化或代表一個(gè)不可調(diào)的可執(zhí)行的組件(在Rational術(shù)語中的一個(gè)“裝載檢查”)。因此,為了討論子系統(tǒng),在其一個(gè)特定方面的磨合是必要的。此外,過多的術(shù)語使得提煉基本的術(shù)語變得困難。同樣,組合不同術(shù)語的不同部份,或一個(gè)特定術(shù)語的實(shí)施副影響都使得術(shù)語的提煉更加困難。例如,當(dāng)考慮一個(gè)變化需求時(shí),角色(象配置經(jīng)理和測試經(jīng)理)和生命周期術(shù)語(如開發(fā)和測試)對那個(gè)術(shù)語是至關(guān)重要的,或者它們是獨(dú)立的? 無論如何,這些術(shù)語的光譜為開發(fā)提供了一個(gè)起始點(diǎn),或者至少從已存在的配置管理系統(tǒng)中提煉出一個(gè)配置管理模型——一組基本的配置管理服務(wù)。此外,需要進(jìn)一步的工作來決定:光譜的使用價(jià)值,是否還有其它的術(shù)語,怎樣定義、命名和表達(dá)這些術(shù)語以及它們的多種語義,并且怎樣將這些術(shù)語組合成一套有用的配置管理系統(tǒng)。 4 配置管理系統(tǒng)的未來圖2所示配置管理概念光譜圖表示了商用配置管理系統(tǒng)的典型概念。我們預(yù)計(jì),隨著研究的繼續(xù),和不斷從這些概念的結(jié)合使用中獲取經(jīng)驗(yàn),光譜圖上的許多分支將會(huì)互相連接。這意味著,每個(gè)配置管理系統(tǒng)最終都可能將提供一個(gè)基本的配置管理服務(wù)集,從而更好地適應(yīng)用戶需求。但是,即使不考慮是否每個(gè)配置管理系統(tǒng)設(shè)計(jì)者都試圖實(shí)現(xiàn)這些共同的特征,還有政治和技術(shù)方面的因素都會(huì)影響未來的軟件配置管理系統(tǒng)。(政治層面的因素是指與市場和標(biāo)準(zhǔn)化相關(guān),技術(shù)因素則是關(guān)乎實(shí)現(xiàn)某一特定機(jī)制的可行性。) 一個(gè)主要的政治因素是關(guān)于CASE(計(jì)算機(jī)輔助軟件工程)工具的發(fā)展。例如:CASE工具經(jīng)銷商是否應(yīng)該假設(shè)環(huán)境經(jīng)銷商會(huì)在他們的框架內(nèi)提供配置管理支持,所以他們自己可以避免在他們的工具中實(shí)現(xiàn)配置管理?;蛘?,是否應(yīng)該由CASE工具開發(fā)商在他們的工具中提供配置管理支持。如果CASE經(jīng)銷商合并他們自己的配置管理支持,那么當(dāng)用戶安裝不同的CASE工具時(shí),用戶將不得不自己解決如何集成不同的CASE工具的問題。同樣,從經(jīng)銷商的視角看,他們會(huì)真正重復(fù)去做那些已經(jīng)被整個(gè)環(huán)境框架嘗試過的工作嗎?
另一方面,如果CASE經(jīng)銷商不把配置管理合并到他們的工具中去,他們能依賴環(huán)境集成商提供合適的環(huán)境框架,去集成CASE工具并同時(shí)提供某種通用的配置管理能力嗎?這些問題的答案都是未知的。我們都可以看到,任何一種情況都意味著,對于環(huán)境來說,配置管理系統(tǒng)需要一定的標(biāo)準(zhǔn)化。反之亦然。 許多技術(shù)、研究方面的問題都影響著配置管理系統(tǒng)的能力,冒出來了如下這些問題: 什么適當(dāng)?shù)募夹g(shù)可作為配置管理系統(tǒng)的基礎(chǔ)?對象命名約定不變的面向的對象數(shù)據(jù)庫技術(shù)是最合適的嗎?在環(huán)境體系結(jié)構(gòu)中軟件配置管理是在哪一層?它是否應(yīng)該作為環(huán)境框架中一部分,放在數(shù)據(jù)庫的基礎(chǔ)層,還是把配置管理看作一個(gè)過程,處于體系結(jié)構(gòu)的較高層?配置管理的機(jī)制能否從所有的配置管理功能中分離出來?也就是說,是否有一個(gè)標(biāo)準(zhǔn)的配置管理本質(zhì)部分,能夠在任何環(huán)境中使用,并支持所有的配置管理功能。存在一個(gè)統(tǒng)一的配置管理模型嗎?是否可能提供分布式的配置管理支持?在地理上分散的軟件開發(fā)組能否與本地配置管理和系統(tǒng)集成使用同樣的配置管理系統(tǒng)。這是工業(yè)界的一個(gè)主要難題,尤其是對于國防合同承包商來說。配置管理支持跨軟件開發(fā)嗎?工程師是否能夠在主機(jī)上開發(fā)產(chǎn)品,然后在保持對產(chǎn)品的配置管理控制的同時(shí)輕易地將它轉(zhuǎn)移到目標(biāo)機(jī)上去嗎?規(guī)模是配置管理系統(tǒng)的一個(gè)限制性因素嗎?配置管理對一百萬線產(chǎn)品的支持和對一兆線產(chǎn)品的支持是一樣的嗎?有可能將配置管理過程中,包括勞力密集型的部分,所有方面都建模,并在配置管理系統(tǒng)中實(shí)現(xiàn)它嗎? 對以上這些問題的回答都不是顯而易見的。因?yàn)楹芸赡芤芾淼倪^程有著不同的來源,從配置管理系統(tǒng)經(jīng)銷商,開發(fā)環(huán)境集成商,研究人員,工具繼承商,軟件過程建模論壇,還有計(jì)算機(jī)輔助設(shè)計(jì),計(jì)算機(jī)輔助工程,計(jì)算機(jī)集成制造等不同的領(lǐng)域。 5 結(jié)論配置管理是對軟件產(chǎn)品發(fā)展演化進(jìn)行的管理。從配置管理系統(tǒng)的操作層面上看,配置管理是認(rèn)證,控制,狀態(tài)統(tǒng)計(jì),審計(jì),評估,制造,過程管理和團(tuán)組合作。它是軟件工程領(lǐng)域的一部分。它的工作對象是這個(gè)領(lǐng)域中產(chǎn)生的過程。這從概念光譜圖可以明顯地看出來,同樣也可以從已有的配置管理系統(tǒng)的數(shù)量和它們的能力看出來。本文的光譜圖表示的是許多不同的配置管理系統(tǒng)經(jīng)已實(shí)現(xiàn)的概念的一個(gè)快照。每個(gè)存在的系統(tǒng)的重點(diǎn)都不同,在用戶問題——包括角色,集成,控制,自動(dòng)化層,過程等等,與產(chǎn)品支持,什么時(shí)候是開始使用配置管理的最佳時(shí)機(jī),系統(tǒng)能提供哪些功能等之間進(jìn)行競爭和權(quán)衡。希望提供這個(gè)光譜圖能夠有助于對配置管理系統(tǒng)能力的理解,并且提供一個(gè)討論配置管理支持工具的通用框架。 6 附錄:CM體系總覽這個(gè)附錄給出了此份論文中前面章節(jié)提到的不同CM體系能力的總體印象。既不是整個(gè)體系的評估也不是完整描述,目的只是讓讀者對下列CM體系能力范圍有一個(gè)了解,這些是存在于今天的不同種類的CM體系的代表:Adele, ADC, CCC, CMA, DMS, DSEE, ISTAR, Jasmine, LifeSPAN, NSE, PowerFrame, Rational, RCS, “shape”, SMS。這些體系在下面描述。 6.1 AdeleAdele是一個(gè)來自于格勒諾布爾大學(xué)的配置管理體系。它的基本特征是數(shù)據(jù)模型,屆面檢查,展示產(chǎn)品系列,配置建立和工作現(xiàn)場控制。Adele是用來成為軟件工程環(huán)境的核心。Adele數(shù)據(jù)庫是一個(gè)實(shí)體關(guān)系,一個(gè)為物件提供定義,如界面和它們的實(shí)現(xiàn)(instances of bodies),配置和家族。物件有特性:描述它們的特點(diǎn),和DEP關(guān)系:描述它們的從屬關(guān)系,Adele用這些功能來幫助組成配置。使用者可以指定一種基于合意的特性的配置。特性可以用戶定義或體系定義。用戶可以指定規(guī)則基于特征價(jià)值,局限和優(yōu)先。Adele可以探測到不完整和不連續(xù)的配置描述。 6.2 Aide-De-Camp (ADC)ADC, 來源于Software Maintenance and Development Systems, Inc.,由基本的ADC體系和一個(gè)看守系統(tǒng)組成?;镜?/span>ADC提供了一個(gè)數(shù)據(jù)庫以獲取CM信息。用戶在文件內(nèi)定義特征和關(guān)系。數(shù)據(jù)庫可以貯存資源和二進(jìn)制碼,它貯存易變的(“塑料”)和不變的(“安裝的”)信息。ADC的列表處理語言有效地允許用戶在一個(gè)文件或一組文件上工作。ADC沖突解決方案在登陸(check-in)和標(biāo)記時(shí)執(zhí)行。改變設(shè)置俘獲改變了配置和允許用戶指定任何版本的通過一個(gè)改變設(shè)置清單從而創(chuàng)建它們自己的版本樹。報(bào)告可基于數(shù)據(jù)內(nèi)容而產(chǎn)生。程序建立得到支持,結(jié)構(gòu)的關(guān)系被自動(dòng)得到。一些非—ADC的CM信息可以輸入至ADC數(shù)據(jù)庫。監(jiān)管系統(tǒng)直接支持配置,集成問題報(bào)告,改變需求,和了解用戶,承擔(dān)分派工作指令和建立當(dāng)?shù)氐墓ぷ髡荆?#8220;干凈房間”)的角色。這意味著當(dāng)一個(gè)變化需求被送到CM經(jīng)理并得到認(rèn)可時(shí),經(jīng)理把工作分派給軟件工程師。當(dāng)工程師執(zhí)行那項(xiàng)活動(dòng)時(shí),一個(gè)被復(fù)制的本地的路徑和文件工作站建立了。一旦工程師完成那項(xiàng)工作,工作站自動(dòng)刪除,變化被加入數(shù)據(jù)庫。 6.3 Change and Configuration Control (CCC)Softool的CCC(稱為CCC/發(fā)展和維護(hù))被作為一個(gè)監(jiān)管系統(tǒng)或作為一個(gè)本地的產(chǎn)品出售。CCC提供一個(gè)變化控制方法論,配置標(biāo)識(shí)和狀態(tài)會(huì)計(jì),以及起源建筑。所有的這些被用來假定瀑布生命周期模型。CCC下的部件在適當(dāng)?shù)恼J(rèn)可之后,經(jīng)過了不同階段的生命周期。CCC支持一些文件化的標(biāo)準(zhǔn)。五個(gè)等級的客戶構(gòu)成權(quán)限的層次列入數(shù)據(jù)庫。他們是數(shù)據(jù)庫管理員,CM經(jīng)理,項(xiàng)目經(jīng)理,開發(fā)者,及測試經(jīng)理。一些層次的通道控制了存在,例如密碼控制,用戶等級,指定數(shù)據(jù)或改變需求分配。CCC數(shù)據(jù)庫層次,代表產(chǎn)品的結(jié)構(gòu),由多層次數(shù)據(jù)結(jié)構(gòu)組成,包括數(shù)據(jù)庫,體系,配置,模塊和文本。編碼的平行版本可用于通過實(shí)質(zhì)拷貝實(shí)現(xiàn)同時(shí)發(fā)展。這些可以合并或選擇,變化可跨配置運(yùn)用。在合并中沖突可監(jiān)測到。CCC的變化需求,如項(xiàng)目,可以處理一個(gè)部件的小變化,或產(chǎn)品的下一次發(fā)布所需的所有變化。電子郵件事件通知與變化需求相關(guān)。緊急變化繞過大多數(shù)的變化控制是允許的。 6.4 Configuration Mnanagement Assistant (CMA)來自于TARTAN實(shí)驗(yàn)室的CMA提供mechanism(無方針)創(chuàng)建CM系統(tǒng)。Mechanism使用的是實(shí)體關(guān)系特性數(shù)據(jù)庫。特性和關(guān)系的等級詳細(xì)說明了部件的特征,一個(gè)產(chǎn)品的分解和部件之間的相互依賴。特性的等級是分割,演示,和版本;關(guān)系的等級是邏輯從屬,一致性,兼容性,部件,立即和可繼承的從屬性。CMA用來錄制和獲取配置描述,部件的組成,錄制和獲取關(guān)于一個(gè)配置的部件之間已知的(不)一致性和從屬性。它預(yù)告新形成的配置的完整性,不明確,和一致性。任何數(shù)據(jù)庫的變化是通過對簡單“交易”的承諾產(chǎn)生的。每種配置可以有它自己的通道控制mechanism。配置之間的名字沖突通過使用間隔來避免。 6.5 Design Management System (DMS)來自于SHERPA公司的DMS適用于電腦輔助設(shè)計(jì)/工程師市場和硬件的一部份,設(shè)計(jì)工程師環(huán)境。DMS提供邏輯的集中倉庫,內(nèi)含清晰的分布的數(shù)據(jù)。文檔可包含任何種類的信息,如ASCII,圖形,以及設(shè)計(jì)數(shù)據(jù)。文檔的版本通過當(dāng)?shù)夭僮飨到y(tǒng)的版本控制來實(shí)現(xiàn)。所有信息(產(chǎn)品結(jié)構(gòu),發(fā)布程序,事件警告,用戶定義特性和關(guān)系)被集中在一個(gè)核心的數(shù)據(jù)庫。“發(fā)布”的意見通過促銷水平(代表項(xiàng)目通過時(shí)的臺(tái)階)獲取。這些代表公司方針用于評審,確認(rèn)或完畢信號(hào)。用戶可以指定誰可以獲得什么樣的數(shù)據(jù),數(shù)據(jù)群,誰應(yīng)該被告知狀態(tài)變化,完畢信號(hào)及促銷需要什么樣的確認(rèn)和檢查。DMS通道控制是在用戶等級和promotion level of file的基礎(chǔ)上實(shí)現(xiàn)的,文檔名可以加密,實(shí)質(zhì)的團(tuán)隊(duì)可以定義(這些是地理上分散但分享同一數(shù)據(jù)庫的用戶)。可要求自動(dòng)同步更新或分批更新。變化可以在小組成員間得到交流溝通。不管在網(wǎng)絡(luò)的哪個(gè)地方,文檔的最新版本都可以定位。DMS用這個(gè)結(jié)構(gòu)來執(zhí)行檢查。并可提供報(bào)告及預(yù)評審。變化需求(包括相關(guān)文件)確認(rèn)后自動(dòng)隨附。 6.6 Domain Software Engineering Environment(DSEE)DSEE 提供版本控制、系統(tǒng)建模、配置發(fā)放、分散系統(tǒng)建立、物件組、用以查找要做的事務(wù)及已經(jīng)完成任務(wù)的任務(wù)單、將特殊事件通知用戶的控制。版本控制置于一資源文檔庫中。一DSEE系統(tǒng)模型是對一產(chǎn)品或產(chǎn)品一部分的描述。它是一針對靜態(tài)和結(jié)構(gòu)特點(diǎn)的公開描述,包括資源文檔、派生物件和從屬工具、組件的階層、創(chuàng)建規(guī)則、創(chuàng)建順序、數(shù)據(jù)庫及路徑的確定、轉(zhuǎn)換工具的選擇和一些控制過程規(guī)則。 6.7 ISTARISTAR來自于imperial software technology ltd. 是一個(gè)環(huán)境設(shè)計(jì)的特別用來支持項(xiàng)目管理的。軟件項(xiàng)目個(gè)體之間的關(guān)系被模仿為合同。一個(gè)合同理論上是對期望產(chǎn)品的描述,并被構(gòu)造成數(shù)據(jù)庫。一個(gè)配置是在合同之間移轉(zhuǎn)的單元,移轉(zhuǎn)時(shí)被認(rèn)為是“凍結(jié)的”。合同的移轉(zhuǎn)暗示了一定的任務(wù)或階段已完成。CM為合同數(shù)據(jù)庫內(nèi)的項(xiàng)目而存在,并在合同之間可交付。為數(shù)據(jù)庫內(nèi)的部件提供繼承者和不同的控制。用戶可以定義CM部件之間的關(guān)系,可以為問題報(bào)告分配部件。這是對系統(tǒng)建立的支持。 6.8 JASMINEJASMINE是應(yīng)用于室內(nèi)CM的XEROX信息系統(tǒng)分配上開發(fā)的大型程序設(shè)計(jì)系統(tǒng)。系統(tǒng)模型是其核心。它描述一個(gè)軟件系統(tǒng),這個(gè)軟件系統(tǒng)使用在設(shè)置和功能上構(gòu)建的代數(shù)模式。用戶能用這個(gè)代數(shù)模式來定義復(fù)雜的詢問和簡單的譯本。軟件結(jié)構(gòu)則被定義在模板中,翻譯捆綁體由圖象支持,后繼的翻譯記錄在一個(gè)族中,這個(gè)族支持并行開發(fā)。專業(yè)譯文被分類后組織成特殊歷史記錄(如:一個(gè)項(xiàng)目專業(yè)歷史記錄)正文內(nèi)容和這些族均被提供給譯本,同時(shí)定義它的語法結(jié)構(gòu)和連貫性。 JASMINE工具利用系統(tǒng)模型信息拷貝文件并存檔,編譯源代碼,瀏覽并釋放空間。 6.9 LIFESPAN生命期來自YARD軟件系統(tǒng),嚴(yán)格支持變化控制。它適用于項(xiàng)目經(jīng)理監(jiān)控各種變化的情形,只有經(jīng)過授權(quán)的用戶才能使用它。生命期使用相關(guān)的數(shù)據(jù)庫和詢問語言,存儲(chǔ)文字、二進(jìn)制代碼和圖表,并為這些項(xiàng)目提供版本控制。 目標(biāo)集BELONG TO。。。負(fù)責(zé)批準(zhǔn)對包進(jìn)行改動(dòng)的管理人員被指派此包。生命期使用制圖辦公模型,這些模型建立在硬件設(shè)計(jì)方法論的基礎(chǔ)上。它識(shí)別狀態(tài)量,偏移量,偏移觸發(fā)器,命令行和用戶權(quán)限。電子郵件提供自動(dòng)識(shí)別功能。報(bào)告建立在庫存項(xiàng)目基礎(chǔ)上,并可以進(jìn)行改動(dòng)。在安全方面,配置項(xiàng)目設(shè)有密碼和加密的文件名。它支持各種國際標(biāo)準(zhǔn)的問題的提出,跟蹤和正式改動(dòng)控制。 一般認(rèn)為測試信息也是一種配置項(xiàng),它依賴于其它項(xiàng)目。生命期監(jiān)控改動(dòng)的一致性標(biāo)準(zhǔn)過程。它決定什么系統(tǒng)使用回顧性模塊,標(biāo)識(shí)所有需要被納入回顧系統(tǒng)的開發(fā)人員并發(fā)布必要的控制文件。 改動(dòng)一經(jīng)批準(zhǔn),如何授權(quán)它并分配源代碼是一項(xiàng)管理策略。以上工作完成后,項(xiàng)目被從存儲(chǔ)區(qū)調(diào)出,模擬,以開發(fā)項(xiàng)的身份重新提交。此過程重復(fù)進(jìn)行。 6.10 Network Software Environment(NSE)由SUN軟件系統(tǒng)開發(fā)的NSE是管理操作系統(tǒng)目錄結(jié)構(gòu)并從源代碼獲取附加文件的一套應(yīng)用體,附帶一個(gè)數(shù)據(jù)庫。NSE為開發(fā)代碼的項(xiàng)目組提供工作空間。此工作空間通過一個(gè)合并并升級處于子空間和父空間之間的文件的協(xié)議來支持遞歸轉(zhuǎn)換。工作空間里的文件表示為一種結(jié)構(gòu)體,它代表對這種結(jié)構(gòu)體的多種版本,除了最后一種,其它的結(jié)構(gòu)體都是不可變的。同一個(gè)工作空間的不同用戶在此工作時(shí)都得經(jīng)過檢查并登記在文件中。合并交叉工作空間的沖突問題NSE提供了交互性支持。工作空間能夠高效地獲取目錄結(jié)構(gòu),這種目錄結(jié)構(gòu)用于存儲(chǔ)源代碼并從產(chǎn)品,已建成的結(jié)構(gòu)體和產(chǎn)品的邏輯結(jié)構(gòu)中衍生構(gòu)件。 6.11 PowerFramePowerframe這個(gè)工具來自EDA系統(tǒng),對計(jì)算機(jī)輔助設(shè)計(jì)工作提供配置管理。它用一種統(tǒng)一的圖解接口把用戶屏敝在操作系統(tǒng)和文件系統(tǒng)之外。操作時(shí),用戶拖出一個(gè)合適的工具菜單。POWERFRAME自動(dòng)檢索所有相關(guān)數(shù)據(jù),運(yùn)行這個(gè)工具,在用戶使用完畢時(shí)保存所有的改動(dòng)。POWERFRAME把在產(chǎn)品中數(shù)據(jù)的幾種組織方式合并起來以便用戶集中精力于那些僅適合于完成特定任務(wù)的數(shù)據(jù),工程,一個(gè)展望,一個(gè)見解和一個(gè)數(shù)據(jù)包。一項(xiàng)工程是一個(gè)數(shù)據(jù)的集合,這些數(shù)據(jù)構(gòu)成協(xié)作體的主題(如,一個(gè)包含了所有電流設(shè)計(jì)線路文件版本的產(chǎn)品)。一項(xiàng)展望是一套工作,專業(yè)工程師任何時(shí)間都可以使用這個(gè)裝置的文件版本。見解使用戶集中精力于設(shè)計(jì)的特定方向(如,那些僅與邏輯顯示和規(guī)劃布局有并的信息將被顯示),一個(gè)數(shù)據(jù)包是一個(gè)邏輯單元(如算術(shù)邏輯單元),這個(gè)邏輯單是正在設(shè)計(jì)的幾個(gè)組件的抽象。它允許諸如由不同工具產(chǎn)生的細(xì)節(jié)數(shù)據(jù)被隱蔽并在需要時(shí)獲得。在效果上,POWERFRAME把此摘要的所有相關(guān)信息分類。一部份對象由某版本控制,其它的在檢測中確定其版本。 6.12 RationalRATIONAL的環(huán)境體支持開發(fā)大型ADA產(chǎn)品的軟件人員組。RATIONAL的計(jì)算機(jī)管理設(shè)備依賴于其子系統(tǒng)。ADA程序庫與它們的計(jì)算機(jī)管理系統(tǒng)交互相關(guān),一個(gè)子系統(tǒng)代表ADA產(chǎn)品的一部份。子系統(tǒng)可以獨(dú)立于產(chǎn)品的其它部份僅由一個(gè)軟件工程師開發(fā)或者由一個(gè)工作組協(xié)同完成。一個(gè)子系統(tǒng)有一個(gè)版本標(biāo)識(shí)符,可以被釋放回收。不同版本的子系統(tǒng)可以同時(shí)操作,其差異被合并,子系統(tǒng)之間也可以進(jìn)行合并。通過活動(dòng)桌面可以分辨出哪些子系統(tǒng)的哪些版本要進(jìn)行合并。 RATIONAL提供對ADA單元重編譯最小化的機(jī)制。通過子系統(tǒng)ADA單元被放置在版本控制器中。用戶可以根據(jù)設(shè)計(jì)需要開啟,關(guān)閉版本控制器。 6.13 Revision Control System(RCS)修訂控制系統(tǒng)(RCS)是一套由W.Tichy開發(fā)的,庫里的源文件提供版本控制器的工具。庫對每個(gè)文件建立一棵版本樹。樹上的一個(gè)分支代表文件里的一個(gè)變量。RCS對版本和分支的操作自帶一套計(jì)數(shù)方案,為了節(jié)省空間并且盡快獲取最近的版本,我們只存儲(chǔ)文件版本之間的差異。獲取文件庫的通常使用模式包括用戶檢索庫文件的特定版次(通過鎖定方式),修改文件。修改完畢后登記回原版本所在的出處。與此同時(shí),RCS會(huì)記錄修改的細(xì)節(jié),如作者,日期,時(shí)間和修改原因。如果需要,RCS可以自動(dòng)將一個(gè)特有的標(biāo)識(shí)放入文件。RCS能對比文件的不同版本,終止一項(xiàng)配置以及通過識(shí)別源代碼行的差別合并各個(gè)分支。庫文件標(biāo)志(如配置標(biāo)志或狀態(tài)標(biāo)志)可以用于標(biāo)識(shí)文件之間的關(guān)連。 6.14 SHAPESHAPE系統(tǒng)來自柏林大學(xué),它借助版本狀態(tài),配置標(biāo)識(shí)符為我們提供一個(gè)帶有特定文件系統(tǒng),版本控制器和工作間的庫。它集成系統(tǒng)模型設(shè)備并從中獲取二進(jìn)制代碼池。我們可以通過用戶定義/系統(tǒng)定義的屬性模式描述各項(xiàng)配置。串行和并行的配置版本均支持開發(fā)組件。工作間由版本的狀態(tài)量激活。此版本還可以確定文件的不穩(wěn)定性。工作間文件的狀態(tài)值“忙”“已保存”“激活”以及公用辦公數(shù)據(jù)庫使用的狀態(tài)值“已打印”“完成”和“終止”相互轉(zhuǎn)換。 6.15 Software Management System軟件管理系統(tǒng)(SMS),提供版本控制,工作區(qū)管理,系統(tǒng)模擬,。。。改變庫探測方式,對接口說明書進(jìn)行加工,以及對基于屬性的版本區(qū)進(jìn)行加工。工作于與任務(wù)相關(guān)的版本時(shí),工作區(qū)提供保護(hù)措施并支持對每個(gè)任何基底的認(rèn)證和登陸。 一旦特殊事件發(fā)生,物件的變動(dòng)就受到監(jiān)控和跟蹤。已獲取的物件有一個(gè)連續(xù)狀態(tài)量,(“合法”“受保護(hù)”“廢止”“非法”)用來代表與已構(gòu)成系統(tǒng)的關(guān)系;此物件還帶有一個(gè)程度狀態(tài)量(“同意”“警告”“嚴(yán)重錯(cuò)誤”),用來指明版本的一致性。 |
|
|