質問: ニール・フォードの「進化的アーキテクチャ」では、「適応度関数」というコンセプトが提案されています。 以下は現在のところまでの、(まだあまり正しい理解を得ている自信がないのですが)私の理解です。 まず適応度関数は、対象のシステムのアーキテクチャの様々な **次元** を 数値的に把握するための計算手段のことだと理解しました。 そしてここでいう次元とは、アーキテクチャの良し悪しに関する **観点** のことで、 システムに今後要請していきたい性質を定義するための物だと私は理解しました。 よくアーキテクチャの議論では、ビューポイントカタログとしてアーキテクチャの良し悪しを定める上での視点が示されます。 適応度関数は、 **時系列による変化** にチームが能動的に、各種のビューポイントを踏まえながら、 アーキテクチャを **適応** させるために、アーキテクチャの良し悪し自体を計算出来るようにしたように見えました。 しかし、その後本文では、循環的複雑度のように計算できる物だけではなく、 NetflixのChaos Monkeyなども適応度関数の実例として示されています。 そこで混乱しています。これをどのように理解したらよいでしょうか。 (少し思っている所としましては、ChaosMonkeyは具体的な **数値** を示す物ではないが、チームがアーキテクチャの適応を起こすために有用な **情報** をもたらしてくれるので、適応度関数の1つ、というような理解があるかと思うのですが、正しいでしょうか。)
回答: 書籍『進化的アーキテクチャ』の訳者、島田と申します。 ご質問に書かれている通りの理解で大丈夫だと私も考えています。 適応度関数については、「2.1 適応度関数とは」(P21~P22あたり)の説明において、 > > アジャイルソフトウェア開発における受け入れ基準と同様、進化的アーキテクチャにおける適応度関数もソフトウェアでは実装できない場合がある。それでも...(中略)...アーキテクチャ上の検証を適応度関数として明らかにすることは依然として有効だ。 > > > という記載があります。 ここでの記述から、私も > > まず適応度関数は、対象のシステムのアーキテクチャの様々な 次元 を > > 数値的に把握するための計算手段のことだと理解しました。 > > > を基本としつつ、そこからはみ出るもの、すなわち > > チームがアーキテクチャの適応を起こすために有用な 情報 をもたらしてくれるもの > > > も適応度関数とみなしておくことに価値があるというのが著者らの主張だという理解をして、本書を訳しておりました。 参考になりますと幸いです。