XText - Business Rule Engine в контексте BA Александр Василёнок DPI Solutions Немного о себе Александр Василёнок Более 12 лет опыта в разработке: ● CEO, cofounder в DPI Solutions ● Проекты в прошлом: Backend (JavaEE) – ПО для документооборота и бюджетирования Frontend (Swing, ActionScript) – Системы онлайн консультаций ПО для медицины(протезирования) DSL, XText – основные понятия DSL – язык программирования специфичный для конкретной предметной области. Xtext - инфраструктура для разработки внешнего текстового DSL. Реализация DSL – разработка программы выполняющей: o разбор o обработку o интерпретацию* Api и … API Методы состояния: Методы изменяющие состояния: Api и DSL API DSL Методы состояния: Методы изменяющие состояния: DSL «Факультет нетрадиционного использования Логарифмической линейки». Как стоит а как не стоит использовать Xtext Когда стоит: • Почти всегда* Когда не стоит: • • • Не понятна доменная область Надо получить результат “здесь и сейчас” Выгоды несоизмеримо малы с вложенными ресурсами * The Pragmatic Programmer: From Journeyman to Master. Andrew Hunt, David Thomas Пример. Выплата вознаграждений A A (Поставщик) B (Регион) B1 C1 B2 B3 C4 C4 C (Торговая сеть) C2 C3 D (Дилер) C5 B4 Выплатить вознаграждение торговым сетям и дилерам, региона B2 и B1, в размере 3 и 1 процента от выручки дилеров соответственно, при условии наличия 2 и более дилеров, выручка которых превысила 100K за квартал. {var1}=‘100K’ Pay 3 Percent of {var3}.revenue to {var2} and 1 Percent of {var3}.revenue to {var3} Context: search MainStore. Region[name = B1|B2; children.count >= 2]. {var2} = Network[child.revenue > {var1} During last ‘4 months’]. {var3} = Dealer* Как BA специалисту работать с XText • Определение грамматики • Анализ корректности модели • Выявление противоречий модели • Тестирование модели: 1) Оптимизация вызовов 2) Все ли события используются 3) Все ли состояния достижимы 4) Все ли команды используются Возможности XText Agile и Waterfall – особенности работы BA специалиста в зависимости от методологии Agile: Waterfall: • Тесная работа с разработчиками • Небольшая грамматика • Быстрый цикл обратной связи • Большие итерации • Технически грамотный BA • Семейство DSL Варианты организации сбора и формализации бизнес требований при работе с XText User stories Customer Grammar BA Requirements Варианты организации сбора и формализации бизнес требований при работе с XText User stories Grammar Customer BA Requirements User stories Grammar Customer BA 1..n Requirements Grammar Technical specialist Эволюция процессов Бизнес Анализа на разных этапах жизненного цикла проекта построенного на Xtext Определение грамматики DSL Эволюция процессов Бизнес Анализа на разных этапах жизненного цикла проекта построенного на Xtext Определение грамматики DSL Разработка минимального количества бизнес правил на DSL Тестирование Внесение изменений в грамматику DSL Эволюция процессов Бизнес Анализа на разных этапах жизненного цикла проекта построенного на Xtext Определение грамматики DSL Разработка минимального колличесва бизнес правил на DSL Тестирование Программирование на DSL Внесение изменений в грамматику DSL Использование DSLs в ПО на предприятии металлообработки . • • • Увеличение производительности отдела маркетинга Оптимизация процессов сбора данных Оптимизация использования станков В итоге • Затраты на обучение DSL несоизмеримо малы по отношению к пониманию модели • DSL упрощает понимание модели и управление ею • Повышается производительности BA • Сокращение объема работ узкоспециализированных сотрудников • Повышается скорость внедрения новых требований в контексте предметной области Литература • The Pragmatic Programmer: From Journeyman to Master. Andrew Hunt, David Thomas • Domain Specific Languages. Martin Fowler • Domain-Driven Design: Tackling Complexity in the Heart of Software. Eric Evans Спасибо! Вопросы? Александр Василёнок vasilenok@dpi.solutions DPI Solutions www.dpi.solutions Belarus QA Automation Community www.comaqa.by ☺