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

軟件體系結構度量工具的研究與實現

2008-12-31 00:00:00宋光宇
計算機應用研究 2008年9期

摘 要:在軟件體系結構層次應用度量技術對于保證最終產品的質量有重要意義。但體系結構度量領域普遍存在對于度量擴展支持不足的問題。針對該問題,采用新的思路實現了一個可支持度量擴展的軟件體系結構度量工具。該工具支持一組基本度量,并支持較為豐富的組合運算,使用戶可定制度量,從而在一定程度內解決了體系結構度量領域存在的問題。

關鍵詞:軟件體系結構;軟件度量;基本度量;軟件質量

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

文章編號:1001-3695(2008)09-2700-03

Research and implementation on software architecture metric tool

SONG Guangyu,GAO Hui

(Software Engineering Institute, Beihang University, Beijing 100083, China)

Abstract:Measuring software architecture plays an important role in the success of software, but there is shortage of the extension of metrics in this field. This paper presented a tool for measuring software architecture in a novel idea. The tool realized userdefined metrics based a new set of basicmetrics and several modes of combination which could be used to support the complex measure, so it solved the problem in a certain extent.

Key words:software architecture; software metrics; basicmetrics; software quality



0 引言

作為軟件設計早期的關鍵制品之一,軟件體系結構對于控制軟件系統質量、支持軟件開發和復用有重要的意義[1]。在體系結構層次應用度量可以盡早發現軟件中存在的錯誤,提高軟件品質,并幫助人們客觀地分析、評估甚至預測軟件的質量屬性。

軟件體系結構最基礎的信息是結構和行為信息[2]。體系結構的結構和行為特征直接影響了軟件可擴展性、易維護性、性能等質量屬性。因此,對這些特征進行度量是十分必要的。當前,軟件體系結構的研究人員已經陸續提出了針對體系結構通用的結構和行為特征的度量指標,如構件的復雜度[3]、構件的扇出消息數[4]、消息傳出耦合[5]、系統消息復雜性[6]、系統深度[6] 、構件動態復雜度[7]、角色間的輸出耦合[8]等,并對其中的部分指標進行了驗證和應用。

雖然體系結構度量已經取得了一定的進展,但是當前的體系結構度量技術仍存在以下最主要的問題:a)度量工具較少;b)已有的度量工具普遍對度量擴展支持不足,如Maisa、ObjecTime tool等都只是支持特定的體系結構度量指標。當前,體系結構度量的研究仍處于發展階段,研究人員不斷地提出新的度量指標,若體系結構度量工具可以支持度量的擴展,這無疑將促進該工具的應用;反之,使用可擴展的度量工具進行大樣本度量又可以幫助分析和驗證已有的度量指標。因此,體系結構度量領域迫切需要一個可支持度量擴展的體系結構度量工具。軟件工程領域常采用分解的思想來解決問題,例如1984年Basili和Weiss提出的目標—問題—度量元;1977年Walters and McCall提出的因素—準則—度量元等。沿用這種思想,本文分析和研究現有的體系結構度量指標[4~9]發現,度量可以分解為兩個層次,即基本度量和組合度量。本文定義基本度量是對實體的單一屬性的度量,而組合度量是基本度量的函數值。

文獻[3]提出構件復雜度可通過某個構件的狀態轉移數該構件的方法數來計算,而文獻[8]中提出的用McCabe的圈數度量來計算復雜性的度量指標中也使用了構件的狀態轉移數,那么,可以將構件的狀態轉移數看做基本度量,而文獻[3]提出的構件的復雜度則屬于組合度量。

在兩個層次的度量中,用戶關心的往往是組合度量。為了支持體系結構度量的可擴展性,本文定義了一組基本度量和組合運算,使用戶通過組合基本度量來自行定制組合度量,并基于此設計和實現了一個可支持度量擴展的軟件體系結構度量工具。在度量工具的支持下,用戶只需重用現有的基本度量和組合運算就可以定義新的組合度量并得到度量結果,從而在一定程度上解決了擴展支持不足的問題。

