段階的詳細化の盲点

設計原則に「段階的詳細化」がある。設計は、階段を上るように一歩一歩、さらに徐々に細かく記述してべきである、ということだ。実はこれには3つの意味がある。

1つは、構成要素を徐々に分割していくということである。もう1つは、構成要素の内部を徐々に詳しく記述していくことである。詳述化とも言われる。さらにもう1つは、設計の抽象レベルに合わせて段階的に詳細化していくという意味である。通常、ソフトウェア設計のプロセスは抽象レベルにより3段階くらいには分けられているだろう。アーキテクチャ設計、詳細設計、モジュール設計(=クラス設計)などである。

気になるのは、この原則を単独で主張するだけでよいのかということだ。段階的詳細化はトップダウンのアプローチである。ボトムアップが無視されている。

常々、様々な分野で戦略としてトップダウンアプローチとボトムアップアプローチが唱えられているが、それぞれのアプローチを単独で主張するばかりのものが多いと思っている。問題なのは、重要なのは、それらの接点をいかに融合させるかということだ。

ソフトウェア設計では、ボトムアップにより共通化を行わなければならない。これも重要な原則だ。共通化トップダウンでは行えない。トップダウンで階層化された構成要素から類似するものに着目し、ボトムアップで抽象化し、共通部分を識別するはずである。この作業もあわせて考慮しなければならない。設計の抽象レベルに合わせて段階的に詳細化する際には、ボトムアップで抽象化して共通部分を抽出するという作業を含めて主張しておくべきである。