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

軟件體系結構演化信息捕獲機制的方法研究

2007-12-31 00:00:00鐘林輝
計算機應用研究 2007年11期

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

關鍵詞:軟件體系結構; 軟件演化; 版本

中圖分類號:TP3文獻標志碼:A

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

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

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

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

1支持軟件體系結構演化的構件描述

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

a)擴充后的構件接口規(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)擴充后的復合構件實現(xiàn)體規(guī)約

[Compound_component::=(復合構件的實體)

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

〈ReferenceSet〉

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

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

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

[ComponentUsers=〈NameList〉,]

[ComponentDesigner=〈NameList〉]

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

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

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

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

2擴充的JBCDL到CBSCM模型的自動轉換

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

2.1基于構件的軟件配置管理模型

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

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

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

2.2xJBCDL到CBSCM的轉換算法

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

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

1)從JBCDL自動地生成配置

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

算法1Construct_Configuration

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

function(c:CDL):Config 

begin

if c 是原子構件 then

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

return new Config(c.name);

if c 是復合構件 Then 

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

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

for 對于c中的每一個成員構件 t Do

if t 是原子構件 Then 

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

將 t作為cConfig的一個構件;

else

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

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

end if

end for

return cconfig;

end 

2)從xJBCDL自動生成基線

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

算法2Construct_Baseline

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

function Construct_Baseline(c:xCDL):BaseLine 

begin

if c 是原子構件 Then

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

return new BaseLine(c.name);

if c 是復合構件 Then 

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

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

for 對于c中的每一個成員構件 t Do

if t 是原子構件 Then 

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

將 t作為c的一個版本構件;

else

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

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

end if

end for

return cBaseLine;

end

end

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

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

3結束語

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

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

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

參考文獻:

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

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

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

[4]張路. 基于構件的軟件配置管理技術研究[D] 北京:北京大學,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格式閱讀原文”

主站蜘蛛池模板: 午夜高清国产拍精品| 伊人久久久久久久| 国产精品美女免费视频大全| 欧美国产日产一区二区| 免费A∨中文乱码专区| 国产精品人成在线播放| 精品91视频| 国产高清在线丝袜精品一区| 亚洲成人播放| 风韵丰满熟妇啪啪区老熟熟女| V一区无码内射国产| 日本精品视频| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品成人免费综合| 18禁影院亚洲专区| 欧美精品啪啪| 国产微拍精品| 第一区免费在线观看| 国产精品视频猛进猛出| 欧美区一区| 91在线免费公开视频| 亚洲经典在线中文字幕| 国产在线观看成人91| 国产精品自拍合集| 免费三A级毛片视频| 国产免费久久精品99re不卡| 超清无码一区二区三区| 亚洲中文精品久久久久久不卡| 国产精品永久久久久| 二级特黄绝大片免费视频大片| 国内a级毛片| 欧美三级视频在线播放| 91娇喘视频| 99激情网| 久久99国产综合精品女同| 久久久久久国产精品mv| 高清乱码精品福利在线视频| 超薄丝袜足j国产在线视频| 五月激情综合网| 精品视频第一页| 免费在线看黄网址| 啪啪啪亚洲无码| 国产精品一区二区无码免费看片| 亚洲中文字幕国产av| 亚洲人在线| 尤物视频一区| 色综合天天操| 欧美成人精品一级在线观看| 久久久噜噜噜| 国产第一页免费浮力影院| 国内精自视频品线一二区| 精品亚洲国产成人AV| 欧美一级特黄aaaaaa在线看片| 久视频免费精品6| 亚洲色图欧美视频| 97国产精品视频自在拍| 久热re国产手机在线观看| 精品夜恋影院亚洲欧洲| 19国产精品麻豆免费观看| 毛片久久久| 色综合久久88| 91色在线观看| 国产一二三区在线| 欧美色伊人| 亚洲欧美日韩动漫| 亚洲黄色网站视频| 亚洲欧美h| 国产97视频在线观看| 亚洲成人精品在线| 国产欧美视频综合二区| 欧美日韩国产一级| 欧美亚洲综合免费精品高清在线观看| 国产精品高清国产三级囯产AV| 四虎永久在线| 波多野结衣一区二区三区88| 日韩精品无码免费一区二区三区| 久久久91人妻无码精品蜜桃HD| 亚洲 欧美 日韩综合一区| 亚洲天堂精品视频| 欧美日韩免费观看| 五月六月伊人狠狠丁香网| 亚洲自偷自拍另类小说|