http://martinfowler.com/bliki/AbundantMutation.html

読者の方々は、私がevolutionary design進化的設計)を広く提唱していることをご存知だと思う。 しかし、手法を提唱はしているものの、今だ完全なテクニックがあるわけではない。 進化的設計に成功するのもハッピーではあるが、 進化的設計の問題についてレポートするのもこれまたハッピーである。

現在までに、2つのプロジェクトでこの進化的設計の問題に出くわしている(症状は異なるが)。

進化的設計ではプロジェクトの進行に合わせて設計を変化させていく。 要求変更への対処、学習の活用がその目的である。 進化的設計とは、こういった変更を反映させ、設計に変化を加える手法だと考えられる。 この変化は有効かつ必要なものだが、その他の物事と同様、多くの苦労を強いられることもある。

まず最初のプロジェクトだが、これは100人前後の大規模なプロジェクトだった。 ここでは「変化し過ぎ」問題が起きてしまった。 サブ チーム毎に異なる方法で共通の問題に取り組んでしまったことが原因だ。 異なる方法とは、個別にフレームワークを構築したり、 外部のフレームワークを導入したり、といった感じだ。

2つ目のプロジェクトは数十人程度の中規模プロジェクトだったが、 ローテーションの激しいプロジェクトだった。 新しいメンバが入ってくると、以前の仕事状況を見ることになる。 しかし、それを理解しないまま、もしくは、それが不十分だと気付いたところで、 別の問題の担当になってしまう。 ここでの問題は、ソリューションが不完全だと気付いても新しい人が来るまでに完成させることができないという点だ…… さて、問題点が分かっただろうか。

どちらの場合も、同じ問題を解く方法が複数存在していたのだ。 作業の重複は単に無駄なだけでなく、ソフトウェアを必要以上に複雑にしてしまう。

強調しておかねばならないのは、 同組織内の他システムと比べて、包括的設計は優れていたという点である。 特に、自動テストへの注力により、進化は平均よりも安全なものであった。 また、どちらのプロジェクトも明らかに欠陥率が低かった。

メタファによる問いかけの乱用になるが、 これは劣った変異を根絶しにしない環境だったと考えることができる。 通常、競合する設計が登場すると、すぐにどちらかが死ぬか、既存の設計が根絶やしにされるかのいずれかとなる。 ここで問題なのは、そのどちらも起きなかったという点だ。 となると、こういった疑問がわく。

”“「劣った設計をどうやってシステムから追い出せばよいのか?」

どちらのプロジェクトも包括的設計のためのリーダーシップが欠如していたかのように話したが、 大規模プロジェクトでは、 こういった問題に対して基本的なアプローチを固め、 何が行われるかについて密接なコミュニケーションをとるアーキテクチャ チームがそのリーダーシップの役割を担っていた。 2つ目のチームはそれまでこの問題に取り組んでこなかったが、 より安定した設計のためのリーダーシップが必要のようだ。 ここでは、進化のメタファではなく、 ブリーダーが劣った遺伝形質よりも優れた遺伝形質を優先するというメタファで考えたほうがよいだろう(ダーウィンはこれからヒントを得た)。

メタファはさておき、これは基本的に下記の原則にまで掘り下げられるものだと思う。

「卓越した技術と優れた設計に対する不断の注意こそが機敏さを高めます。」

進化的設計には注意、スキル、そしてリーダーシップが必要である。 これは、通常考えられているのとは異なるリーダーシップ(PDF)が必要だということである。

  • 2005-02-26 (土) 23:14:39 ‘’[[keis]]’’ : 私はこの方がわかりやすいように思います。それと、()内は「ダーウィンはこれからヒントを得た」だと思います。ダーウィンは進化論の研究のために鳩のブリーダーのクラブに入って自分も鳩を飼っていたそうですよ。進化論オタクなので細かくてごめんなさい(^-^)。
  • 2005-02-25 (金) 23:30:51 ‘’[[kdmsnr]]’’ : ありがとうございます。修正しました。これでどうでしょうか。
  • 2005-02-25 (金) 22:22:08 ‘’[[keis]]’’ : たしか、ダーウィンは遺伝子の存在や優性/劣性遺伝の理論(メンデルの理論)を知らず、あくまで形質の良否による生存率の差異に着目して適者生存の理論を打ち立てたと思います。”good traits and …poor ones”と書いているのは、優性/劣性ではなく、やはり形質の良否のことを言っているのでは?それに、優性/劣性なら、dominant/recessiveと書くと思います。
  • 2005-02-25 (金) 18:16:31 ‘’[[kdmsnr]]’’ : なるほど。「inferior」の部分だけ「劣性」から「劣った」に変更しました。
  • 2005-02-25 (金) 18:08:02 ‘’[[名無しさん]]’’ : ダーウィンからヒントを得たということは、適者生存、つまり優れたもののみが生き残ることを意味していると思います。また、原文からもそう受け取れます。しかし、生物学上の優性/劣性遺伝という言葉には優れた/劣ったという意味はありません。
  • 2005-02-25 (金) 14:00:37 ‘’[[kdmsnr]]’’ : できれば理由も沿えていただけるとありがたいです。私が劣性という言葉を使ったのは、メタファを使うよ、と断りを入れた後だからです。
  • 2005-02-25 (金) 13:15:15 ‘’[[名無しさん]]’’ : 劣性・優性でなく、劣った・優れたと訳すべきではないでしょうか?
  • 2005-02-22 (火) 13:11:03 ‘’[[kdmsnr]]’’ : 単体でネガティブ語にはならないと思いますが。
  • 2005-02-22 (火) 09:31:56 ‘’[[atsushi]]’’ : abundant に「度重なる」というネガティブな訳語をあてているのが気になりました。ニュアンス的に肯定的なものではないでしょうか?