本文的研究內容包括以下兩個部分:a)設計組合度量的表達方式。為了表達組合度量,本文定義了一組體現軟件體系結構的結構和行為特征的基本度量,并設計了一組較為豐富的組合運算集。b)基于a)實現可擴展的軟件體系結構度量工具。該工具可以自動獲取體系結構模型中的信息,計算基本度量值,同時可以支持用戶定制組合度量,從而支持度量擴展。

1 基本度量

度量可以分解為兩個層次,即基本度量和組合度量。用戶關注的往往是組合度量。為了實現用戶定制組合度量,本文定義了一組體現軟件體系結構的結構和行為特征的基本度量。

1.1 定義基本度量組

本文通過兩個步驟來定義和完善基本度量組:a)對軟件體系結構所包含的信息進行分解和細化,得到體現其結構和行為特征的屬性集合,從而初步定義基本度量組;b)通過已提出并得以驗證的組合度量和質量屬性的映射關系,驗證基本度量組合而成的組合度量集合是否可以表達出人們所關注的絕大多數質量屬性,如可修改性、可擴展性、效率、可維護性和復雜度等。

基本度量是針對單一屬性進行的度量,所以需要首先分析體系結構包含的實體,以及每個實體包含的屬性。通過分析現有的體系結構定義和相關研究[9~13],本文將體系結構實體分為七類,分別是:體系結構模型、構件、端口、連接件、角色、場景和消息。每一個實體包含著若干屬性,它們分別表現體系結構的結構和行為特征。例如,構件的關聯關系這一屬性體現了其結構特征。對于任何一個有清晰可標志狀態和復雜行為的構件,構件的各種狀態與狀態之間的轉換這兩個屬性能夠體現構件的行為特征。軟件體系結構的行為特征主要通過連接件來表現。連接件可以通過場景進行細化。場景中可以顯示角色之間的消息交互,如一個場景中一個角色對另一角色的調用消息的屬性就體現了角色的行為特征。體系結構的實體及其對應的屬性如表1所示。通過對體系結構每個屬性定義度量,可以初步得到基本度量組。

表1 體系結構的實體和屬性對應關系

實體屬性實體屬性

體系結構模型構件數連接件數連接件場景數角色數

構件端口數關聯關系數簡單狀態數復合狀態數狀態轉換數角色方法數參與的場景數承擔某角色的構件數調用消息數

端口方法數粘結的角色數場景角色數

消息觸發其他消息數

度量的最終目的是為了對軟件質量進行有效的控制。目前,基于度量的體系結構評估方法的研究人員陸續提出了一些組合度量與質量屬性之間的映射關系。初步定義好度量組后,需要基于這些映射關系從質量屬性的角度對基本度量組進行驗證和修改。例如通過組合基本度量定義的組合度量——系統連接性密度[6],該度量已被驗證會對系統的可維護性和靈活性產生影響;通過基本度量的多種組合,可以驗證其是否已經可以反映絕大多數的質量屬性。

1.2 基本度量組

通過分解細化——驗證的過程,本文定義了包含17個基本度量的度量組,如表2所示。

當新的變化或需求出現時,可以對基本度量組進行擴展以對新的變化和需求提供支持。

2 組合度量

2.1 組合運算

通過分析軟件度量領域現有的組合度量[3~8,14,15]和總結歸納常見的組合運算,本文設計并實現了一組組合運算,如表3所示。

表2 軟件體系結構基本度量組

縮寫度量實體基本度量定義

NCPM()模型模型的構件數目模型中的所有構件數

NCNM()模型模型的連接件數模型中的所有連接件數

NPCP(cp)構件構件的端口數構件cp的所有端口數

NASC(cp)構件構件的關聯關系數與構件cp關聯的所有構件數

NSCP(cp)構件構件的簡單狀態數包括組合狀態中的簡單狀態在內,構件cp的所有簡單狀態總數

NCSCP(cp)構件構件的復合狀態數構件cp的所有組合狀態總數

NTCP(cp)構件構件的狀態轉換數構件cp的所有狀態轉換數

NMP(p)端口端口的方法數端口p具有的方法數

NRP(p)端口端口粘結的角色數與端口p粘結的所有角色數

