




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件體系結(jié)構(gòu)研究綜述
1軟件系統(tǒng)的起源和發(fā)展1.1體系結(jié)構(gòu)技術(shù)自nato于1968年提出惡意軟件概念以來,軟件和硬件行業(yè)提出了一系列理論、方法、語言和工具,解決了軟件開發(fā)過程中的一些問題。然而,軟件固有的復(fù)雜性、易變性和未知性仍然存在,這仍然導(dǎo)致軟件開發(fā)周期長、成本高、成本低的問題。大量實(shí)踐統(tǒng)計(jì)表明,在大軟件開發(fā)中,70%的錯(cuò)誤是在需求和軟件設(shè)計(jì)階段提出的。此外,系統(tǒng)中存在錯(cuò)誤的時(shí)間越長,解決錯(cuò)誤的成本就越高。為了提高軟件需求和軟件設(shè)計(jì)的質(zhì)量,軟件工程界提出了需求分析工程技術(shù)和各種軟件建模技術(shù).但是在需求與設(shè)計(jì)之間仍存在一條很難逾越的鴻溝,即缺乏能夠反映做決策的中間過程,從而很難有效地將需求轉(zhuǎn)換為相應(yīng)的設(shè)計(jì).為此,軟件體系結(jié)構(gòu)概念應(yīng)運(yùn)而生,并試圖在軟件需求與軟件設(shè)計(jì)之間架起一座橋梁,著重解決軟件系統(tǒng)的結(jié)構(gòu)和需求向?qū)崿F(xiàn)平坦地過渡的問題.從機(jī)器語言、匯編語言、過程式程序設(shè)計(jì)語言、面向?qū)ο蟪绦蛟O(shè)計(jì)語言、形式化(半形式化)規(guī)格說明語言(如體系結(jié)構(gòu)描述語言)發(fā)展過程中,可以發(fā)現(xiàn):計(jì)算機(jī)語言越來越適合于開發(fā)人員的思維活動(dòng)模型,代碼復(fù)用的級別也在不斷地提升,如圖1所示.體系結(jié)構(gòu)技術(shù)的研究,使軟件復(fù)用從代碼復(fù)用發(fā)展到設(shè)計(jì)復(fù)用和過程復(fù)用.鑒于軟件體系結(jié)構(gòu)的重要性,D.E.Perry將軟件體系結(jié)構(gòu)視為軟件開發(fā)中第1類重要的設(shè)計(jì)對象,而BarryBoehm明確指出:“在沒有設(shè)計(jì)出體系結(jié)構(gòu)及其規(guī)則時(shí),那么整個(gè)項(xiàng)目不能繼續(xù)下去,而且體系結(jié)構(gòu)應(yīng)該看做是軟件開發(fā)中可交付的中間產(chǎn)品”.由此可見,體系結(jié)構(gòu)在軟件開發(fā)中為不同的人員提供了共同交流的語言,體現(xiàn)并嘗試了系統(tǒng)早期的設(shè)計(jì)決策,并作為系統(tǒng)設(shè)計(jì)的抽象,為實(shí)現(xiàn)框架和構(gòu)件的共享與復(fù)用、基于體系結(jié)構(gòu)的軟件開發(fā)提供了有力的支持.1.2面向?qū)ο蟮膶ο蠓治龇椒ㄜ浖到y(tǒng)的規(guī)模在迅速增大的同時(shí),軟件開發(fā)方法也經(jīng)歷了一系列的變革.在此過程中,軟件體系結(jié)構(gòu)也由最初模糊的概念發(fā)展到一個(gè)漸趨成熟的技術(shù).20世紀(jì)70年代以前,尤其是在以ALGOL68為代表的高級語言出現(xiàn)以前,軟件開發(fā)基本上都是匯編程序設(shè)計(jì).此階段系統(tǒng)規(guī)模較小,很少明確考慮系統(tǒng)結(jié)構(gòu),一般不存在系統(tǒng)建模工作.70年代中后期,由于結(jié)構(gòu)化開發(fā)方法的出現(xiàn)與廣泛應(yīng)用,軟件開發(fā)中出現(xiàn)了概要設(shè)計(jì)與詳細(xì)設(shè)計(jì),而且主要任務(wù)是數(shù)據(jù)流設(shè)計(jì)與控制流設(shè)計(jì).因此,此時(shí)軟件結(jié)構(gòu)已作為一個(gè)明確的概念出現(xiàn)在系統(tǒng)的開發(fā)中.20世紀(jì)80年代初到90年代中期,是面向?qū)ο箝_發(fā)方法興起與成熟階段.由于對象是數(shù)據(jù)與基于數(shù)據(jù)之上操作的封裝,因而在面向?qū)ο箝_發(fā)方法下,數(shù)據(jù)流設(shè)計(jì)與控制流設(shè)計(jì)則統(tǒng)一為對象建模,同時(shí),面向?qū)ο蠓椒ㄟ€提出了一些其他的結(jié)構(gòu)視圖.如在OMT方法中提出了功能視圖、對象視圖與動(dòng)態(tài)視圖(包括狀態(tài)圖和事件追蹤圖);而BOOCH方法中則提出了類視圖、對象視圖、狀態(tài)遷移圖、交互作用圖、模塊圖、進(jìn)程圖;而1997年出現(xiàn)的統(tǒng)一建模語言UML則從功能模型(用例視圖)、靜態(tài)模型(包括類圖、對象圖、構(gòu)件圖、包圖)、動(dòng)態(tài)模型(協(xié)作圖、順序圖、狀態(tài)圖和活動(dòng)圖)、配置模型(配置圖)描述應(yīng)用系統(tǒng)的結(jié)構(gòu).90年代以后則是基于構(gòu)件的軟件開發(fā)階段,該階段以過程為中心,強(qiáng)調(diào)軟件開發(fā)采用構(gòu)件化技術(shù)和體系結(jié)構(gòu)技術(shù),要求開發(fā)出的軟件具備很強(qiáng)的自適應(yīng)性、互操作性、可擴(kuò)展性和可重用性.此階段中,軟件體系結(jié)構(gòu)已經(jīng)作為一個(gè)明確的文檔和中間產(chǎn)品存在于軟件開發(fā)過程中,同時(shí),軟件體系結(jié)構(gòu)作為一門學(xué)科逐漸得到人們的重視,并成為軟件工程領(lǐng)域的研究熱點(diǎn),因而Perry和Wolf認(rèn)為,“未來的年代將是研究軟件體系結(jié)構(gòu)的時(shí)代!”縱觀軟件體系結(jié)構(gòu)技術(shù)發(fā)展過程,從最初的“無結(jié)構(gòu)”設(shè)計(jì)到現(xiàn)行的基于體系結(jié)構(gòu)軟件開發(fā),可以認(rèn)為經(jīng)歷了4個(gè)階段:(1)“無體系結(jié)構(gòu)”設(shè)計(jì)階段:以匯編語言進(jìn)行小規(guī)模應(yīng)用程序開發(fā)為特征;(2)萌芽階段:出現(xiàn)了程序結(jié)構(gòu)設(shè)計(jì)主題,以控制流圖和數(shù)據(jù)流圖構(gòu)成軟件結(jié)構(gòu)為特征;(3)初期階段:出現(xiàn)了從不同側(cè)面描述系統(tǒng)的結(jié)構(gòu)模型,以UML為典型代表;(4)高級階段:以描述系統(tǒng)的高層抽象結(jié)構(gòu)為中心,不關(guān)心具體的建模細(xì)節(jié),劃分了體系結(jié)構(gòu)模型與傳統(tǒng)的軟件結(jié)構(gòu)的界限,該階段以Kruchten提出的“4+1”模型為標(biāo)志.由于概念尚不統(tǒng)一、描述規(guī)范也不能達(dá)成一致認(rèn)識、在軟件開發(fā)實(shí)踐中軟件體系結(jié)構(gòu)尚不能發(fā)揮重要作用,因此,我們認(rèn)為軟件體系結(jié)構(gòu)技術(shù)達(dá)到成熟還需一段時(shí)日.1.3軟件開發(fā)應(yīng)用研究在基于構(gòu)件和體系結(jié)構(gòu)的軟件開發(fā)方法下,程序開發(fā)模式也相應(yīng)地發(fā)生了根本變化.軟件開發(fā)不再是“算法+數(shù)據(jù)結(jié)構(gòu)”,而是“構(gòu)件開發(fā)+基于體系結(jié)構(gòu)的構(gòu)件組裝”.那么,如何描述、表示、設(shè)計(jì)體系結(jié)構(gòu)?如何驗(yàn)證一個(gè)體系結(jié)構(gòu)是否符合期望的系統(tǒng)需求?如何基于體系結(jié)構(gòu)開發(fā)實(shí)例化的軟件系統(tǒng)?將是基于構(gòu)件和體系結(jié)構(gòu)的軟件開發(fā)方法所必須研究和解決的核心問題.歸納現(xiàn)有體系結(jié)構(gòu)的研究活動(dòng),主要包括如下幾個(gè)方面:(1)體系結(jié)構(gòu)理論模型的研究;(2)體系結(jié)構(gòu)描述研究,主要研究體系結(jié)構(gòu)描述語言及其支持環(huán)境、體系結(jié)構(gòu)描述規(guī)范;(3)體系結(jié)構(gòu)設(shè)計(jì)研究:包括體系結(jié)構(gòu)設(shè)計(jì)方法、體系結(jié)構(gòu)風(fēng)格、體系結(jié)構(gòu)設(shè)計(jì)空間等內(nèi)容;(4)體系結(jié)構(gòu)分析與驗(yàn)證:研究如何將軟件的非功能特性轉(zhuǎn)化為體系結(jié)構(gòu)的需求,如何分析體系結(jié)構(gòu)滿足期望的需求的屬性,對體系結(jié)構(gòu)的語法、語義、類型失配等進(jìn)行檢查與驗(yàn)證的研究;(5)體系結(jié)構(gòu)演化與復(fù)用研究:研究產(chǎn)品線中軟件體系結(jié)構(gòu)演進(jìn)的理論與方法,從已有文檔、系統(tǒng)設(shè)計(jì)和代碼中逆向提取軟件體系結(jié)構(gòu)、體系結(jié)構(gòu)復(fù)用等;(6)動(dòng)態(tài)體系結(jié)構(gòu)研究:研究軟件系統(tǒng)由于特殊需要必須在連續(xù)運(yùn)營情況下的體系結(jié)構(gòu)變化與支撐平臺;(7)基于體系結(jié)構(gòu)的軟件開發(fā):研究引入體系結(jié)構(gòu)后的軟件開發(fā)過程、基于體系結(jié)構(gòu)開發(fā)與中間技術(shù)集成、基于體系結(jié)構(gòu)的程序框架自動(dòng)生成技術(shù)等.2軟件系統(tǒng)結(jié)構(gòu)的研究現(xiàn)狀2.1體系結(jié)構(gòu)形式若干軟件體系結(jié)構(gòu)學(xué)者提出了自己的概念與定義,我們將介紹幾個(gè)具有代表性的定義,并分析其共同點(diǎn).然后,根據(jù)我們對軟件體系結(jié)構(gòu)的理解,給出能夠反映軟件體系結(jié)構(gòu)基本特征的定義.定義1.Garlan&Shaw模型:SA={components,connectors,constrains}.構(gòu)件(component)可以是一組代碼,如程序的模塊;也可以是一個(gè)獨(dú)立的程序,如數(shù)據(jù)庫的SQL服務(wù)器.連接器(connector)表示構(gòu)件之間的相互作用.它可以是過程調(diào)用、管道、遠(yuǎn)程過程調(diào)用等.一個(gè)軟件體系結(jié)構(gòu)還包括某些限制(constrain).該模型視角是程序設(shè)計(jì)語言,構(gòu)件主要是代碼模塊.定義2.Perry&Wolf模型:SA={elements,form,rational}.軟件體系結(jié)構(gòu)是由一組元素(elements)構(gòu)成.這組元素分成3類:處理元素(processingelements)、數(shù)據(jù)元素(dataelements)和連接元素(connectingelements).軟件體系結(jié)構(gòu)形式(form)是由專有特性(properties)和關(guān)系(relationship)組成.專有特性用于限制軟件體系結(jié)構(gòu)元素的選擇,關(guān)系用于限制軟件體系結(jié)構(gòu)元素組合的拓?fù)浣Y(jié)構(gòu).而在多個(gè)體系結(jié)構(gòu)方案中選擇合適的體系結(jié)構(gòu)方案往往基于一組準(zhǔn)則(rational).定義3.CFRP模型:SA={elements,interfaces,connections,connectionsemantics}.軟件系統(tǒng)由一組元素構(gòu)成(elements).這組元素分成處理元素和數(shù)據(jù)元素.每個(gè)元素有一個(gè)接口(interface),一組元素的互連(connection)構(gòu)成系統(tǒng)的拓?fù)?元素互連的語義是:靜態(tài)互連語義(如數(shù)據(jù)元素的互連),描述動(dòng)態(tài)連接的信息轉(zhuǎn)換的協(xié)議(如過程調(diào)用,管道等).定義4.Vestal模型:SA={component,idioms/styles,commonpatternsofinteraction}.軟件由構(gòu)件(component)組成,構(gòu)件之間通過通用的互操作模式相連.體系結(jié)構(gòu)風(fēng)格(style)描述了一種通用的設(shè)計(jì)模式,可滿足特定系列的應(yīng)用需求.定義5.IEEE610.12-1990軟件工程標(biāo)準(zhǔn)詞匯中的定義:Architecture={component,connector,environment,principle}.體系結(jié)構(gòu)是以構(gòu)件、構(gòu)件之間的關(guān)系、構(gòu)件與環(huán)境之間的關(guān)系為內(nèi)容的某一系統(tǒng)的基本組織結(jié)構(gòu),以及指導(dǎo)上述內(nèi)容設(shè)計(jì)與演化的原理.定義6.Boehm模型:SA={components,connections,constraints,stakeholders’needs,rationale}.軟件體系結(jié)構(gòu)包含系統(tǒng)構(gòu)件、連接件、約束的集合;反應(yīng)不同人員需求的集合;以及能夠展示由構(gòu)件、連接件和約束所定義的系統(tǒng)在實(shí)現(xiàn)時(shí)如何滿足系統(tǒng)不同人員需求的原理的集合.比較上述各種體系結(jié)構(gòu)的定義可以發(fā)現(xiàn):定義1和定義3都強(qiáng)調(diào)了體系結(jié)構(gòu)是由構(gòu)件、連接件及其約束(或連接語義),即從構(gòu)造的角度來審視軟件體系結(jié)構(gòu).而定義2和定義4側(cè)重于從體系結(jié)構(gòu)風(fēng)格、模式和規(guī)則等角度來考慮軟件體系結(jié)構(gòu),采用的是一種俯瞰的視角.定義5不僅強(qiáng)調(diào)了體系結(jié)構(gòu)系統(tǒng)的基本構(gòu)成,同時(shí)還強(qiáng)調(diào)了體系結(jié)構(gòu)的環(huán)境即與外界的交互.定義6則強(qiáng)調(diào)了軟件體系結(jié)構(gòu)是一組概念以及關(guān)于軟件系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)決策,用來使待開發(fā)的系統(tǒng)在體系結(jié)構(gòu)上滿足重要的功能與質(zhì)量需求.盡管各種定義都從不同的角度關(guān)注軟件體系結(jié)構(gòu),但其核心內(nèi)容都是軟件系統(tǒng)的結(jié)構(gòu),并且都涵蓋了如下一些實(shí)體:構(gòu)件、構(gòu)件之間的交互關(guān)系、限制、構(gòu)件和連接件構(gòu)成的拓?fù)浣Y(jié)構(gòu)、設(shè)計(jì)原則與指導(dǎo)方針.根據(jù)我們對軟件體系結(jié)構(gòu)的理解,將軟件體系結(jié)構(gòu)定義為“在軟件密集的大規(guī)模系統(tǒng)或具有類似需求和結(jié)構(gòu)的軟件產(chǎn)品線的開發(fā)中,必須從一個(gè)較高的層次來考慮組成系統(tǒng)的構(gòu)件、構(gòu)件之間的交互,以及由構(gòu)件與構(gòu)件交互形成的拓?fù)浣Y(jié)構(gòu),這些要素應(yīng)該滿足一定的限制,遵循一定的設(shè)計(jì)規(guī)則,能夠在一定的環(huán)境下進(jìn)行演化而且,軟件體系結(jié)構(gòu)應(yīng)能反映系統(tǒng)開發(fā)中具有重要影響的設(shè)計(jì)決策,便于各種人員的交流,反映多種關(guān)注,據(jù)此開發(fā)的系統(tǒng)能完成系統(tǒng)既定的功能和性能需求.”2.2兩種體系結(jié)構(gòu)研究思路的比較實(shí)踐表明:一個(gè)好的體系結(jié)構(gòu)是系統(tǒng)開發(fā)成功的重要因素.但由于對軟件體系結(jié)構(gòu)的不同見解,不僅導(dǎo)致了上節(jié)討論的軟件體系結(jié)構(gòu)的概念分歧,也使得研究內(nèi)容和研究途徑呈現(xiàn)很大的差異.歸納起來,目前體系結(jié)構(gòu)研究可以分為典型的兩種派別:學(xué)院派與實(shí)用派.學(xué)院派研究者側(cè)重于軟件體系結(jié)構(gòu)形式化理論研究.實(shí)用派研究者將軟件體系結(jié)構(gòu)設(shè)計(jì)、描述與表示同傳統(tǒng)的軟件系統(tǒng)建模視為一體.因此,將軟件建模技術(shù)直接用來描述軟件體系結(jié)構(gòu).典型的思路是:將UML可視化建模技術(shù)直接用來表示軟件體系結(jié)構(gòu).兩種體系結(jié)構(gòu)研究思路的比較見表1.2.3關(guān)于體系描述的描述目前,軟件體系結(jié)構(gòu)研究活動(dòng)主要集中在如下幾個(gè)領(lǐng)域:(1)軟件體系結(jié)構(gòu)描述語言ADL提出了若干適用于特定領(lǐng)域的ADL.典型的有:C2是一種基于構(gòu)件和消息的ADL,適用于大型頻繁交互的層次型圖形用戶界面的軟件的體系結(jié)構(gòu)描述;Darwin和Wright分別將π演算和CSP作為其數(shù)學(xué)基礎(chǔ),適用于分布、并發(fā)類型的體系結(jié)構(gòu)描述;ACME是一種體系結(jié)構(gòu)互換語言,支持從一種ADL向另一種ADL規(guī)格說明轉(zhuǎn)換.其他比較有影響的ADL,如Aesop,Unicon,Rapide,SADL,MetaH,Weaves等.在體系結(jié)構(gòu)描述語言研究方面,國內(nèi)的一些學(xué)者則相應(yīng)地提出了幾種比較有特色的體系結(jié)構(gòu)描述語言,如基于框架和角色模型的軟件體系結(jié)構(gòu)規(guī)約FRADL,多智能體系統(tǒng)體系結(jié)構(gòu)描述語言A-ADL,可視化體系結(jié)構(gòu)描述語言XYX/ADL,基于主動(dòng)連接件的體系結(jié)構(gòu)描述語言Tracer等.Shaw和Garlan則倡導(dǎo)將連接件作為ADL中第一類實(shí)體,同時(shí)還提出一個(gè)好的ADL的框架應(yīng)具備如下幾個(gè)方面的特點(diǎn),即組裝性、抽象性、重用性、可配置、異構(gòu)性、可分析.在此基礎(chǔ)上,Medvidovic提出了一種ADL的分類和比較框架,詳細(xì)分析了多種典型的ADL的優(yōu)點(diǎn)與不足.我們認(rèn)為Medvidovic的工作應(yīng)該算是對當(dāng)前ADL研究的最全面的總結(jié),并為將來的ADL的開發(fā)提供了很有價(jià)值的參考建議.(2)體系結(jié)構(gòu)描述構(gòu)造與表示按照一定的描述方法,用體系結(jié)構(gòu)描述語言對體系結(jié)構(gòu)進(jìn)行說明的結(jié)果則稱為體系結(jié)構(gòu)的表示,而將描述體系結(jié)構(gòu)的過程稱為體系結(jié)構(gòu)構(gòu)造.在體系結(jié)構(gòu)描述方面,Kruchten提出的“4+1”模型是當(dāng)前軟件體系結(jié)構(gòu)描述的一個(gè)經(jīng)典范例,該模型由邏輯視圖、開發(fā)視圖、過程視圖和物理視圖組成,并通過場景將這4個(gè)視圖有機(jī)地結(jié)合起來,比較細(xì)致地描述了需求和體系結(jié)構(gòu)之間的關(guān)系.而Booch則從UML的角度給出了一種由設(shè)計(jì)視圖、過程視圖、實(shí)現(xiàn)視圖和布署視圖,再加上一個(gè)用例視圖構(gòu)成的體系結(jié)構(gòu)描述模型.Medvovonic則總結(jié)了用UML描述體系結(jié)構(gòu)的3種途徑:不改變UML用法而直接對體系結(jié)構(gòu)建模;利用UML支持的擴(kuò)充機(jī)制擴(kuò)展UML的元模型實(shí)現(xiàn)對體系結(jié)構(gòu)建模概念的支持;對UML進(jìn)行擴(kuò)充,增加體系結(jié)構(gòu)建模元素.于衛(wèi)等人研究了其中的第2種方案,其主要思路是提煉5個(gè)軟件體系結(jié)構(gòu)的核心部件,利用UML的擴(kuò)充機(jī)制中的一種給出了相應(yīng)的OCL約束規(guī)則的描述,并且給出了描述這些元素之間關(guān)系的模型.IEEE于1995年成立了體系結(jié)構(gòu)工作組(AWG),綜合了體系結(jié)構(gòu)描述研究成果,并參考業(yè)界的體系結(jié)構(gòu)描述的實(shí)踐,起草了體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)即IEEEP1471.Rational從資產(chǎn)復(fù)用的角度提出了體系結(jié)構(gòu)描述的規(guī)格說明框架(architecturaldescriptionspecification)該建議草案已經(jīng)提交給OMG,可望成為體系結(jié)構(gòu)描述的規(guī)范.IEEEP1471和RationalRAS中的ADS,都提出了體系結(jié)構(gòu)視點(diǎn)(viewpoint)的概念,并從多個(gè)視點(diǎn)描述體系結(jié)構(gòu)的框架.但問題在于:一個(gè)體系結(jié)構(gòu)應(yīng)該從哪幾個(gè)視點(diǎn)進(jìn)行考慮?每個(gè)視點(diǎn)由哪些視構(gòu)成?各種視點(diǎn)應(yīng)當(dāng)使用哪種體系結(jié)構(gòu)描述語言,以及采用哪些體系結(jié)構(gòu)建模和分析技術(shù)等問題都未解決.綜上所述,雖然UML作為一個(gè)工業(yè)化標(biāo)準(zhǔn)的可視化建模語言,支持多角度、多層次、多方面的建模需求支持?jǐn)U展,并有強(qiáng)大的工具支持,確實(shí)是一種可選的體系結(jié)構(gòu)描述語言,但是根據(jù)Medvovonic給出的體系結(jié)構(gòu)語言的框架,UML不屬于體系結(jié)構(gòu)描述語言的范疇.事實(shí)上,判斷一個(gè)語言是否適合用作體系結(jié)構(gòu)描述語言的關(guān)鍵在于,它能否表達(dá)體系結(jié)構(gòu)描述語言應(yīng)該表達(dá)的概念與抽象,如果需要轉(zhuǎn)化,其復(fù)雜性如何.(3)軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證體系結(jié)構(gòu)是對系統(tǒng)的高層抽象,并只對感興趣的屬性進(jìn)行建模.由于體系結(jié)構(gòu)是在軟件開發(fā)過程之初產(chǎn)生的,因此設(shè)計(jì)優(yōu)質(zhì)的體系結(jié)構(gòu)可以減少和避免軟件錯(cuò)誤的產(chǎn)生和維護(hù)階段的高昂代價(jià).體系結(jié)構(gòu)是系統(tǒng)集成的藍(lán)本、系統(tǒng)驗(yàn)收的依據(jù),體系結(jié)構(gòu)本身需要分析與測試,以確定這樣的體系結(jié)構(gòu)是否滿足需求.體系結(jié)構(gòu)分析的內(nèi)容可分為結(jié)構(gòu)分析、功能分析和非功能分析.而在進(jìn)行非功能分析時(shí),可以采用定量分析方法與推斷的分析方法.在非功能分析的途徑上,則可以采用單個(gè)體系結(jié)構(gòu)分析與體系結(jié)構(gòu)比較的分析方法.Kazman等人提出了一種非功能分析的體系結(jié)構(gòu)分析方法SAAM,并運(yùn)用場景技術(shù),提出了基于場景的體系結(jié)構(gòu)分析方法,而Barbacci等人則提出了多質(zhì)量屬性情況下的體系結(jié)構(gòu)質(zhì)量模型、分析與權(quán)衡方法ATAM.體系結(jié)構(gòu)測試著重于仿真系統(tǒng)模型,解決體系結(jié)構(gòu)層的主要問題.由于測試的抽象層次不同,體系結(jié)構(gòu)測試策略可以分為單元/子系統(tǒng)/集成/驗(yàn)收測試等階段的測試策略.在體系結(jié)構(gòu)集成測試階段,Debra等人提出一組針對體系結(jié)構(gòu)的測試覆蓋準(zhǔn)則,如構(gòu)件覆蓋準(zhǔn)則等;文獻(xiàn)給出了基于霍爾公理的構(gòu)件設(shè)計(jì)正確性驗(yàn)證技術(shù),PaolaInveradi則提出一種基于CHAM的體系結(jié)構(gòu)動(dòng)態(tài)語義驗(yàn)證技術(shù).生成一個(gè)滿足軟件需求的體系結(jié)構(gòu)的過程即為體系結(jié)構(gòu)設(shè)計(jì).體系結(jié)構(gòu)設(shè)計(jì)過程的本質(zhì)在于:將系統(tǒng)分解成相應(yīng)的組成成分(如構(gòu)件、連接件);并將這些成分重新組裝成一個(gè)系統(tǒng).具體說來,體系結(jié)構(gòu)設(shè)計(jì)有兩大類方法:過程驅(qū)動(dòng)方法和檢查列表驅(qū)動(dòng)方法.前者包括:(a)面向?qū)ο蠓椒?與OOA/OOD相似,但更側(cè)重接口與交互;(b)“4+1”模型方法;(c)基于場景的迭代方法.應(yīng)該說,基于過程驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法適用范圍廣,易于裁剪,具備動(dòng)態(tài)特點(diǎn),通用性與實(shí)踐性強(qiáng).而問題列表驅(qū)動(dòng)法,其基本思想就是枚舉設(shè)計(jì)空間、并考慮設(shè)計(jì)維的相關(guān)性,以此來選擇體系結(jié)構(gòu)的風(fēng)格.顯然,該方法適用于特定領(lǐng)域,是靜態(tài)的,并可以實(shí)現(xiàn)量化體系結(jié)構(gòu)設(shè)計(jì)空間.如Allen博士的論文專門研究了用戶界面類的量化設(shè)計(jì)空間,提出了19個(gè)功能維,26個(gè)結(jié)構(gòu)維,622條設(shè)計(jì)規(guī)則.體系結(jié)構(gòu)設(shè)計(jì)研究的重點(diǎn)內(nèi)容之一就是體系結(jié)構(gòu)風(fēng)格或者說是體系結(jié)構(gòu)模式,體系結(jié)構(gòu)模式在本質(zhì)上反映了一些特定的元素、按照特定的方式組成一個(gè)特定的結(jié)構(gòu),該結(jié)構(gòu)應(yīng)有利于上下文環(huán)境下的特定問題的解決.體系結(jié)構(gòu)模式分為兩個(gè)大類:固定術(shù)語和參考模型.已知的固定術(shù)語類的體系結(jié)構(gòu)模式包括管道過濾器、客戶服務(wù)器、面向?qū)ο?、黑板、分層、對等模?基于事件調(diào)用方法,隱式調(diào)用,基于推模式)、狀態(tài)轉(zhuǎn)換,以及一些派生的固定術(shù)語類的體系結(jié)構(gòu)模式,包括GenVoca,C2,REST;而參考模型則相對較多,常常與特定領(lǐng)域相關(guān),如編譯器的順序參考模型和并行參考模型、信息系統(tǒng)的參考模型、航空模擬環(huán)境系統(tǒng)的參考模型等等.尚未解決的一個(gè)問題是:體系結(jié)構(gòu)風(fēng)格(模式)與領(lǐng)域之間的關(guān)系是什么?即是不是特定的領(lǐng)域就必須采用某種體系結(jié)構(gòu)風(fēng)格.我們認(rèn)為,體系結(jié)構(gòu)在某個(gè)領(lǐng)域的成功應(yīng)用標(biāo)志著這個(gè)領(lǐng)域的相對成熟.應(yīng)該說,體系結(jié)構(gòu)分析、設(shè)計(jì)和驗(yàn)證已經(jīng)取得了很豐富的研究成果.但是這些方法存在著一個(gè)普遍缺點(diǎn):可操作性差,難于實(shí)用化,因此并沒有取得很好的實(shí)踐效果.(4)軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與復(fù)用軟件體系結(jié)構(gòu)發(fā)現(xiàn)解決如何從已經(jīng)存在的系統(tǒng)中提取軟件的體系結(jié)構(gòu),屬于逆向工程范疇.文獻(xiàn)提出了一種類似于“盲人摸象”的迭代式體系結(jié)構(gòu)發(fā)現(xiàn)過程,即由不同的人員對系統(tǒng)進(jìn)行描述,然后對這些描述進(jìn)行分類并融合,發(fā)現(xiàn)并解除沖突,將體系結(jié)構(gòu)新屬性加入到已有的體系結(jié)構(gòu)模型中,并重復(fù)該過程直至體系結(jié)構(gòu)描述充分.由于系統(tǒng)需求、技術(shù)、環(huán)境、分布等因素的變化而最終導(dǎo)致軟件體系結(jié)構(gòu)的變動(dòng),稱之為軟件體系結(jié)構(gòu)演化.軟件系統(tǒng)在運(yùn)行時(shí)刻的體系結(jié)構(gòu)變化稱為體系結(jié)構(gòu)的動(dòng)態(tài)性,而將體系結(jié)構(gòu)的靜態(tài)修改稱為體系結(jié)構(gòu)擴(kuò)展體系結(jié)構(gòu)擴(kuò)展與體系結(jié)構(gòu)動(dòng)態(tài)性都是體系結(jié)構(gòu)適應(yīng)性和演化性的研究范疇.可以用多值代數(shù)或圖重寫理論來解釋軟件體系結(jié)構(gòu)的演化,文獻(xiàn)專門研究系統(tǒng)的動(dòng)態(tài)可配置特性,提出了電信軟件體系結(jié)構(gòu)動(dòng)態(tài)修改的方案.體系結(jié)構(gòu)的動(dòng)態(tài)性分為有約束的和無約束的以及結(jié)構(gòu)動(dòng)態(tài)性和語義動(dòng)態(tài)性.Darwin和C2都直接支持結(jié)構(gòu)動(dòng)態(tài)性,而CHAM,Wright,Rapide支持語義動(dòng)態(tài)性.在C2中定義有專門支持體系結(jié)構(gòu)修改的描述語言AML,而Darwin對體系結(jié)構(gòu)的修改則采用相應(yīng)的腳本語言,CHAM是通過多值演算實(shí)現(xiàn)系統(tǒng)體系結(jié)構(gòu)的變換,Wright是通過順序通信進(jìn)程CSP描述構(gòu)件的交互語義.體系結(jié)構(gòu)復(fù)用屬于設(shè)計(jì)復(fù)用,比代碼復(fù)用更抽象.一般認(rèn)為易于復(fù)用的標(biāo)準(zhǔn)包括:領(lǐng)域易于理解,變化相對慢,內(nèi)部有構(gòu)件標(biāo)準(zhǔn),與已存在的基礎(chǔ)設(shè)施兼容,在大規(guī)模系統(tǒng)開發(fā)時(shí)體現(xiàn)規(guī)模效應(yīng).由于軟件體系結(jié)構(gòu)是系統(tǒng)的高層抽象,反映了系統(tǒng)的主要組成元素及其交互關(guān)系,因而較算法更穩(wěn)定,更適合于復(fù)用.鑒于軟件體系結(jié)構(gòu)是應(yīng)大系統(tǒng)開發(fā)和軟件產(chǎn)品線技術(shù)而出現(xiàn)的,在其二者之間,我們認(rèn)為:產(chǎn)品線中的體系結(jié)構(gòu)復(fù)用將更有現(xiàn)實(shí)意義,并具有更大的相似性.體系結(jié)構(gòu)模式就是體系結(jié)構(gòu)復(fù)用研究的一個(gè)成果,而體系結(jié)構(gòu)參考模型則是特定域軟件體系結(jié)構(gòu)的復(fù)用的成熟的象征.文獻(xiàn)采用擴(kuò)展數(shù)據(jù)流技術(shù)EDFG,并通過EDFG的細(xì)化與規(guī)格說明,實(shí)現(xiàn)了系統(tǒng)與構(gòu)件的構(gòu)造過程,得出相應(yīng)的體系結(jié)構(gòu)是易于復(fù)用的結(jié)論.總之,復(fù)用技術(shù)作為軟件工程領(lǐng)域倡導(dǎo)的有效技術(shù)之一,在基于構(gòu)件與體系結(jié)構(gòu)的軟件開發(fā)時(shí)代,軟件體系結(jié)構(gòu)復(fù)用將是一個(gè)重要的主題.(5)基于體系結(jié)構(gòu)的軟件開發(fā)方法研究本質(zhì)上,軟件體系結(jié)構(gòu)是對軟件需求的一種抽象解決方案.在引入了體系結(jié)構(gòu)的軟件開發(fā)之后,應(yīng)用系統(tǒng)的構(gòu)造過程變?yōu)椤皢栴}定義→軟件需求→軟件體系結(jié)構(gòu)→軟件設(shè)計(jì)→軟件實(shí)現(xiàn)”,可以認(rèn)為軟件體系結(jié)構(gòu)架起了軟件需求與軟件設(shè)計(jì)之間的一座橋梁.而在由軟件體系結(jié)構(gòu)到實(shí)現(xiàn)的過程中,借助一定的中間件技術(shù)與軟件總線技術(shù),軟件體系結(jié)構(gòu)將易于映射成相應(yīng)的實(shí)現(xiàn).Bass等人提出了一種基于體系結(jié)構(gòu)的軟件開發(fā)過程.而文獻(xiàn)則提出了基于體系結(jié)構(gòu)的開發(fā)模型中軟件體系結(jié)構(gòu)的生命周期模型,文獻(xiàn)討論了一種以6個(gè)體系結(jié)構(gòu)視圖為中心的軟件開發(fā)方式.在基于構(gòu)件和基于體系結(jié)構(gòu)的軟件開發(fā)逐漸成為主流的開發(fā)方法的情況下,已經(jīng)出現(xiàn)了基于構(gòu)件的軟件工程.但是,對體系結(jié)構(gòu)的描述、表示、設(shè)計(jì)和分析以及驗(yàn)證等內(nèi)容的研究還相對不足,隨著需求復(fù)雜化及其演進(jìn),切實(shí)可行的體系結(jié)構(gòu)設(shè)計(jì)規(guī)則與方法將更為重要.(6)特定領(lǐng)域的體系結(jié)構(gòu)DSSA鑒于特定領(lǐng)域的應(yīng)用具有相似的特征,因而經(jīng)過嚴(yán)格設(shè)計(jì),并將直覺的成分減少到最少程度,可以有效地實(shí)現(xiàn)復(fù)用,并可借鑒領(lǐng)域中已經(jīng)成熟的體系結(jié)構(gòu).RickHayes-Roth和WillTracz分別對特定域的體系結(jié)構(gòu)給出了不同的定義.RickHayes-Roth更側(cè)重于DSSA的特征,強(qiáng)調(diào)系統(tǒng)有構(gòu)件組成,適用于特定領(lǐng)域,有利于開發(fā)成功應(yīng)用程序的標(biāo)準(zhǔn)結(jié)構(gòu);WillTracz更側(cè)重于DSSA的組成要素,指出DSSA應(yīng)該包括領(lǐng)域模型、參考需求、參考體系結(jié)構(gòu)、相應(yīng)的支持環(huán)境或設(shè)施、實(shí)例化、細(xì)化或評估的方法與過程.兩種DSSA定義都強(qiáng)調(diào)了參考體系結(jié)構(gòu)的重要性.特定領(lǐng)域的體系結(jié)構(gòu)是將體系結(jié)構(gòu)理論應(yīng)用到具體領(lǐng)域的過程.常見的DSSA有:電信軟件的體系結(jié)構(gòu)研究、CASE體系結(jié)構(gòu)、CAD軟件的參考模型、測試環(huán)境的體系結(jié)構(gòu)、信息系統(tǒng)的參考體系結(jié)構(gòu)、網(wǎng)絡(luò)體系結(jié)構(gòu)DSSA、機(jī)場信息系統(tǒng)的體系結(jié)構(gòu)、信號處理DSSA等.(7)軟件體系結(jié)構(gòu)支持工具基本上,每種體系結(jié)構(gòu)都有相應(yīng)的原型支持工具,如UniCon,Aesop等體系結(jié)構(gòu)支持環(huán)境,C2的支持環(huán)境ArchStudio,支持主動(dòng)連接件的Tracer工具.另外,支持體系結(jié)構(gòu)分析的工具,如支持靜態(tài)分析的工具、支持類型檢查的工具、支持體系結(jié)構(gòu)層依賴分析的工具、支持體系結(jié)構(gòu)動(dòng)態(tài)特性仿真工具、體系結(jié)構(gòu)性能仿真工具等.但與其他成熟的軟件工程環(huán)境相比,軟件體系結(jié)構(gòu)設(shè)計(jì)的支持工具還很不成熟,難于實(shí)用化.3軟件體系結(jié)構(gòu)研究中的困難盡管自1994年召開了首屆軟件體系結(jié)構(gòu)國際研討會以來,軟件體系結(jié)構(gòu)研究領(lǐng)域取得了上述的若干成果,但在應(yīng)用方面,軟件體系結(jié)構(gòu)仍然很不成熟.Medvovonic認(rèn)為,目前對軟件體系結(jié)構(gòu)的理解還僅限于直觀、或當(dāng)作稀奇事、或當(dāng)作民間傳說;語義豐富但不嚴(yán)緊.而第2屆產(chǎn)品線系統(tǒng)的體系結(jié)構(gòu)開發(fā)與演化國際研討會的總結(jié)報(bào)告認(rèn)為,體系結(jié)構(gòu)似乎沒有解決實(shí)際問題.由此可見,若要有效地指導(dǎo)軟件工程實(shí)踐、為軟件開發(fā)提供一個(gè)好的結(jié)構(gòu)及其設(shè)計(jì)結(jié)構(gòu)的指導(dǎo)原則,軟件體系結(jié)構(gòu)研究還有若干問題需要解決.總結(jié)對軟件體系結(jié)構(gòu)的研究,我們認(rèn)為存在如下不足:(1)缺乏統(tǒng)一的軟件體系結(jié)構(gòu)的概念,導(dǎo)致體系結(jié)構(gòu)的研究范疇模糊.例如,學(xué)院派研究者著重考慮體系結(jié)構(gòu)強(qiáng)大的分析能力,而實(shí)用派研究者則過多強(qiáng)調(diào)體系結(jié)構(gòu)應(yīng)該直接支持系統(tǒng)的實(shí)現(xiàn).概念的不統(tǒng)一導(dǎo)致設(shè)計(jì)人員交流上的困難,不利于支持工具的研制,不利于軟件體系結(jié)構(gòu)的應(yīng)用.(2)ADL繁多,缺乏統(tǒng)一的ADL的支持.盡管Shaw等人提出了體系結(jié)構(gòu)互換語言ACME,但沒有統(tǒng)一的體系結(jié)構(gòu)描述語言框架與定義,不同體系結(jié)構(gòu)描述語言所描述的體系結(jié)構(gòu)規(guī)格說明難以互換.N.Medvovonic在分析現(xiàn)存的多種典型ADL基礎(chǔ)上嘗試提出ADL的定義與分類框架,基于該定義與分類框架可以研究并提出統(tǒng)一的ADL.(3)軟件體系結(jié)構(gòu)研究缺乏統(tǒng)一的理論模型支持.盡管提出了若干體系結(jié)構(gòu)語言與其相應(yīng)的理論模型,但還不能系統(tǒng)地解釋軟件體系結(jié)構(gòu)中的重要概念.(4)在體系結(jié)構(gòu)描述方面,盡管出現(xiàn)了多種標(biāo)準(zhǔn)規(guī)范或建議標(biāo)準(zhǔn),但仍很難操作.例如必要的視圖、視點(diǎn)集、或視圖之間的映射關(guān)系還沒有完全解決.(5)有關(guān)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出資入股美甲店合同范本
- 辦公用品合同范本
- 債券非交易過戶合同范本
- 公司住宿協(xié)議合同范本
- 兼勞動(dòng)合同范本
- 2024年臺州海泊薈供應(yīng)鏈有限公司招聘筆試真題
- 制作安裝門窗合同范本
- 中英文加工合同范本
- 企業(yè)果菜訂購合同范例
- 人力勞務(wù)合作合同范本
- 產(chǎn)品結(jié)構(gòu)設(shè)計(jì)概述課件
- 八年級下綜合實(shí)踐教案全套
- 胸痹心痛中醫(yī)診療方案及臨床路徑
- 第8課《山山水水》教學(xué)設(shè)計(jì)(新人教版小學(xué)美術(shù)六年級上冊)
- word 公章 模板
- 泛讀2unit2-music
- 世界技能大賽PPT幻燈片課件(PPT 21頁)
- 中學(xué)生防溺水安全教育課件(PPT 44頁)
- Python程序設(shè)計(jì)ppt課件完整版
- T∕ZSQX 008-2020 建設(shè)工程全過程質(zhì)量行為導(dǎo)則
- 《腹膜透析》ppt課件
評論
0/150
提交評論