目錄
- 前言
- 概述
- 軟體重用
- 可重用的元素
- 構件
- 構件模型(規模——越大越好?越小越好?)
- 構件獲取
- 可重用技術和領域之間的關系
- 構件管理
- 軟體體系結構
- 軟體體系結構的反作用
- 軟體體系結構的商業周期
- 軟體體系結構建模
- 4+1模型視圖
- 邏輯視圖
- 開發視圖
- 行程視圖
- 物理視圖
- 場景
- 軟體體系結構的生命周期
- 軟體體系結構設計核心模型
- 構件
- 構件之間的關系
- 連接件
- 配置
- 軟體體系結構
- 軟體體系結構風格
- 管道過濾器風格
- 資料抽象和面向物件組織
- 事件驅動風格
- 分層系統
- 倉庫系統及知識庫
- 黑板系統
- C2(層次網路+訊息驅動)
- 全域軟體體系結構
前言
按照慣例,在這里寫下我對軟體體系結構的一點理解和認識
軟體工程是一門研究利用工程化的方法,構建維護有效的實用的高質量的軟體的學科,東北林業大學軟體工程專業核心課,就是按照軟體生命周期的課來安排的,將每一個生命周期中的程序都抽象成一門課來給學生講解,軟體體系結構這門課是繼需求分析和系統分析之后的一門課
需求分析教會了我們如何進行需求獲取、需求分析和需求驗證,最后形成需求規格說明書,系統分析教會了我們如何抽象出合理的類圖,而軟體體系結構講的是如何把類抽象成構件以及如何合理的安排這些構件(或者類)
概述
軟體重用
在兩次或多次開發的程序中,重復使用相同或相近的元素的程序
可重用的元素
- 代碼
- 設計檔案
- 測驗用例
- 需求分析檔案
- 框架
- 設計程序
- 領域知識
構件
- 語意完整、語法正確、有可重用價值的單位軟體
- 是軟體重用程序中可明確辨識的系統
- 結構上是語意描述、通信介面和實作代碼的復合體
構件模型(規模——越大越好?越小越好?)
青鳥模型:外部介面+內部介面

構件獲取
- 開發新的構件
- 購買
- 從歷史遺留工程中提取
- 去構件庫中查找需要的構件
- 由現有構件做適應性修改
可重用技術和領域之間的關系
領域具有內聚性和穩定性——前提
可重用資訊具有領域特定性——約束
構件管理
對大量的構件進行有效的管理,方便構建的存盤、檢索和提取
構件的描述;名稱、功能、參考函式、版本號等
關鍵詞法

優點:簡單易行
缺點:不便于查詢
刻面法

優點:方便查找相似構件
缺點:查詢程式太難做
超文本法

優點:操作人性化
缺點:容易差跑題了
軟體體系結構
軟體體系結構為軟體系統提供了一個結構、行為和屬性的高級抽象,由構成系統的元素的描述、這些元素的相互作用、指導元素集成的模式以及這些模式的約束組成,
軟體體系結構不僅指定了系統的組織結構和拓撲結構,并且顯示了系統需求和構成系統的元素之間的對應關系,提供了一些設計決策的基本原理,

軟體體系結構的反作用
- 影響開發組織結構
- 影響開發組織目標
- 影響客戶對下一個系統的要求
- 構建程序中豐富團隊經驗,影響后續設計
- 改變行業人員學習和實踐的技識訓境
軟體體系結構的商業周期

軟體體系結構建模
軟體體系結構的建立應位于需求分析之后,軟體設計之前,在建立軟體體系結構時,設計師主要從結構的角度對整個系統進行分析,選擇恰當的構件、構件間的相互作用以及他們的約束,最后形成一個系統框架以滿足用戶的需求,為軟體設計奠定基礎,
4+1模型視圖

每個視圖只關心系統的一個側面,結合在一起才能反映系統的軟體體系結構的全部內容
在每個視圖上均獨立地應Perry & Wolf 的公式,即定義一個所使用的元素集合(構件、容器、連接件)

邏輯視圖
主要是整個系統的抽象結構表述
關注系統提供最終用戶的功能
不涉及具體的編譯即輸出和部署
通常用BOOCH標記法,或在UML中用類圖表示

開發視圖
主要側重軟體模塊的組織和管理,為編程人員服務
軟體可以通程序式庫或子程式進行組織,從而可以由不同的人員進行開發
主要考慮軟體內部需求,要充分考慮軟體開發的容易程度,重用性,軟體的通用性,充分考慮由于具體開發工具不同而帶來的局限性,

- 常用層次風格
- 采用4-6層子系統
- 僅進行相鄰互動
- 層次越低,通用性應越強

行程視圖
側重系統的運行特性
關注非功能需求(性能、可用性、并發性)
定義邏輯視圖中的各個類的操作是在哪一個執行緒中被執行
可以描述成多層抽象
每個級別分別關注不同的方面
最高層抽象中:行程結構=構成一個執行單元的一組任務 | 獨立、分布 | 通過邏輯網路相互通信


