構造化における保守性の高め方

モジュール(module) とは、様々な種類のサブルーチンつまり 何らかの処理がまとめられた返り値のない手続き(の複数がまとまったもの)や、返り値のある関数(の複数がまとまったもの)、またはクラスなどがあつまったまとまりのこと です(図16)。先に述べたように、人間の能力は有限ですから、 途方もないわかりづらいソースコードの山を作り上げる前に、プログラマのミスをカバーできるようにプログラムは作っていくべき です。前節で、プログラムを正しいモジュールの組み合わせとして作っていく、段階的作成法の大まかな流れと利点を説明しました。この 段階的作成法においては、プログラムの正確性を主眼に置いていました 。ですが、それ以外にもプログラムに関する指標は数多く存在します。その中でも特に有名なものとして、バグの発見しやすさ修正しやすさである保守性 に則ったモジュールを作成するための構造化設計の指標である、結合度 と凝集度 があります。
ここで保守性とは、修正のしやすさに関するソフトウェア製品の能力\(\dagger\)を意味します。
先に述べた途方もないわかりづらいソースコードをなんとか組み上げ、(一応)要件を満たした上でプログラムを動作させることができたとしても、プログラマの役割はそれで終わりではありません。一般的には、新たな機能追加やバグ修正など、積み上げられたソースコードの山の改修が待ち受けているのです。しかし、そのようなソースコードの山を修正することは、うずたかい粗雑に組み上げられた積み木を崩さずに、不要なパーツを抜き取り、あるいは差し込むことで再構築するようなもので、プログラマに時間的にも労力的にも多大な負担をかけることは容易に想像できるはずです。こうした状況を未然に防ぐためには、プログラム作成時に、ソースコードを保守性の高い書き方で記述することが重要になります。
結合度と凝集度に注目してモジュールを作成していくことで保守性の高い構造化を行うことができます。次節から、これら指標がどのようなものか説明してきます。
\(\dagger\): JIS X 0129-1 ソフトウェア製品の品質 第1部:品質モデル