システムの複雑さについてのメモ
これをみて、改めて、システムの複雑さについて考えてみた
Udemy System Thinking Made Simple
複雑さを生み出すもの
Rich Hickeyの下記のプレゼンで複雑とは複数の意味をもっちゃうものと定義していることから発想。
役割が定義できない要素の存在が複雑さをもたらす。機能や特性が要素に還元できない。例えば以下のようなもの。
システムの要素が担う役割が状況や時間の経過によって変わる
要素が複数の役割を兼ねる
複雑なシステム
- 人間の運動。筋肉のある箇所を使ったり使わなかったりして同じ機能を果たすことができる。
- サッカー。局面によってFWも守備をする。DFも攻撃する
人間組織の複雑性
人間行動が絡むと殆どのシステムが複雑さが増す。 人間は個々人の判断で適応行動をするから
- 一つの機能を果たすために様々なロールを担う。ロールが流動する
- 様々な機能を求める。製品を出力するだけではなく、給与、地位、人間関係、自尊心を与える機能を担う
制御するために必要なこと=ゴールの共有、プレーモデル/ロールの調整、満足する給与/関係性/承認の提供
情報システムにおける複雑さ
- コンポーネントの役割分担を進めるのが吉
- 一つのコンポーネントが何役もやるのが複雑さを増す
- 非機能要件もコンポーネントに還元できるのが吉
- 性能などの一部の要件は機能を実現するコンポーネントが担うため、複雑になりやすい。並行性を高めることは性能要件を並列実行数に還元できるようになるため、複雑さを抑制することになる
複雑さの価値
刻一刻と変化する状況に対応するためには、複雑かつ、自己組織化システムの方が適応しやすい。シンプルなシステムは柔軟性に欠ける。 情報システムは人の手によってしか変更されないからシンプルさが価値をもつ