Balancing Coupling in Software Design 2章

Part I Coupling
Chapter 2 Coupling and Complexity: Cynefin

結合と複雑性:Cynefin
ソフトウェアシステムにおける複雑性をどのように管理するかを学ぶ。
Cynefinフレームワークを学ぶ。

書籍より

ソフトウェア設計の文脈において重要なのは、複雑性が高くなるほど、システムを変更するために必要な労力も大きくなるという点である。

複雑性を「人にかかる認知負荷」として捉える基本的な定義。
ソフトウェア設計の領域で複雑性を議論し、管理するためには、より精緻なモデルが必要となる。

Cynefinフレームワーク
意思決定を行う状況を、
明確(clear)、煩雑(complicated)、複雑(complex)、混沌(chaotic)、無秩序(disorder)の五つの領域に分類。
各領域の主な違いは、意思決定(あるいは行動)とその結果との間に存在する因果関係にある。

Exampleによる領域判断の例が書かれている。

書籍より

Cynefin フレームワークは、さまざまな状況で利用できる意思決定支援ツールである。
医療から農業に至るまで、その適用範囲は広い。ソフトウェア工学の領域においても、Cynefin はその多面的な側面を理解し、乗り越えるために有用である。

複雑領域で意思決定を行うには、安全な実験を行い、意思決定がもたらし得る結果の一端を把握する必要がある。ソフトウェア設計の判断において、私たちはしばしばこれを直感的に行っている。しかし、次に意思決定の前に実験をしなければならない状況に直面したときには、立ち止まって、自分が直面している複雑性の源は何なのかを考えてみてほしい。