這兩天開始讀由Edward Crawley(愛德華 克勞利)、Bruce Cameron(布魯斯 卡梅隆)、Daniel Selva(丹尼爾 塞爾瓦)著作的系統架構,一開始看目錄以為是介紹系統軟體架構的書,也是我買它的緣由,但粗略看完序和第一章第二章后不經肅然起敬,這本書是真的好,該書面向物件是適用于所有需要系統架構行業而不單單是軟體行業,它系統地介紹了系統的概念,組成,功能,如何分解系統,抽象系統,組合系統等相關的理論,相信不管什么學科什么專業什么行業讀這本書都會有所識訓,決心仔細研讀一遍,
有的書傳播知識,有的書介紹技能,有的書娛樂大眾,而優秀的書傳播優秀的思想,本書就是,
這篇是第一部分讀書筆記,介紹了寫系統架構理念,系統分析必備思路,系統架構所用的思維模式,
0 簡介
架構的概念:對系統中物體以及物體之間關系所進行的抽象描述,
架構的目的:找出系統架構得以確立的決策點,并謹慎做出決策,不良的架構決策則會使得大型的研發活動從剛開始就變得難以推行,
核心觀點:一些早期的決策可以加依分析和處理,在不知道各個組件的詳細設計情況下,系統架構依然能經得起檢驗,不要期望直接設計出最優的架構,而僅僅是結構良好的創造活動要優于毫無結構的創造活動,目標當下,
學習目標:形成一套思考并創建系統架構的方式,
1 基本概念
1.1 系統
系統思維:與其他一些思維模式相并立,如批判思維,分析思維,創新思維,把某一種疑問、狀況或難題明確視為系統是思維方式,
系統:由一組物體和這些物體之間的關系所構成的集合,其功能要大于這些集體各自的功能之和,其由有兩個重點
- 系統是由相互作用或相互聯系的物體組成的
- 物體之間發生相互作用時,會出現一種功能,這種功能大于或不同于這些物體各自所具備的功能,
物體:構成全體的小塊,也稱之為部件、模塊、例程、配件等
物體關系:可以是靜態的(連接關系),也可以是動態并互動的(貨物的交換關系),
哪些可以視為系統:任何一組物體都可以解讀為一個系統,Complex作為
- 形容詞復合的:形容物體與關系較多的事務,
- 名詞系統
系統和產品:產品是能夠交換或具有交換潛力的事物,有些事物是產品不是系統(大米),有些事物既是產品(可供交換)也是系統(含有很多相互聯系的物體)
架構:對系統種的物體及物體之間的關系所進行的抽象描述,
1.2 涌現
一組物體及其關系的集合,其功能大于這些物體各自功能之和,
涌現:系統在運作時所表現、呈現或浮現出的東西,為什么要構建系統就是要為了取得滿意的涌現物,對涌現的理解,是系統思維的目標,也是系統的藝術,
功能:是系統最明顯和最關鍵的涌現物,是系統所作的事情,也就是系統的動作、產出或輸出,
功能/涌現物有四種分類(以汽車為例):
| 預期的涌現 | 意外的涌現 | |
|---|---|---|
| 令人滿意的 | 汽車可以載人 汽車內可以使人感到溫暖或涼爽 汽車令人感到愉悅 |
汽車創造一種個人自由的感覺 |
| 不和人意的 | 汽車燃燒碳氫化合物 | 汽車可以致人死亡 |
性能:系統涌現物:是系統運作或執行其功能的好壞程度,系統功能的一項屬性,
原則:一種長期有效的道理,能夠適用于各種問題,
涌現原則:當各物體拼合成一個系統時,物體之間的互動會把功能、行為、性能和其他內在屬性涌現出來,將探尋系統所涌現出的預期屬性和意外屬性,名人名言
- 系統并不是其組成物的簡單加總,而是這些組成物之間互動的產物,Russell Ackoff
- 整體大于其各部分之和,亞里士多德《形而上學》
系統還會涌現出其他屬性:可靠性,可維護性,可操作性,安全性,健壯性,魯棒性,這些屬性與性能不同,這些屬性不是立刻就能創造出價值,而是通過系統在整個生命期種的運作情況來體現,
不合人意的意外涌現被稱之為緊急狀況,
價值:是有著一定成本的利益,構建系統就是為了獲得利益,
1.3 系統及其形式與功能
系統思維的第一任務:確定系統及其形式與功能,
形式:系統是什么,具有一定的形狀、配置、編排及布局,是一種已然存在或有可能存在的物之載體或資訊載體,形式在一段時間內是靜止固定的,系統一定具備一定的形式,
功能:系統做什么,能夠引發并創造某種性能,是對性能有所貢獻的活動、操作及轉換行為,是使某物得以存在或得以體現其用途的一種動作,涌現物出現在功能領域,由程序和操作陣列成,
功能與形式:功能需要以形式的手段來展現,功能比形式更抽象,功能涉及轉變,比形式更難以描述,
程序:功能中純粹標識動作或轉換的那一部分,改變運算元狀態的那一部分,
運算元:其狀態會在程序中發生改變的事物,
例子:



