2. Немного о себе
Антон Наумович
Более 10 лет опыта в IT
● Тимлид/архитектор/BA в LogicNow
● Консультант в DPI Solutions
● В прошлом – разработчик в Microsoft,
команда Hyper-V (Windows Server 2008
R2/2012)
● Активист сообщества COMAQA.BY
3. Business Rule Engine (BRE)
Это организация системы таким образом, что...
● бизнес-правила выделяются в отдельную
независимо развиваемую от ядра часть
● эта часть обычно описывается и реализуется
через один или несколько Domain-Specific
Language (DSL)
Business Rule Engine – изменчивый, гибко
конфигурируемый “плагин” в стабильном ядре
системы
4. Когда такой подход применим
1. В системе есть достаточно крупные
подсистемы, описываемые через бизнес-
правила
2. Параметры бизнес-правил часто меняются в
течение жизни системы (=меняются
“подпрограммы” на DSL)
3. Принципиально меняется сама природа
бизнес-правил (=меняется грамматика
DSL)
5. Ubiquitous Language (UL)
Всепроникающий язык – глоссарий проекта,
общий как для технических, так и для бизнес-
специалистов
● Служит основой для выработки синтаксиса DSL
● Используется в коммуникации и документации
● Обеспечивает единственно верное толкование
требований
6. Domain-Specific Language (DSL)
● DSL – достаточно простой язык, предназначенный
для решения задач в конкретном узком домене
● DSL не должен быть универсальным
● Простота DSL обеспечивает возможность его
использования нетехническими специалистами
● Общеупотребимые DSL: HTML, XML, SQL, LaTex,
Excel, Regular Expressions
9. Техническое отступление
Microkernel Architecture
Основные свойства
● Разделение на минимальное стабильное “ядро” и
изменчивые “сервисы”
● Адаптация к меняющимся требованиям
● Встроенная поддержка расширений
На практике
● Windows NT
● Symbian
● Mach Operating System
● Amoeba Operating System
● Chorus
10. Microkernel Architecture
Плюсы
● Гибкость
● Расширяемость
● Масштабируемость
● Надежность
Минусы
● Производительность (на современном “железе”
разница почти незаметна)
● Сложность дизайна (в книге POSA1 есть четкий
алгоритм декомпозиции)
Pattern-Oriented Software Architecture: Volume 1: A System of Patterns.
11. Почему пример из архитектуры?
Архитектура – один из способов формализовать
внутреннее устройство реальной системы
Архитектура
⇕
Организационная структура организации
⇕
Методология разработки
⇕
Бизнес-анализ
Выберем критерием декомпозиции системы паттерн
Microkernel
13. Выявление DSL
Выявление и формализация DSL проходит с
участием
● бизнес-аналитика и системного аналитика
● технических специалистов (архитектора)
● представителей бизнеса
Как правило, DSL обычно несколько, зачастую 3-5
на проекте
В бизнес-анализ DSL обязательно вовлекаются
технические спецы
16. Что дает DSL?
1. Разделение сложностей на:
○ машино-ориентированную часть кода (низкоуровневую
функциональность)
○ человеко-ориентированную часть кода (собственно
решение прикладной задачи)
2. DSL существенно повышает уровень абстрактности кода
3. DSL исключает экспоненциальный рост результирующей
сложности разработки всего проекта
4. DSL решает проблему сложности как фундаментальную
проблему программирования, описанную Фредериком
Бруксом
17. Пример 1. Биллинг
Ядро: бизнес-объекты “юр. лицо”, “физ лицо”, услуги за
которые происходит биллинг, налоги и их базовые
отношения. Сам “движок” вычисления итоговой суммы по
договору.
DSL:
● конфигурация правил начисления инвойса
● скидки в зависимости от возраста, стажа, объема услуг,
истории сотрудничества
bill = volume * price.PerVolume + instances * price.PerInstance
bill -= bill * price.AnnualDiscount
bill < price.MinimalBill => bill = price.MinimalBill
bill += bill * country.Tax
18. Пример 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)
19. Что мы имеем в итоге?
● Универсальный критерий декомпозиции
системы
● Участие технических спецов в бизнес-
анализе
● Гибкость системы и быстрая скорость
внедрения новых требований
● Контроль за сложностью системы
Я отвечаю за разработку серверной части бэкап-системы в компании IASO Backup
Работаю консультантом в DPI.Solutions
2 года проработал в компании Microsoft, в команде Hyper-V, которая является частью подразделения Windows
Раньше было модно язвительно отзывать о Windows в плане качества, однако неудача с Windows Vista, года пришлось просто “потерять” результаты годовой работу тысяч человек, многому научила руководство.
Сейчас там очень серьезные подходы к качеству, в том числе благодаря развитию автоматизированного тестирования - соотношение разработчиков и автоматизаторов в Windows - примерно 1:1
В мире совсем немного софта, который успешно работает на сотнях миллионов различных компьютеров, и стоит присмотреться к подходам к качеству, которые используются в его разработке.