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

淺談在實現(xiàn)階段的軟件體系結(jié)構(gòu)研究

2010-01-01 00:00:00
電腦知識與技術(shù) 2010年6期

摘要:軟件體系結(jié)構(gòu)的研究已經(jīng)超出傳統(tǒng)的對軟件設計階段的支持,擴展到軟件生命周期的實現(xiàn)階段。在實現(xiàn)階段的研究有基于SA的開發(fā)過程支持、尋求從SA向?qū)崿F(xiàn)過渡的途徑、基于SA的測試技術(shù)等

關(guān)鍵詞:軟件體系結(jié)構(gòu);軟件生命周期;實現(xiàn)階段

On Stage in the Realization of Software Architecture Research

LIAO Lei

(Hunan International Economics University Experimental Center, Changsha 410205, China)

Abstract: Software architecture research has gone beyond the traditional design phase of software support, extended to the implementation phase of software life cycle. In the realization phase of the study the development of SA-based process support and seek to achieve the transition from SA to the way SA-based testing technology

Key words: software architecture; software life cycle; implementation phase

作為控制軟件復雜性、提高軟件系統(tǒng)質(zhì)量,支持軟件開發(fā)和復用的重要手段之一,軟件體系結(jié)構(gòu)自提出以來,日益受到軟件研究者和實踐者的關(guān)注,并發(fā)展成為軟件工程的一個重要的研究領(lǐng)域。如今,軟件體系結(jié)構(gòu)的研究也開始超出傳統(tǒng)的對軟件設計階段的支持。最初的軟件體系結(jié)構(gòu)SA(software chitecture,簡稱SA) 往往只關(guān)注較高層次的系統(tǒng)設計、描述和性質(zhì)驗證,而對縮小從體系結(jié)構(gòu)層次到系統(tǒng)實現(xiàn)(如代碼)層次的鴻溝關(guān)注不夠。為了有效實現(xiàn)從SA設計向?qū)崿F(xiàn)的轉(zhuǎn)換,實現(xiàn)階段的體系結(jié)構(gòu)研究在以下幾個方面進行探索:1) 研究基于SA的開發(fā)過程支持,如項目組織結(jié)構(gòu)、配置管理等;2) 尋求從SA向?qū)崿F(xiàn)過渡的途徑,如將程序設計語言元素引入SA階段、模型映射、構(gòu)件組裝、復用中間件平臺等;3) 研究基于SA的測試技術(shù)。下面主要談論從SA設計模型到系統(tǒng)實現(xiàn)的過渡。

1 從SA設計模型到系統(tǒng)實現(xiàn)的過渡

為了填補高層SA 模型和底層實現(xiàn)之間的鴻溝,研究者們提出了若干方法,其主要思想是盡量封裝底層的實現(xiàn)細節(jié),并通過模型轉(zhuǎn)換、精化等手段縮小概念之間的差距。有以下幾類典型的方法:1) 在SA模型中引入實現(xiàn)階段的概念,如引入程序設計語言元素等;2) 通過模型轉(zhuǎn)換技術(shù),將高層的SA模型逐步精化成能夠支持實現(xiàn)的模型;3) 封裝底層的實現(xiàn)細節(jié),使之成為較大粒度構(gòu)件,在SA指導下通過構(gòu)件組裝的方式實現(xiàn)系統(tǒng),這往往需要底層中間件平臺的支持。

1.1 在SA模型中引入實現(xiàn)階段的概念

設計階段模型一般用ADL來加以描述,為了促進從設計模型向?qū)崿F(xiàn)階段的轉(zhuǎn)化,可以在設計階段引入實現(xiàn)階段的概念,即在ADL 中引入與實現(xiàn)相關(guān)的元素.文獻[1]提出了一種新型的體系結(jié)構(gòu)描述語言ArchJava,該ADL是Java語言的擴展,在Java語言中增加了構(gòu)件、連接子、端口等建模元素用于描述SA模型,文獻[2]又將ArchJava和Acme結(jié)合起來,并提供支持工具AcmeStudio,可以在設計階段直接采用Java語言元素進行建模,從而縮短了ADL與程序設計語言的距離。文獻[3]將面向?qū)ο蟮念愋拖到y(tǒng)引入到C2 SADL中,并可以在設計階段通過OO的類、子類型化等概念來規(guī)約SA建模元素。在文獻[4]所提出的xADL2中,在構(gòu)件、連接子等基本建模元素的基礎(chǔ)上引入了抽象實現(xiàn)的擴展機制作為實現(xiàn)細節(jié)的占位符,允許SA 設計人員定義與平臺或語言(如CORBA,Java等)相關(guān)的數(shù)據(jù)類型、函數(shù)聲明等,從而可以在自動化工具的支持下,從SA模型無縫過渡到系統(tǒng)實現(xiàn)。文獻[5]中所提出的ABC/ADL,借鑒程序設計語言中的類型。實例關(guān)系,區(qū)分類型圖和(實例)配置圖,從而有利于體系結(jié)構(gòu)模型到程序設計語言的轉(zhuǎn)換。上述4種ADL將實現(xiàn)相關(guān)信息引入ADL的描述之中,雖然有利于從設計到實現(xiàn)的轉(zhuǎn)換,但需要在ADL中引入諸如類型系統(tǒng)等細節(jié)信息,增加了ADL的復雜程度;另一方面也要求設計人員必須考慮到實現(xiàn)細節(jié),在一定程度上增加了設計人員的工作量。