形式和功能的區別:類似于商業活動中的商品和服務,商品是有形的產品(稱為形式),而服務則是相對較為無形,面向程序的產品(稱之為功能),
每一種系統都具備形式、程序與運算元著三項特征,
名詞-動詞-名詞:第一個名詞充當執行動作所有的工具(形式),動詞用來描述該動作(程序),第二個名詞用來標識動作物件(運算元),
1.4 物體及其形式與功能
系統思維的第二任務:確定系統中的物體、物體的形式和功能,以及系統邊界和系統所處的環境,
系統是由一組物體所構成的,系統中的每個物體都有其形式和功能,

當功能按某種次序執行時,會涌現出更加動態的行為,
一個系統可以分解為更小的系統,可以擴展成更大的系統,定義系統的物體和系統的邊界,是一件非常重要而又比較困難的事情,
系統思考需要面對5個問題:
- 確定如何將系統初步分解為恰當的物體
- 用整體思維找出潛在的物體
- 通過對重點的分析,把注意力集中到重要的物體上
- 為物體創建抽象
- 定義系統的邊界,并將其與外界環境隔開
1.4.1 分解為恰當物體
難點在于:系統究竟屬于互不相同的元素所組成的系統,還是模塊化或集成系統,
如果系統由界限清楚的物體組成,可以用一種非常清晰的方式來分解,系統確實是由彼此較為獨立的一些物體所聚集并定義而成的,艦隊、馬群、樹林、圖書館
模塊化的系統 :各個模塊之間(尤其在功能上)相對獨立,模塊內部的關系比較密集,模塊之間的關系比較稀疏,放大電路
集成系統:系統系統很難在不影響其功能的前提下進行簡單分解,一般都是內部高度互聯的系統,汽車轉向裝置系統,集成電路,
1.4.2 找出潛在物體
整體論:強調整體概念,從整體上把握事物之間的緊密聯系,
整體思維:發現對系統可能有重要意義的全部物體,通過整體思維促使發現與系統互動的每一樣東西,并考量給系統的影響和后果,
已知不確定和未知不確定:已知不確定是知道但不了解,未知不確定是連有沒有都不知道的事物,
整體思維的目標是盡可能找出位置不確定的事物,
整體原則:每個系統都作為某一個或某些個大系統的一小部分而運作,同時,每個系統總中也都包含著更小的一些系統,整體思考這些關系,并研發出與上級系統、下級系統和平級系統相協調的架構,
- 沒有誰完全是孤島,每個人都是陸地的一小塊,都是主題的一部分,John Donne
激發整體思維:結構化和非結構化頭腦風暴,研發框架來保證相關問題可以得到考慮,從多個視角進行思考,把系統明確地放在大環境下進行思考,


1.4.3 找出重要物體
聚焦:把與當前問題有關的重要事物找出來
聚焦原則:在任何一個點上,都唔那個發現很多影響系統的問題,而其數量已經超出了人的理解能力,因此,必須找出其中最關鍵,最重要的哪些問題,并集中精力思考它們,
- 問題不在于你看什么,而在于你看到了什么,Henry David Thoreau亨利 戴維 梭羅
聚焦程序中,把疑問、狀況或難題確定出來,把其中重要方面凸顯出來,更具體就是利益相關的東西是什么,
面對物體問一個簡單的問題:這個物體對關系的成果或涌現物來說是否重要,一般來說把握其互動關系的前提下,人腦可以同時思考的事情優先,一般數量是7浮動2,列出對系統重要的事物一般為7個,把這些事物替換掉對系統的影響,
1.4.4 創建抽象
抽象:抽離于物體的性質描述,只含本質不含細節,好的抽象可以促進思考,不好的抽象會阻礙思考,
例子:
實際放大器:

