SlideShare a Scribd company logo
1 of 20
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
B1 B2 B3 B4
C1
C2
C3
C4
C5
A (Поставщик)
B (Регион)
C (Торговая сеть)
D (Дилер)
C4
Выплатить вознаграждение торговым сетям и дилерам, региона 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
Customer BA
User stories
Requirements
Grammar
Варианты организации сбора и
формализации бизнес
требований при работе с XText
Customer BA
Technical specialist
User stories
Grammar
Requirements
Grammar
1..n
Customer BA
User stories
Requirements
Grammar
Эволюция процессов Бизнес
Анализа на разных этапах
жизненного цикла проекта
построенного на 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
☺
Спасибо! Вопросы?

More Related Content

More from SQALab

Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информацияSQALab
 

More from SQALab (20)

Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 

XText - Business Rule Engine в контексте BA

  • 1. XText - Business Rule Engine в контексте BA Александр Василёнок DPI Solutions
  • 2. Немного о себе Александр Василёнок Более 12 лет опыта в разработке: ● CEO, cofounder в DPI Solutions ● Проекты в прошлом:  Backend (JavaEE) – ПО для документооборота и бюджетирования  Frontend (Swing, ActionScript) – Системы онлайн консультаций ПО для медицины(протезирования)
  • 3. DSL, XText – основные понятия DSL – язык программирования специфичный для конкретной предметной области. Xtext - инфраструктура для разработки внешнего текстового DSL. Реализация DSL – разработка программы выполняющей: o разбор o обработку o интерпретацию*
  • 4. Api и … API Методы состояния: Методы изменяющие состояния:
  • 5. Api и DSL API DSL Методы состояния: Методы изменяющие состояния: DSL
  • 6. «Факультет нетрадиционного использования Логарифмической линейки». Как стоит а как не стоит использовать Xtext Когда стоит: • Почти всегда* Когда не стоит: • Не понятна доменная область • Надо получить результат “здесь и сейчас” • Выгоды несоизмеримо малы с вложенными ресурсами * The Pragmatic Programmer: From Journeyman to Master. Andrew Hunt, David Thomas
  • 7. Пример. Выплата вознаграждений A B1 B2 B3 B4 C1 C2 C3 C4 C5 A (Поставщик) B (Регион) C (Торговая сеть) D (Дилер) C4
  • 8. Выплатить вознаграждение торговым сетям и дилерам, региона 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*
  • 9. Как BA специалисту работать с XText • Определение грамматики • Анализ корректности модели • Выявление противоречий модели • Тестирование модели: 1) Оптимизация вызовов 2) Все ли события используются 3) Все ли состояния достижимы 4) Все ли команды используются
  • 11. Agile и Waterfall – особенности работы BA специалиста в зависимости от методологии Agile: • Тесная работа с разработчиками • Небольшая грамматика • Быстрый цикл обратной связи Waterfall: • Большие итерации • Технически грамотный BA • Семейство DSL
  • 12. Варианты организации сбора и формализации бизнес требований при работе с XText Customer BA User stories Requirements Grammar
  • 13. Варианты организации сбора и формализации бизнес требований при работе с XText Customer BA Technical specialist User stories Grammar Requirements Grammar 1..n Customer BA User stories Requirements Grammar
  • 14. Эволюция процессов Бизнес Анализа на разных этапах жизненного цикла проекта построенного на Xtext Определение грамматики DSL
  • 15. Эволюция процессов Бизнес Анализа на разных этапах жизненного цикла проекта построенного на Xtext Определение грамматики DSL Разработка минимального количества бизнес правил на DSL Тестирование Внесение изменений в грамматику DSL
  • 16. Эволюция процессов Бизнес Анализа на разных этапах жизненного цикла проекта построенного на Xtext Определение грамматики DSL Разработка минимального колличесва бизнес правил на DSL Программирование на DSL Тестирование Внесение изменений в грамматику DSL
  • 17. Использование DSLs в ПО на предприятии металлообработки . • Увеличение производительности отдела маркетинга • Оптимизация процессов сбора данных • Оптимизация использования станков
  • 18. В итоге • Затраты на обучение DSL несоизмеримо малы по отношению к пониманию модели • DSL упрощает понимание модели и управление ею • Повышается производительности BA • Сокращение объема работ узкоспециализированных сотрудников • Повышается скорость внедрения новых требований в контексте предметной области
  • 19. Литература • 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
  • 20. Александр Василёнок vasilenok@dpi.solutions DPI Solutions www.dpi.solutions Belarus QA Automation Community www.comaqa.by ☺ Спасибо! Вопросы?