В информатике проблемой является определенный набор информации , которая влияет на код компьютерной программы . Проблема может быть как общей, например детали взаимодействия с базой данных , так и конкретной, например, выполнение примитивных вычислений, в зависимости от уровня разговора между разработчиками и обсуждаемой программой. IBM использует термин « пространство проблем» для описания разделения концептуальной информации. [1]
Обычно код можно разделить на логические разделы, каждый из которых решает отдельные задачи, и таким образом скрывается необходимость того, чтобы данный раздел знал конкретную информацию, адресованную другим разделом. Это приводит к модульной программе. Эдсгер В. Дейкстра ввел термин « разделение ответственности » [2] для описания менталитета, лежащего в основе этой модульности, которая позволяет программисту уменьшить сложность проектируемой системы . Две разные задачи, которые смешиваются в одном и том же разделе кода, называются « сильно связанными ». Иногда выбранное разделение модулей не позволяет полностью отделить одну задачу от другой, что приводит к появлению сквозных проблем . [3] Различные парадигмы программирования в разной степени решают проблему сквозных проблем . Регистрация данных является общей сквозной задачей, которая используется во многих других частях программы, помимо конкретных модулей, которые фактически регистрируют данные. Поскольку изменения в коде журналирования могут повлиять на другие разделы, [ как? ] это может привести к ошибкам в работе программы.
Парадигмы, которые конкретно решают проблему разделения ответственности: