軟件體系結(jié)構(gòu)_第1頁
軟件體系結(jié)構(gòu)_第2頁
軟件體系結(jié)構(gòu)_第3頁
軟件體系結(jié)構(gòu)_第4頁
軟件體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、軟件體系結(jié)構(gòu)研究綜述 摘要: 近年來,軟件體系結(jié)構(gòu)逐漸成為軟件工程領(lǐng)域的研究熱點以及大型軟件系統(tǒng)與軟件產(chǎn)品線開發(fā)中的關(guān)鍵技術(shù)之一.歸納了軟件體系結(jié)構(gòu)技術(shù)發(fā)展過程及其主要研究方向.在分析了典型的軟件體系結(jié)構(gòu)概念之后,給出了軟件體系結(jié)構(gòu)的定義.通過總結(jié)軟件體系結(jié)構(gòu)領(lǐng)域的若干研究活動,提出了軟件體系結(jié)構(gòu)研究的兩大思路,并從 7 個方面介紹了軟件體系結(jié)構(gòu)研究進展.探討了軟件體系結(jié)構(gòu)研究中的不足之處,并分析其原因.作為總結(jié),給出了軟件體系結(jié)構(gòu)領(lǐng)域最有前途的發(fā)展趨勢. 關(guān) 鍵 詞: 軟件體系結(jié)構(gòu);基于體系結(jié)構(gòu)的軟件開發(fā);軟件體系結(jié)構(gòu)描述語言;軟件體系結(jié)構(gòu)描述方法;軟件體系結(jié)構(gòu)演化;軟件體系結(jié)構(gòu)發(fā)現(xiàn);軟件體

2、系結(jié)構(gòu)分析;軟件體系結(jié)構(gòu)驗證;特定域軟件體系結(jié)構(gòu)(DSSA)目錄1 軟件體系結(jié)構(gòu)起源與發(fā)展31.1 軟件體系結(jié)構(gòu)研究的必要性和重要意義3 1.2 軟件體系結(jié)構(gòu)的發(fā)展史3 1.3 體系結(jié)構(gòu)的主要研究方向52 軟件體系結(jié)構(gòu)的研究現(xiàn)狀52.1 軟件體系結(jié)構(gòu)的有關(guān)定義5 2.2 軟件體系結(jié)構(gòu)研究的不同思路7 2.3軟件體系結(jié)構(gòu)研究的主要內(nèi)容與進展73 軟件體系結(jié)構(gòu)研究存在的不足124 總 結(jié)131 軟件體系結(jié)構(gòu)起源與發(fā)展 1.1 軟件體系結(jié)構(gòu)研究的必要性和重要意義 自 NATO 于 1968 年提出軟件工程概念以來,軟件工程界已經(jīng)提出了一系列的理論、方法、語言和工具,解決了軟件開發(fā)過程中的若干問題.但

3、是,軟件固有的復(fù)雜性、易變性和不可見性,使得軟件開發(fā)周期長、代價高和質(zhì)量低的問題依然存在.大量實踐統(tǒng)計表明:大系統(tǒng)軟件開發(fā)中 70的錯誤是由需求和軟件設(shè)計階段引入的;而且錯誤在系統(tǒng)中存在的時間愈長則愈難發(fā)現(xiàn),解決這些錯誤的代價也愈高. 為了提高軟件需求和軟件設(shè)計的質(zhì)量,軟件工程界提出了需求分析工程技術(shù)和各種軟件建模技術(shù).但是在需求與設(shè)計之間仍存在一條很難逾越的鴻溝,即缺乏能夠反映做決策的中間過程,從而很難有效地將需求轉(zhuǎn)換為相應(yīng)的設(shè)計.為此,軟件體系結(jié)構(gòu)概念應(yīng)運而生,并試圖在軟件需求與軟件設(shè)計之間架起一座橋梁,著重解決軟件系統(tǒng)的結(jié)構(gòu)和需求向?qū)崿F(xiàn)平坦地過渡的問題. 從機器語言、匯編語言、過程式程序

4、設(shè)計語言、面向?qū)ο蟪绦蛟O(shè)計語言、形式化(半形式化)規(guī)格說明語言(如體系結(jié)構(gòu)描述語言)發(fā)展過程中,可以發(fā)現(xiàn):計算機語言越來越適合于開發(fā)人員的思維活動模型,代碼復(fù)用的級別也在不斷地提升,如圖 1 所示.體系結(jié)構(gòu)技術(shù)的研究,使軟件復(fù)用從代碼復(fù)用發(fā)展到設(shè)計復(fù)用和過程復(fù)用. 鑒于軟件體系結(jié)構(gòu)的重要性,D.E.Perry 將軟件體系結(jié)構(gòu)視為軟件開發(fā)中第 1 類重要的設(shè)計對象1,而 Barry Boehm 明確指出:“在沒有設(shè)計出體系結(jié)構(gòu)及其規(guī)則時,那么整個項目不能繼續(xù)下去,而且體系結(jié)構(gòu)應(yīng)該看做是軟件開發(fā)中可交付的中間產(chǎn)品”2.由此可見,體系結(jié)構(gòu)在軟件開發(fā)中為不同的人員提供了共同交流的語言,體現(xiàn)并嘗試了系統(tǒng)

