みつ‐けつごう〔‐ケツガフ〕【密結合】
密結合
【英】tight coupling
密結合とは、細分化された個々のコンポーネント同士が密接に結びついている状態のことである。
密結合状態のシステムでは、緊密で高速な動作が可能となっているが、一方のコンポーネントが異常をきたすと、他方のコンポーネントがその影響を受けてしまう。そのため密結合のシステムでは、保守や部品の交換などに際して密接な連携を顧慮する必要がある。
密結合はマルチプロセッサシステムのようなハードウェア的なものから、アプリケーションソフトのようなソフトウェア的なものまで、幅広く見られる状態である。なお、密接な連携状態を意味する密結合に対して、個々のコンポーネントの独立性が高くて相互依存性の低いシステムは、疎結合と呼ばれる。
結合度
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。2023年1月) ( |
結合度(けつごうど、カップリング、coupling)とは、コンピュータープログラミングで用いられる(機械よりは)人間寄りの尺度。ソフトウェア測定法の一種。利用者またはメンテナンスをする者にとって対象を利用、保守しやすいように対象の内容が整理、分割できているかどうかを、その状態によって段階に分けて表現する。
概説
コンピュータープログラマにとっては、既存のソフトウェア製品に対して 無い機能の追加、対応していないデータへの対応といった事柄に対応する場面がある。この際、全ての既存のソフトウェア製品の内部(より具体的にはソースコード)の各機能各データに対して、どのデータはどこで利用されまたどこで利用されていないか確実に判断できるよう整理、分割が行き届いている状態を結合度が低いと表現する。結合度は低いほど好ましい。逆に結合度が高いとは、例えば1つのデータの持ち方の変更が 部品の関連性を伝って波及し(遠く離れた、と感じる)意図しなかった箇所での不具合を招く。1つの変更に対して 広範囲かつ複数の散在した箇所の部品の動作を改造する必要が出てくることがある。
結合度の程度
結合度の概念モデル
結合度は、品質尺度であり、ソースコードを調査検討することで結合度の程度が分類される。高い結合度から低い結合度までを以下のように分類できる:
手続き型プログラミング
- 内容結合(Content coupling)「高」
- 病理学的結合とも呼ばれ、あるモジュールが別のモジュールの内部動作によって変化したり依存したりする(例えば別のモジュールの内部データを直接参照する)。したがって、あるモジュールのデータを生成する方法(場所、種類、タイミング)を変更することは、依存するモジュールの変更につながる可能性がある。
- 共通結合(Common coupling)
- グローバル結合とも呼ばれ、二つのモジュールが同じグローバルデータ(例えば、グローバル変数)を共有する。共通のリソースを変更すると、それを使用したすべてのモジュールを変更することを意味する。
- 外部結合(External coupling)
- 二つのモジュールは、外部から供給されたデータ·フォーマット、通信プロトコル、またはデバイスインターフェイスを共有している場合に起こる。 これは基本的に外部ツールやデバイスへの通信に関連している。
- 制御結合(Control coupling)
- あるモジュールに何をすべきかについての情報(例えば、処理を制御するためのフラグ)を渡すことで、別のモジュール処理の流れを制御する。
- スタンプ結合(Stamp coupling)
- 複数のモジュールが複合データ構造を共有し、その一部のみを使用する(例えば、全レコードの中の1つのフィールドを必要とする関数に全レコードのデータの構造体を渡す)。異なる部分も使用可能。これは、モジュールが必要としないフィールドが変更されることにより、モジュールのレコードを読み取る方法を変更することにつながる可能性がある。
- データ結合(Data coupling)
- モジュールを介してデータを共有する場合、例えば、引数である。 各データは基本部分であり、これらは単純なデータの受け渡しのみを行う(例えば、数値を渡してその平方根を返す)。
- メッセージ結合(Message coupling)「低」
- 最も結合度が低い結合の種類である。(引数のない)メソッドの呼び出し。メッセージパッシング。
- 無結合(No coupling)
- モジュールが相互に全く通信を行わない。
オブジェクト指向プログラミング
- サブクラス結合(Subclass Coupling)
- 子クラスとその親クラスとの間の関係で、子クラスは、その親クラスに依存しているが、親クラスが子クラスを知らない状態。子クラスが親クラスに依存しすぎると、親クラスを修正するのが難しくなる。
- 一時的結合(Temporal coupling)
- あるメソッドが別のメソッドに依存すること(例えば、executeしないとerrorが取得できない)。
関連項目
密結合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/05/29 06:38 UTC 版)
「Transaction Processing Facility」の記事における「密結合」の解説
TPF はマルチプロセッサでの動作が可能である。TPF のプログラムはリエントラントであるため、マルチプロセッサであっても全く問題なく動作する。立ち上がり時にメインのCPUが決定される。プログラムはAPIによって明示的に使用するCPUを指定される。z/TPFでは、CPUを指定しないで起動されたアプリケーションは負荷バランスを調整するようになっている。 TPFアーキテクチャでは、各CPUはメモリを共有するが、CPU毎の固有領域が4Kバイトずつ存在する。アプリケーションでCPU毎に固有のメモリ領域が必要な場合、各CPUに同サイズの領域を割り当てるようアプリケーションを設計する。例えば、この方式でTPFではCPU毎にユニークなグローバル変数をサポートしている。このような領域へのアクセスはベースアドレスに自動的にCPU番号に相当する値を加算することで行われる。
※この「密結合」の解説は、「Transaction Processing Facility」の解説の一部です。
「密結合」を含む「Transaction Processing Facility」の記事については、「Transaction Processing Facility」の概要を参照ください。
- 密結合のページへのリンク