1.2 代碼生成和模型轉(zhuǎn)換

從設計階段的SA模型向代碼的轉(zhuǎn)換,是將設計階段的SA模型逐步精化的過程.目前的解決方案或者將高層SA模型直接映射成為程序代碼,或者經(jīng)過一系列中問模型的轉(zhuǎn)換,漸進地映射到程序代碼。

在工具支持下,不少ADL提供了從SA模型直接映射到代碼的機制。如C2 SADL允許將體系結(jié)構(gòu)設計的建模元素映射到OO程序設計語言,并提供了C++和Java的程序庫將SA設計時規(guī)約的概念構(gòu)件、概念連接子等映射到實際的OO類和類之間的關(guān)聯(lián).Rapidet允許將SA設計規(guī)約映射成為某一子語言(sub—anguage)實現(xiàn)或者常見的程序設計語言C++和Ada等。除了上述特定的ADL之外,文獻[6]定義了從通用體系結(jié)構(gòu)描述語言ACME向CORBA的映射規(guī)則,如將System映射成為Module,將Component,Port映射成為Interface等,將用ACME規(guī)約的體系結(jié)構(gòu)模型映射到CORBAIDL。從ADL向程序代碼的映射需要考慮若干問題,包括建立從SA建模元素到目標語言元素的映射關(guān)系、確保映射過程中的語義正確性、提供自動化的轉(zhuǎn)換工具或環(huán)境等。但由于ADL通常在較高的層次規(guī)約系統(tǒng)的行為,缺乏實現(xiàn)層次上的細節(jié)說明,通過直接的映射將ADL轉(zhuǎn)化成為程序語言往往只能生成較為簡單的程序代碼框架。所以,為了填補從SA 設計到實現(xiàn)細節(jié)的鴻溝,研究者們提出了通過逐步精化SA設計模型,將SA設計規(guī)約轉(zhuǎn)換成為實際的系統(tǒng)實現(xiàn)的方法。

1.3 構(gòu)件組裝

在SA 設計模型的指導下,選擇合適的可復用構(gòu)件進行組裝,可以在較高層次上實現(xiàn)系統(tǒng),并能夠提高系統(tǒng)實現(xiàn)的效率。在構(gòu)件組裝的過程中,SA設計模型起到了系統(tǒng)藍圖的作用。現(xiàn)階段,通過構(gòu)件組裝實現(xiàn)SA設計模型主要關(guān)注兩方面的內(nèi)容:1) 如何支持可復用構(gòu)件的互聯(lián),即對SA 設計模型中規(guī)約的連接子的實現(xiàn)提供支持;2) 在組裝過程中,如何檢測并消除體系結(jié)構(gòu)失配問題。

1.3.1 對設計階段連接子的支持

不少ADL支持在實現(xiàn)階段將連接子轉(zhuǎn)換到具體的程序代碼或系統(tǒng)實現(xiàn),如UniCon定義了Pipe,F(xiàn)ileIO,ProcedureCall等7種內(nèi)建的連接子類型,它們在設計階段被實例化,并可以在實現(xiàn)階段在工具的支持下轉(zhuǎn)化成為具體的實現(xiàn)機制,如過程調(diào)用、操作系統(tǒng)數(shù)據(jù)訪問、Unix管道和文件、遠程過程調(diào)用等。另外支持從SA模型生成代碼的體系結(jié)構(gòu)描述語言,如C2 SADL,Rapide等,也都提供了一定的機制生成連接子的代碼。但是,這種通過生成連接子代碼復用構(gòu)件的方式存在著通信完整性(communication integrity)的問題,要求所復用的構(gòu)件必須滿足一定的約束,而這種約束必須通過手工來保證,容易產(chǎn)生錯誤。近年來,隨著構(gòu)件標準化工作的開展和中間件技術(shù)的發(fā)展,這一問題得到了改善。

