ПО должно поддерживать реальную жизнь.
Отличный лозунг, девиз, фраза, Максим.
Но не кажется ли Вам, что это, вообще, идеал, который пока не достижим?
Что значит поддерживать реальную жизнь? Это означает, что ПО должно по сути быть настолько гибким, насколько гибка и органична жизнь. Что противоречит самой концепции алгоритмов.
Как обеспечить гибкость? Пример:
есть система работы по кадровому учету.
Работа с кадровыми приказами и работа по штатному расписанию разделена по разным отделам.
Сотрудники отдела кадров не имеют право изменять объекты штатного расписания и соответствующих справочников.
Сотрудники отдела по штатному расписанию не имеют право изменять объекты, связанные с кадровыми приказами и справочником сотрудников.
Кроме того есть объекты работы с надбавками и доплатами, причем сотрудники отдела штатного расписания могут работать только с надбавками, работники отдела кадров только с доплатами.
И вот тут возникает конфликт. Сотруднику штатного расписания при назначении и снятии надбавки требуется доступ к справочнику сотрудников в режиме изменения, для того чтобы обновлять информацию по этим самым надбавкам у конкретного сотрудника. Однако как сказано выше доступ к справочнику сотрудников у него - только чтение.
Т.е. для решения данного вопроса приходится:
- или открывать справочник сотрудников на возможность изменения (что не хорошо по условию задачи)
- или делать специальную обработку в коде - что не есть хорошо по определению
- или осуществлять перепроектирование под возникшую проблематику
Как мы видим, предусмотреть все возможные ситуации вряд ли возможно, а следовательно, обеспечить гибкость, соответствующую реальной жизни нереально
Гибкость будет достигаться конкретными решениями в конкретный момент и обеспечиваться ЧЕЛОВЕКОМ