999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

軟件體系結(jié)構(gòu)演化信息捕獲機制的方法研究

2007-12-31 00:00:00鐘林輝
計算機應(yīng)用研究 2007年11期

摘要:提出了用擴充的構(gòu)件描述語言xJBCDL描述軟件體系結(jié)構(gòu)的演化,并實現(xiàn)了從xJBCDL到基于構(gòu)件軟件配置管理模型的自動轉(zhuǎn)換,從而達到自動捕獲軟件體系結(jié)構(gòu)演化信息的目的。

關(guān)鍵詞:軟件體系結(jié)構(gòu); 軟件演化; 版本

中圖分類號:TP3文獻標(biāo)志碼:A

文章編號:1001-3695(2007)11-0074-02

軟件演化是軟件不斷更新變化的過程,是軟件的本質(zhì)特征之一。軟件作為對客觀世界的一種反映,是知識的提煉、體現(xiàn)和固化。客觀世界是不斷發(fā)展變化的,因此,軟件系統(tǒng)不可能一成不變。隨著新需求、新技術(shù)的不斷出現(xiàn),軟件也要不斷地升級、演化,體現(xiàn)為軟件的演化性[1]。軟件在生命周期的各個階段,都可能發(fā)生演化。記錄和分析軟件在演化過程中的信息,能夠更有助于理解軟件演化的本質(zhì),為更好地控制和預(yù)測未來軟件的變化奠定基礎(chǔ)。

另一方面,構(gòu)件化軟件開發(fā)作為軟件復(fù)用的核心技術(shù),越來越受到關(guān)注。軟件體系結(jié)構(gòu)作為構(gòu)件化開發(fā)中的核心資產(chǎn),體現(xiàn)了軟件設(shè)計的早期設(shè)計決策。通過記錄軟件體系結(jié)構(gòu)在生命周期內(nèi)的演化歷史,可以更好地理解軟件體系結(jié)構(gòu)的演化本質(zhì),為改善軟件體系結(jié)構(gòu)的質(zhì)量奠定基礎(chǔ)。

本文在以前研究工作的基礎(chǔ)上,將軟件體系結(jié)構(gòu)的演化與基于構(gòu)件的軟件配置管理模型建立映射關(guān)系,并實現(xiàn)了兩者之間的自動映射算法,在系統(tǒng)的支持下實現(xiàn)對軟件體系結(jié)構(gòu)演化信息的捕獲和記錄。

1支持軟件體系結(jié)構(gòu)演化的構(gòu)件描述

軟件體系結(jié)構(gòu)的配置由構(gòu)件以及構(gòu)件之間的連接關(guān)系構(gòu)成,可以用復(fù)合構(gòu)件表示軟件體系結(jié)構(gòu)的配置。復(fù)合構(gòu)件的內(nèi)部結(jié)構(gòu)由一組關(guān)系緊密、相互協(xié)作的成員構(gòu)件以及它們之間的約束關(guān)系組成。復(fù)合構(gòu)件中的成員構(gòu)件相當(dāng)于軟件體系結(jié)構(gòu)配置中的構(gòu)件;成員構(gòu)件之間的約束關(guān)系相當(dāng)于軟件體系結(jié)構(gòu)的連接關(guān)系。在前期研究中[2, 3],以青鳥構(gòu)件描述語言JBCDL討論了如何擴展JBCDL支持軟件體系結(jié)構(gòu)的演化,將擴充后的JBCDL稱之為xJBCDL(extended JBCDL)。 xJBCDL的語法形式如下:

a)擴充后的構(gòu)件接口規(guī)約

Component_Interface ::= Component 〈component_name〉 \"〈\" 〈VersionInfo〉 \"〉\" is

[Provides:〈Function_Spec_list〉

Requires:〈Function_Spec_list〉 ]|

[Services: [dual] Service〈service_name〉{,[dual]Service〈service_name〉}]

Description: 〈text_docu〉semiformal document| Formal document

End Component_Interface;

〈VersionInfo〉::= Version=〈VersionNo〉

b)擴充后的復(fù)合構(gòu)件實現(xiàn)體規(guī)約

