SoCSeparation of concern (SoC) (поділ інтересів) є концепцією розробки, що розділяє комп’ютерну програму на різні частини, або проблеми (концерни), у якій кожна частина має свою мету. Створюючи ці частини потрібно прослідкувати, щоб кожна оперувала інформацією, яку може обробити незалежно від інших частин.  Багаторівнева (n-tier) розробка є прикладом SoC у якому користувацький інтерфейс (UI) відділений від рівня бізнес логіки та рівня доступу до даних. Програми, що використовують концепцію SoC називають модульними програмами. При вдалому застосуванні цієї концепції кожна частина програми може розроблятися незалежно.

 

Термін Separation of Concern (SoC) був вперше введений Едсгером В. Дейкстром в його статті 1974р.Про роль наукової думки”.

Дозвольте мені спробувати пояснити вам, що на мою думку  є характерним для всього інтелектуальних мислення. Це те, що дехто готовий вчитися та заглиблюватися в глибинні аспекти своєї тематики в ізоляції від інших речей, заради власної послідовності, весь час знаючи, що він окупує себе тільки з однієї сторони. Ми знаємо, що програма повинна працювати правильною, і ми можемо вивчати її тільки з цієї точки зору; ми також знаємо, що вона повинна бути ефективною, і ми можемо вивчати її ефективність в інший день, так сказати. В іншому настрої ми можемо запитати себе чи, і якщо так: чому, програма є бажаною. Але нічого не вирішимо, а навпаки – вирішуючи ці різні аспекти одночасно. Це те, що я іноді називаю “separation of concern (поділ інтересів)”, який якщо не цілком можливий, то це техніка для ефективного впорядкування своїх думок. Я маю на увазі “фокусувати свою увагу на якийсь аспект”: це не означає, не звертаючи уваги на інші аспекти, це просто віддаючи належне тому, що з точки зору цього аспекту, інший не має значення. Це обдування чогось конкретного і комплексу рішень одночасно.

Через п’ятнадцять років термін Separation of Concern було визнано офіційно. У 1989, Кріс Рід написав книгу з назвою “Елементи функціонального програмування”, де описав поділ інтересів:

Програміст має зробити кілька речей одночасно, а саме:

  1. описати, що потрібно обчислити;
  2. організувати перелік кроків обчислення;
  3. організувати менеджмент пам’яті на час обчислення;

Далі Рід говорить,

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

Поділ інтересів має також й інші переваги. Для прикладу, програма доводить більшу ефективність, коли перелік кроків обчислення і пам’яті відсутні. Більше того, опис того, що повинно бути обчислено не повинен бути покроковимякщо обчислення виконуватимуться на машинах з різними архітектурами. Опис послідовності невеликих змін в об’єкті даних, що відбулися в сховищі може бути недоречним коли використовуються паралельні обчислення з тисячами процесорів, розподілених по всій машині і локальні, а не глобальні сховища.

Автоматизація адміністративних аспектів означає, що мова реалізатор має справу з ними, але він / вона має набагато більше можливостей, щоб використовувати дуже різні механізмами обчисленя з різною архітектурою машини.

Напишіть відгук

Ваша пошт@ не публікуватиметься. Обов’язкові поля позначені *