5、早期的設(shè)計決策,并作為系統(tǒng)設(shè)計的抽象,為實現(xiàn)框架和構(gòu)件的共享與復(fù)用、基于體系結(jié)構(gòu)的 二進制位,基本指令,過程行代碼,類代碼行,數(shù)學(xué)構(gòu)造子,機器語言, 匯編語言,過程式程序設(shè)計語言,面向?qū)ο蟪绦蛘Z言,規(guī)格說明語言. Fig.1 Illustration for evolution of computer language and promotion of reuse 圖 1 計算機語言的變遷與復(fù)用的提升圖示 1.2 軟件體系結(jié)構(gòu)的發(fā)展史 軟件系統(tǒng)的規(guī)模在迅速增大的同時,軟件開發(fā)方法也經(jīng)歷了一系列的變革.在此過程中,軟件體系結(jié)構(gòu)也由最初模糊的概念發(fā)展到一個漸趨成熟的技術(shù). 20世紀70年代以前,尤

6、其是在以ALGOL 68為代表的高級語言出現(xiàn)以前,軟件開發(fā)基本上都是匯編程序設(shè)計.此階段系統(tǒng)規(guī)模較小,很少明確考慮系統(tǒng)結(jié)構(gòu),一般不存在系統(tǒng)建模工作.70 年代中后期,由于結(jié)構(gòu)化開發(fā)方法的出現(xiàn)與廣泛應(yīng)用,軟件開發(fā)中出現(xiàn)了概要設(shè)計與詳細設(shè)計,而且主要任務(wù)是數(shù)據(jù)流設(shè)計與控制流設(shè)計.因此,此時軟件結(jié)構(gòu)已作為一個明確的概念出現(xiàn)在系統(tǒng)的開發(fā)中. 20 世紀 80 年代初到 90 年代中期,是面向?qū)ο箝_發(fā)方法興起與成熟階段.由于對象是數(shù)據(jù)與基于數(shù)據(jù)之上操作的封裝,因而在面向?qū)ο箝_發(fā)方法下,數(shù)據(jù)流設(shè)計與控制流設(shè)計則統(tǒng)一為對象建模,同時,面向?qū)ο蠓椒ㄟ€提出了一些其他的結(jié)構(gòu)視圖.如在 OMT 方法中提出了功能視圖

7、、 對象視圖與動態(tài)視圖(包括狀態(tài)圖和事件追蹤圖);而 BOOCH 方法中則提出了類視圖、對象視圖、狀態(tài)遷移圖、交互作用圖、模塊圖、進程圖;而 1997 年出現(xiàn)的統(tǒng)一建模語言 UML 則從功能模型(用例視圖)、靜態(tài)模型(包括類圖、對象圖、構(gòu)件圖、包圖)、動態(tài)模型(協(xié)作圖、順序圖、狀態(tài)圖和活動圖)、配置模型(配置圖)描述應(yīng)用系統(tǒng)的結(jié)構(gòu). 90 年代以后則是基于構(gòu)件的軟件開發(fā)階段,該階段以過程為中心,強調(diào)軟件開發(fā)采用構(gòu)件化技術(shù)和體系結(jié)構(gòu)技術(shù),要求開發(fā)出的軟件具備很強的自適應(yīng)性、互操作性、可擴展性和可重用性.此階段中,軟件體系結(jié)構(gòu)已經(jīng)作為一個明確的文檔和中間產(chǎn)品存在于軟件開發(fā)過程中,同時,軟件體系結(jié)構(gòu)

8、作為一門學(xué)科逐漸得到人們的重視,并成為軟件工程領(lǐng)域的研究熱點,因而Perry和Wolf認為,“未來的年代將是研究軟件體系結(jié)構(gòu)的時代!”3. 縱觀軟件體系結(jié)構(gòu)技術(shù)發(fā)展過程,從最初的“無結(jié)構(gòu)”設(shè)計到現(xiàn)行的基于體系結(jié)構(gòu)軟件開發(fā),可以認為經(jīng)歷了4個階段:(1) “無體系結(jié)構(gòu)”設(shè)計階段:以匯編語言進行小規(guī)模應(yīng)用程序開發(fā)為特征;(2) 萌芽階段:出現(xiàn)了程序結(jié)構(gòu)設(shè)計主題,以控制流圖和數(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)心具體的建模細節(jié),劃分了體系結(jié)構(gòu)模型與傳統(tǒng)的軟件結(jié)構(gòu)的界限,該階段以

9、 Kruchten 提出的“4+1”模型4為標志.由于概念尚不統(tǒng)一、描述規(guī)范也不能達成一致認識、 在軟件開發(fā)實踐中軟件體系結(jié)構(gòu)尚不能發(fā)揮重要作用5,因此,我們認為軟件體系結(jié)構(gòu)技術(shù)達到成熟還需一段時日. 1.3 體系結(jié)構(gòu)的主要研究方向 在基于構(gòu)件和體系結(jié)構(gòu)的軟件開發(fā)方法下,程序開發(fā)模式也相應(yīng)地發(fā)生了根本變化.軟件開發(fā)不再是“算法+數(shù)據(jù)結(jié)構(gòu)”,而是“構(gòu)件開發(fā)+基于體系結(jié)構(gòu)的構(gòu)件組裝”6.那么,如何描述、表示、設(shè)計體系結(jié)構(gòu)?如何驗證一個體系結(jié)構(gòu)是否符合期望的系統(tǒng)需求?如何基于體系結(jié)構(gòu)開發(fā)實例化的軟件系統(tǒng)?將是基于構(gòu)件和體系結(jié)構(gòu)的軟件開發(fā)方法所必須研究和解決的核心問題.歸納現(xiàn)有體系結(jié)構(gòu)的研究活動,主要

10、包括如下幾個方面: (1) 體系結(jié)構(gòu)理論模型的研究; (2) 體系結(jié)構(gòu)描述研究,主要研究體系結(jié)構(gòu)描述語言及其支持環(huán)境、體系結(jié)構(gòu)描述規(guī)范; 1230 Journal of Software 軟件學(xué)報 2002,13(7) (3) 體系結(jié)構(gòu)設(shè)計研究:包括體系結(jié)構(gòu)設(shè)計方法、體系結(jié)構(gòu)風格、體系結(jié)構(gòu)設(shè)計空間等內(nèi)容; (4) 體系結(jié)構(gòu)分析與驗證:研究如何將軟件的非功能特性轉(zhuǎn)化為體系結(jié)構(gòu)的需求,如何分析體系結(jié)構(gòu)滿足期望的需求的屬性,對體系結(jié)構(gòu)的語法、語義、類型失配等進行檢查與驗證的研究; (5) 體系結(jié)構(gòu)演化與復(fù)用研究:研究產(chǎn)品線中軟件體系結(jié)構(gòu)演進的理論與方法,從已有文檔、系統(tǒng)設(shè)計和代碼中逆向提取軟件體系結(jié)

11、構(gòu)、體系結(jié)構(gòu)復(fù)用等; (6) 動態(tài)體系結(jié)構(gòu)研究:研究軟件系統(tǒng)由于特殊需要必須在連續(xù)運營情況下的體系結(jié)構(gòu)變化與支撐平臺; (7) 基于體系結(jié)構(gòu)的軟件開發(fā):研究引入體系結(jié)構(gòu)后的軟件開發(fā)過程、 基于體系結(jié)構(gòu)開發(fā)與中間技術(shù)集成、基于體系結(jié)構(gòu)的程序框架自動生成技術(shù)等. 2 軟件體系結(jié)構(gòu)的研究現(xiàn)狀 2.1 軟件體系結(jié)構(gòu)的有關(guān)定義 若干軟件體系結(jié)構(gòu)學(xué)者提出了自己的概念與定義,我們將介紹幾個具有代表性的定義,并分析其共同點.然后,根據(jù)我們對軟件體系結(jié)構(gòu)的理解,給出能夠反映軟件體系結(jié)構(gòu)基本特征的定義. 定義 1. Garlan & Shaw 模型7: SA=components, connectors,

12、 constrains. 構(gòu)件(component)可以是一組代碼,如程序的模塊;也可以是一個獨立的程序,如數(shù)據(jù)庫的 SQL 服務(wù)器.連接器(connector)表示構(gòu)件之間的相互作用.它可以是過程調(diào)用、管道、遠程過程調(diào)用等.一個軟件體系結(jié)構(gòu)還包括某些限制(constrain).該模型視角是程序設(shè)計語言,構(gòu)件主要是代碼模塊. 定義 2. Perry & Wolf 模型1: SA=elements, form, rational. 軟件體系結(jié)構(gòu)是由一組元素(elements)構(gòu)成.這組元素分成 3 類:處理元素(processing elements)、數(shù)據(jù)元素(data element

13、s)和連接元素(connecting elements).軟件體系結(jié)構(gòu)形式(form)是由專有特性(properties)和關(guān)系(relationship)組成.專有特性用于限制軟件體系結(jié)構(gòu)元素的選擇,關(guān)系用于限制軟件體系結(jié)構(gòu)元素組合的拓撲結(jié)構(gòu).而在多個體系結(jié)構(gòu)方案中選擇合適的體系結(jié)構(gòu)方案往往基于一組準則(rational). 定義 3. CFRP 模型8: SA=elements, interfaces, connections, connection semantics. 軟件系統(tǒng)由一組元素構(gòu)成(elements).這組元素分成處理元素和數(shù)據(jù)元素.每個元素有一個接口(interface),

