【正文】
而體系結構重用是屬于比代碼重用更高級的設計重用。重用是軟件工程領域所倡導的有效技術之一,體系結構級的重用會導致大批構件的重用,不僅極大地提高了軟件開發(fā)的效率、降低了軟件開發(fā)的成本,而且對于提高多種軟件質(zhì)量都有很大的作用。 169。 12 2022/2/16 ( 5)基于體系結構的軟件開發(fā)方法 在本質(zhì)上,軟件體系結構是對軟件需求的一種抽象解決方案。在引入了體系結構的軟件開發(fā)之后,應用系統(tǒng)的構造過程變?yōu)? “問題定義 —— 軟件需求 —— 軟件體系結構 —— 軟件實現(xiàn)”, 可以認為軟件體系結構架起了軟件需求和軟件設計之間的一座橋梁。在基于構件和軟件體系結構的軟件開發(fā)逐漸成為主流的開發(fā)方法的情況下,已經(jīng)出現(xiàn)了基于構件的軟件工程。 169。 13 2022/2/16 ( 6)特定領域的軟件體系結構 特定領域的軟件體系結構( Domain Specific Software Architecture,簡稱為 DSSA)是一門以軟件重用為核心,研究軟件應用框架的獲取、表示和應用等問題的軟件方法學。 DSSA將軟件體系結構理論應用到具體領域,因為特定領域的應用具有相似的特征,所以可以借鑒領域中己經(jīng)成熟的軟件體系結構。通過特定領域的軟件體系結構,可以實現(xiàn)解決方法在某個領域內(nèi)的重用。 169。 14 2022/2/16 ( 7)軟件體系結構支持工具 幾乎每一種軟件體系結構描述語言都有相應的支持工具,如Unicon, Aesop等體系結構支持環(huán)境, C2的支持環(huán)境ArchStudio等。除了軟件體系結構描述語言的支持工具外,還有一些基于軟件體系結構的開發(fā)方法的支持工具,例如ABC( architecturebased ponent position)是一種基于軟件體系結構面向構件的軟件開發(fā)方法, ABCTool就是 ABC方法的支持工具。另外還有一些支持體系結構靜態(tài)分析的工具、體系結構性能仿真工具等,但是與其他成熟的軟件開發(fā)環(huán)境相比,體系結構的支持工具還不是很實用。 169。 15 2022/2/16 ( 8)軟件產(chǎn)品線體系結構 軟件體系結構的開發(fā)是大型軟件系統(tǒng)開發(fā)的關鍵環(huán)節(jié),對于軟件產(chǎn)品線的開發(fā)來說更是具有至關重要的作用。在這種開發(fā)生產(chǎn)中,基于同一個軟件體系結構,可以創(chuàng)建具有不同功能的多個系統(tǒng)。在軟件產(chǎn)品族之間共享體系結構和一組可重用的構件,可以降低開發(fā)和維護的成本。 169。 16 2022/2/16 2 SA的定義 ? “There is no standard, universallyaccepted definition of the term, for software architecture is a field in its infancy, although its roots run deep in software engineering. ” 軟件體系結構尚處在發(fā)展期,對于其定義,目前學術界尚未形成統(tǒng)一意見,不同學者有不同看法。 169。 17 2022/2/16 SA的定義 ? Booch, Rumbaugh, and Jacobson, 1999: An architecture is the set of significant decisions about the anization of a software system, the selection of the structural elements and their interfaces by which the system is posed, together with their behavior as specified in the collaborations among those elements, the position of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this anizationthese elements and their interfaces, their collaborations, and their position (The UML Modeling Language User Guide, AddisonWesley, 1999). ? 體系結構是一系列重要決策的集合,這些決策與以下內(nèi)容相關:軟件的組織,構成系統(tǒng)的結構元素及其接口的選擇,這些元素在相互協(xié)作中明確表現(xiàn)出的行為,這些結構元素和行為元素進一步組合構成的更大規(guī)模的子系統(tǒng),和引導這一組織 —— 包括這些元素及其接口、它們的協(xié)作、它們的組合 —— 的體系結構風格。 169。 18 2022/2/16 SA的定義 定義 1: (Booch& Rumbaugh& Jacobson定義 ) 軟件體系結構= {組織,元素,子系統(tǒng),風格 } 169。 19 2022/2/16 SA的定義 定義 2: (Bass定義 ) Bass等人在 《 Software Architecture in Practice》一書中提到,程序或計算系統(tǒng)的軟件體系結構是系統(tǒng)的一個或多個結構,包括軟件構件 (ponents)、構件的外部可視屬性 (propenies)和構件之間的關系。 這里的外部可視屬性,是指其他構件認為該構件所具備的特征,如所提供的服務、具有的性能特點、錯誤處理機制、共享資源的用法等。要注意的是,此定義中,特意未指明什么是構件,什么是關系。構件既可以是對象,也可以是進程,還可以是函數(shù)庫,或是數(shù)據(jù)庫。 169。 20 2022/2/16 SA的定義 定義 3: (Shaw定義 ) 在第一屆軟件系統(tǒng)體系結構國際討論會上 ,Mary Shaw對于當時術語使用的混亂情況予以了澄清 。 從會議論文中 , Shaw整理出他們的定義和觀點 , 并對當時的各種觀點作了如下的分類 : 結構模型;框架模型;動態(tài)模型;過程模型 。 169。 21 2022/2/16 SA的定義 (1)結構模型 結構模型認為 , 軟件體系結構由構件 、 構件之間的連接和一些其他方面組成 。 這些方面包括如下幾類: ●