抽象機制指導原則:
- 針對形式和功能創建抽象時,要把重要的資訊凸顯出來,而把不太重要的細節隱藏起來,
- 要創建那種使適當的關系有機會得以表現出來的抽象,
- 在適當的層面進行分解或聚合,并于該層面創建抽象,
- 在能夠有效表達當前系統的重要方面這一前提下,創建數量盡可能少的抽象,
違背第一條,可能會把放大器抽象成熱源,不能凸顯放大的程序,如果違背第三條,可能會在抽象程序中覆寫過多的細節,
1.4.5 定義系統邊界
系統邊界可以清晰地劃分出系統與其外圍事物之間的界限,定義系統邊界就等于將系統與其外圍環境區隔,
外圍環境:圍繞在系統外圍的東西,
系統邊界:位于系統和大環境之間,劃定邊界考慮下列問題
- 需要分析的物體包括進來(目標是理解某個機制)
- 創建設計方案所必備的要素包括進來(目標是創建設計方案)
- 負責實作和操作的東西包括進來(目標是體現某種價值)
- 規章、契約、法律制度所建立的規范邊界
- 把系統和大環境區分開的傳統做法和習慣做法
- 必須遵守的一些介面定義和標準,包括與供應商的關系
外部介面:當某個關系跨越系統邊界的時候,系統與大環境之間定義了一個外部介面
例子:如果認為Team X 的任務是制作設計方案,那么把john、susan和amy放在系統內,把市場人員和操作人員放在系統之外就是一種較為合理的邊界劃分方式,用虛線表示系統邊界,
例子中第二項任務:找出系統的物體,物體的形式與功能,以及系統邊界及外圍環境后的結果:

1.5 物體之間關系
系統思維的第三任務:找出系統內及系統邊界處物體之間所具備的關系,以及那些關系的形式與功能,
關系按特征分類:功能關系和形式關系,
功能關系:用來完成某件事情的物體之間所具備的關系,此關系可能涉及物體之間對某物的操作、傳輸或交換,功能關系具有動態性,所以其也成為互動關系,互動程序中,相關物體可能交換運算元,也可能協同對運算元執行操作,
形式關系:在某段那時間內穩定存在或有可能穩定存在的物體之間所具備的關系,其通常體現為連接關系或幾何關系,為了強調其靜態性也稱為結構關系
功能關系與形式關系:功能關系通常以形式關系為前提,形式關系是功能關系的載體,例子:心臟不與肺相連,就無法同肺部交換血液,
形式關系與功能關系可以表示為關系圖或N×N表,
關系圖例子:系統內兩個物體與系統外圍環境中一個物體之間的關系,
- 形式互動以雙箭頭線來表示,功能互動根據互動的性質用單箭頭線或雙箭頭線來表示,
- 有些關系位于系統內部,有些則跨越了系統邊界,對于跨越邊界的關系其表示方法與系統內部關系相似,它用虛線而非實線來表示,畫這種關系圖,應該把物體的形式和功能寫出來,同時最好給關系加上標注,

放大器關系圖:黑色表示功能關系,灰色表示形式關系,

電路圖:把結構化連接或形式關系稱為電氣連接,功能互動中的箭頭,在電路圖中指的是電流的流動,

N×N表:表的上方和左側都寫了N個物體,第一張表列出形式關系,第二張表列出功能關系,表中虛線左邊是表示系統邊界內部物體,位于對角線之外的每一個單元格都表示一種內部關系或外部關系