14、一組元素的互連(connection)構(gòu)成系統(tǒng)的拓撲.元素互連的語義是:靜態(tài)互連語義(如數(shù)據(jù)元素的互連),描述動態(tài)連接的信息轉(zhuǎn)換的協(xié)議(如過程調(diào)用,管道等). 定義 4. Vestal 模型9: SA=component, idioms/styles, common patterns of interaction. 軟件由構(gòu)件(component)組成,構(gòu)件之間通過通用的互操作模式相連.體系結(jié)構(gòu)風格(style)描述了一種通用的設(shè)計模式,可滿足特定系列的應(yīng)用需求. 定義 5. IEEE 610.12-1990 軟件工程標準詞匯中的定義10: Architecture=component, co

15、nnector, 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è)計與演化的原理. 定義 6. Boehm 模型11: SA=components, connections, constraints, stakeholders needs, rationale. 軟件體系結(jié)構(gòu)包含系統(tǒng)構(gòu)件、連接件、約束的集合;反應(yīng)不同人員需求的集合;以及能夠展示由構(gòu)件、連接件和約束所定義的系統(tǒng)在實現(xiàn)時如何滿足系統(tǒng)不同人員需求的原理的集合. 比較上述各種體系結(jié)構(gòu)的定義可以發(fā)現(xiàn):定義1和定義3 都強調(diào)了體系結(jié)構(gòu)是

16、由構(gòu)件、 連接件及其約束(或 孫昌愛 等:軟件體系結(jié)構(gòu)研究綜述 1231 連接語義),即從構(gòu)造的角度來審視軟件體系結(jié)構(gòu).而定義 2 和定義 4 側(cè)重于從體系結(jié)構(gòu)風格、模式和規(guī)則等角度來考慮軟件體系結(jié)構(gòu),采用的是一種俯瞰的視角.定義 5 不僅強調(diào)了體系結(jié)構(gòu)系統(tǒng)的基本構(gòu)成,同時還強調(diào)了體系結(jié)構(gòu)的環(huán)境即與外界的交互.定義 6 則強調(diào)了軟件體系結(jié)構(gòu)是一組概念以及關(guān)于軟件系統(tǒng)結(jié)構(gòu)的設(shè)計決策,用來使待開發(fā)的系統(tǒng)在體系結(jié)構(gòu)上滿足重要的功能與質(zhì)量需求.盡管各種定義都從不同的角度關(guān)注軟件體系結(jié)構(gòu),但其核心內(nèi)容都是軟件系統(tǒng)的結(jié)構(gòu),并且都涵蓋了如下一些實體:構(gòu)件、構(gòu)件之間的交互關(guān)系、限制、構(gòu)件和連接件構(gòu)成的拓撲結(jié)構(gòu)

17、、設(shè)計原則與指導(dǎo)方針. 根據(jù)我們對軟件體系結(jié)構(gòu)的理解,將軟件體系結(jié)構(gòu)定義為“在軟件密集的大規(guī)模系統(tǒng)或具有類似需求和結(jié)構(gòu)的軟件產(chǎn)品線的開發(fā)中,必須從一個較高的層次來考慮組成系統(tǒng)的構(gòu)件、構(gòu)件之間的交互,以及由構(gòu)件與構(gòu)件交互形成的拓撲結(jié)構(gòu),這些要素應(yīng)該滿足一定的限制,遵循一定的設(shè)計規(guī)則,能夠在一定的環(huán)境下進行演化.而且,軟件體系結(jié)構(gòu)應(yīng)能反映系統(tǒng)開發(fā)中具有重要影響的設(shè)計決策,便于各種人員的交流,反映多種關(guān)注,據(jù)此開發(fā)的系統(tǒng)能完成系統(tǒng)既定的功能和性能需求.” 2.2 軟件體系結(jié)構(gòu)研究的不同思路 實踐表明:一個好的體系結(jié)構(gòu)是系統(tǒng)開發(fā)成功的重要因素.但由于對軟件體系結(jié)構(gòu)的不同見解,不僅導(dǎo)致了上節(jié)討論的軟件體

18、系結(jié)構(gòu)的概念分歧,也使得研究內(nèi)容和研究途徑呈現(xiàn)很大的差異. 歸納起來,目前體系結(jié)構(gòu)研究可以分為典型的兩種派別:學(xué)院派與實用派.學(xué)院派研究者側(cè)重于軟件體系結(jié)構(gòu)形式化理論研究.實用派研究者將軟件體系結(jié)構(gòu)設(shè)計、描述與表示同傳統(tǒng)的軟件系統(tǒng)建模視為一體.因此,將軟件建模技術(shù)直接用來描述軟件體系結(jié)構(gòu).典型的思路是:將 UML 可視化建模技術(shù)直接用來表示軟件體系結(jié)構(gòu).兩種體系結(jié)構(gòu)研究思路的比較見表 1. Table 1 Comparison of two different research approaches to software architecture 表 1 兩種不同的體系結(jié)構(gòu)研究思路比較 學(xué)院

19、派研究思路,實用派研究思路,關(guān)注體系結(jié)構(gòu)模型的解析與評估,單個模型,嚴格的建模符號,強有力的分析技術(shù),專門目標的解決方案,與實現(xiàn)無關(guān),關(guān)注廣泛范圍內(nèi)的開發(fā)問題,多個模型集,強調(diào)的是實踐可行性而非精確性,將體系結(jié)構(gòu)看成是開發(fā)中的一幅藍本,通用目的的解決方案,考慮實現(xiàn). 2.3 軟件體系結(jié)構(gòu)研究的主要內(nèi)容與進展 目前,軟件體系結(jié)構(gòu)研究活動主要集中在如下幾個領(lǐng)域: (1) 軟件體系結(jié)構(gòu)描述語言 ADL 提出了若干適用于特定領(lǐng)域的 ADL.典型的有:C2 是一種基于構(gòu)件和消息的 ADL,適用于大型頻繁交互的層次型圖形用戶界面的軟件的體系結(jié)構(gòu)描述12;Darwin13和 Wright14分別將演算和 C

20、SP 作為其數(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ī)約 FRADL15,多智能體系統(tǒng)體系結(jié)構(gòu)描述語言 A-ADL16,可視化體系結(jié)構(gòu)描述語言 XYX/ADL17,基于主動連接件的體系結(jié)構(gòu)描述語言 Tracer18等.Shaw 和 Garlan 則倡導(dǎo)將連接件作為 ADL

21、中第一類實體,同時還提出一個好的 ADL 的框架應(yīng)具備如下幾個方面的特點,即組裝性、抽象性、重用性、可配置、異構(gòu)性、可分析.在此基礎(chǔ)上,Medvidovic 提出了一種 ADL 的分類和比較框架19,詳細分析了多種典型的 ADL 的優(yōu)點與不足.我們認為 Medvidovic 的工作應(yīng)該算是對當前 ADL 研究的最全面的總結(jié),并為將來的 ADL 的開發(fā)提供了很有價值的參考建議. 1232 Journal of Software 軟件學(xué)報 2002,13(7) (2) 體系結(jié)構(gòu)描述構(gòu)造與表示 按照一定的描述方法,用體系結(jié)構(gòu)描述語言對體系結(jié)構(gòu)進行說明的結(jié)果則稱為體系結(jié)構(gòu)的表示,而將描述體系結(jié)構(gòu)的過程

22、稱為體系結(jié)構(gòu)構(gòu)造.在體系結(jié)構(gòu)描述方面,Kruchten 提出的“4+1”模型4是當前軟件體系結(jié)構(gòu)描述的一個經(jīng)典范例,該模型由邏輯視圖、開發(fā)視圖、過程視圖和物理視圖組成,并通過場景將這 4 個視圖有機地結(jié)合起來,比較細致地描述了需求和體系結(jié)構(gòu)之間的關(guān)系. 而 Booch 則從 UML 的角度給出了一種由設(shè)計視圖、過程視圖、實現(xiàn)視圖和布署視圖,再加上一個用例視圖構(gòu)成的體系結(jié)構(gòu)描述模型.Medvovonic 則總結(jié)了用UML描述體系結(jié)構(gòu)的3種途徑:不改變UML用法而直接對體系結(jié)構(gòu)建模;利用 UML 支持的擴充機制擴展 UML 的元模型實現(xiàn)對體系結(jié)構(gòu)建模概念的支持;對 UML 進行擴充,增加體系結(jié)構(gòu)建

23、模元素.于衛(wèi)等人研究了其中的第 2 種方案,其主要思路是提煉 5 個軟件體系結(jié)構(gòu)的核心部件,利用 UML 的擴充機制中的一種給出了相應(yīng)的 OCL 約束規(guī)則的描述,并且給出了描述這些元素之間關(guān)系的模型20. IEEE 于 1995 年成立了體系結(jié)構(gòu)工作組(AWG),綜合了體系結(jié)構(gòu)描述研究成果,并參考業(yè)界的體系結(jié)構(gòu)描述的實踐,起草了體系結(jié)構(gòu)描述框架標準即 IEEE P147121. Rational 從資產(chǎn)復(fù)用的角度提出了體系結(jié)構(gòu)描述的規(guī)格說明框架(architectural description specification)22,該建議草案已經(jīng)提交給 OMG,可望成為體系結(jié)構(gòu)描述的規(guī)范.IEE

24、E P1471 和 Rational RAS 中的 ADS,都提出了體系結(jié)構(gòu)視點(viewpoint)的概念,并從多個視點描述體系結(jié)構(gòu)的框架.但問題在于:一個體系結(jié)構(gòu)應(yīng)該從哪幾個視點進行考慮?每個視點由哪些視構(gòu)成?各種視點應(yīng)當使用哪種體系結(jié)構(gòu)描述語言,以及采用哪些體系結(jié)構(gòu)建模和分析技術(shù)等問題都未解決. 綜上所述,雖然 UML 作為一個工業(yè)化標準的可視化建模語言,支持多角度、多層次、多方面的建模需求,支持擴展,并有強大的工具支持,確實是一種可選的體系結(jié)構(gòu)描述語言,但是根據(jù) Medvovonic 給出的體系結(jié)構(gòu)語言的框架,UML 不屬于體系結(jié)構(gòu)描述語言的范疇.事實上,判斷一個語言是否適合用作體系結(jié)

25、構(gòu)描述語言的關(guān)鍵在于,它能否表達體系結(jié)構(gòu)描述語言應(yīng)該表達的概念與抽象,如果需要轉(zhuǎn)化,其復(fù)雜性如何. (3) 軟件體系結(jié)構(gòu)分析、設(shè)計與驗證 體系結(jié)構(gòu)是對系統(tǒng)的高層抽象,并只對感興趣的屬性進行建模.由于體系結(jié)構(gòu)是在軟件開發(fā)過程之初產(chǎn)生的,因此設(shè)計優(yōu)質(zhì)的體系結(jié)構(gòu)可以減少和避免軟件錯誤的產(chǎn)生和維護階段的高昂代價.體系結(jié)構(gòu)是系統(tǒng)集成的藍本、系統(tǒng)驗收的依據(jù),體系結(jié)構(gòu)本身需要分析與測試,以確定這樣的體系結(jié)構(gòu)是否滿足需求.體系結(jié)構(gòu)分析的內(nèi)容可分為結(jié)構(gòu)分析、功能分析和非功能分析.而在進行非功能分析時,可以采用定量分析方法與推斷的分析方法.在非功能分析的途徑上,則可以采用單個體系結(jié)構(gòu)分析與體系結(jié)構(gòu)比較的分析方法.

26、Kazman 等人提出了一種非功能分析的體系結(jié)構(gòu)分析方法 SAAM23,并運用場景技術(shù),提出了基于場景的體系結(jié)構(gòu)分析方法24,而Barbacci 等人則提出了多質(zhì)量屬性情況下的體系結(jié)構(gòu)質(zhì)量模型、分析與權(quán)衡方法 ATAM25. 體系結(jié)構(gòu)測試著重于仿真系統(tǒng)模型,解決體系結(jié)構(gòu)層的主要問題.由于測試的抽象層次不同,體系結(jié)構(gòu)測試策略可以分為單元/子系統(tǒng)/集成/驗收測試等階段的測試策略.在體系結(jié)構(gòu)集成測試階段,Debra等人提出一組針對體系結(jié)構(gòu)的測試覆蓋準則,如構(gòu)件覆蓋準則等26;文獻27給出了基于霍爾公理的構(gòu)件設(shè)計正確性驗證技術(shù),Paola Inveradi 則提出一種基于 CHAM 的體系結(jié)構(gòu)動態(tài)語義

27、驗證技術(shù)28. 生成一個滿足軟件需求的體系結(jié)構(gòu)的過程即為體系結(jié)構(gòu)設(shè)計.體系結(jié)構(gòu)設(shè)計過程的本質(zhì)在于:將系統(tǒng)分解成相應(yīng)的組成成分(如構(gòu)件、連接件);并將這些成分重新組裝成一個系統(tǒng).具體說來,體系結(jié)構(gòu)設(shè)計有兩大類方法:過程驅(qū)動方法和檢查列表驅(qū)動方法.前者包括:(a) 面向?qū)ο蠓椒?與 OOA/OOD 相似,但更側(cè)重接口與交互;(b) “41”模型方法5;(c) 基于場景的迭代方法.應(yīng)該說,基于過程驅(qū)動的體系結(jié)構(gòu)設(shè)計方法適用范圍廣,易于裁剪,具備動態(tài)特點,通用性與實踐性強.而問題列表驅(qū)動法,其基本思想就是枚舉設(shè)計空間、并考慮設(shè)計維的相關(guān)性,以此來選擇體系結(jié)構(gòu)的風格.顯然,該方法適用于特定領(lǐng)域,是靜態(tài)的

28、,并可以實現(xiàn)量化體系結(jié)構(gòu)設(shè)計空間.如Allen博士的論文專門研究了用戶界面類的量化設(shè)計空間,提出了19個功能維,26個結(jié)構(gòu)維,622條設(shè)計規(guī)則29. 體系結(jié)構(gòu)設(shè)計研究的重點內(nèi)容之一就是體系結(jié)構(gòu)風格或者說是體系結(jié)構(gòu)模式,體系結(jié)構(gòu)模式在本質(zhì)上反 孫昌愛 等:軟件體系結(jié)構(gòu)研究綜述 1233 映了一些特定的元素、按照特定的方式組成一個特定的結(jié)構(gòu),該結(jié)構(gòu)應(yīng)有利于上下文環(huán)境下的特定問題的解決.體系結(jié)構(gòu)模式分為兩個大類:固定術(shù)語和參考模型30.已知的固定術(shù)語類的體系結(jié)構(gòu)模式包括管道過濾器、客戶服務(wù)器、面向?qū)ο?、黑板、分層、對等模?基于事件調(diào)用方法,隱式調(diào)用,基于推模式)、狀態(tài)轉(zhuǎn)換,以及一些派生的固定術(shù)語類

29、的體系結(jié)構(gòu)模式,包括 GenVoca,C2,REST;而參考模型則相對較多,常常與特定領(lǐng)域相關(guān),如編譯器的順序參考模型和并行參考模型、信息系統(tǒng)的參考模型、航空模擬環(huán)境系統(tǒng)的參考模型等等.尚未解決的一個問題是:體系結(jié)構(gòu)風格(模式)與領(lǐng)域之間的關(guān)系是什么?即是不是特定的領(lǐng)域就必須采用某種體系結(jié)構(gòu)風格.我們認為,體系結(jié)構(gòu)在某個領(lǐng)域的成功應(yīng)用標志著這個領(lǐng)域的相對成熟. 應(yīng)該說,體系結(jié)構(gòu)分析、設(shè)計和驗證已經(jīng)取得了很豐富的研究成果.但是這些方法存在著一個普遍缺點:可操作性差,難于實用化,因此并沒有取得很好的實踐效果. (4) 軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與復(fù)用 軟件體系結(jié)構(gòu)發(fā)現(xiàn)解決如何從已經(jīng)存在的系統(tǒng)中提取軟件

30、的體系結(jié)構(gòu),屬于逆向工程范疇.文獻31提出了一種類似于“盲人摸象”的迭代式體系結(jié)構(gòu)發(fā)現(xiàn)過程,即由不同的人員對系統(tǒng)進行描述,然后對這些描述進行分類并融合,發(fā)現(xiàn)并解除沖突,將體系結(jié)構(gòu)新屬性加入到已有的體系結(jié)構(gòu)模型中,并重復(fù)該過程直至體系結(jié)構(gòu)描述充分. 由于系統(tǒng)需求、技術(shù)、環(huán)境、分布等因素的變化而最終導(dǎo)致軟件體系結(jié)構(gòu)的變動,稱之為軟件體系結(jié)構(gòu)演化.軟件系統(tǒng)在運行時刻的體系結(jié)構(gòu)變化稱為體系結(jié)構(gòu)的動態(tài)性,而將體系結(jié)構(gòu)的靜態(tài)修改稱為體系結(jié)構(gòu)擴展.體系結(jié)構(gòu)擴展與體系結(jié)構(gòu)動態(tài)性都是體系結(jié)構(gòu)適應(yīng)性和演化性的研究范疇.可以用多值代數(shù)或圖重寫理論來解釋軟件體系結(jié)構(gòu)的演化,文獻32專門研究系統(tǒng)的動態(tài)可配置特性,提出了

31、電信軟件體系結(jié)構(gòu)動態(tài)修改的方案.體系結(jié)構(gòu)的動態(tài)性分為有約束的和無約束的以及結(jié)構(gòu)動態(tài)性和語義動態(tài)性.Darwin 和 C2 都直接支持結(jié)構(gòu)動態(tài)性,而 CHAM,Wright,Rapide 支持語義動態(tài)性.在 C2 中定義有專門支持體系結(jié)構(gòu)修改的描述語言 AML,而Darwin 對體系結(jié)構(gòu)的修改則采用相應(yīng)的腳本語言,CHAM 是通過多值演算實現(xiàn)系統(tǒng)體系結(jié)構(gòu)的變換,Wright 是通過順序通信進程 CSP 描述構(gòu)件的交互語義. 體系結(jié)構(gòu)復(fù)用屬于設(shè)計復(fù)用,比代碼復(fù)用更抽象.一般認為易于復(fù)用的標準包括:領(lǐng)域易于理解,變化相對慢,內(nèi)部有構(gòu)件標準,與已存在的基礎(chǔ)設(shè)施兼容,在大規(guī)模系統(tǒng)開發(fā)時體現(xiàn)規(guī)模效應(yīng).由于

32、軟件體系結(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)的,在其二者之間,我們認為:產(chǎn)品線中的體系結(jié)構(gòu)復(fù)用將更有現(xiàn)實意義,并具有更大的相似性.體系結(jié)構(gòu)模式就是體系結(jié)構(gòu)復(fù)用研究的一個成果,而體系結(jié)構(gòu)參考模型則是特定域軟件體系結(jié)構(gòu)的復(fù)用的成熟的象征.文獻33采用擴展數(shù)據(jù)流技術(shù)EDFG,并通過EDFG的細化與規(guī)格說明,實現(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ā)時代,軟件體系結(jié)構(gòu)復(fù)用將是一個重要的主題.

33、(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è)計軟件實現(xiàn)”,可以認為軟件體系結(jié)構(gòu)架起了軟件需求與軟件設(shè)計之間的一座橋梁.而在由軟件體系結(jié)構(gòu)到實現(xiàn)的過程中,借助一定的中間件技術(shù)與軟件總線技術(shù),軟件體系結(jié)構(gòu)將易于映射成相應(yīng)的實現(xiàn).Bass等人提出了一種基于體系結(jié)構(gòu)的軟件開發(fā)過程34.而文獻35則提出了基于體系結(jié)構(gòu)的開發(fā)模型中軟件體系結(jié)構(gòu)的生命周期模型,文獻36討論了一種以 6 個體系結(jié)構(gòu)視圖為中心的軟件開發(fā)方式. 在基于構(gòu)件和基于體系結(jié)構(gòu)的軟件開發(fā)逐漸成為主流的開

