モジュールという言葉はIT、建築、製品分野など様々な場面で用いられます。
使われる場面によって定義は変わりますが、この記事ではIT分野での意味を解説します。
モジュールとは…?
モジュールとは、システムを構成する「部品」となるものです。
例えば車で例えてみます。車は1つの物体として動いていますが、その中にはいくつもの小さな部品が組み込まれています。その小さな部品のことをモジュールといいます。
モジュール設計とは…?
システムが大規模になるほどプログラムが複雑になっていきます。複雑になるほど管理しにくくなり、それに伴いエラーが起こりやすくなってしまいます。エラーが多くなることはシステムの品質を低下させることにもつながります。
品質の低下を防ぐためにも、プログラムを最も小さいモジュールの単位まで分割する必要があります。その為、IT分野においてモジュールを細かく分割する基準が設定されました。
分割の基準について以下で詳しく解説します。
分割基準
プログラムの信頼性と保守性を高くするためには、管理しやすいように単純なプログラムをつくる必要があります。
単純なプログラムとは、一言でいうとモジュールの強度が強く、結合度が弱いものです。
強度が強く、結合度が弱い?いまいちピンと来ませんね。どういうことかさらに詳しくみていきましょう。
モジュールの強度
モジュールの強度とは、モジュール内部の機能の関連の強さのことです。
この強度は7つの段階に分けられています。段階別に表に表しました。
この表からわかるように、機能的強度が最も強度が高く、単純なプログラムを作ることができます。一方暗号的強度が最も強度が弱く、機能の関連性がなありません。良いプログラムを作るという観点からいえば、機能的強度をもつモジュールが優れているということですね。
機能的強度
1つの機能だけを実行するモジュールのことを指します。
情報的強度
特定の同じデータの構造を扱う複数の機能を、1つにまとめたモジュールを指します。
連絡的強度
順番に行われる複数の機能を実行して、機能同士でデータの受け渡しを行ったり、同じデータを参照するモジュールのことです。
手段的強度
順番に行われる複数の機能を実行するモジュールのことです。
時間的強度
特定の時期に、順番に行われる複数の機能を実行するモジュールのことです。
論理的強度
関連した複数の機能を1つにまとめて、その中から1つだけを選んで実行するモジュールのことです。論理的な関連性があり、引数などによって行う処理を選択します。
暗号的強度
全く関連性のない複数の機能を実行するモジュールです。機能同士の関連性は考えずに、単純にプログラムを分割して複数の機能を1つにまとめています。
モジュール結合度
モジュール結合度とは、モジュール同士の結合の強さのことです。モジュール強度がモジュールそれ自体の強度の強さだったのに対して、結合度はモジュールとモジュールの関係の強さを表しています。
先ほどプログラムの信頼性と保守性を高くするためには、単純なプログラムをつくる必要があると言いました、そのため、モジュールの結合度が低いほど良いプログラムをつくることができると言えます。
強度が7つの段階に分かれていたように、こちらの結合度は6つの段階に分かれています。以下表のとおりです。
データ結合
複数のモジュール通しで必要なデータだけを受け渡しします。受け渡すデータは因数や返り値など単純なものです。
スタンプ結合
複数のモジュール通しで、共通しない領域のデータの構造を受け渡しをします。
複数のデータをつなげた複合的なデータを渡しますが、そのすべてのデータを使うわけではありません。
制御結合
処理内容を伝えために、他のモジュールにデータを渡して内部の処理を生制御する関係です。
モジュールの実行に影響を与えるような制御の情報を受け渡しをします。
外部結合
プログラムの外部で定義されたデータの形式や、津伸プロトコルを複数のモジュールで共有します。
共通結合
共通の領域に定義されたデータ構造、つまりプログラム全体で有効なグローバル変数などのデータを複数のモジュールで共有します。
内部結合
他のモジュールの内部の動作に直接影響を与えたり、参照をします。
まとめ