Бизнес-процессы можно автоматизировать разными способами, отличающимися степенью жесткости автоматизации. Другими словами, некоторые способы автоматизации позволяют повторять процесс с меньшими вариациями.
Семантическая точность - это то, что определяет жесткие и гибкие части автоматизации бизнес-процесса. Чем выше точность, тем меньше гибкости.
Обычно более семантически точные системы/процессы являются более эффективными. Но это не всегда так.
В случае компьютерных приложений очевидно, что семантический уровень (semantic awareness) закладывается архитектором, поскольку именно архитектор определяет используемые абстракции. Пользователи системы не могут изменить этот уровень и вынуждены пользоваться имеющимся. Поскольку вариативность бизнес-процесса исходит от пользователей, они оказываются в ситуации, когда ПО неспособно реализовать требуемую автоматизацию для новой версии бизнес-процесса даже с небольшими отклонениями от первоначального варианта.
Другими словами, современные компьютерные системы зачастую очень жестко автоматизируют процесс, так как работают с очень семантически точными данными, то есть функционируют на предельно конкретном уровне. Жесткость автоматизации приводит к тому, что при малейших изменениях процесса ПО приходится изменять на уровне артефактов (изменять код, перекомпилировать, деплоить новый экземпляр).
За счет введения семантически оправданных абстракций возможно обобщить системы и таким образом “смягчить” автоматизацию и поддержать большее количество вариаций в бизнес-процессах. Это можно (и нужно) делать инкрементно, т.е. при получении новых требований расширять/обобщать (а не заменять нужную часть) ПО, чтобы поддержать любые изменения такого рода (в идеале - без изменения кода и деплоя нового экземпляра). Другими словами, Обязательно следовать OCP при изменениях кода.
Тут возможны связи, которые еще предстоит обдумать:
- Чем специфичнее требования, тем более общим должен быть код
- Простые и общие правила позволяют обуздать сложность.
- Сопротивление абстракциям в коде