34、發(fā)方法的情況下,已經(jīng)出現(xiàn)了基于構(gòu)件的軟件工程.但是,對體系結(jié)構(gòu)的描述、表示、設(shè)計和分析以及驗證等內(nèi)容的研究還相對不足,隨著需求復(fù)雜化及其演進,切實可行的體系結(jié)構(gòu)設(shè)計規(guī)則與方法將更為重要. (6) 特定領(lǐng)域的體系結(jié)構(gòu) DSSA 鑒于特定領(lǐng)域的應(yīng)用具有相似的特征,因而經(jīng)過嚴格設(shè)計,并將直覺的成分減少到最少程度,可以有效地實 1234 Journal of Software 軟件學(xué)報 2002,13(7) 現(xiàn)復(fù)用,并可借鑒領(lǐng)域中已經(jīng)成熟的體系結(jié)構(gòu).Rick Hayes-Roth 和 Will Tracz 分別對特定域的體系結(jié)構(gòu)給出了不同的定義.Rick Hayes-Roth 更側(cè)重于 DSSA 的特

35、征,強調(diào)系統(tǒng)有構(gòu)件組成,適用于特定領(lǐng)域,有利于開發(fā)成功應(yīng)用程序的標準結(jié)構(gòu);Will Tracz 更側(cè)重于 DSSA 的組成要素,指出 DSSA 應(yīng)該包括領(lǐng)域模型、參考需求、參考體系結(jié)構(gòu)、相應(yīng)的支持環(huán)境或設(shè)施、實例化、細化或評估的方法與過程.兩種 DSSA 定義都強調(diào)了參考體系結(jié)構(gòu)的重要性. 特定領(lǐng)域的體系結(jié)構(gòu)是將體系結(jié)構(gòu)理論應(yīng)用到具體領(lǐng)域的過程.常見的 DSSA 有:電信軟件的體系結(jié)構(gòu)研究37、CASE 體系結(jié)構(gòu)、CAD 軟件的參考模型、測試環(huán)境的體系結(jié)構(gòu)38、信息系統(tǒng)的參考體系結(jié)構(gòu)、網(wǎng)絡(luò)體系結(jié)構(gòu) DSSA、機場信息系統(tǒng)的體系結(jié)構(gòu)、信號處理 DSSA 等. (7) 軟件體系結(jié)構(gòu)支持工具 基本上

36、,每種體系結(jié)構(gòu)都有相應(yīng)的原型支持工具,如 UniCon,Aesop 等體系結(jié)構(gòu)支持環(huán)境,C2 的支持環(huán)境ArchStudio,支持主動連接件的 Tracer 工具.另外,支持體系結(jié)構(gòu)分析的工具,如支持靜態(tài)分析的工具、支持類型檢查的工具、支持體系結(jié)構(gòu)層依賴分析的工具、支持體系結(jié)構(gòu)動態(tài)特性仿真工具、體系結(jié)構(gòu)性能仿真工具等.但與其他成熟的軟件工程環(huán)境相比,軟件體系結(jié)構(gòu)設(shè)計的支持工具還很不成熟,難于實用化. 3 軟件體系結(jié)構(gòu)研究存在的不足 盡管自 1994 年召開了首屆軟件體系結(jié)構(gòu)國際研討會以來,軟件體系結(jié)構(gòu)研究領(lǐng)域取得了上述的若干成果,但在應(yīng)用方面,軟件體系結(jié)構(gòu)仍然很不成熟.Medvovonic 認

37、為,目前對軟件體系結(jié)構(gòu)的理解還僅限于直觀、或當作稀奇事、或當作民間傳說;語義豐富但不嚴緊.而第 2 屆產(chǎn)品線系統(tǒng)的體系結(jié)構(gòu)開發(fā)與演化國際研討會的總結(jié)報告認為,體系結(jié)構(gòu)似乎沒有解決實際問題5.由此可見,若要有效地指導(dǎo)軟件工程實踐、為軟件開發(fā)提供一個好的結(jié)構(gòu)及其設(shè)計結(jié)構(gòu)的指導(dǎo)原則,軟件體系結(jié)構(gòu)研究還有若干問題需要解決. 總結(jié)對軟件體系結(jié)構(gòu)的研究,我們認為存在如下不足: (1) 缺乏統(tǒng)一的軟件體系結(jié)構(gòu)的概念,導(dǎo)致體系結(jié)構(gòu)的研究范疇模糊.例如,學(xué)院派研究者著重考慮體系結(jié)構(gòu)強大的分析能力,而實用派研究者則過多強調(diào)體系結(jié)構(gòu)應(yīng)該直接支持系統(tǒng)的實現(xiàn).概念的不統(tǒng)一導(dǎo)致設(shè)計人員交流上的困難,不利于支持工具的研制,不利于軟件體系結(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)的理論模型,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論