軟體架構設計
- 軟體架構設計
-
- 軟體架構的概念
- 軟體架構風格
- 架構描述語言ADL
- 特定領域的架構DSSA
-
- 基本活動
- 領域分析人員
- 三層次模型
- 基于架構的軟體開發方法ABSD
- 軟體架構評估
-
- 品質屬性
- 評估方式
- 重要概念
- 評估方法:基于場景的方式
-
- 軟體架構分析法SAAM
- 機構權衡分析法ATAM
- 産品線
-
- 模型
- 建立方式
- 成功因素
- 構件與中間技術
-
- 構件與對象概念
- 構件複用
- 中間件優點
- Web架構設計
軟體架構設計
軟體架構的概念
- 軟體架構風格描述-特定應用領域中系統組織方式的慣用模式。架構風格定義一個系統家族。即一個體系結構定義一個詞彙表和一組限制,詞彙表中包含一些構件和連接配接體類型,而這組的限制展現出系統是如何将這些構件和連接配接件組合起來的。
- 軟體架構的作用
- 是項目關系人進行交流的手段
- 是早期設計決策的展現
- 是可傳遞和可重用的模型
- 對開發的知道和規範化意義不容忽略
- 軟體架構模組化
- 結構模組化
- 架構模組化
- 動态模組化
- 過程模組化
- 功能模組化
- 軟體架構模組化(類UML)
- 邏輯視圖——最終使用者:功能需求——UML:邏輯視圖
- 開發視圖——程式設計人員:軟體管理——UML:實作視圖
- 程序視圖——系統內建人員:性能、可擴充性、吞吐量——UML:程序視圖
- 實體視圖——系統工程人員:安裝、通信——UML:部署視圖
- 場景——UML:用例視圖
軟體架構風格
- 架構設計的一個核心問題是能夠達到架構級的軟體複用
- 架構風格反映了領域中衆多系統所共有的結構和語義特性,并指導如何将各個構件有效的組織成一個完整的系統
- 5大類
- 資料流風格
- 批處理序列
- 管道-過濾器
- 調用/傳回風格
- 主程式/子程式
- 面向對象
- 層次結構
- 獨立構件
- 程序通信
- 事件驅動系統
- 虛拟機風格
- 解釋器
- 基于規則的系統
- 倉庫風格
- 資料庫系統
- 黑闆系統
- 文本系統
- 資料流風格
架構描述語言ADL
三個基本元素
- 構件
- 連接配接件
- 架構配置
特定領域的架構DSSA
基本活動
- 領域分析——目的:建立領域模型
- 領域設計——目的:擷取DSSA
- 領域實作——目的:開發群組織可複用資訊
領域分析人員
- 領域專家——提供領域中系統的需求規約和實作的知識
- 領域分析人員
- 領域設計人員
- 領域實作人員
三層次模型
- 領域開發環境——領域架構師
- 領域特定的應用開發環境——應用工程師
- 應用執行環境——操作員
基于架構的軟體開發方法ABSD
- 是架構驅動的,強調由業務、品質和功能需求組合的架構設計
- ABSD方法是遞歸的,且疊代的每一個步驟都是清洗地定義的
- 三個基礎
- 功能分解
- 選擇架構分格實作品質和業務需求
- 領域模型的使用
- 開發過程
- 架構需求
- 需求擷取
- 辨別構件
- 生成視圖
- 對類進行分組
- 把類打包成構件
- 需求評審
- 架構設計
- 提出架構模型
- 将辨別的構件映射到模型中
- 分析構件的互相作用
- 生成軟體架構
- 設計評審
- 架構文檔化
- 架構複審
- 架構實作
- 分析與設計
- 構件實作
- 構件組裝
- 系統測試
- 架構演化
- 需求變化歸納
- 制定演化計劃
- 構件變動
- 更新構件的互相作用
- 構件組裝與測試
- 技術評審
- 架構需求
軟體架構評估
品質屬性
- 性能
- 即系統的響應能力,經過多長時間才能對事件作出響應
- 設計政策、資源排程、優先政策
- 可用性
- 系統能夠正常運作的時間比例,經常用兩次故障之間的時間長度或在出現故障時系統能夠恢複正常的速度表示
- 設計政策:備援、心跳
- 可靠性
- 可修改性
- 指能夠快速的以較高的性能價格對系統進行變更的能力
- 設計政策:資訊隐藏、接口實作隔離
- 安全性
- 系統能夠在向合法使用者提供服務的同時能夠阻止非授權使用者使用的企圖或拒絕服務的能力
- 設計政策:追蹤審計
評估方式
重要概念
- 風險點——指架構設計中潛在的,存在問題的架構決策所帶來的隐患
- 敏感點——為實作某種特定的品質屬性,一個或多個構件所具有的特性
- 權衡點——影響多個品質屬性的特性,是多個品質屬性的敏感點
評估方法:基于場景的方式
軟體架構分析法SAAM
- 形成場景
- 描述架構
- 對場景的分類和确定優先級
- 對場景進行單個評估
- 評估場景的互相作用
- 形成總體評價
機構權衡分析法ATAM
- 場景和需求收集——描述和介紹階段
- 架構視圖和場景實作——調查和分析階段
- 屬性模型分析和構造——測試階段
- 屬性模型折中——報告階段
産品線
模型
- 雙生命周期模型
- 現有系統需求
- 領域分析
- 領域設計
- 領域實作
- 新系統需求
- 需求分析
- 系統設計
- 系統實作
- SE模型
- 領域工程
- 應用工程
- 三生命周期模型
- 企業工程
- 領域工程
- 應用工程
建立方式
- 演化方式
- 逐漸演化
- 減少風險
- 增入較大
- 革命方式
- 直接替換
- 風險較大
- 增入較少
成功因素
- 對該領域具有長期和深厚的經驗
- 一個用于建構産品的好的核心資源庫
- 好的産品線架構
- 好的管理支援
構件與中間技術
構件與對象概念
- 構件
- 獨立部署單元
- 作為第三方的組裝單元
- 沒有可見狀态
- 對象
- 一個執行個體單元,具有唯一的标志
- 封裝了自己的狀态和行為
- 可能具有狀态,此狀态外部可見
構件複用
- 檢索與提取構件
- 了解與評價構件
- 修改構件
- 組裝構件
- 組裝失配
中間件優點
- 面向需求——精力于業務邏輯本身
- 接口與實作隔離——構件對外發生作用或構件間互動,都是通過接口進行的,構件使用者隻需要知道構件的接口,而不關心其内部的實作,這是設計與實作分離的關鍵
- 業務的分隔和包容性——可按不同的業務進行功能劃分
- 設計與實作隔離
- 軟體複用
- 負責連接配接和通信,高效通信機制
- 提供互操作機制
- 屏蔽差異
Web架構設計
- 架構——MVC、MVP、MVVM、REST、WebService、微服務
- 緩存——Redis、Memcache、squid
- 開發分流——叢集、CDN
- 資料庫——主從複制、記憶體資料庫、反規範化設計、NoSQL、分庫分表
- 持久化——Mybatis、Hibernate
- 分布存儲——hadoop、HDFS、FastDFS、區塊鍊