NRCN(cn)連接件連接件的角色數連接件cn中的所有角色數

NSCCN(cn)連接件連接件的場景數連接件cn中包含的所有場景數

NMR(r)角色角色的方法數角色r具有的方法數

NSCR(r)角色角色參與的場景數角色r參與的場景數

NCPR(r)角色承擔某角色的構件數扮演角色r的所有構件數

NMRR(r1,r2,s)角色角色在一個場景中調用另一個角色的消息數在場景s中,角色r1調用角色r2的消息數

NRSC(s)場景場景中的所有角色數場景s中出現的所有角色數

NTM(m)消息消息的觸發數消息m的到達觸發的消息數目

2.2 組合度量舉例

通過第1章定義的基本度量組和表3的組合運算集合,已經可以表示多種體系結構領域主流的組合度量,如構件的復雜度、構件動態復雜度和系統角色復雜性等。文獻[3]提出的組合度量——構件的復雜度。

定義:構件c中平均每個方法導致的狀態轉移數。

計算方法:構件c的狀態轉移總數/構件c的方法數。

組合表示:I=PCPI(c);M1(c)=NTCP(c)/x∈I(NMP(x))。

3 體系結構度量工具

3.1 系統結構

本文基于基本度量和組合運算,設計并實現了一個可擴展的體系結構度量工具SAMT(software architecture metric tool)。該工具采用Java語言,以RSA(rational software architect)的插件形式實現,支持基于UML2.0多視圖模型描述的軟件體系結構。

SAMT可從體系結構模型中獲取和識別體系結構信息,自動計算基本度量值;支持用戶定制組合度量;存儲用戶定制的度量函數,使用戶可以基于已定義的度量函數來定制組合度量;可以方便地對基本度量和組合運算的實現進行擴充。因此,它在很大程度上減輕了軟件體系結構評估人員和設計人員的工作量,降低了度量的難度。

SAMT采用三層MVC結構,主要功能如下:

a)數據存儲層。度量數據庫存儲了用戶定制的度量函數和度量值。用戶可復用已定義的度量函數。此外,在體系結構模型未變的情況下,該工具只需讀取度量數據庫即可得到度量值,從而保證了系統的高性能。

b)核心控制層。包括基本度量計算和表達式解析兩個模塊。基本度量計算模塊實現以下功能:(a)讀取模型,收集用于計算基本度量的相關信息;(b)向度量數據庫中寫入必要信息。表達式解析模塊是本系統的核心模塊,主要完成對組合度量表達式的處理和對度量函數的存儲,從而實現對度量擴展的支持。若用戶選擇定制組合度量,該層則根據組合度量的表達式,從數據庫中讀入必要信息,解析和計算出對應的度量值,并存儲結果;若用戶選擇定制度量函數,該層則實現對該函數的存儲。

c)用戶界面層。主要包含以下三個功能:(a)在本地選擇SA模型;(b)輸入用戶定制的組合度量表達式,該表達式基于數據庫中的度量函數和基本度量;(c)顯示度量結果的列表和度量指標的統計圖,幫助軟件管理者直觀地從現實結果中觀測出軟件在維護、測試、理解、重用等方面的優劣,從而對軟件質量作出直觀地判斷。

SAMT的體系結構如圖1所示。其中實線表示控制流,虛線表示數據流。

3.2 核心模塊

SAMT的核心模塊——表達式解析模塊包括詞法分析、語法分析和結果計算。該模塊采用將詞法分析部分作為語法分析部分的子過程的編譯技術,在需要時,由語法分析部分調用詞法分析部分。詞法分析部分主要完成對單詞token的識別。語法分析部分首先根據度量計算所需的信息編寫BNF范式,繼而完成信息的提取工作。由于Java語言支持遞歸調用,語法分析部分采用遞歸下降分析方法。

語法分析部分所需要的EBNF范式是該模塊實現的關鍵。下面列出了組合度量的EBNF范式:

組合度量::= 基本度量{運算符 常數}|函數表達式| LP組合度量RP|組合度量 運算符 組合度量

函數表達式::= 多元函數名 LP多元函數輸入值 RP|一元函數名LP組合度量RP