[Compound_component::=(復(fù)合構(gòu)件的實體)

Reference:(包含的成員構(gòu)件)

〈ReferenceSet〉

〈ReferenceSet〉::={〈Component〉\"〈\"〈ComponentInfo〉\"〉\";}

〈ComponentInfo〉::=〈LocationInfo〉; [〈 ProjectTeamInfo 〉]

〈ProjectTeamInfo〉::=ComponentManager=〈Name〉,

[ComponentUsers=〈NameList〉,]

[ComponentDesigner=〈NameList〉]

〈LocationInfo〉::= Location=〈Path〉

〈InstanceSet〉::={〈Component〉〈ComponentInstance〉;}

Instance:(成員構(gòu)件的實例化)

……//這部分規(guī)約內(nèi)容沒有發(fā)生變化,在這里省去

2擴充的JBCDL到CBSCM模型的自動轉(zhuǎn)換

基于構(gòu)件的軟件配置管理模型CBSCM支持軟件系統(tǒng)結(jié)構(gòu)實現(xiàn)的存儲和追蹤。為了實現(xiàn)能夠自動地從擴充的構(gòu)件描述語言xCDL構(gòu)造出相應(yīng)的CBSCM模型,首先介紹基于構(gòu)件的軟件配置管理模型CBSCM;然后提出了從xJBCDL到CBSCM模型實例轉(zhuǎn)換的方法。

2.1基于構(gòu)件的軟件配置管理模型

在文獻[4]中提出了基于構(gòu)件的配置管理模型CBSCM,通過在配置管理技術(shù)中引入構(gòu)件的概念,以構(gòu)件為版本控制的基本單位。在此基礎(chǔ)上定義配置(復(fù)合構(gòu)件)的概念,從而支持構(gòu)件的演化管理。與其他軟件配置管理模型相比,可以更好地支持基于構(gòu)件的軟件開發(fā)的演化管理。模型中相關(guān)定義如下:

定義1構(gòu)件是可以被多個軟件系統(tǒng)所復(fù)用的具有獨立功能的系統(tǒng)構(gòu)成成分。在配置管理系統(tǒng)中的構(gòu)件定義為通過目錄結(jié)構(gòu)組織起來的一組密切相關(guān)文件的集合。構(gòu)件概念支持各種形態(tài)的構(gòu)件,如分析構(gòu)件或設(shè)計構(gòu)件、運行級構(gòu)件等。構(gòu)件由若干分支組成。每個分支代表了構(gòu)件的一個演化方向,每個分支由若干版本構(gòu)成。

定義2配置是指一組配置項的集合,其中每個配置項可以是一個構(gòu)件,也可以是一個配置(作為配置項的配置也稱子配置),配置具有自包含性。配置可以表示基于構(gòu)件的軟件開發(fā)中的復(fù)合構(gòu)件,也可以表示組裝出來的系統(tǒng)。定義3基線為配置及其所有子配置中的構(gòu)件都選定一個特定版本,就得到了配置的一個基線,該操作稱為基線操作。配置的基線表示復(fù)合構(gòu)件或系統(tǒng)的一個版本。

2.2xJBCDL到CBSCM的轉(zhuǎn)換算法

元模型是一種描述模型元素以及元素之間關(guān)系的機制。在這里,借助用元模型機制說明擴充的青鳥構(gòu)件描述語言xJBCDL與基于構(gòu)件的軟件配置管理模型CBSCM之間的映射關(guān)系如圖1表示。

軟件體系結(jié)構(gòu)的配置有若干成員構(gòu)件,每個成員構(gòu)件對應(yīng)于CBSCM中的構(gòu)件,因此軟件體結(jié)構(gòu)的配置對應(yīng)于CBSCM中的一個配置。軟件體系結(jié)構(gòu)中構(gòu)件演化歷史對應(yīng)于CBSCM中的構(gòu)件版本簇;軟件體系結(jié)構(gòu)配置的演化歷史對應(yīng)于CBSCM中的基線,如果軟件體系結(jié)構(gòu)配置發(fā)生了變化,則對應(yīng)于CBSCM中一個新的配置;當(dāng)軟件系統(tǒng)結(jié)構(gòu)配置不發(fā)生變化,只是組成配置的構(gòu)件發(fā)生變化,則對應(yīng)于CBSCM中一個新的基線。

1)從JBCDL自動地生成配置

首先介紹如何從JBCDL自動生成CBSCM中的一個配置。算法Construct_Configuration 的偽代碼如下:

算法1Construct_Configuration

說明:構(gòu)造構(gòu)件c規(guī)約語言在CBSCM中對應(yīng)的配置或構(gòu)件。如果構(gòu)件c是原子構(gòu)件,則返回CBSCM中對應(yīng)的構(gòu)件名;如果構(gòu)件c是復(fù)合構(gòu)件,則返回CBSCM中對應(yīng)的配置名。

function(c:CDL):Config 

begin

if c 是原子構(gòu)件 then

在CBSCM中創(chuàng)建一個構(gòu)件,構(gòu)件名為c.name;

return new Config(c.name);

if c 是復(fù)合構(gòu)件 Then 

cConfig:= new Config(c.name);

在CBSCM中創(chuàng)建一個配置,配置名為c.name;

for 對于c中的每一個成員構(gòu)件 t Do

if t 是原子構(gòu)件 Then 

在CBSCM中創(chuàng)建一個構(gòu)件,構(gòu)件名為t.name;

將 t作為cConfig的一個構(gòu)件;

else

tConfig:=Construct_configuration(t);//迭代地調(diào)用生成一個新的配置

將 tConfig作為cConfig的一個子配置;

end if

end for

return cconfig;

end 

2)從xJBCDL自動生成基線

