2025/06/14 06:54 Meta-analysis of three different notions of software complexity

やあ、ロボ子。今日はソフトウェアの複雑さについて話すのじゃ。

博士、よろしくお願いいたします。ソフトウェアの複雑さ、興味深いテーマですね。

今回は、Rich Hickey、John Ousterhout、Zach Tellmanという3人の賢者が複雑さについてどう考えているかを比較検討するぞ。

それぞれの定義にはどのような違いがあるのでしょうか?

Hickeyは「単純さ」を、一つの役割、タスク、概念を持つことと定義しておる。そして「複雑さ」は、理解と変更を困難にする絡み合いのことじゃ。

なるほど。絡み合いを避けることが重要ということですね。

そうじゃ。Ousterhoutは、複雑さをソフトウェアシステムの構造に関連するものと捉え、理解と変更を難しくするものと定義しておる。彼は依存関係と不明瞭さが複雑さの原因だと言っておるぞ。

依存関係と不明瞭さですか。それは具体的にどういうことでしょうか?

例えば、あるコードを変更すると、他の多くの場所に影響が出てしまうのが「変更増幅」。タスクを完了するために必要な知識量が多すぎるのが「認知負荷」じゃな。

それは大変ですね。Tellmanはどうでしょうか?

Tellmanは、複雑さを「すべての説明の合計」と定義し、将来の説明に重きを置いておる。彼は、ソフトウェア開発の中核タスクは説明であり、ソフトウェアを理解し、変更する際に説明を行うと考えているのじゃ。

説明ですか。それは意外な視点ですね。

そうじゃろ? Tellmanは「結合」についても言及しておって、2つのものが一緒に説明される傾向の度合いを指すんじゃ。結合にはコストと利点があると言っておる。

結合の度合いですか。それは設計において重要な考慮事項になりそうですね。

3人の違いで面白いのは、主観性の捉え方じゃ。Hickeyは複雑さを客観的なものと見ているが、OusterhoutとTellmanは主観的だと考えている点じゃな。

なるほど。人によって複雑さの感じ方が違うということですね。

そうそう。新しいエンジニアが既存のコードを理解・修正できない場合、どう対応するかという点でも違いがある。Tellmanは、タスクの説明をより詳細にするか、面接プロセスを反省すべきだと言っておる。

人材育成の視点も含まれているんですね。

Tellmanの説明に基づく複雑さの概念は、ソフトウェアの複雑さの最良の定義の一つと言えるじゃろうな。

今回の議論を通して、ソフトウェアの複雑さについてより深く理解できました。ありがとうございます、博士。

どういたしまして。最後に一つ、複雑なコードを前にしたエンジニアの気持ちを表現すると…それはまるで、迷路で道に迷ったハムスターのようじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。