複雜系統的有界上下文和聚合結構是如何定義的?
本文是複雜性領域權威著作保羅·西利亞斯(Paul Cilliers)的《至關重要的複雜性》摘錄,入門人工智慧或DDD建模必讀書籍!
在一個不確定非線性世界中,我們無法追蹤清晰的因果鏈,現在看來似乎不重要的事情可能在以後變得至關重要,如蝴蝶效應。我們的模型必須以某種方式“構架”問題,而這種構架卻不可避免地會引入失真。
所謂以某種方式構架實際是尋找一些約束條件,但是這些約束條件是在限制降低各種可能性,從而自身成為自己的約束約束。
如果基於這些約束構架了一個框架,使您試圖圍繞該框架建立對複雜系統的描述。但是,在處理真正複雜性時,這些框架卻無法勝任。
複雜的系統既不是是同一種型別homogeneous的結構,但也不是混沌的。它們是以元件互動作用模式體現的結構。這些結構中的某些結構可以穩定且壽命長(因此更容易被捕獲或建模),而另一些結構則可以是易變的和短暫的。
這些結構也以複雜的方式交織在一起。我們發現各種規模的結構。為了瞭解掌握這些結構有多麼困難,有必要研究一下複雜系統的邊界以及其中的層次結構的作用。
有界上下文的定義
邊界:處理邊界問題的一種方法是引入“操作閉合”的概念。為了使系統保持其標識,它必須(在閉合內部)複製自身。這些論點通常源於Maturana和Varela關於自動生成的工作。
應該注意不要過分強調邊界的閉合封閉。複雜系統的邊界一旦“湧現emerged/出現”就無法明確定義。邊界同時是系統本身活動的功能和所涉及描述策略的產物。
我們永遠無法確保我們已經明確地“found發現”或“define定義”了它,因此閉合系統並不是可以客觀描述的。(它是一種主觀和客觀結合處的邊界)
我們經常陷入將邊界視為將一件事與另一件事分開的事物的陷阱。我們應該認為邊界是一種被繫結的構成或組成。這種轉變有助於我們將邊界視為一種賦能啟用的事物,而不是被限制被侷限的事物。
banq:這也是“有界上下文”與“限界上下文”兩種翻譯的區別(雖然它們都是Bounded Context的中文翻譯),“有界”的“有”是一種有無的賦能啟用概念,而“限界”是被限制被侷限的概念,限界上下文是一種靜態思維的名詞,
原文:
We often fall into the trap of thinking of a boundary as something that separates one thing from another. We should rather think of a boundary as something that constitutes that which is bounded. This shift helps us see the boundary as something enabling rather than as confining.
在嚴格組織的系統中,我們永遠不會遠離邊界。
如果系統的各個元件之間互連緊密,那麼從任何元件到系統“外部”的距離總是很短。因此,沒有系統“安全的內部”,邊界是被摺疊重疊的,或者系統可能僅由邊界組成。
banq:這裡類似DDD的聚合概念,聚合是一種互連緊密的動態關係,不是靜態的組合關係,只有動態關係才能保證聚合內部邏輯的一致性。
一切總是與相互以及與環境互動和介面; “內部”和“外部”的概念從來都不是簡單的或不受爭議的。
層次結構與聚合
複雜的系統離不開層次結構。層次結構建立了明確的通訊路徑。如果系統是分層的,則可以開發一種演算法來確保資訊從A到B。
banq:聚合內部是有層次的,從聚合根實體到其他實體。
複雜的系統不是那種同質同源同型別(homogeneous)的東西。它們具有結構(不同型別的實體組成的結構,一個實體代表一種同種型別),而且這種結構是不對稱的。有帶有功能性小段落,要使它們完全存在,就必須有某種形式的層次結構。
banq:這是聚合和實體的區別所在,同一種型別(homogeneous)的東西可以使用一種實體型別來表示,但是聚合是多種不同型別的實體組成的。
但是,當這些層次結構被定義得太清晰或太永久時,就會出現問題。
與邊界的概念類似,不能僅根據明確定義的層次結構來描述複雜系統的結構。這是因為複雜性的結構通常是分形的(分形理論,雪花是由類似雪花自己結構一樣的分支組成的),在所有尺度上都有結構。
系統生命力的一部分在於其轉換層次結構的能力。儘管層次結構對於在系統中生成有意義的框架是必不可少的,但它們不能保持不變。隨著上下文的變化,層次結構也必須變化。
banq:這也是聚合結構取決於上下文的關鍵地方所在。
複雜性理論增加了我們對諸如組織之類的複雜系統的理解,但是它沒有為我們提供可以準確地預測或控制特定組織的行為的工具。
本文觀點獲贊:
相關文章
- 如何構建更好的複雜系統?容器、微服務和持續交付微服務
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- CRM系統是如何定義銷售漏斗的?
- 操作複雜的CRM系統如何使用
- 真正的敏捷是根據DDD有界上下文劃分其團隊組織結構 - allenholub敏捷
- 如何劃分有界上下文? - nick
- 如何凍結和鎖定你的 Linux 系統Linux
- 複雜的資料結構設計求解?資料結構
- Python3 解析複雜結構的 jsonPythonJSON
- 如何權衡設計可擴充套件的有界上下文? (mathiasverraes)套件
- 定義運營系統架構架構
- 複雜連結串列的複製
- 系統困境與軟體複雜度,為什麼我們的系統會如此複雜複雜度
- 為構建大型複雜系統而生的微服務框架 Erda Infra微服務框架
- 複雜性系統是一種心智介面 – Charles
- 技術人員該如何接手一個複雜的系統?
- 如何完成複雜查詢的動態構建?
- GraphQL是為聚合統一而構建的 - thenewstack
- 分散式系統:常見陷阱和複雜性分散式
- 資料結構-基本概念和時空複雜度資料結構複雜度
- 資料和行為與有界上下文、微服務的關係 - Alberto Brandolini微服務
- DDD統一語言和有界上下文誤配 - Alberto Brandolini
- 外觀模式-簡化子系統的複雜性模式
- 資料結構:時間複雜度資料結構時間複雜度
- 前端資料結構---複雜度分析前端資料結構複雜度
- dolphinscheduler簡單任務定義及複雜的跨節點傳參
- Linux 如何設定密碼複雜度?Linux密碼複雜度
- 資料結構與演算法(一):帶你瞭解時間複雜度和空間複雜度到底是什麼?資料結構演算法時間複雜度
- 與複雜性系統共舞:如何培養系統思考與系統思維? - Donella
- 複雜連結串列的復刻
- 針對複雜系統的雙環模型之指南模型
- 複雜混亂系統的三種應對方式
- 複雜性系統的戰略分析要點 -Dave
- LBS定位系統架構是如何演進的架構
- JZ-025-複雜連結串列的複製
- mysql 如何複製表結構和資料MySql
- 一個微服務對應一個有界的上下文嗎?微服務
- 資料結構筆記——二叉樹的定義和性質資料結構筆記二叉樹