Upload
sqalab
View
136
Download
4
Embed Size (px)
Citation preview
Роль бизнес-аналитика
в разработке собственной
Business Rule Engine
с нуля
Антон Наумович
DPI Solutions / LogicNow
Немного о себе
Антон НаумовичБолее 10 лет опыта в IT
● Тимлид/архитектор/BA в LogicNow
● Консультант в DPI Solutions
● В прошлом – разработчик в Microsoft,
команда Hyper-V (Windows Server 2008
R2/2012)
● Активист сообщества COMAQA.BY
Business Rule Engine (BRE)
Это организация системы таким образом, что...
● бизнес-правила выделяются в отдельную
независимо развиваемую от ядра часть
● эта часть обычно описывается и реализуется
через один или несколько Domain-Specific
Language (DSL)
Business Rule Engine – изменчивый, гибко
конфигурируемый “плагин” в стабильном ядре
системы
Когда такой подход применим
1. В системе есть достаточно крупные
подсистемы, описываемые через бизнес-
правила
2. Параметры бизнес-правил часто меняются в
течение жизни системы (=меняются
“подпрограммы” на DSL)
3. Принципиально меняется сама природа
бизнес-правил (=меняется грамматика
DSL)
Ubiquitous Language (UL)
Всепроникающий язык – глоссарий проекта,
общий как для технических, так и для бизнес-
специалистов
● Служит основой для выработки синтаксиса DSL
● Используется в коммуникации и документации
● Обеспечивает единственно верное толкование
требований
Domain-Specific Language (DSL)
● DSL – достаточно простой язык, предназначенный
для решения задач в конкретном узком домене
● DSL не должен быть универсальным
● Простота DSL обеспечивает возможность его
использования нетехническими специалистами
● Общеупотребимые DSL: HTML, XML, SQL, LaTex,
Excel, Regular Expressions
Типы DSL
● Внутренние
● Внешние
● Визуальные (“Language Workbench”)
● Гибридные (комбинированные)
Исполняемость DSL
Компилируемые
● внутренние DSL
● кодогенерация для
внешних DSL
Более
производительные
Интерпретируемые
● внешние DSL
Более гибкие
Техническое отступление
Microkernel Architecture
Основные свойства
● Разделение на минимальное стабильное “ядро” и
изменчивые “сервисы”
● Адаптация к меняющимся требованиям
● Встроенная поддержка расширений
На практике
● Windows NT
● Symbian
● Mach Operating System
● Amoeba Operating System
● Chorus
Microkernel Architecture
Плюсы
● Гибкость
● Расширяемость
● Масштабируемость
● Надежность
Минусы
● Производительность (на современном “железе”
разница почти незаметна)
● Сложность дизайна (в книге POSA1 есть четкий
алгоритм декомпозиции)
Pattern-Oriented Software Architecture: Volume 1: A System of Patterns.
Почему пример из архитектуры?
Архитектура – один из способов формализовать
внутреннее устройство реальной системы
Архитектура
⇕Организационная структура организации
⇕Методология разработки
⇕Бизнес-анализ
Выберем критерием декомпозиции системы паттерн
Microkernel
Способы формализации DSL
Таблица истинности Конечный автомат (стейт-машина)
Формальная грамматика
Выявление DSL
Выявление и формализация DSL проходит с
участием
● бизнес-аналитика и системного аналитика
● технических специалистов (архитектора)
● представителей бизнеса
Как правило, DSL обычно несколько, зачастую 3-5
на проекте
В бизнес-анализ DSL обязательно вовлекаются
технические спецы
Методология разработки
Формализованный домен
Компетентный заказчик
Компетентные технические
спецы
Неопределенный домен
“Некомпетентный” заказчик
Некомпетентные
технические спецы
Waterfall Agile
DSL: стоимость разработки
Что дает DSL?
1. Разделение сложностей на:
○ машино-ориентированную часть кода (низкоуровневую
функциональность)
○ человеко-ориентированную часть кода (собственно
решение прикладной задачи)
2. DSL существенно повышает уровень абстрактности кода
3. DSL исключает экспоненциальный рост результирующей
сложности разработки всего проекта
4. DSL решает проблему сложности как фундаментальную
проблему программирования, описанную Фредериком
Бруксом
Пример 1. Биллинг
Ядро: бизнес-объекты “юр. лицо”, “физ лицо”, услуги за
которые происходит биллинг, налоги и их базовые
отношения. Сам “движок” вычисления итоговой суммы по
договору.
DSL:
● конфигурация правил начисления инвойса
● скидки в зависимости от возраста, стажа, объема услуг,
истории сотрудничества
bill = volume * price.PerVolume + instances * price.PerInstance
bill -= bill * price.AnnualDiscount
bill < price.MinimalBill => bill = price.MinimalBill
bill += bill * country.Tax
Пример 2. Распределение
данных в облаках
Ядро: “движок” отвечающий за выделение места для
хранения данных в различных датацентрах по миру
DSL:
конфигурация движка в зависимости от:
● купленных лицензий
● предпочтений пользователя
● законодательства стран в которых находятся
датацентры
country is Belarus => (Belarus:5, Russia:3, Kazakhstan:2)
country in EU => (Germany:7, France:2, Italy:1)
country in (Asia, Oceania) => (China:8, Indonesia:2)
fallback => (Germany)
Что мы имеем в итоге?
● Универсальный критерий декомпозиции
системы
● Участие технических спецов в бизнес-
анализе
● Гибкость системы и быстрая скорость
внедрения новых требований
● Контроль за сложностью системы
Антон Наумович
DPI Solutions
www.dpi.solutions
Belarus QA Automation Community
www.comaqa.by
☺
Спасибо! Вопросы?