User:Kumagi/ソフトウェア工学の基本定理

ソフトウェア工学の基本定理(FTSE: The Fundamental Theorem of Software Engineering)は、Andrew Koenig が作成した用語であり、バトラー・ランプソンが説明する所によるとデビッド・ホイーラー によるものとされる以下の発言である:

""We can solve any problem by introducing an extra level of indirection.""

この定理は、証明できる実際の定理を説明しているわけではなく、むしろ、抽象化 によって複雑さを管理するための一般原則である.

また、この定理はしばしばこのユーモラスな句によって拡張されることもある. "…間接化が多くなり過ぎる問題を除いて" これはつまり、抽象化が多すぎるとそれ自体が固有の複雑さの問題を引き起こす可能性があるという意味である.

たとえば、現在広く使われているコンピュータネットワークでのプロトコルの階層化は、典型的な抽象化の欠点の典型であるとして批判されている. 間接化を追加すると上位層が下位層の機能を複製して非効率になりうる、またあるレイヤーの機能が別のレイヤーにのみ存在するデータを必要としてしまう場合があり、結果として異なるレイヤーに分離するという抽象化の目的に根本的に違反している事になる.


 * Indirection