最近、資格の勉強をしていると「密結合」「疎結合」なる単語が良く出てくるので改めて調べてみる。
密結合と疎結合の概要
- 密結合
- 他と結びつきが強く依存する構造
- 独立性が弱い
- プログラム、コンポーネント同士が密接に結合していて分離すると動かない状態
- 疎結合
- 他と結びつきが弱い構造
- 独立性が強い
- プログラム、コンポーネント同士の結びつきが弱い状態
↓の画像でそれぞれどういう状態なのか確認する
参考:https://www.hitachi-solutions.co.jp/belinda/sp/special/feature07/
左側が密結合になっていて、右側が疎結合の状態になっている。
上記で示した概要に沿って確認してみる。
- 密結合
-
他と結びつきが強く依存する構造
「販売」に着目して、真っすぐな線で繋がっているのは「購買」「管理会計」である。
繋がっているために「販売」を変更してしまうと、「購買」と「会計管理」にも影響を及ぼしてしまう。 -
独立性が弱い
どの項目も他の項目と結びついているために独立性が弱くなっている。 -
プログラム、コンポーネント同士が密接に結合していて分離すると動かない状態
仮に「販売」の項目を「管理会計」から引き離すとすると、「管理会計」は「販売」と連携しているため、動かなくなる。
さらに、「管理会計」が動かなくなると、結びついている「生産」「購買」も動かなくなってしまう。
- 疎結合
-
他と結びつきが弱い構造
どの要素も他の要素と結びついておらず、「仕分けHUBソリューション」だけに結びついている。
そのおかげで、一部のみ変更しても全体のテストはしなくても済む。 -
独立性が強い
見ての通り、それぞれの要素が独立している。 -
プログラム、コンポーネント同士の結びつきが弱い状態
見ての通り、それぞれの要素同士は結びついておらず、独立している。
どちらにすべき??
小規模なものや高速な処理が必要な場合は密結合
常にアップデートするものや自由度を高めたい場合は疎結合
(ただし、システム間の連携が難しく、コストが高くなることが多いそう)