關系圖可以更加直觀,N×N能夠體現更多的細節,當節點和連接數量變多之后不會顯得特備雜亂,
形式關系一般比較具體,剛開始思考關系的時候可以從形式關系入手,再思考的同時再考慮其承載的功能,形式關系的重要性,主要體現在對功能關系的曾在上,涌現物出現在功能領域,所以功能互動才是真正重要的,
外部介面:系統內部的物體和系統外圍環境中的物體之間,不管是形式關系還是功能關系都有可能跨越系統邊界,
1.6 預測涌現物
系統思維第四項任務:基于物體的功能以及物體之間的功能互動,來確定系統的涌現屬性,
1.6.1 重要性
系統是奇妙之處在于涌現,系統各個物體組合一起后,物體的功能與物體之間的功能互動形成的組合涌現出更多的功能,
在形式領域中不會發成涌現,在功能領域中則會復雜很多,就涌現出很多其他的功能,
系統思維的主要目標:努力了解并預測涌現物以及涌現物帶給系統的強大能力,
1.6.2 系統故障
系統故障就是由于預測涌現物沒有出現,
預期涌現物沒有出現:預期的良好涌現物未能出現,意外的涌現物出現

1.6.3 預測涌現物
預測的難點在于不知道系統會涌現出何種功能,
三種方式來預測:
- 更具以前做過的情況來預測,也就是根據先例來預測,回想以前做過的相同或極相似的解決方案,然后對其略作修改,并實作出來,
- 試驗,做出一個小模塊,來進行試驗,螺旋式開發,先構建出系統的某些部分,并檢驗其涌現物是否合意,再于后續的螺旋環節中逐次構建系統的其余部分,
- 建模:建模預測涌現物并取得巨大成功的例子就是集成電路
- 推理:系統沒有先例,不能試驗建模,就只能進行推理,在推理的程序中可以從一些相似但不同的系統中了解一些資訊,也可以通過不完備的建模來得到一些資訊來對最終的涌現物進行判斷,
1.6.4 涌現物依賴于物體及關系
涌現物依賴于系統各物體的功能以及物體之間的功能互動,形式是功能互動的載體,形式于形式之間的關系(結構)對預測物有著重要意義,
三個例子,過濾器,杠桿,陳述句:

機械杠桿:杠桿和支點組成,支點放在遠離操作者就是良好涌現方法,若改變支點位置,良好涌現物就消失了,
形式關系對于涌現物起著關鍵作用,對特定的功能互動起著重要引導作用,
1.7 總結
系統思維就是把某個疑問、狀況或難題明確當成系統來思考,

2 復雜系統
復雜的系統:由很多高度相關、高度互聯或高度混雜的元素或物體所組成的系統,
為什么會復雜:
- 對系統由更多的要求,更多功能,更好性能,更加健壯,更加靈活,
- 要求系統能夠于其他系統相互協作
復雜度衡量法:通過一些復雜度的指標來衡量系統的復雜性,
難懂:系統的復雜度超越了人類由先的觀察和理解呢能力,難懂的事物具有較高的表面復雜度,
架構師訓練自己的思維:去理解復雜的系統,令那些系統不再那么難懂,應努力構建易懂的架構,
良好的系統架構:構建一套具備必要復雜度同時又不難懂的系統,
2.1 Team XT范例
Team XT是Team X的擴展,角色仍然是制作設計方案,
分析一個系統先提出三個問題:
- 系統是什么:Team XT系統是由一組人員和一套程序所構成的,程序就是研發設計方案,
- 系統的形式是什么:每位團隊成員的總和
- 系統要完成什么功能,功能就是指系統所要做的事情、活動或轉換行為,Team XT系統功能就是研發設計方案,
第一項任務:確定系統及其形式與功能,通過仔細觀察,廣泛經驗,每位成員談話等手段,
第二項任務:確定系統中的物體、物體的形式和功能,以及系統邊界和系統所處的環境,


劃定系統邊界,虛線以下的部分是系統的外部環境,
第三項任務:找出系統內及系統邊界處物體之間所具備的關系,以及那些關系的形式與功能,

