Поділ відповідальності

Поділ відповідальності (Separation of Concerns, SoC) [1] - один з основоположних принципів інженерної справи. Зокрема - програмної інженерії.

В інформатики, поділ відповідальності являє собою процес поділу комп'ютерної програми на функціональні блоки, як можна менше перекривають функції один одного. У більш загальному випадку, поділ відповідальності - це спрощення єдиного процесу рішення задачі шляхом поділу на взаємодіючі процеси за рішенням підзадач.

Поділ відповідальності дозволяє знизити системну складність, підвищити надійність і адаптивність (гнучкість) програм, забезпечити можливість їх повторного використання.

Будь парадигма програмування полягає в розділенні відповідальності. У випадку процедурного програмування - між процедурами і функціями, ООП - між об'єктами, Аспектно-орієнтоване програмування додає до цього списку аспекти.

Шаблони проектування, такі як MVC, забезпечують Поділ представлення і змісту.

Сервіс-орієнтована архітектура (SOA) припускає поділ відповідальності між сервісами.


Походження

Термін Separation of Concerns був вперше запропонований Едсгером Дейкстри в 1974 році в статті "On the role of scientific thought" [2] для опису процесу наукового мислення. У сучасному значенні цей термін був використаний в 1989 році Крісом Рідом в його книзі "Елементи функціонального програмування" [3].


Примітки

  1. Цей термін також можна перекласти і як "поділ сфер впливу". Слово англ. concern в юриспруденції означає "частку" або пай
  2. EWDijkstra, On the role of scientific thought (EWD447) - www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD447.html
  3. Chris Reade Elements of Functional Programming. - Addison-Wesley, April 1989. - 600 p. - ISBN 978-0201129151