軟件體系結構概述

軟件體系結構概述

1.軟件的本質特徵、軟件工程與軟件體系結構之間的關係

如何設計、描述、評價軟件的結構是軟件開發過程中的重要內容,也是軟件體系結構研究的核心內容。

軟件 = 程序 + 數據 + 文檔

  • 程序:計算機可以接受的一系列指令,運行時可以提 供所要求的功能和性能。
  • 數據:使得程序能夠適當地操作信息的數據結構。
  • 文檔:描述程序的研製過程、方法和使用的圖文資料

2.軟件危機的表現及原因

軟件的本質特性:複雜性、一致性、可變性、不可見性等特性,其結果導致在60年代軟件開發過程變得難以控制,開發團隊如同在焦油坑中掙扎的巨獸,即所謂的軟件危機

爲了解決軟件危機,兩大主流思想應運而生:

形式化的方法
軟件工程的思想:這個思想的引入曾經極大地緩解了軟件危機。(1968年NATO會議)

**軟件危機(software crisis)😗*軟件開發和維護過程中遇到的一系列嚴重問題。

軟件危機的表現:{大括號裏面是原因}

軟件成本日益增加

開發進度難以控制{沒有系統的設計,軟件需求需求管理混亂}

軟件質量差{開發人員的不專業,技術不成熟}

軟件維護困難{未遵循軟件開發規範,設計隨意高耦合性,牽一髮動全身}

軟件工程:較低的開發成本;按時完成開發任務並及時交付

實現客戶要求的功能

具有良好的性能、可靠性、可擴展性、可移植性;

軟件維護費用低


3.軟件體系結構的核心設計內容、定義、基本組成要素、軟件體系結構的發展史

  1. 軟件系統設計的5個核心內容:

    體系結構設計
    模塊設計(對象或類設計)
    用戶界面設計
    數據庫設計
    數據結構和算法設計(詳細設計)
    
  2. 定義

    軟件體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件、數據構件和連接構件。處理構件負責對數據進行加工,數據構件是被加工的信息,連接構件把體系結構的不同部分組合連接起來。
    
  3. 基本組成要素

    構件、連接件、約束
    
  4. 軟件體系結構發展史

    
    

問題定義——需求開發——軟件設計——軟件構造——軟件測試

面向服務:在應用表現層次上將軟件構件化,即應用業務過程由服務組成,而服務由構件組裝而成。

面向構件:尋求比類的梨度更大的且易於複用的構件,期望實現軟件的再工程。

面向對象:以類爲基本程序單元,對象是類的實例化,對象之間以消息傳遞爲基本手段。

面向過程:以算法作爲基本構造單元,強調自頂向下的功能分解,將功能和數據進行一定程度的分離。

4.軟件體系結構和軟件需求的關係:

體系結構實意軟件需求的實現爲設計藍圖,軟件需求,尤其是非功能需求,對軟件體系結構具有關鍵性的塑性作用。

5.軟件體系結構和詳細設計的關係:

詳細設計是針對 未展開模塊的局部設計 只能實現,不能更改體系結構中規定的模塊的對外接口和外部行爲;

其必須爲詳細設計提供可操作的指導和充分的約束

6.軟件體系結構的設計目標:

可重用性:複用已經實現了的體系結構,或提供可重用資產
可擴展性:增加新的功能
可改變性:降低耦合性,適應於需求變更
簡單性:複雜問題簡單化,讓工程易於開發人員理解和實現
有效性:體現早期設計決策,展現系統滿足需求的能力

7.構件複用

**1.**傳統工業的標準件的複用;{螺絲釘,鋼材等}是很好的複用提高了效率

2.軟件的複用 ——可重用構件**

​ 指兩次或多次不同軟件開發過程中重複使用相同或相近軟件元素的過程。

​ **軟件元素:**程序代碼、測試用例、設計文檔、設計過程、需求分析文檔和領域分析知識。

​ 軟件重用不僅是對程序的重用,它包括對軟件生產過程中任何活動所產生的成品的重用。如:項目 計劃、可行性報告、需求定義、分析模型、詳細說明、源程序和測試用例等等。(聰明的抄抄改改)

能複用的構件也叫可重用構建

構件具有多種形態:類、函數、功能模塊、文檔、框架、設計模式、測試用例等
構件具有多種層次:分析件、設計件、代碼件、運行件等
構件需要多方面描述:名稱、屬性、對外接口、所需接口等
構件的特點:接口與實現分離,通過接口提供服務或進行彼此交互,接口不依賴於具體實現

3.軟件重用的級別:

代碼的重用<<<<<<<<<<<設計結果的重用<<<<<<<<<<<<<<<分析結果的重用(低到高)


代碼的重用:目標代碼和源代碼的複用.連接和綁定,OLE(對象鏈接及嵌入)


設計結果的重用:受實際環境影響小,可重用機會多,所需修改少


分析結果的重用:可被重用的分析結果是針對問題域的某些事物或某些問題的抽象程度更高的解法。受設計技術及實現條件的影響很少

4.軟件重用的優點

(1)提高軟件生產率,降低軟件生產代價;    
(2)提高軟件質量;
(3)互操作性好;
(4)推動標準化;
(5)支持原型開發。

5.軟件系統典型的複用設計思路

首先確定系統的體系結構,定義系統中的構件及構件間的交互。
然後細化構件的接口和內部結構,形成條件規約。
最後根據構件規約查找可複用構件資產或新開發構件組裝形成系統。