第四項任務:基于物體的功能以及物體之間的功能互動,來確定系統的涌現屬性,
2.2 分解
分解:就是把物體分成小的部件或組成部分,分而治之,
分解的難點:分解出來的物體構建整個系統的這一程序,這一程序通常稱為整合,
整合:把各個部件所具備的形式聚合起來,
分解方式:取決于系統元素的構成情況,不同元素構成的系統,把team XT按照成員進行分解,元素的形式不確定,可以考慮按照功能來分解(例如,轉向機制,壓碩訓,排序演算法),按照功能分解比較好,
體系:一種其物體均處在某個層次或某個位階的系統,這些層次按照上下順序排列起來,
元素在體系上有位階的原因:
- 元素所涉及的范圍更廣,省長比市長行政范圍大
- 元素的重要性較高或性能較強,黑帶比褐帶選手高
- 元素在功能上承擔更多的責任,總統比副總高,職責更大,
2.3 層級分解

該圖沒有體現出三位小組長之間的區別

可以清楚的看到三個組長之間不同的分工,每個節點所統領的下層節點數量限制在7個以內,不超越認知能力,
組是一種有用的抽象單元,但不是唯一的分解方式,還可以按照地理位置,連接性或功能關系等分解,
如何確定分解結束:底層元素是不便于分解的原子部件,
簡單系統:只需要分解一次,分解出來的這一層中元素不超過7個,

復雜度適度系統:經過兩次分解,每個上級部件統領的夏季部件不超過7個,最低層數量不超過81個,如Team XT,
復雜系統:分解層級數超過3層,很少有這樣的系統,
系統本身稱為第0層,分解出來的那些層分別稱為系統之下的第1層,第2層,系統之下的那些層可以叫做:
- module:模塊
- assembly:配件
- Sub-assembly:子配件
- Function:函式或功能
- Rack:架
- Online Replacement Unit , ORM :在線更換單元
- Routine:例程
- committee:委員會
- Task force:作業組和任務組
- Unit:單元
- Component:組件
- Sub-component:子組件
- Part:部件和部分
- segment:區段
- Section:節
- chapter:章
系統之上的那些層:
- system of system :系統的系統
- complex:復合體
- collection:集合
2.4 原子部件
原子部件:不能拆解的東西,凡是一經拆解就是去意義的東西,
2.5 邏輯關系
2.5.1 類和實體
類:一種結構,用來描述某種事物所共有的特征,
實體:類的具體表現,類的實體化,
2.5.2 特化關系
特化/泛化關系:通用的物體與一組特殊的物體之間的關系,
特化在編程語言中類似于繼承:某個通用的類中創建子類,使得子類繼承通用類中的某些屬性及功能,
2.5.3 遞回
遞回:某套程序或某個物件把自己包括進來,以一種于自身相似的方式來使用物體或關系的現象,
2.6 思考
自頂而下或自底而上思考:使用最多的是自頂而下,從系統的目標開始,思考概念和高層架構,
由外向內思考,
現實作業是由內向外,最常用的方法是:從系統中選一個點,然后由這個點開始想上或向下探索1~2層,
交替思考:在思考系統時:思維會在形式領域和功能領域之間來回切換,以team XT為例:先從功能領域:研發設計方案,到形式領域:確定小組這一形式:功能領域:思考小組都要完成功能,思考研發設計方案這一功能如何涌現,
2.7 架構工具
架構展示有兩種方法:
- 維護一個集成模型,并根據需要對其進行投射,機械上用UG等,
- 模型中維護多個視圖,直接構建二維視圖,看能不能協調一致,
物件程序方法(object process methodology , OPM):把形式、功能、物體及關系有關的資訊不都融入同一個模型中,
系統建模語言(System Modeling Language ,SysML)和美國國防部架構框架(Department of Defense Architecture Framework,DoDAF):采用不同視圖來表示資訊,
2.7.1 SysML
SysML:對軟體工程中的統一建模語言進行改編

2.7.2 OPM
OPM:將面向物件的圖表與面向程序的圖表合并到同一套方法中,以便對系統進行描述,
在OPM中,物件用方框表示,程序用橢圓表示,其特點:并不會針對系統創建多個不同的視圖,或多種不同型別的圖表,只會為系統創建一個繼承模型,多個SysML圖可以融合到一張含有物件、程序及關系的OPM圖中,


2.8 總結

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/22702.html
標籤:架構設計
上一篇:微服務,為什么從前后端分離開始?
下一篇:CAP原理
