Классификация бизнес-правил
Коротко Бизнес-правила существуют независимо от того, есть ли ПО, но именно из них вытекают многие требования к ПО. Вигерс и Битти делят их на пять типов плюс термины и показывают, как делать каждое правило атомарным, записывать его один раз в каталог и связывать с ним требования, а не копировать его текст.
По материалам: К. Вигерс, Дж. Битти, «Разработка требований к программному обеспечению», 3-е изд., гл. 9; в Руководстве BABOK® этой теме соответствует техника 10.9 «Анализ бизнес-правил».
На этой странице
Главные идеи#
Что такое бизнес-правило#
К бизнес-правилам (business rules) относятся корпоративные политики, государственные нормативные акты, отраслевые стандарты и методы расчёта. Они действуют, даже если процесс полностью ручной. Правило — это не бизнес-процесс (последовательность шагов) и не бизнес-требование (цель). Оно формирует процессы: определяет словарь, вводит ограничения, запускает действия и управляет расчётами.
Одно правило — много видов требований#
Правило может порождать требования любого уровня. Новый нормативный акт может задать бизнес-цель целого проекта. Политика конфиденциальности может определять, каким пользователям что разрешено. Правило может требовать конкретной функции системы. Нормы безопасности могут превратиться в атрибуты качества.
Типы#
- Факты — утверждения, верные для бизнеса на определённый момент; обычно они связывают между собой термины: «у каждого контейнера есть уникальный штрихкод». Фактов у компании бесконечно много; собирайте только те, что связаны с границами вашего проекта.
- Ограничения — что система или её пользователи должны или не должны делать; ищите слова «должен», «не должен», «только». Отделяйте их от ограничений проекта (бюджет, сроки) и ограничений дизайна. Матрица ролей и прав (роли × операции) компактно фиксирует ограничения, связанные с ролями.
- Активаторы действий — «если такое-то условие или событие, то выполнить такое-то действие». Сложные сочетания условий выносите в таблицу или дерево решений.
- Логические выводы — тоже «если… то…», но результат — новый факт, а не действие: «если оплата не поступила в течение 30 дней, счёт считается просроченным».
- Вычисления — формулы или алгоритмы, которые порождают новую информацию. Ступенчатые расчёты оформляйте таблицей и следите, чтобы диапазоны не пересекались (если диапазоны 1–5 и 5–10, куда отнести 5?).
Рядом с ними стоят термины — ключевые бизнес-слова, словосочетания и сокращения; их лучше всего вести в глоссарии или словаре данных.
Атомарные правила#
Не упаковывайте несколько правил в одно предложение. Вигерс и Битти приводят рекомендацию фон Халле (von Halle): никаких ИЛИ в левой части правила «если… то…» и никаких И в правой. Атомарные правила меняются независимо друг от друга. Давайте им иерархические идентификаторы, например Booking.Cancel.FreeWindow, — это заодно упрощает трассировку.
Каталог правил#
Ведите как минимум такие столбцы: ID, текст правила, тип, статическое или динамическое, источник. Деление на статические и динамические правила важно для разработчиков: правила, которые, скорее всего, изменятся, должны жить в конфигурации или данных, а не в коде. В книге рассказана история системы управления воздушным движением, где интервалы эшелонирования ошибочно сочли статическими и зашили в код, что привело к дорогой переделке. Ведите каталог на уровне предприятия, во владении бизнеса, а не в документах одного проекта, иначе каждая система реализует одно и то же правило по-своему.
Где искать правила#
Опытные сотрудники, унаследованные системы (восстановите по ним требования или разберите код), модели процессов (ищите правило на каждом шаге), документы (старые спецификации, нормативные акты, договоры), данные (состояния объектов и то, что запускает переходы между ними) и подразделения, отвечающие за соблюдение нормативных требований (комплаенс). Вопрос «Какие у вас бизнес-правила?» не работает. Задавайте прицельные вопросы: от чего меняется этот статус? Как рассчитывается это значение? Чего требуют регуляторы? Что пользователь может сделать дальше?
Ссылайтесь, а не копируйте#
Свяжите требование с его правилом через атрибут «источник» в инструменте управления требованиями, через матрицу трассировки или гиперссылки между идентификаторами (они ломаются, когда документы перемещают). Спецификация указывает на эталонную копию в каталоге, поэтому при изменении правила вы найдёте все требования, которые от него зависят. Когда одно правило порождает несколько похожих требований, оформите их таблицей с суффиксами в ID.
Как применять#
- Соберите кандидаты в правила из перечисленных выше источников и запишите каждое атомарно.
- Отнесите каждое правило к типу; тип подсказывает, как его моделировать (матрица, таблица решений, таблица формул, статья глоссария).
- Запишите каждое правило один раз в каталог, с источником и признаком «статическое/динамическое».
- Связывайте требования с ID правил; никогда не вставляйте текст правила в спецификацию.
- Попросите разработчиков делать динамические правила настраиваемыми.
- Проверяйте каталог вместе с владельцами правил, а не только с командой проекта.
Пример#
«Мастерская», вымышленная сеть веломастерских, начинает с одного составного правила: «Запись можно бесплатно отменить не позднее чем за 24 часа до назначенного времени и один раз перенести, если только под неё ещё не заказана запчасть». После разбиения на атомарные получаются три правила, каждое со своим ID: окно бесплатной отмены, лимит переносов и исключение для заказанной запчасти.
Шаблон#
| ID | Правило | Тип | Статическое / динамическое | Источник |
|----|------|------|------------------|--------|
| Bike.FrameNumber | У каждого велосипеда, принятого в ремонт, записан номер рамы. | Факт | Статическое | Операционная политика |
| Discount.Approval | Только управляющий мастерской может утвердить скидку больше 10% от суммы заказа. | Ограничение | Динамическое | Владелец |
| Parts.AutoOrder | Если для ремонтного заказа нужна запчасть, которой нет на складе, поставщику оформляется заказ на запчасти. | Активатор действия | Статическое | Порядок заказа запчастей |
| Job.Abandoned | Если велосипед не забрали в течение 30 дней после уведомления о готовности, заказ считается брошенным. | Логический вывод | Динамическое | Условия обслуживания |
| Labour.Charge | Стоимость работ = отработанные часы × почасовая ставка для тарифной категории работ по заказу. | Вычисление | Динамическое | Прайс-лист |
Подводные камни#
- Собирают все факты компании. Держитесь в границах проекта.
- Составные правила. Разделяйте их, иначе одно изменение заставит переписывать всю формулировку.
- Зашивают в код правила, которые меняются. Помечайте динамические правила и делайте их настраиваемыми.
- Копируют текст правил в требования. Копии расходятся; ссылайтесь на каталог.
- Каталогом владеет только ИТ. Подразделения бизнеса должны сами владеть своими правилами.
Источники и что почитать#
- K. Wiegers, J. Beatty. Software Requirements, 3rd ed. Microsoft Press, 2013. Рус. изд.: К. Вигерс, Дж. Битти. Разработка требований к программному обеспечению, 3-е изд. М.: Русская редакция; СПб.: БХВ-Петербург, 2014. Гл. 9.
- IIBA. A Guide to the Business Analysis Body of Knowledge (BABOK® Guide), version 3. International Institute of Business Analysis, 2015. Рус. изд.: Руководство к своду знаний по бизнес-анализу (Руководство BABOK®), версия 3.0. Техника 10.9 «Анализ бизнес-правил».