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