在算法1的基礎(chǔ)上,從xJBCDL自動生成CBSCM中一個基線的算法偽代碼如下:

算法2Construct_Baseline

說明:構(gòu)造構(gòu)件c擴展的規(guī)約語言在CBSCM中對應(yīng)的基線或者版本構(gòu)件。如果構(gòu)件c是原子構(gòu)件,則返回CBSCM中對應(yīng)的版本構(gòu)件;如果構(gòu)件c是復(fù)合構(gòu)件,則返回CBSCM中對應(yīng)的基線。

function Construct_Baseline(c:xCDL):BaseLine 

begin

if c 是原子構(gòu)件 Then

在CBSCM中創(chuàng)建一個名為c.name,版本號為c.ver的版本構(gòu)件;

return new BaseLine(c.name);

if c 是復(fù)合構(gòu)件 Then 

cBaseLine:=new BaseLine(c.name);

在CBSCM中創(chuàng)建一個名為c.name,版本號為c.ver的基線;

for 對于c中的每一個成員構(gòu)件 t Do

if t 是原子構(gòu)件 Then 

在CBSCM中創(chuàng)建一個名為c.name,版本號為c.ver的版本構(gòu)件;

將 t作為c的一個版本構(gòu)件;

else

tBaseLine:=Construct_Baseline(t);//迭代地調(diào)用本程序生成一個新的基線

將 tBaseLine作為cBaseLine的一個子基線;

end if

end for

return cBaseLine;

end

end

2.3系統(tǒng)實現(xiàn)

在上述基礎(chǔ)上,本文實現(xiàn)了一個原型系統(tǒng)支持軟件體系結(jié)構(gòu)演化信息的捕獲。整個系統(tǒng)體系結(jié)構(gòu)圖如圖2所示, 包括擴展的xJBCDL編輯器、xJBCDL2CBSCM轉(zhuǎn)換器。xJBCDL是一個編輯環(huán)境,用于操縱軟件體系結(jié)構(gòu)的變化,通過xJBCDL2CBSCM轉(zhuǎn)換器將軟件體系結(jié)構(gòu)的變化傳播到基于構(gòu)件的軟件配置管理系統(tǒng)中,完成軟件體系結(jié)構(gòu)在實現(xiàn)級的變化。 

3結(jié)束語

軟件演化研究的是軟件系統(tǒng)的變化模式,探討影響軟件變化的基本機制,為軟件演化提供更好的過程指導(dǎo)[5]。軟件演化分析的數(shù)據(jù)主要來源于軟件配置管理系統(tǒng)。軟件配置管理系統(tǒng)中記錄的軟件開發(fā)歷史,不僅能夠揭示開發(fā)者的

設(shè)計意圖,而且可以預(yù)測軟件未來的變化[6]。另一方面,人們逐漸意識到軟件配置管理模型與構(gòu)件、軟件體系結(jié)構(gòu)在概念上的相似性,提出了一些方法試圖集成兩者的數(shù)據(jù)模型,以便更好地支持軟件演化,例如Koala方法[7]和Ménage方法[8]。在文獻[9]中設(shè)計并實現(xiàn)了一個靈活的類似于SQL的數(shù)據(jù)查詢引擎,除能夠按類型、名、屬性以及度量查詢外,可以查詢出符合某種度量的軟件版本。在文獻[10]設(shè)計了一個版本歷史數(shù)據(jù)庫RHDB(release history database),用一種結(jié)構(gòu)化的方法存儲版本數(shù)據(jù)和軟件變化管理中的問題報告。通過瀏覽、查詢歷史數(shù)據(jù)以及度量,為進一步研究軟件特征演化分析提供了物質(zhì)基礎(chǔ)。

本文通過擴充的構(gòu)件描述語言xJBCDL描述軟件體系結(jié)構(gòu)的演化,并自動地實現(xiàn)從xJBCDL到CBSCM的轉(zhuǎn)換,可以自動地記錄軟件體系結(jié)構(gòu)的演化信息,為軟件體系結(jié)構(gòu)質(zhì)量的改善奠定了基礎(chǔ)。