多元函數名::=||max|min

一元函數名::=square|sqrt|ln|exp

多元函數輸入值::= 組合度量{COMMA,組合度量}n1|集合 COMMA組合度量運算符::=+|-|×|/

基本度量::= 基本度量函數名LP軟件體系結構元素標志符{COMMA,軟件體系結構元素標志符}|變量{COMMA,變量}RP 

基本度量函數名::=NCPM|NCNM|NPCP|NASC|NSCP|NCSCP| NTCP|NOP| NRP|NRCN| NSCCN| NMR|NSCR|NCPR| NMRR|NRSC| NTM

集合::=集合函數 LP集合函數輸入值 RP|集合 集合運算符 集合|LP集合RP

集合函數::=CPI|CNI|PCPI|CPPI|RCNI|CNRI|PRI|RPI| SCCNI|RSCI

集合函數輸入值::=集合| 軟件體系結構元素標志符

集合運算符::= ∪|∩|—

軟件體系結構元素標志符::=字母| 軟件體系結構元素標志符 {字母數字} ,其中軟件體系結構元素僅為構件、端口、連接件、角色、場景、消息

字母數字::=字母|數字

字母::=a|b|c|…|z

數字::=0|1|2|…|9

LP::=(

RP::=)

COMMA::=,

4 工具應用

基于基本度量和組合運算,SAMT已經可以表示多種體系結構領域主流的組合度量,如構件的扇入扇出消息數、角色間的輸入耦合、構件動態復雜度和系統角色復雜性等。構件的扇出消息數[4]是度量耦合時常用的一個組合度量。

為了減輕用戶定義度量的工作量和難度,SAMT預定義了十余種體系結構度量領域主流的組合度量,如構件的扇出消息數、構件的扇入消息數、系統深度、角色間的輸出耦合、角色間的輸入耦合、構件動態復雜度、系統消息復雜性和系統角色復雜性等。用戶可以基于這些預定義的組合度量和基本度量來定制組合度量,這樣可以方便用戶利用現有的研究成果,而不用總是基于基本度量來定制組合度量;同時可以對用戶定制組合度量提供一定的基礎和指導,從而增強了該工具的實用性與易用性。

5 結束語

本文采用分解—組合的思想,定義了一組軟件體系結構的基本度量,總結歸納了一組較為豐富的組合運算,設計并實現了一個支持度量定制的體系結構度量工具SAMT。該工具能夠支持定制組合度量,提供用戶定制度量函數的存儲和擴展,并可方便地實現基本度量和組合運算的擴展。SAMT的實現在一定程度上解決了體系結構度量領域存在的擴展支持不足的問題。目前,本研究對體系結構的度量主要集中在其最基礎和最重要的行為和結構特征上,而針對某些

特定領域如性能領域的度量,本研究還需進一步擴展,從而支持體系結構的其他特征。因此,在今后的工作中,還需要針對特定領域的特點,對SAMT支持的基本度量和組合運算進行擴展,從而更好地滿足用戶需求。

參考文獻:

[1]梅宏,申峻嶸.軟件體系結構研究進展[J].軟件學報,2006,17(6):12571275.

[2]OQUENDO F.πADL:an architecture description language based on the higherorder typed πcalculus for specifying dynamic and mobile software architectures[J].ACM SIGSOFT Software Engineering Notes,2004,29(3): 114.

[3]MUSKENS J,CHAUDRON M,LANGE C.Investigations in applying metrics to multiview architecture models[C]//Proc of the 30th EUROMICRO Conference.2004:372-379.

[4]BENGTSSON P.Towards maintainability metrics on software architecture:an adaptation of objectoriented metrics[C]//Proc of the1st Nordic Workshop on Software Architecture.Ronneby:[s.n.],1998.

[5]高暉,張莉.軟件體系結構層次的結構度量研究[J].計算機工程與應用,2007,43(24):19-23. [6]NENONEN L,GUSTAFSSON J,PAAKKI J,et al.Measuring objectoriented software architectures from UML diagrams[R].Finland:Dept. of Computer Science,University of Helsinki,2000.

