CTS-KB

SoC

えすおーしー

Separation of Concerns関心の分離
#設計原則#ソフトウェア工学#アーキテクチャ

ソフトウェアを「関心(Concern)」ごとに分離して設計する原則。Edsger Dijkstra が 1974 年に提唱した。

概要

一つのモジュールが一つの関心だけを扱うように設計する。「関心」とは、ビジネスロジック、データアクセス、UI 表示、エラー処理など、ソフトウェアが解決すべき個別の課題を指す。

適用例

レイヤー関心変更理由
UI / 画面表示・入力デザイン変更
ビジネスロジック業務ルール仕様変更
データアクセス永続化DB 変更

レガシーシステムでの SoC

RPG のサービスプログラム(*SRVPGM)は SoC の実践例。受注ドメイン(ORDSRV)、在庫ドメイン(INVSRV)のように業務領域ごとにサービスを分離し、モダナイゼーション時にはそのままマイクロサービスの境界候補になる。

COBOL でも DAO パターン(データアクセスの分離)を適用することで、業務ロジックと SQL を分離できる。

関連用語

  • DRY — SoC と補完関係にある設計原則
  • RDD(責務駆動設計) — SoC をオブジェクト設計に適用した手法
  • YAGNI — 過剰な先回りの関心分離は YAGNI 違反になり得る