本發(fā)明涉及軟件配置管理領(lǐng)域,具體涉及一種基于時態(tài)模型的軟件配置管理方法。
背景技術(shù):
目前,Internet和物聯(lián)網(wǎng)的發(fā)展導(dǎo)致了無論在功能上還是性能上都對軟件提出了更高的要求,眾多已有軟件產(chǎn)品、構(gòu)件和模型亟需升級改造換代,同時大量新軟件產(chǎn)品也亟需設(shè)計開發(fā)。軟件規(guī)模越來越大,復(fù)雜度越來越高,因此亟需有效的軟件開發(fā)支撐平臺(Software Development Supported Platform,也稱CASE系統(tǒng))來支持軟件產(chǎn)品、構(gòu)件和模型的開發(fā)、升級和改造任務(wù)。
軟件開發(fā)支撐環(huán)境的功能必須能夠支持軟件生存周期中各個環(huán)節(jié)的活動以各種活動間的過程信息管控,這必須對需求、設(shè)計、模型、構(gòu)件、參數(shù)、軟件產(chǎn)品、文檔、缺陷、變更、開發(fā)人員、用戶等對象進(jìn)行管理。這些對象在軟件生存周期中的不同階段具有不同屬性,它們之間也具有錯綜復(fù)雜的關(guān)系。軟件配置管理(Software Configuration Management,SCM)方法為管理這些對象提供了基本的功能,也是管理聯(lián)系各對象之間關(guān)系的關(guān)鍵技術(shù)。
因此,對軟件需求、設(shè)計、模型、構(gòu)件、參數(shù)、軟件產(chǎn)品、文檔、缺陷、變更、項目、開發(fā)人員(包括各階段開發(fā)人員)、用戶等軟件開發(fā)要素及其之間的復(fù)雜聯(lián)系,建立集成統(tǒng)一的數(shù)據(jù)模型,研究軟件配置管理關(guān)鍵技術(shù)是研制軟件開發(fā)支撐平臺的基礎(chǔ)(如圖1所示)。
軟件配置管理工具分為三級:
(1)入門級:例如CVS和VSS等版本控制工具;
(2)項目級:增加變更控制、狀態(tài)統(tǒng)計等功能,如ClearCase、PVCS等配置管理工具;
(3)企業(yè)級;增加過程管理功能,如ALLFUSIONHarvest。
軟件配置管理通常具有的功能有:配置支持、版本控制、變更控制、構(gòu)造支持、過程支持、團(tuán)隊支持、報告/查詢(如依賴關(guān)系報告、影響分析報告等)、審計控制和其他功能(權(quán)限控制、人員管理和配置庫管理等)。
軟件配置管理具有如下特征:
(1)支持工作流控制,如變更管理工作流,需求、設(shè)計和開發(fā)工作流等;
(2)支持分布式開發(fā);
(3)支持并行開發(fā);
(4)基于構(gòu)件的版本管理和配置管理。
近年來,國內(nèi)用于支持單一開發(fā)活動以及軟件維護(hù)的CASE工具軟件的應(yīng)用已經(jīng)比較普遍,如很多單位(特別是軍工單位通過國家支持的技術(shù)改造項目,使得軟件科研生產(chǎn)條件大幅提高)已經(jīng)基本普及了需求開發(fā)工具、軟件設(shè)計工具、集成編程環(huán)境、測試工具、版本管理工具等CASE工具的應(yīng)用,然而貫穿軟件生存周期的軟件工程過程管理軟件的應(yīng)用仍然非常罕見。缺乏軟件過程管理的自動化工具支持導(dǎo)致以上CASE工具的使用效果欠佳,企業(yè)中許多重金購買的工具甚至閑置。這種問題的產(chǎn)生歸根結(jié)底在于尚未打通軟件研制活動間數(shù)據(jù)暢通傳遞的通道,而軟件過程管理的核心是軟件配置管理,它是解決此類問題的關(guān)鍵。
國際上比較著名的軟件過程管理工具主要有美國IBM的Rational系列軟件、Micro Focus公司的Borland系列軟件、CA公司的Process Continuum、Mc Cabe&Association公司的軟件集成質(zhì)量保證產(chǎn)品McCabe IQ、英國的自動評估工具Process Professional等等。國內(nèi)的此類軟件產(chǎn)品主要有北大軟件的軟件工程管理集成平臺(簡稱SEMIP)、中科方德的Qone等。這些產(chǎn)品中的軟件配置管理方法都采取基于文件存儲差異的版本管理方法,不能適應(yīng)靈活的配置管理需求,存在如下一些問題:
(1)大多數(shù)產(chǎn)品只支持軟件需求分析設(shè)計和開發(fā)、模型庫管理、構(gòu)件庫管理等單一功能,不能滿足集成管理軟件需求庫、軟件設(shè)計庫、模型庫、構(gòu)件庫、參數(shù)庫和軟件產(chǎn)品庫等的需要。
(2)現(xiàn)有產(chǎn)品尤其缺乏對軟件需求、設(shè)計、模型、構(gòu)件、參數(shù)和軟件產(chǎn)品等各個對象之間,以及各個對象的不同版本之間復(fù)雜聯(lián)系的管理功能。
(3)現(xiàn)有產(chǎn)品對開發(fā)和構(gòu)成軟件的各個要素的生命周期(從需求、設(shè)計、開發(fā)、發(fā)布、使用、版本升級到停止使用的全過程)管理支持不夠,沒有有效管理軟件產(chǎn)品各組成要素中的時態(tài)信息,也缺乏有效的時態(tài)檢索和分析功能。
(4)現(xiàn)有產(chǎn)品能夠很好的支持新軟件產(chǎn)品從需求分析、設(shè)計到開發(fā)全過程,但是對已有軟件產(chǎn)品、構(gòu)件和模型的集成管理功能還不夠完善。
(5)國外有些軟件過程管理產(chǎn)品表現(xiàn)為一個產(chǎn)品族,其體系龐大,需要多個軟件產(chǎn)品協(xié)同作業(yè),而且價格不菲;而且所有產(chǎn)品均不能適應(yīng)我國GJB5000A標(biāo)準(zhǔn)的要求,從國家安全的角度出發(fā),軍工軟件研制不可能使用國外的軟件工程過程管理系統(tǒng)。
技術(shù)實現(xiàn)要素:
為解決上述問題,本發(fā)明提供了一種基于時態(tài)模型的軟件配置管理方法,利用時態(tài)圖和時態(tài)數(shù)據(jù)庫技術(shù),發(fā)明了軟件開發(fā)諸要素及其復(fù)雜聯(lián)系的時態(tài)建模方法,設(shè)計集成統(tǒng)一的時態(tài)數(shù)據(jù)模型、存儲模型以及時態(tài)版本模型,給出各個對象演化及對象之間依賴和修改影響分析等方法。
為實現(xiàn)上述目的,本發(fā)明采取的技術(shù)方案為:
一種基于時態(tài)模型的軟件配置管理方法,包括如下步驟:
S1、將傳統(tǒng)的實體關(guān)系圖擴(kuò)展為時態(tài)圖模型,構(gòu)建了軟件開發(fā)要素的概念模型,稱為“時態(tài)實體關(guān)系圖”;
S2、基于步驟S1的時態(tài)建模方法設(shè)計基于時態(tài)的軟件配置管理數(shù)據(jù)庫,包括數(shù)據(jù)庫邏輯模型和物理模型;
S3、結(jié)合關(guān)系數(shù)據(jù)庫技術(shù)和時態(tài)數(shù)據(jù)庫技術(shù),根據(jù)時態(tài)建模構(gòu)建的軟件開發(fā)要素的概念模型,設(shè)計相應(yīng)的關(guān)系數(shù)據(jù)庫邏輯模型;
S4、構(gòu)建Oracle10g上進(jìn)行時態(tài)擴(kuò)展和進(jìn)行檢索的方法;
S5、構(gòu)建基于時態(tài)的對象依賴關(guān)系發(fā)現(xiàn)算法。
本發(fā)明具有以下有益效果:
1)能夠?qū)?fù)雜軟件研制過程中產(chǎn)生的軟件開發(fā)要素(需求、設(shè)計、模型、構(gòu)件、參數(shù)、軟件產(chǎn)品、文檔、缺陷、變更、項目、開發(fā)人員、用戶等)的生存周期進(jìn)行單獨(dú)管理,克服傳統(tǒng)配置管理方法采用基于文件差異的版本管理方式,不便于各種軟件開發(fā)要素細(xì)粒度管理的缺陷;
(2)突出軟件開發(fā)要素的時態(tài)屬性,特別適合群組協(xié)同軟件研制過程中軟件要素在其生存周期中進(jìn)行獨(dú)立的演化要求;
(3)可以迅速檢索軟件開發(fā)要素之間依賴關(guān)系,并對其變更影響進(jìn)行分析;
(4)在Oracle10g上給出了實現(xiàn)方法,方便用戶參照本發(fā)明在各種關(guān)系數(shù)據(jù)庫系統(tǒng)上進(jìn)行實施。
附圖說明
圖1為以軟件配置管理為核心的軟件開發(fā)平臺框架示意圖。
圖2為本發(fā)明實施例的流程圖。
圖3為兩類軟件開發(fā)實體A和B的4種時態(tài)版本聯(lián)系圖。
具體實施方式
為了使本發(fā)明的目的及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實施例對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實施例提供了一種基于時態(tài)模型的軟件配置管理方法,包括如下步驟:
軟件需求、設(shè)計、模型、構(gòu)件、參數(shù)、軟件產(chǎn)品、文檔、缺陷、變更、項目、開發(fā)人員、用戶等實體對象都具有不同的版本,每個版本具有相應(yīng)的發(fā)布時間、使用時間和停用時間。具有時態(tài)屬性,并且其狀態(tài)隨時間變化的實體,稱為時態(tài)實體。圖3描述了A實體(例如軟件)和B實體(例如構(gòu)件)的4種時態(tài)版本聯(lián)系,其中At0,At1,At2,At3,At4,At5….表示隨時間發(fā)展而演化成A實體的各個版本對象,它們由虛線箭頭相連。B實體也有類似隨時間演化的版本序列。每個時刻版本對象上的時態(tài)標(biāo)簽為該對象的有效時間“[發(fā)布時間,停用時間)”。連接版本對象的邊(實線箭頭)表示實體間的某種關(guān)系,如軟件(A實體)“使用”了構(gòu)件(B實體),關(guān)系上的標(biāo)簽表示兩個版本對象建立關(guān)系的有效時間“[開始時間,結(jié)束時間)”。圖3(1)表示軟件對象的At0版本“使用”了構(gòu)件對象的Bt0版本;圖3(2)表示A實體(軟件)由At1版本升級為At2版本,然而它“使用”的B實體(構(gòu)件)的版本不變,仍為Bt1;圖4(3)表示At3版本不變,Bt3版本升級為Bt4版本;圖3(4)表示At3升級為At5版本,Bt4版本升級為Bt5版本。上述A和B兩類時態(tài)實體之間的四種時態(tài)聯(lián)系,實際上為兩類時態(tài)聯(lián)系:A版本變化,B版本同步變化;A版本變化,B版本不變化。
圖3表明,軟件開發(fā)中的軟件需求、設(shè)計、模型、構(gòu)件、參數(shù)、軟件產(chǎn)品等時態(tài)實體本身不僅存在隨時間演化的版本聯(lián)系,時態(tài)實體之間還存在復(fù)雜的時態(tài)聯(lián)系。因此,可以將傳統(tǒng)的實體關(guān)系圖(E-R圖)擴(kuò)展為時態(tài)圖(Temporal Graph)模型,它是一種軟件開發(fā)要素的時態(tài)建模方法,構(gòu)建了軟件開發(fā)要素的概念模型,稱為“時態(tài)實體關(guān)系圖”。可以用時態(tài)實體關(guān)系圖描述上述軟件開發(fā)中的各類實體之間的動態(tài)時態(tài)關(guān)系。
基于上述時態(tài)建模方法,可以設(shè)計基于時態(tài)的軟件配置管理數(shù)據(jù)庫,包括數(shù)據(jù)庫邏輯模型和物理模型。
結(jié)合關(guān)系數(shù)據(jù)庫技術(shù)和時態(tài)數(shù)據(jù)庫技術(shù),根據(jù)時態(tài)建模構(gòu)建的軟件開發(fā)要素的概念模型,設(shè)計相應(yīng)的關(guān)系數(shù)據(jù)庫邏輯模型,包括軟件需求、軟件設(shè)計、模型、構(gòu)件、參數(shù)和軟件產(chǎn)品等軟件開發(fā)要素實體的邏輯模型,以及上述軟件開發(fā)要素實體之間的各種聯(lián)系的邏輯模型,特別是時態(tài)實體之間的時態(tài)聯(lián)系邏輯模型,也包括相應(yīng)的時態(tài)完整性約束。
設(shè)計關(guān)系數(shù)據(jù)邏輯模型時,還要充分借鑒或利用現(xiàn)有軟件開發(fā)的各種國際、國家或者行業(yè)標(biāo)準(zhǔn)(例如軟件構(gòu)件管理標(biāo)準(zhǔn)等),以及各種信息分類編碼標(biāo)準(zhǔn),來定義軟件開發(fā)要素實體的各種屬性,以便為軟件開發(fā)要素實體的分類和檢索提供堅實的基礎(chǔ)。
設(shè)計基于關(guān)系數(shù)據(jù)庫的時態(tài)存儲模型,要充分考慮所選定的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)支持時態(tài)數(shù)據(jù)的特點(diǎn)和功能,必要時需要設(shè)計相應(yīng)的SQL函數(shù)支持時態(tài)數(shù)據(jù)管理的相應(yīng)功能。本發(fā)明提出了在Oracle10g上進(jìn)行時態(tài)擴(kuò)展的方法,這主要是設(shè)計時態(tài)物理存儲模型,重點(diǎn)是設(shè)計數(shù)據(jù)的存取方法,包括常規(guī)索引,文本索引和時態(tài)索引。將在第七部分的實施實例中給出Oracle10g時態(tài)擴(kuò)展的方法。
2.基于時態(tài)和關(guān)鍵詞的軟件配置檢索方法
各個軟件對象的屬性比較多,也包含較多的時態(tài)屬性,時態(tài)實體之間的聯(lián)系也比較復(fù)雜,傳統(tǒng)的關(guān)系數(shù)據(jù)庫查詢語言SQL語言難以勝任靈活的用戶查詢需求。目前基于關(guān)鍵詞的關(guān)系數(shù)據(jù)庫檢索方法有很多研究,但是還缺少針對時態(tài)數(shù)據(jù)和時態(tài)數(shù)據(jù)圖的基于關(guān)鍵詞的檢索研究。
設(shè)計基于關(guān)鍵詞的時態(tài)檢索模型和相應(yīng)的時態(tài)檢索方法,使得用戶通過簡單的關(guān)鍵詞檢索,就可以靈活檢索基于時態(tài)的軟件配置管理數(shù)據(jù),檢索結(jié)果也可以按照時態(tài)屬性過濾和排序。本發(fā)明提出了在Oracle10g上進(jìn)行時態(tài)擴(kuò)展和進(jìn)行檢索的方法,詳見第七部分的實施實例。
3.基于時態(tài)的對象依賴關(guān)系發(fā)現(xiàn)算法
軟件開發(fā)環(huán)境中的各種對象之間的依賴關(guān)系比較復(fù)雜,以構(gòu)件為例,構(gòu)件對象之間的依賴關(guān)系包含繼承關(guān)系、精化關(guān)系、版本關(guān)系、包含關(guān)系、協(xié)作關(guān)系等。因此,首先要定義清楚各種對象之間的依賴關(guān)系并存儲,然后基于時態(tài)圖,建模對象之間的依賴關(guān)系。在此基礎(chǔ)上,實施對象依賴關(guān)系發(fā)現(xiàn)算法。
現(xiàn)代軟件系統(tǒng)的生命周期內(nèi),軟件缺陷修復(fù)、功能增強(qiáng)、性能改進(jìn)、需求增加、運(yùn)行環(huán)境改變等均要求構(gòu)件和軟件系統(tǒng)等對象具有較強(qiáng)的演化能力,對象之間的依賴關(guān)系也可能在隨時間不斷發(fā)生變化演化。另一方面,由于多版本并行開發(fā),某個軟件對象演化特征并不是簡單的隨時間線性演化,由于不同用戶要求或運(yùn)行環(huán)境要求而存在多個版本分支隨時間演化而構(gòu)成一個版本樹。因此基于時態(tài)的對象依賴關(guān)系發(fā)現(xiàn)算法的本質(zhì)是版本樹遍歷算法,這可以用經(jīng)典的樹遍歷算法輕松實現(xiàn)。
4.基于時態(tài)的對象變更影響分析算法研究
變更影響分析是軟件配置管理的又一個關(guān)鍵技術(shù)。變更影響分析是保證軟件質(zhì)量的重要手段,可以減少軟件維護(hù)和測試成本,因為只需要對受影響的軟件對象(模型、構(gòu)件或者其他軟件對象)進(jìn)行維護(hù)和測試。
基于時態(tài)和圖模型,構(gòu)建軟件對象內(nèi)部以及對象之間的依賴、交互及架構(gòu)關(guān)系,以進(jìn)行變更影響分析。從不同的角度來看,可以對由軟件對象建立不同的模型。例如,從外部用戶的角度,構(gòu)件的主要功能是提供API,于是可以建立API模型;從系統(tǒng)層面看,構(gòu)件之間存在著交互關(guān)系,還有組合、配置等多種架構(gòu)關(guān)系,可以建立相應(yīng)的系統(tǒng)模型。因此,建立合適的軟件對象以及系統(tǒng)模型是軟件對象變更影響分析的重要前提。
軟件對象變更影響分析的方式是:
(1)以某個對象為核心,分析受其影響的所有對象及其聯(lián)系;
(2)以時間軸為核心,分析某個對象隨時間演變對其他對象的影響;
(3)以時間點(diǎn)為核心,分析某個時間點(diǎn)所有相關(guān)對象及其之間的變更影響。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。