とあるSEの適当日記(仮)

その時のプロジェクトで必要になって調べた技術や読んだ書籍についてメモしていく場です。誰かの役にたったらいいなくらいのものです。最近の関心事は、「スクラム」「アジャイル」です。

「創発デザイン」と「最適デザイン」

先日、「ふくおかスクラム vol.4」で教えてもらった「創発的設計」についてもう少し深堀りしてみました。
junhiguchi.hatenablog.jp


創発的設計」で調べてもあまり情報でてこなくって、
いろいろ調べてるうちに、「創発デザイン」という言葉で使われていることに気づきました。

そんで、↓の本がなんか割とわかりやすそうでした。

創発デザインの概念

創発デザインの概念

Amazonで無料部分で読めるページが参考になりました。


創発デザイン」とは、

自律的にふるまう要素(部分)間および環境との間の局所的な相互作用が大域的な秩序(全体)を発現し(ボトムアップ),他方,そのように生じた秩序(全体)が個体(部分)のふるまいを拘束する(トップダウン)という双方向の動的過程により,新しい機能,形質,行動が獲得されること

自然界における例として上がられていたのが、↓の鳥の行動特性
f:id:jun_higuchi:20191112044420p:plain


一方で、「最適デザイン」とは、現在わかっている情報の中での全体構成を最適解でデザインしてから、部分構成をデザインするといったトップダウン型のデザインのようです。

以下も参考になりました。
https://www.jstage.jst.go.jp/article/jssd/56/0/56_0_A11/_pdf
https://www.jstage.jst.go.jp/article/jssd/55/0/55_0_13/_pdf


開発方法論の話で置き換えると、、

ウォーターフォールのような予め秩序(ルール)を定めた上で、開発を進めていくやり方が「最適デザイン」で、
スクラムアジャイルのような経験主義に基づいてやりながら秩序(ルール)を作り上げて行くやり方が「創発デザイン」なのかなぁと、

コーディングの話で置き換えると、、

これは、「ふくおかスクラム vol.4」で教えてもらった通りで、

初めにデザインパターンのような拡張の予測を立てた上で重厚設計をしてから部分を開発していくやり方が「最適デザイン」で、
重厚な設計はせずに、作りながら、リファクタで秩序を組み上げていくやり方が「創発デザイン」なのかなと。

まとめ

予め明らかに情報が揃っている場合には「最適デザイン」が向くのでしょうが、
不確実性の高い世の中においては「創発デザイン」が重要視されるのだと思います。

会社の構造でも同じような事が言えますね。
創発デザイン」というのは、社員1人1人が自律的に動いて、その相互作用から課、部、会社全体としての秩序を作り上げていく、、みたいな感じでしょうね。

ただし、「創発デザイン」でも初めから何もルールが無いわけではなく、「やっちゃいけないこと」だけは予め定めておくべきなのかと思いました。(前の記事のコーディングのリファクタで書いた、「Code smell(臭うコード)」のような…)

プライバシーポリシー お問い合わせ