參考文獻:

[1]楊芙清.軟件技術(shù)與軟件產(chǎn)業(yè)[J].中國計算機用戶,1996 (1):7-8.

[2]鐘林輝,謝冰,邵維忠. 擴充CDL支持基于構(gòu)件的系統(tǒng)組裝與演化[J]. 計算機研究與發(fā)展, 2002,39(10):13611365.

[3]鐘林輝,謝冰,邵維忠. 擴充CDL支持構(gòu)件演化模型的方法研究[J]. 軟件學(xué)報, 2002,13:138142.

[4]張路. 基于構(gòu)件的軟件配置管理技術(shù)研究[D] 北京:北京大學(xué),2000.

[5]TU Q, GODFREY M W. An integrated approach for studying architectural evolution[C]//Proc of the 10th International Workshop on Program Comprehension (IWPC’02).2002:127136.

[6]ROBBES R, LANZA M. Versioning systems for evolution research[C]//Proc of the 8th International Workshop on Principle of Software Evolution. 2005.

[7]OMMERING R van. Koala: a component model for consumer electronics product software[C]//Proc of the 2nd International ESPRIT ARES Workshop. Berlin: SpringerVerlag,1998:76-86.

[8]ROSHANDEL R, HOEK A van der,MIKICRAKIC M,et al. Mae:a system model and environment for managing architectural evolution[J]. ACM Transactions on Software Engineering and Metho ̄dology, 2004,13(2):240-276.

[9]LANZA M, DUCASSE S, STEIGER L.Understanding software evolution using a flexible query engine[C]//Proc of the Workshop on Formal Foundations of Software Evolution.2001.

[10]FISCHER M, PINZGER M, GALL H. Analyzing and relating bug report data for feature tracking[C]//Proc of the 10th Working Confe ̄rence on Reverse Engineering.Victoria:IEEE Computer Society,2003:90-99.

“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文”

主站蜘蛛池模板: 无码AV日韩一二三区| 亚洲手机在线| 亚洲妓女综合网995久久| 乱码国产乱码精品精在线播放| 色网在线视频| 尤物精品国产福利网站| 欧美激情视频二区| WWW丫丫国产成人精品| 日本亚洲国产一区二区三区| 成人国产精品一级毛片天堂| 欧洲免费精品视频在线| 国产免费人成视频网| 呦女精品网站| 无码中文AⅤ在线观看| 青青青视频91在线 | 国产精品浪潮Av| 国产成人高清精品免费| 亚洲码在线中文在线观看| 亚洲国产无码有码| 91精品日韩人妻无码久久| 日韩视频免费| 一本大道无码高清| 亚洲一级毛片免费观看| 欧美日韩国产在线播放| 欧美国产在线看| 亚洲第一黄色网址| 色婷婷综合激情视频免费看| 亚洲无码高清一区| 九九热精品在线视频| 99视频在线精品免费观看6| 国产99精品视频| 国产电话自拍伊人| 台湾AV国片精品女同性| 成人国产三级在线播放| 婷婷六月在线| 欧美在线一级片| 精品成人一区二区| 国产精品成人AⅤ在线一二三四| 国产欧美日韩在线一区| 丁香婷婷激情网| 精品国产中文一级毛片在线看| 久久一色本道亚洲| 婷五月综合| 人妻丰满熟妇αv无码| 91午夜福利在线观看| 亚洲精品黄| 欧美激情网址| 国产乱子伦一区二区=| 51国产偷自视频区视频手机观看| 精品国产成人国产在线| 五月天久久综合国产一区二区| 男人的天堂久久精品激情| 免费国产黄线在线观看| 无码日韩视频| 亚洲第一黄片大全| 久久久四虎成人永久免费网站| 日韩久草视频| 国产91熟女高潮一区二区| 亚洲日韩精品欧美中文字幕 | 国产av剧情无码精品色午夜| 久久综合激情网| 四虎国产成人免费观看| 91精品最新国内在线播放| 天堂岛国av无码免费无禁网站| 91精品国产91久无码网站| 欧美午夜在线观看| 丁香婷婷久久| 国产av一码二码三码无码| 亚洲AV一二三区无码AV蜜桃| 天堂成人在线| 亚洲国产中文在线二区三区免| 国产在线视频福利资源站| 国产一区二区三区精品久久呦| 国产视频一区二区在线观看 | 99久久精品视香蕉蕉| 一本综合久久| 黄色网页在线播放| 欧美日韩中文国产| aⅴ免费在线观看| 日韩精品毛片| 毛片在线区| 亚洲精品欧美日韩在线|