ソフトウェアを「関心(Concern)」ごとに分離して設計する原則。Edsger Dijkstra が 1974 年に提唱した。
概要
一つのモジュールが一つの関心だけを扱うように設計する。「関心」とは、ビジネスロジック、データアクセス、UI 表示、エラー処理など、ソフトウェアが解決すべき個別の課題を指す。
適用例
| レイヤー | 関心 | 変更理由 |
|---|---|---|
| UI / 画面 | 表示・入力 | デザイン変更 |
| ビジネスロジック | 業務ルール | 仕様変更 |
| データアクセス | 永続化 | DB 変更 |
レガシーシステムでの SoC
RPG のサービスプログラム(*SRVPGM)は SoC の実践例。受注ドメイン(ORDSRV)、在庫ドメイン(INVSRV)のように業務領域ごとにサービスを分離し、モダナイゼーション時にはそのままマイクロサービスの境界候補になる。
COBOL でも DAO パターン(データアクセスの分離)を適用することで、業務ロジックと SQL を分離できる。
関連用語
- DRY — SoC と補完関係にある設計原則
- RDD(責務駆動設計) — SoC をオブジェクト設計に適用した手法