システムを管理しやすい小さな部品(モジュール)に分割すること。
モジュール分割とは、システムを管理しやすい小さな部品(モジュール)に分けることです。モジュールとは、プログラムを機能ごとに区切った1つのまとまり(部品)のことを指します。
巨大なプログラムを1つの塊のまま作ると、どこに何があるか分からず、1か所直すと別の場所が壊れる、といった問題が起きます。そこで機能ごとに部品に分けておくことで、必要な部品だけを直したり、別のシステムで使い回したりできるようになります。
身近な例で考えると、レゴブロックに似ています。1枚の大きな板で形を作ると壊して作り直すしかありませんが、小さなブロックの組み合わせなら、一部だけ差し替えて修理したり別の作品に再利用したりできます。上の図解で、絡み合った大きな塊が機能ごとの部品に分かれる様子を確認しましょう。
分かりやすく保守しやすい部品にするには、分割の仕方に方針があります。
・1モジュール1機能:1つの部品は1つの役割だけを担うようにする
・適切な大きさ:大きすぎず小さすぎず、扱いやすいサイズに保つ
・関連の深い機能はまとめる:一緒に使う処理は同じ部品に入れる
・つながりは少なく:部品同士のやり取りはできるだけ減らす
代表的な分割の技法(手法)には、データの流れに沿って分けるSTS分割・TR分割や、データ構造に着目して分けるジャクソン法・ワーニエ法などがあります。いずれも目的は同じで、「中はよくまとまり、外とのつながりは少ない部品」を作ることです。
分割が「良い」かどうかを測るものさしが、強度(凝集度)と結合度です。良い分割は「強度は強く、結合度は弱く」が基本です。
| ものさし | 意味 | 良い分割は |
|---|---|---|
| 強度(凝集度) | 1つの部品の中の機能のまとまりの強さ | 強いほど良い |
| 結合度 | 部品同士の依存(つながり)の強さ | 弱いほど良い |
強度は「部品の中身がどれだけ1つの目的にまとまっているか」、結合度は「部品と部品がどれだけ深く依存し合っているか」を表します。中身がよくまとまり(強い強度)、外とのつながりが少ない(弱い結合度)部品ほど、1か所の修正が他に波及しにくく、保守も再利用もしやすくなります。
文房具で考えると、「機能がそろった筆箱」のようなイメージです。筆箱の中はペン・消しゴムなど書く道具でまとまっていて(強い強度)、他の引き出しと中身を奪い合わない(弱い結合度)ほど、持ち運びやすく管理も楽になります。