1.3.2 檢測并消除體系結(jié)構(gòu)失配

體系結(jié)構(gòu)失配問題由David Gaflan等人在1995年提出。失配是指在軟件復用的過程中,由于待復用構(gòu)件對最終系統(tǒng)的體系結(jié)構(gòu)和環(huán)境的假設(assumption)與實際狀況不同而導致的沖突。在基于SA 的構(gòu)件組裝階段,失配問題主要包括:1) 由構(gòu)件引起的失配,包括由于系統(tǒng)對構(gòu)件基礎(chǔ)設施、構(gòu)件控制模型和構(gòu)件數(shù)據(jù)模型的假設存在沖突引起的失配;2) 由連接子引起的失配,包括由于系統(tǒng)對構(gòu)件交互協(xié)議、連接子數(shù)據(jù)模型的假設存在沖突引起的失配;3) 由于系統(tǒng)成分對全局體系結(jié)構(gòu)的假設存在沖突引起的失配等。要解決失配問題。首先需要檢測出失配問題,并在此基礎(chǔ)上通過適當?shù)氖侄蜗龣z測出的失配問題。

失配的檢測關(guān)注在SA和構(gòu)件已經(jīng)存在的前提下,檢查構(gòu)件與構(gòu)件之間、構(gòu)件與體系結(jié)構(gòu)規(guī)約之間是否存在不匹配的情況。失配的檢測一般包括:1)基于構(gòu)件規(guī)約的檢測一一檢測待復用構(gòu)件的規(guī)約是否和SA模型的對構(gòu)件的要求相匹配。構(gòu)件規(guī)約描述了構(gòu)件從外部可見的特性,一般由構(gòu)件的接口描述、接口語義約束等構(gòu)成。研究者們針對特定的ADL和風格提出了若干檢測規(guī)約匹配的規(guī)則,如Rapidet 基于子類型化的概念。定義了函數(shù)匹配和接口匹配的規(guī)則;C2風格研究小組則針對C2風格定義了請求服務P匹配提供服務Q的規(guī)則[7]。以上幾種規(guī)約匹配都有相應的自動化工具的支持;2)基于構(gòu)件特征的檢測標識待復用的構(gòu)件特征,并分析這些特征之間可能引起的失配問題。AAA是基于構(gòu)件特征的檢測的典型方法,該方法首先定義了構(gòu)件的14種概念性特征,如可重入性、并發(fā)性、動態(tài)性、封裝性、控制單元、響應時間等;然后,應用這些特征來描述待復用構(gòu)件,可以得出“特征.構(gòu)件”表;進一步根據(jù)這些特征本身存在的約束,如“兩個共享變量的并發(fā)線程隱含著同步的問題”,AAA方法總結(jié)了46種可能的失配情形,根據(jù)“特征.構(gòu)件”表就可以檢測可能存在的失配。基于特征的檢測重點和難點都在于尋找到適當?shù)臉?gòu)件特征集合,這是一項需要豐富經(jīng)驗的活動。在得出特征集合后,就可以通過窮舉的方式得出這些特征可能引起的失配問題;3)基于構(gòu)件行為的檢測一一采用形式化方法顯式描述構(gòu)件行為,以用于檢測失配。形式化方法能夠從特定的角度刻畫構(gòu)件的行為及其約束,一般均提供自動化工具來檢測構(gòu)件行為之間可能產(chǎn)生的失配。這類失配檢測方法一般沿用第1.3節(jié)所介紹的基于形式化的SA分析方法。由于掌握形式化方法需要專業(yè)的培訓,從而基于構(gòu)件行為的檢測存在實用性和擴展性方面的問題。如果將這些方法應用到大規(guī)模系統(tǒng),則會出現(xiàn)描述復雜、難以理解和運用等問題。