[7]YACOUB S M,AMMAR H H,ROBINSON T.Dynamic metrics for objectoriented designs[C]//Proc of the 6th Int’l Symp on Software Metrics.1999.

[8]GOSEVAPOPSTOJANOVA K,HASSAN A,GUEDEM A,et al.Architecturallevel risk analysis using UML[J].IEEE Trans on Software Engineering, 2003,29(10): 946-960.

[9]CLEMENTS P,BACHMANN F,BASS L.軟件構架編檔[M].朱崇高,譯.北京:清華大學出版社, 2003.

[10]BASS L,CLEMENTS P,KAZMAN R.軟件構架實踐[M].孫學濤,譯.北京:清華大學出版社, 2004.

[11]馮沖,江賀,馮靜芳.軟件體系結構理論與實踐[M].北京:人民郵電出版社,2004.

[12]孫昌愛,金茂忠,劉超.軟件體系結構研究綜述[J].軟件學報,2003,13(7):12281235.

[13]BUSCHMANN F,MEUNIER R,ROHNERT H,et al.面向模式的軟件體系結構 卷1:模式系統[M].賁可榮,譯.北京:機械工業出版社,2003:30-41.

[14]BRITO F,ABREU E.The MOOD metric set[C]//Proc of the ECOOP’95 Workshop on Metrics.1995.

[15]LANKFORD J.Measuring system and software architecture complexity[C]//Proc of IEEE Aerospace Conference.2003

主站蜘蛛池模板: 米奇精品一区二区三区| 婷婷99视频精品全部在线观看| 国产精品久久久久婷婷五月| 日本午夜精品一本在线观看| 青青热久免费精品视频6| 乱系列中文字幕在线视频| 高清码无在线看| 亚洲开心婷婷中文字幕| 国产精品久久久久久久久久久久| 久久黄色影院| 青草精品视频| 久久久久久午夜精品| 免费一级全黄少妇性色生活片| 欧美中文字幕第一页线路一| 91久久国产成人免费观看| 久久这里只有精品免费| 国产午夜在线观看视频| 国产精品主播| 亚洲成人77777| 欧美一区精品| 欧美亚洲中文精品三区| 亚洲va在线观看| 看国产毛片| 不卡午夜视频| 人妻丝袜无码视频| a级高清毛片| 国产欧美另类| 香蕉99国内自产自拍视频| 91亚瑟视频| 亚洲成aⅴ人在线观看| 99热国产在线精品99| 日韩成人午夜| 91麻豆久久久| 久久夜色精品国产嚕嚕亚洲av| 在线色综合| 国产精品手机视频一区二区| 毛片网站免费在线观看| 91精品啪在线观看国产91| 婷婷六月激情综合一区| 18禁黄无遮挡免费动漫网站| 中文字幕在线视频免费| 亚洲第一天堂无码专区| 精品91自产拍在线| 91色爱欧美精品www| 亚洲国产中文在线二区三区免| 日韩av无码DVD| 国产波多野结衣中文在线播放| 人妻21p大胆| 日韩欧美国产三级| 国产精品一区在线麻豆| 制服无码网站| 欧美日韩高清在线| 91蜜芽尤物福利在线观看| 999福利激情视频| 在线亚洲精品自拍| 国产一区二区三区日韩精品 | 中文字幕第1页在线播| 亚洲精品图区| 国产高清无码麻豆精品| 国产精品久久久久久久久| 国产一级无码不卡视频| 日韩成人午夜| 香蕉在线视频网站| 99久久国产自偷自偷免费一区| 欧洲精品视频在线观看| 国产性生大片免费观看性欧美| 免费人成黄页在线观看国产| 日本在线亚洲| 国产成人禁片在线观看| 亚洲经典在线中文字幕| www.99精品视频在线播放| 免费一级全黄少妇性色生活片| 中文字幕无码制服中字| 亚洲精品另类| 欧美综合一区二区三区| 免费无遮挡AV| 免费观看无遮挡www的小视频| 91在线播放免费不卡无毒| 国产精品无码制服丝袜| 欧美人与性动交a欧美精品| 久久成人国产精品免费软件| 国产日韩欧美精品区性色|