物理視圖
如何把軟體映射到硬體上
關注系統性能、規模、可靠性等



場景
重要系統活動的抽象
最重要的需求抽象
聯系4個視圖

軟體體系結構的生命周期

需求分析階段
體系結構需求包括需求獲取、生成類圖、對類分組、將類打包成構件和需求評審等程序,
建立軟體體系結構階段
選擇合適的體系結構風格,把體系結構需求階段已確認的構件映射到體系結構中,產生一個中間結構,分析構件之間的相互作用和關系,對中間結構進行細化,
設計階段
主要是對系統進行模塊化并決定描述各個構件間的詳細介面、演算法和資料型別的選定,對上支持建立體系結構階段形成的框架,對下提供實作基礎,
實作階段
設計階段設計的演算法及資料型別進行程式語言表示,滿足設計體系結構和需求分析的要求,從而得到滿足設計需求的目標系統,
軟體體系結構設計核心模型

構件
構件定義:構件是一個資料單元或一個計算單元,它由構件的物件的集合、屬性的集合、動作的集合和埠的集合組成,
抽象表示為C = (O,A,X,P),
O 是構件的所有物件的集合;
A 是構件屬性的集合;
X 是構件動作的集合;
P 是構件埠的集合,
構件是具有某種功能的可重用的軟體模版單元
從其內容角度看,表現為:計算元素、資料存盤
從其形式角度看,表現為:原子構件、復合構件
構件的介面:一組埠
構件之間的關系
順序結構(順序運算)
選擇結構(選擇運算)
回圈結構

順序運算定理:

連接件
構件間的互動依據內容分類:
表現為:管道、程序呼叫、事件廣播……
連接件的介面:一組角色
連接件是構件運算的實作,它是一個6元組
<ID,Role,Beha,Msgs,Cons,Non-Func>
其中,Role為連接件和構件的互動點的集合,它由一個四元組定義
Role=<Id,Action,Event,LConstrains>
配置
拓撲邏輯和約束
軟體體系結構
定義:設論域為U,
(1)構件是一個軟體體系結構
(2)連接件是一個軟體體系結構
(3)構件經有限次連接(運算)后是軟體體系結構,
軟體體系結構記為A=<C,O>,其中C表示組成體系結構的構件集合,O表示構件運算的集合
性質:
- 封閉性:即構件與構件、構件與體系結構、體系結構與體系結構連接后仍是一個體系結構,
- 層次性:即體系結構可由構件連接而成,而體系結構又可以再經過連接組成新的更大的體系結構,
- 可擴充性:即一個滿足條件的新構件可以通過連接加入到結構中,
軟體體系結構風格
什么決定了軟體體系結構風格?控制原則、質量屬性
管道過濾器風格

優點:
構件間耦合關系降低,易于分解問題,實作重用
易于維護和擴展
為系統的運行分析提供便捷條件
支持并發計算
缺點:
不適合處理互動頻繁的應用
資料決議、合成麻煩
擴展形式:管線、有界管道、批處理
資料抽象和面向物件組織

優點:
封裝性、便于重用
可實作互動
缺點:
呼叫使得修改被傳播
事件驅動風格

事件:監聽事件、宣告事件
構成:事件消費者、事件生產者、事件管理器

基本結構:
事件監聽介面和事件監聽器
事件監聽的注冊和注銷
特征:
是面向物件風格的變體
事件接觸者不知道哪些構件會被這些事件影響
無法預知和假定構件的處理順序
優點:
為重用提供支持
為系統改進提供方便
缺點:
榷訓了對系統計算的控制能力
有資料共享的負擔
系統邏輯關系復雜
分層系統

每個層次為上一層提供服務
它同時作為用戶呼叫下層的功能
嚴格的分層
半透明的分層
優點:
支持基于抽象程度遞增的系統設計
良好的擴展性
支持重用
缺點:
層次劃分困難
適用性受限
倉庫系統及知識庫
要素:
兩類構件:中央資料單元+外部構件
控制策略:兩類構件間的互動方式
分類:
傳統資料庫型(被動)
黑板系統(主動)
黑板系統

中央資料單元是系統的核心,存盤資料和系統狀態資料
知識源是相互獨立的,通過黑板系統完成互動
控制單元是非獨立單元
優點:
易于增加資料的生產者和消費者
良好的知識庫擴展性
易于保證資料的同步、一致性

C2(層次網路+訊息驅動)
組織規則:
頂、底
構件不能直接相連
連接件之間自由連接
連接件的直接相連是有序的
作業方式:請求+通知
特點:
基底獨立性
構件只見互動只能通過訊息傳遞實作
多執行緒


全域軟體體系結構
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342058.html
標籤:其他
下一篇:InnoDB存盤引擎體系架構