失配的消除是指通過對待復用構(gòu)件或者待復用構(gòu)件所處的環(huán)境進行調(diào)整,以消除存在的體系結(jié)構(gòu)失配。文獻[7]介紹了消除兩個構(gòu)件之間失配的8種方法;文獻[8]介紹了調(diào)整構(gòu)件代碼以消除失配的3種方法。已有的消除失配的方法包括面向構(gòu)件的失配消除和面向連接子的失配消除。面向構(gòu)件的失配消除的基本思想是:在已有構(gòu)件的基礎(chǔ)上應用適當?shù)男薷幕驍U展機制,獲得符合復用環(huán)境要求的新構(gòu)件。最常見的失配消除方法包括包裝(wrapper)、協(xié)商(negotiation)、引入中間表示和構(gòu)件擴展技術(shù)等。包裝是指將一個構(gòu)件用另一種抽象包裝起來,客戶程序?qū)υ摌?gòu)件的訪問需要通過包裝進行;協(xié)商是指當失配的構(gòu)件具有多個可選的交互方式(或數(shù)據(jù)表示、接口)時,通過協(xié)商選擇彼此均能接受的交互方式(或數(shù)據(jù)表示、接口);引入中間表示包括引入中間語言表示(如用IDL定義失配構(gòu)件的接口)和引入標準數(shù)據(jù)交換格式(如用XML定義失配構(gòu)件的數(shù)據(jù)表示)兩種方式;構(gòu)件擴展技術(shù)指通過Plug.In,Add.In等擴展技術(shù)動態(tài)擴展待復用構(gòu)件,以適應與之失配的構(gòu)件的要求。面向連接子的失配消除的基本思想是:通過引入恰當?shù)倪B接子(如用于轉(zhuǎn)換和輔助交互的連接子)來消除某些構(gòu)件交互過程中產(chǎn)生的失配。常見的連接子有橋接(bridge)、中介程序(mediator)、仲裁者(arbitrator)等。橋接將任意構(gòu)件的某些需要的假設轉(zhuǎn)換成另外某些構(gòu)件提供的假設;中介程序兼有包裝和橋接的特點,一般有明確的獨立于失配構(gòu)件的實現(xiàn)體,負責協(xié)調(diào)構(gòu)件在數(shù)據(jù)流和控制流上的失配;仲裁者用于在失配發(fā)生時通過仲裁機制消除失配。雖然存在多種體系結(jié)構(gòu)失配的消除方法,但目前還缺乏系統(tǒng)化的方法來指導這些方法的使用。

1.4 結(jié)合模型轉(zhuǎn)換與構(gòu)件組裝

代碼生成和模型轉(zhuǎn)換可以視為過程復用,而構(gòu)件組裝則是產(chǎn)品復用的典型代表,這是兩種互補的方式。在實際應用中,通過將這兩種方式結(jié)合起來。可以兼有兩者的優(yōu)點,從而提高從SA 設計模型到系統(tǒng)實現(xiàn)轉(zhuǎn)換的效率和質(zhì)量。如在ABC方法中。將SA描述作為構(gòu)件開發(fā)的框架和組裝系統(tǒng)的藍圖,將中間件技術(shù)作為構(gòu)件組裝所得系統(tǒng)的運行時支撐,使用一系列的映射規(guī)則(如從體系結(jié)構(gòu)描述語言ABC/ADL映射到UML的建模元素)和工具來縮短設計和實現(xiàn)問的距離,自動進行從設計到實現(xiàn)的轉(zhuǎn)換。

2 總結(jié)

在研究者和實踐者的共同努力與推動下,如今SA 的研究已經(jīng)滲透到軟件生命周期的各個階段,并取得了豐碩的研究成果。與軟件工程研究中其他領(lǐng)域(如結(jié)構(gòu)化方法、面向?qū)ο蠓椒?一樣,體系結(jié)構(gòu)的研究首先關(guān)注軟件生命周期的一個階段(設計),然后逐步過渡到設計之后的階段(實現(xiàn)、部署、后開發(fā)),最后再關(guān)注設計之前的階段(需求分析),從而成為覆蓋各階段的一整套方法。各階段的研究成果也按照這種發(fā)展結(jié)構(gòu)分布。隨著軟件系統(tǒng)的規(guī)模逐步擴大,體系結(jié)構(gòu)在實際軟件開發(fā)中的作用也日益顯著,因而應該進一步加強SA在軟件生命周期各個階段的研究與實踐。另一方面,Internet技術(shù)的發(fā)展促使新的軟件形態(tài)一一網(wǎng)構(gòu)軟件的出現(xiàn)。網(wǎng)構(gòu)軟件為了適應開放、動態(tài)和多變的運行環(huán)境,呈現(xiàn)出柔性、多目標和連續(xù)反應式的形態(tài)。這會導致網(wǎng)構(gòu)軟件的體系結(jié)構(gòu)和組成構(gòu)件處于不斷的調(diào)整和適應的過程中,從而帶來了在新的環(huán)境下研究新型SA的需求。

