Fundamentals of Software Architecture:An Engineering Approach学习笔记
目錄
1、總覽
2、介紹
2.1 定義
2.2 架構(gòu)師要求
2.3 軟件架構(gòu)定理
3、架構(gòu)思維
4、模塊化
?4.1 定義
4.2 衡量模塊化
?4.2.1 內(nèi)聚性測(cè)量
4.2.2 耦合性測(cè)量
4.2.3 關(guān)聯(lián)性(共生性)
5、定義架構(gòu)特征
5.1 三標(biāo)準(zhǔn)
5.2 運(yùn)營(yíng)類(lèi)架構(gòu)特征
?5.3 結(jié)構(gòu)型架構(gòu)特征
5.4 交叉/橫切類(lèi)架構(gòu)特征
6、識(shí)別架構(gòu)特征
7、測(cè)量和治理架構(gòu)特征
8、架構(gòu)特征范圍
9、基于組件思維
9.1 組件范圍
9.2 架構(gòu)師角色
9.3 開(kāi)發(fā)者角色
9.4 組件識(shí)別流程
9.5 組件設(shè)計(jì)
10、分層架構(gòu)
10.1 拓?fù)?/p>
10.2 架構(gòu)特征
11、Pipeline架構(gòu)樣式
11.1 拓?fù)?/p>
11.2 架構(gòu)特征
12、微內(nèi)核架構(gòu)樣式
?12.1 拓?fù)?/p>
12.2 架構(gòu)特征
13、基于服務(wù)的架構(gòu)樣式
?13.1 拓?fù)?/p>
13.2 拓?fù)渥凅w
13.3 架構(gòu)特征
14、事件驅(qū)動(dòng)架構(gòu)樣式
14.1 拓?fù)?/p>
14.2 基于請(qǐng)求與基于事件的選擇
14.3 架構(gòu)特征
15、基于空間架構(gòu)樣式
15.1 拓?fù)?/p>
15.2 復(fù)制緩存與分布式緩存的選擇
15.3 架構(gòu)特征
16、編排驅(qū)動(dòng)的面向服務(wù)架構(gòu)樣式
16.1 拓?fù)?/p>
16.2 架構(gòu)特征
17、微服務(wù)架構(gòu)樣式
17.1 拓?fù)?/p>
17.2 架構(gòu)特征
18、選擇合適的架構(gòu)樣式
18.1 考慮因子
18.2 決策
19、架構(gòu)決策
19.1 反模式
19.2 架構(gòu)重點(diǎn)
19.3 架構(gòu)決策記錄
20、分析架構(gòu)風(fēng)險(xiǎn)
20.1 風(fēng)險(xiǎn)矩陣
20.2 風(fēng)險(xiǎn)風(fēng)暴
21、圖表化和演示架構(gòu)
21.1 圖表化
21.1.1 工具
21.1.2 圖表繪制標(biāo)準(zhǔn)
21.1.3?圖表指導(dǎo)原則?
21.2 演示
22、使團(tuán)隊(duì)高效
22.1 團(tuán)隊(duì)邊界
22.2 架構(gòu)師個(gè)性
22.3 檢查清單
22.4 提供指導(dǎo)
23、談判和領(lǐng)導(dǎo)技能?
23.1 談判
23.2 領(lǐng)導(dǎo)
24、發(fā)展職業(yè)道路
?24.1 20分鐘規(guī)則
24.2 技術(shù)雷達(dá)
24.3 使用社交媒體
24.4 臨別贈(zèng)言
1、總覽
?
2、介紹
2.1 定義
由系統(tǒng)結(jié)構(gòu)、架構(gòu)特征、架構(gòu)決策和設(shè)計(jì)原則組成?
2.2 架構(gòu)師要求
2.3 軟件架構(gòu)定理
?
3、架構(gòu)思維
?
4、模塊化
?4.1 定義
標(biāo)準(zhǔn)部件或者獨(dú)立單元集中的每一個(gè)可以用于構(gòu)建更加復(fù)雜的結(jié)構(gòu)。模塊化用來(lái)相關(guān)代碼的邏輯分組,在面向?qū)ο笳Z(yǔ)言上是一組類(lèi),在結(jié)構(gòu)化或者函數(shù)語(yǔ)言中,是一組函數(shù)。
4.2 衡量模塊化
?4.2.1 內(nèi)聚性測(cè)量
是通過(guò)LCOM(方法上缺乏內(nèi)聚)即未通過(guò)共享字段共享的方法集的總和,其計(jì)算公式為
其中|P|是在方法沒(méi)有訪(fǎng)問(wèn)公共字段時(shí)+1,|Q|是在方法分享一個(gè)公共字段是-1?
另一種公式是
4.2.2 耦合性測(cè)量
?
?抽象度計(jì)算公式?
表示抽象元素,如接口或者抽象類(lèi),表示具體的元素如非抽象類(lèi)?
不穩(wěn)定性計(jì)算公式
表示出度耦合,表示入度耦合?
主序列距離計(jì)算公式?
其中A表示抽象度,I表示不穩(wěn)定性?
?從抽象度來(lái)分析,右上角的過(guò)度抽象,屬于無(wú)用區(qū),左下角具體類(lèi)過(guò)多,難以維護(hù),屬于痛苦區(qū)
4.2.3 關(guān)聯(lián)性(共生性)
分為兩類(lèi),靜態(tài)關(guān)聯(lián)和動(dòng)態(tài)關(guān)聯(lián)
關(guān)聯(lián)屬性有如下
?強(qiáng)度由強(qiáng)到弱關(guān)系為
?地區(qū)指的是關(guān)聯(lián)是在模塊間還是模塊內(nèi)
程度指的是關(guān)聯(lián)的影響大小。
使用關(guān)聯(lián)來(lái)改善系統(tǒng)模塊化的原則?
- 通過(guò)將系統(tǒng)分解為封裝元件,最大限度地減少整體關(guān)聯(lián)
- 最小化任何跨越封裝邊界的剩余關(guān)聯(lián)
- 最大化封裝邊界內(nèi)的關(guān)聯(lián)
關(guān)聯(lián)相關(guān)建議
- 程度規(guī)則:將強(qiáng)形式的關(guān)聯(lián)轉(zhuǎn)為弱形式的關(guān)聯(lián)
- 地區(qū)規(guī)則:隨著軟件元素距離增加,使用弱形式的關(guān)聯(lián)
5、定義架構(gòu)特征
5.1 三標(biāo)準(zhǔn)
5.2 運(yùn)營(yíng)類(lèi)架構(gòu)特征
?
?5.3 結(jié)構(gòu)型架構(gòu)特征
5.4 交叉/橫切類(lèi)架構(gòu)特征
6、識(shí)別架構(gòu)特征
從三方面:領(lǐng)域關(guān)注點(diǎn),需求,隱式領(lǐng)域知識(shí)
領(lǐng)域關(guān)注點(diǎn)與架構(gòu)特征關(guān)系
| 領(lǐng)域關(guān)注點(diǎn) | 架構(gòu)特征 |
| 合并收購(gòu) | Interoperability, scalability, adaptability, extensibility |
| 上市時(shí)間 | Agility, testablity, deployability |
| 用戶(hù)滿(mǎn)意度 | Performance, availability, fault tolerance, testability, deployability, agility, security |
| 競(jìng)爭(zhēng)優(yōu)勢(shì) | Agility, testability, deployability, scalability, availability, fault tolerance, |
| 時(shí)間和預(yù)算 | Simplicity, feasibility |
7、測(cè)量和治理架構(gòu)特征
?測(cè)量架構(gòu)特征分為三類(lèi):運(yùn)營(yíng)類(lèi)測(cè)量,結(jié)構(gòu)型測(cè)量,過(guò)程測(cè)量 (軟件開(kāi)發(fā)過(guò)程)
適度度函數(shù):為某些架構(gòu)特征或者架構(gòu)特征組合提供客觀完整性評(píng)估的任何機(jī)制。是許多現(xiàn)有工具的新視角。架構(gòu)特性的驗(yàn)證技術(shù)隨特性的不同而變化。驗(yàn)證技術(shù)包括指標(biāo),監(jiān)控,單元測(cè)試及混沌工程
8、架構(gòu)特征范圍
屬于量子范圍
9、基于組件思維
9.1 組件范圍
9.2 架構(gòu)師角色
9.3 開(kāi)發(fā)者角色
9.4 組件識(shí)別流程
?
9.5 組件設(shè)計(jì)
?
10、分層架構(gòu)
10.1 拓?fù)?/h2>
10.2 架構(gòu)特征
11、Pipeline架構(gòu)樣式
11.1 拓?fù)?/h2>
?
11.2 架構(gòu)特征
?
12、微內(nèi)核架構(gòu)樣式
?12.1 拓?fù)?/h2>
12.2 架構(gòu)特征
?
13、基于服務(wù)的架構(gòu)樣式
?13.1 拓?fù)?/h2>
13.2 拓?fù)渥凅w
?用戶(hù)接口拆分
單體數(shù)據(jù)庫(kù)拆分
13.3 架構(gòu)特征
?
14、事件驅(qū)動(dòng)架構(gòu)樣式
14.1 拓?fù)?/h2>
?分兩種形式:broker和medicator
broker拓?fù)錇?/p>
broker拓?fù)涞臋?quán)衡
| 優(yōu)勢(shì) | 劣勢(shì) |
| 高度解耦的事件處理器 | 工作流控制? |
| 高可擴(kuò)展性 | 錯(cuò)誤處理 |
| 高響應(yīng)性 | 可恢復(fù)性 |
| 高性能 | 重啟能力 |
| 高容錯(cuò)性 | 數(shù)據(jù)一致性 |
?medicator拓?fù)錇?/p>
?medicator拓?fù)錂?quán)衡
| 優(yōu)勢(shì) | 劣勢(shì) |
| 工作流控制? | 事件處理器的更多耦合 |
| 錯(cuò)誤處理 | 較低的可伸縮性 |
| 可恢復(fù)性 | 低性能 |
| 重啟能力 | 低容錯(cuò)性 |
| 更好的數(shù)據(jù)一致性 | 復(fù)雜工作流建模 |
14.2 基于請(qǐng)求與基于事件的選擇
基于事件模型的權(quán)衡
| 與基于請(qǐng)求相比的優(yōu)勢(shì) | 權(quán)衡 |
| 更好地響應(yīng)動(dòng)態(tài)用戶(hù)內(nèi)容 | 只支持最終一致性 |
| 更好的可擴(kuò)展性和彈性 | 對(duì)處理流程的控制較少 |
| 更好的敏捷性和變更管理 | 事件流結(jié)果的不確定性 |
| 更好的適應(yīng)性和可擴(kuò)展性 | 難以測(cè)試和調(diào)試 |
| 更好的響應(yīng)能力和性能 | |
| 更好的實(shí)時(shí)決策 | |
| 對(duì)態(tài)勢(shì)感知的更好反應(yīng) |
14.3 架構(gòu)特征
15、基于空間架構(gòu)樣式
15.1 拓?fù)?/h2>
15.2 復(fù)制緩存與分布式緩存的選擇
| 選擇標(biāo)準(zhǔn) | 復(fù)制緩存 | 分布式緩存? |
| 優(yōu)化 | 性能 | 一致性 |
| 緩存大小 | 小(<100 MB) | 大(>500 MB) |
| 數(shù)據(jù)類(lèi)型 | 相對(duì)不變動(dòng)的 | 高度動(dòng)態(tài) |
| 更新頻率 | 相對(duì)低 | 高更新率 |
| 容錯(cuò) | 高 | 低 |
15.3 架構(gòu)特征
16、編排驅(qū)動(dòng)的面向服務(wù)架構(gòu)樣式
16.1 拓?fù)?/h2>
16.2 架構(gòu)特征
?
17、微服務(wù)架構(gòu)樣式
17.1 拓?fù)?/h2>
17.2 架構(gòu)特征
?
18、選擇合適的架構(gòu)樣式
18.1 考慮因子
18.2 決策
?
19、架構(gòu)決策
19.1 反模式
19.2 架構(gòu)重點(diǎn)
?
19.3 架構(gòu)決策記錄
?
20、分析架構(gòu)風(fēng)險(xiǎn)
20.1 風(fēng)險(xiǎn)矩陣
20.2 風(fēng)險(xiǎn)風(fēng)暴
21、圖表化和演示架構(gòu)
21.1 圖表化
21.1.1 工具
21.1.2 圖表繪制標(biāo)準(zhǔn)
?
ArchiMate核心框架?
由業(yè)務(wù)、應(yīng)用和技術(shù)元素定義的核心的方面和層可以組織為九個(gè)單元的框架?
方面和層
ArchiMate語(yǔ)言的主要概念和關(guān)系可以看成一個(gè)框架。它將企業(yè)架構(gòu)分為業(yè)務(wù)層、應(yīng)用層和技術(shù)層
在每一層中,都考慮了三個(gè)方面:表現(xiàn)行為的活動(dòng)元素,內(nèi)部結(jié)構(gòu)和定義使用或交流信息的元素。
方面
圖層
高層使用低層提供的服務(wù)。業(yè)務(wù)層向外部客戶(hù)提供產(chǎn)品和服務(wù),這些產(chǎn)品和服務(wù)由業(yè)務(wù)參與者執(zhí)行的業(yè)務(wù)流程實(shí)現(xiàn)。應(yīng)用層通過(guò)(軟件)應(yīng)用實(shí)現(xiàn)的應(yīng)用服務(wù)支持業(yè)務(wù)層。技術(shù)層提供運(yùn)行應(yīng)用程序所需的基礎(chǔ)設(shè)施服務(wù)(例如處理、存儲(chǔ)和通信服務(wù)),由計(jì)算機(jī)和通信硬件和系統(tǒng)軟件實(shí)現(xiàn)。?
ArchiMate完整框架
完整的 ArchiMate 語(yǔ)言為核心框架添加了多個(gè)層和一個(gè)方面。物理元素被添加到技術(shù)層,用于對(duì)物理設(shè)施和設(shè)備、分配網(wǎng)絡(luò)和材料進(jìn)行建模。此外,還添加了一個(gè)額外的動(dòng)機(jī)方面以及實(shí)現(xiàn)和遷移元素?
21.1.3?圖表指導(dǎo)原則?
21.2 演示
?
22、使團(tuán)隊(duì)高效
22.1 團(tuán)隊(duì)邊界
22.2 架構(gòu)師個(gè)性
?
22.3 檢查清單
22.4 提供指導(dǎo)
?
23、談判和領(lǐng)導(dǎo)技能?
23.1 談判
與業(yè)務(wù)利益相關(guān)者談判
- 利用語(yǔ)法和流行語(yǔ)更好地了解情況?
- 在開(kāi)始談判之前,收集盡可能多的信息
- 當(dāng)所有其他方法都失敗時(shí),按照成本和時(shí)間來(lái)陳述
- 利用“分而治之”規(guī)則來(lái)限定需求
與其他架構(gòu)師談判
- 永遠(yuǎn)記住,演示戰(zhàn)勝了討論
- 避免在談判中過(guò)于爭(zhēng)辯或過(guò)于私人化。冷靜的領(lǐng)導(dǎo)加上清晰簡(jiǎn)潔的推理,總能贏得談判
與開(kāi)發(fā)人員談判
- 當(dāng)說(shuō)服開(kāi)發(fā)人員采用架構(gòu)決策或執(zhí)行特定任務(wù)時(shí),請(qǐng)?zhí)峁├碛?#xff0c;而不是“從高層指揮”
- 如果開(kāi)發(fā)人員不同意某個(gè)決定,讓他們自己得出解決方案?
23.2 領(lǐng)導(dǎo)
?
架構(gòu)中的4C
與開(kāi)發(fā)團(tuán)隊(duì)整合:
- 請(qǐng)?zhí)崆霸?xún)問(wèn)會(huì)議議程,以幫助確定你是否需要參加會(huì)議?
24、發(fā)展職業(yè)道路
?24.1 20分鐘規(guī)則
早晨20分鐘用于學(xué)習(xí)新技能等
24.2 技術(shù)雷達(dá)
?
24.3 使用社交媒體
?
24.4 臨別贈(zèng)言
?
?
參考資料:
https://www.cnblogs.com/uml-tool/articles/15512630.html
ArchiMate? Specification | The Open Group Website
總結(jié)
以上是生活随笔為你收集整理的Fundamentals of Software Architecture:An Engineering Approach学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 科学技术创新杂志科学技术创新杂志社科学技
- 下一篇: WebView清除缓存