6.構件的開發與構件庫

開發構件:當一個構件通用性很高的時候,也不能滿足不同需求和不同的運行環境,那麼就得改,所以在開發構件的時候就應該爲構件的修改和調整埋下伏筆。這樣構件的靈活,重用,擴展,改變性機會顯著提高,這也是軟件體系結構的設計目標

構件庫(Component Library):對可重用構件的存儲管理

構件庫系統:構建的存儲、管理、檢索、以及庫的瀏覽和維護{分類方法和檢索方法}

7.構件的分類方法-構件庫的管理

  1. 關鍵字分類法

    將應用領域的概念按照從抽象到具體的順序逐次分解爲樹狀或有向無迴路圖結構,每個概念用一個描述性的關鍵字表示

  2. 刻面分類法

    一個刻面描述構件某一個方面的特徵。刻面分類則是從不同的側面對構件進行分類,每一種分類方式稱爲一個刻面。不同的刻面根據其重要性可以設置不同的優先級。

  3. 超文本組織法

    所有構件必須輔以詳盡的功能或行爲說明文檔,說明中出現的重要概念以網狀鏈接方式相互連接。

8.構件的檢索方法-構件庫的管理

構件庫中檢索一個構件和在數據庫中檢索一個記錄是不同的。
構件庫檢索的不確定性帶來兩種相互矛盾的結果:

檢索的結果可能是一個較大的構件集合,要從中找到所需的構件仍然很費力;

檢索得到的集合沒有把真正需要的構件包括在內。
解決方法:
(一)一般構件庫系統能對提出的檢索條件作廣義解釋。
 建立同義詞對照表,例如“商品銷售”、“售貨”、“賣貨”看作一組同義詞;
建立近意詞對照表,例如把“商業”、“商場”、“連鎖店”看作一組近意詞。
系統首先匹配同義詞,再匹配近意詞,都可以被包括到廣義結果集合中。

(二)使檢索得到的構件集合儘可能不包括對用戶無用的構件。
  增加更多的刻面與構件屬性:較多的刻面和屬性值,將得到更小的子集合文集,減輕最終發現和確認所需構件的難度;
建立構件關鍵詞:根據構件內容提煉關鍵詞,如同學術論文的關鍵詞,反映有關構件內容的一些主要信息。
例如,找功能構件的關鍵詞有“壓入”、“彈出”、“後進先出”等等。如果通過刻面和構件屬性得到的構件子集較大,可用關鍵詞作進一步的檢索,以縮小搜索範圍。

9.基於構件的開發

用這種組裝技術時,開發人員首先應對目標軟件系統進行功能分解,將系統分解爲強內聚、鬆耦合的功能模塊。然後根據各模塊的功能需求提取構件,對它進行適應性修改後再掛接在上述功能分解框架中。

庫中的構件以子程序/過程/函數的形式出現,並且接口說明必須清晰。
採用子程序調用和參數傳遞的方式將構件組裝起來。

先根據當前軟件問題的核心數據結構設計出一個框架。
再根據框架中各結點的需求提取構件並進行適應性修改,
最後將構件逐個分配至框架中的適當位置。

構件的組裝方式仍然是傳統的子程序調用與參數傳遞。這種組裝技術也要求庫中構件以子程序形式出現,但它所依賴的軟件設計方法不再是功能分解,而是面向數據的設計方法,例如Jackson系統開發方法。

10.構件模型與實現

構件模型:
是爲開發者定義軟件構件而建立的體系結構和API集,使開發者可通過軟件構件的動態組合來建立應用系統。
以形式化方式描述了構件的結構、語義和非功能特性,是分析和評價構件行爲和性能的依據。
構件模型 = 構件+容器
構件:具有可重用特性的基本軟件部件
容器:用於存放、管理構件,支持構件的執行和構件間的 交互
開發構件模型的目的:
重用,高層開發,通過工具進行自動化開發,簡化開發過程。

11.工業界成熟的構件實現模型

CORBA(公共對象請求代理體系結構)   OMG
爲解決分佈式環境下不同硬件設備和軟件系統互聯,增強網絡間軟件的互操作性而提出的。
是最完整、最清晰,跨平臺最多的構件模型(大而全,互操作性和開放性非常好)
缺點: 龐大而複雜,並且技術和標準的更新相對較慢
EJB(Enterprise javaBean):一種基於Java的構件標準
用於開發和部署多層結構的、分佈式的、面向對象的Java應用系統的跨平臺的構件體系結構
RMI(Remote Method Invocation)
遠程方法調用——>JavaBean——>J2EE(EJB)
能在開發工具中被可視化操作的、可重用的軟件構件
COM/COM+/DCOM模型
- 微軟開發構件對象模型,提供了運行於Windows操作系統之上的單個應用中使用不同廠商生產的對象的規約。 
- 包括規範和實現兩部分。規範部分定義了構件和構件之間通信的機制,不依賴於任何語言和操作系統;COM庫是實現部分。
- COM平臺效率比較高,有一系列相應的開發工具支持,應用開發相對簡單
--COM的跨平臺性較差

Web Service模型
- 以HTTP協議和XML語言爲基礎,類似於CORBA或RPC的一種新的分佈式應用模型。
- Web Service具有通用、可交互的優勢。
微服務

構件、構件模型、基於構件軟件開發過程的理解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章