參考文獻:

[1] Aldrich J,Chambers C,Notkin D.ArchJava:Connecting software architecture to implementation[C]//Proc. of the 24th Int'1 Conf.on Software Engineering.New York:ACM Press,2002:187-197.

[2] Abi-Antoun M,Aldrich J,Garlan D,et al.Modeling and implementing software architecture with acmeand archJava.In:Proc.of the Int'1 Conf.on Software Engineering[M].New York:ACM Press,2005.676-677.

[3] Medvidovic N,Oreizy P,Robbins J E,et al.Using object-oriented typing to support architectural design in the C2 style[C]//Proc. of the 4th ACM SIGSOFT Symp.on Foundations of Software Engineering.New York:ACM Press,1996:24-32.

[4] Dashofy E M,Hock A.Taylor R N.A comprehensive approach for the development of modular software architecture descriptionlanguages[J].ACM Trans. on Software Engineering and Methodology,2005,26(1):199-245.

[5] Mei H,Chen F,Wang Q X,et al.ABC/ADL:An ADL supporting component composition[Z].LNCS 2495,2002:38-47.

[6] Rodrigues U,Lucena L,Batista T.From acme to CORBA:Bridging the gap[Z].LNCS 3047,2004:103-114.

[7] Egyed A,Medvidovic N,Gacek C.Component-Based perspective on software mismatch detection and resolution[J].1EE Proc. of Software,2000,147(6):225-236.

[8] Bass L,Clements P,Kazman R.Software Architecture in Practice[M].2nd ed.Boston:Addison Wesley Professional,2003.

主站蜘蛛池模板: 无码精品国产dvd在线观看9久| 人妻丰满熟妇αv无码| 亚洲成人黄色在线观看| 亚洲日韩图片专区第1页| 综合亚洲网| 在线观看av永久| 国产激情第一页| 中文字幕在线看| 毛片手机在线看| 国产欧美一区二区三区视频在线观看| 国产在线视频自拍| 国产精品久久精品| 欧美日韩精品综合在线一区| 亚洲精品综合一二三区在线| 91久久精品日日躁夜夜躁欧美| 99久久精品国产综合婷婷| 97久久精品人人| 无码日韩精品91超碰| 色婷婷天天综合在线| 色135综合网| 岛国精品一区免费视频在线观看| 久久无码av三级| 美女啪啪无遮挡| 中文国产成人精品久久一| 永久免费AⅤ无码网站在线观看| 999精品视频在线| 国产幂在线无码精品| 国产一级妓女av网站| 香蕉综合在线视频91| 中文字幕在线观看日本| 欧美日韩北条麻妃一区二区| 免费看久久精品99| 国产精品分类视频分类一区| 国产在线日本| 国产精品一区在线麻豆| 一区二区影院| 亚洲 日韩 激情 无码 中出| 亚洲天堂日韩av电影| 精品久久香蕉国产线看观看gif| 亚洲人视频在线观看| 亚洲国产第一区二区香蕉| 国产精品无码作爱| 久久精品一品道久久精品| 国产人人射| 日本国产精品一区久久久| 亚洲人成网7777777国产| 久久精品国产在热久久2019 | 国产成人综合日韩精品无码不卡| 亚洲人成网7777777国产| 黄色网站在线观看无码| 国产日韩精品欧美一区喷| 亚洲人成影视在线观看| 亚洲成a人片在线观看88| 波多野结衣一区二区三区88| 国产精选小视频在线观看| 91精品最新国内在线播放| 久久黄色一级视频| 天堂av综合网| 国产特级毛片aaaaaaa高清| 日韩欧美一区在线观看| 午夜免费视频网站| 成年免费在线观看| 91精品综合| 狠狠v日韩v欧美v| 国产又色又爽又黄| 国产波多野结衣中文在线播放| 亚洲国产成人综合精品2020| 全午夜免费一级毛片| 尤物特级无码毛片免费| 手机精品福利在线观看| 国产福利影院在线观看| 欧美成人一级| 91成人免费观看| 91色在线观看| 最新国语自产精品视频在| 成年午夜精品久久精品| 91视频精品| 国产人成在线观看| 青青草一区| 欧美啪啪网| 国产一区二区丝袜高跟鞋| 高清无码一本到东京热|