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在线播放| 毛片视频网| 色亚洲激情综合精品无码视频 | 久久网欧美| 91色爱欧美精品www| 91娇喘视频| 色妺妺在线视频喷水| 久久久久中文字幕精品视频| 视频二区欧美| 午夜不卡福利| 精品视频在线一区| 找国产毛片看| 久久成人免费| 亚洲区第一页| 久青草网站| 99国产精品国产高清一区二区| AV不卡在线永久免费观看| 久久永久视频| 国产一区二区人大臿蕉香蕉| 在线免费无码视频| 亚洲天堂网站在线| 国产91导航| 一本大道香蕉高清久久| 国产三级国产精品国产普男人| 日本午夜三级| 日韩最新中文字幕| 亚洲色图在线观看| 老司机午夜精品视频你懂的| 日本成人一区| 国产制服丝袜91在线| 久久五月视频| 免费无码网站| 美女免费黄网站| 国产熟女一级毛片| 亚洲成人网在线播放| 国产人妖视频一区在线观看| 永久在线精品免费视频观看| 欧美久久网| 福利姬国产精品一区在线| 亚洲a级毛片| 青青草久久伊人| 夜夜拍夜夜爽| 免费无码又爽又刺激高| 国产精品9| 久久美女精品国产精品亚洲| 国产91无毒不卡在线观看| 91在线国内在线播放老师| 91精品国产综合久久不国产大片| 嫩草在线视频| 99久久精彩视频| 久久a级片| 国产va在线观看免费| 国产亚洲欧美在线专区| 亚洲成a人片在线观看88| 久久国产高潮流白浆免费观看| 亚洲成人黄色在线| 2020精品极品国产色在线观看 | 99精品国产自在现线观看| 美女一区二区在线观看| 四虎永久免费地址在线网站| 无码一区中文字幕| 五月天久久婷婷| 亚洲精品无码久久久久苍井空| 国产亚洲成AⅤ人片在线观看| 国产一级二级三级毛片| 中文字幕亚洲第一| a级毛片免费网站| 在线观看网站国产| 中文国产成人久久精品小说| 午夜精品区| 亚洲天堂区| 欧美日韩第三页| 国产成人一区二区| 丁香六月激情综合| 九九这里只有精品视频| 538精品在线观看|