SlideShare uma empresa Scribd logo
1 de 19
Разработка собственной agile
методологии для управления
крупными проектами
Антон Наумович
DPI Solutions / LogicNow
Немного о себе
Антон Наумович
Более 10 лет опыта в IT
● C++ тимлид/ПМ/архитектор в
LogicNow (продукт IASO Backup)
● Консультант в DPI Solutions
● В прошлом – разработчик в
Microsoft (Hyper-V)
● Активист сообщества
COMAQA.BY
Что такое крупный проект
Не вдаваясь в методологические споры и
священные войны:
≥ 10 “технарей”
Современные методологии
для крупных проектов
Rational Unified Process
>30 ролей
>20 активностей
>70 артефактов
Scaled Agile FrameworkScrum of Scrums
Не будем мудрить
Scrum
Если истинно хотя бы
одно из утверждений:
● “Некомпетентный”
заказчик
● Некомпетентный
исполнитель
● Неопределенный или
неформализуемый
домен
Waterfall
Если истинны все
утверждения ниже:
● Компетентный заказчик
● Квалифицированный
исполнитель
● Хорошо
формализованный
домен
Waterfall и Scrum
Waterfall
“детерминированное”
Scrum
“неопределенное”
при прочих равных – минимум
на 20% дороже
Полноценный переход
Scrum → Waterfall
Стоит выполнять, когда выполнены все условия:
1. Заказчик стал “компетентным”
2. Исполнитель стал компетентным
3. Домен стал формализованным
Такой переход можно и нужно катализировать, если
он принципиально осуществим
Экономим те самые 20%
Ограничения Scrum
Ежедневный митинг: ≤ 15 минут
Итерация: ≤ 4 недель
Размер команды: ≤ 9
Что же делать, если нужно “+1” в
команду, да Scrum-стандарт не велит?
Все ограничения взаимосвязаны
Техническое отступление
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
Разделяй и властвуй
Итак, будем делить систему на:
● “стабильные” части (“ядра”) – их, как правило,
несколько
● “изменчивые” части (“обвеска ядер”)
Цель: выделить стабильные части и
разрабатывать их по Waterfall. По Scrum получим
проблему “инкрементального дизайна”.
Изменчивые части по своей природе непригодны
для разработки по Waterfall
Техническая реализация
Изменчивая часть хорошо подходит для реализации через паттерн
Business Rule Engine на основе Domain-Specific Languages (DSL).
DSL – простой язык для решения задачи в одном достаточно узком
домене, например:
● регулярные выражения
● XML, JSON
● SQL
● HTML
● XSLT
● LaTex
● Excel
Парадигма “Расходящаяся разработка” или “Языково-
ориентированное программирование”
DSL: стоимость разработки
Что дает DSL?
1. Разделение сложностей на:
○ машино-ориентированную часть кода (низкоуровневую
функциональность)
○ человеко-ориентированную часть кода (собственно
решение прикладной задачи)
2. DSL существенно повышает уровень абстрактности кода
3. DSL исключает экспоненциальный рост результирующей
сложности разработки всего проекта
4. DSL решает проблему сложности как фундаментальную
проблему программирования, описанную Фредериком
Бруксом
Пример 1. Биллинг/страхование
Ядро: бизнес-объекты “юр. лицо”, “физ лицо”, предметы
страхования, страховая сумма, налоги и их базовые
отношения. Сам “движок” вычисления страховой суммы.
Обвеска:
● конфигурация правил начисления страховых взносов
● скидки в зависимости от возраста, стажа, объема услуг,
истории сотрудничества
bill = volume * price.PerVolume + instances * price.PerInstance
bill -= bill * price.AnnualDiscount
bill < price.MinimalBill => bill = price.MinimalBill
bill += bill * country.Tax
Пример 2. Распределение
данных в облаках
Ядро: “движок” отвечающий за выделение места для
хранения данных в различных датацентрах по миру
Обвеска:
конфигурация движка в зависимости от:
● купленных лицензий
● предпочтений пользователя
● законодательства стран в которых находятся
датацентры
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)
Что мы имеем в итоге?
● Гибкость архитектуры и методологии
● Универсальный простой критерий
декомпозиции системы
● Разбиение на небольшие команды
● Отсутствие лишнего формализма в работе
● Соответствие методологии технической
части и организационной структуре
● Экономия человекочасов там, где возможно
Антон Наумович
naumovich@dpi.solutions
DPI Solutions
www.dpi.solutions
Belarus QA Automation Community
www.comaqa.by
Спасибо! Вопросы?

Mais conteúdo relacionado

Semelhante a разработка собственной Agile методологии для управления крупными проектами

Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...SQALab
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодCUSTIS
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продуктаAlexey Filimonov
 
Способы создания качественного программного продукта
Способы создания качественного программного продуктаСпособы создания качественного программного продукта
Способы создания качественного программного продуктаIngria. Technopark St. Petersburg
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продуктаAlexey Filimonov
 
Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Andrey Bibichev
 
Обзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignОбзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignAndrey Bibichev
 
Новые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиковНовые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиковDocsvision
 
Req Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийReq Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийAlexander Kalouguine
 
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Dima Dzuba
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovMaxim Tsepkov
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneMax Klymyshyn
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanAlexander Byndyu
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise developmentPavel Tiunov
 
Architecture Lifecycle Management In The Share Point World
Architecture Lifecycle Management In The Share Point WorldArchitecture Lifecycle Management In The Share Point World
Architecture Lifecycle Management In The Share Point WorldIvan Padabed
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)Alexander Bausk
 

Semelhante a разработка собственной Agile методологии для управления крупными проектами (20)

Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в код
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продукта
 
Способы создания качественного программного продукта
Способы создания качественного программного продуктаСпособы создания качественного программного продукта
Способы создания качественного программного продукта
 
Управление разработкой продукта
Управление разработкой продуктаУправление разработкой продукта
Управление разработкой продукта
 
Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)
 
Обзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven DesignОбзор Feature-Driven Development и Domain-Driven Design
Обзор Feature-Driven Development и Domain-Driven Design
 
п17
п17п17
п17
 
Новые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиковНовые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиков
 
Req Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийReq Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требований
 
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
 
Why prototypes matter?
Why prototypes matter?Why prototypes matter?
Why prototypes matter?
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get Done
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к Kanban
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise development
 
Architecture Lifecycle Management In The Share Point World
Architecture Lifecycle Management In The Share Point WorldArchitecture Lifecycle Management In The Share Point World
Architecture Lifecycle Management In The Share Point World
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
 

Mais de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку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
 

Mais de 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 или как тест-менеджеру перекроить внут...
 

разработка собственной Agile методологии для управления крупными проектами

  • 1. Разработка собственной agile методологии для управления крупными проектами Антон Наумович DPI Solutions / LogicNow
  • 2. Немного о себе Антон Наумович Более 10 лет опыта в IT ● C++ тимлид/ПМ/архитектор в LogicNow (продукт IASO Backup) ● Консультант в DPI Solutions ● В прошлом – разработчик в Microsoft (Hyper-V) ● Активист сообщества COMAQA.BY
  • 3. Что такое крупный проект Не вдаваясь в методологические споры и священные войны: ≥ 10 “технарей”
  • 4. Современные методологии для крупных проектов Rational Unified Process >30 ролей >20 активностей >70 артефактов Scaled Agile FrameworkScrum of Scrums
  • 5. Не будем мудрить Scrum Если истинно хотя бы одно из утверждений: ● “Некомпетентный” заказчик ● Некомпетентный исполнитель ● Неопределенный или неформализуемый домен Waterfall Если истинны все утверждения ниже: ● Компетентный заказчик ● Квалифицированный исполнитель ● Хорошо формализованный домен
  • 7. Полноценный переход Scrum → Waterfall Стоит выполнять, когда выполнены все условия: 1. Заказчик стал “компетентным” 2. Исполнитель стал компетентным 3. Домен стал формализованным Такой переход можно и нужно катализировать, если он принципиально осуществим Экономим те самые 20%
  • 8. Ограничения Scrum Ежедневный митинг: ≤ 15 минут Итерация: ≤ 4 недель Размер команды: ≤ 9 Что же делать, если нужно “+1” в команду, да Scrum-стандарт не велит? Все ограничения взаимосвязаны
  • 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
  • 12. Разделяй и властвуй Итак, будем делить систему на: ● “стабильные” части (“ядра”) – их, как правило, несколько ● “изменчивые” части (“обвеска ядер”) Цель: выделить стабильные части и разрабатывать их по Waterfall. По Scrum получим проблему “инкрементального дизайна”. Изменчивые части по своей природе непригодны для разработки по Waterfall
  • 13. Техническая реализация Изменчивая часть хорошо подходит для реализации через паттерн Business Rule Engine на основе Domain-Specific Languages (DSL). DSL – простой язык для решения задачи в одном достаточно узком домене, например: ● регулярные выражения ● XML, JSON ● SQL ● HTML ● XSLT ● LaTex ● Excel Парадигма “Расходящаяся разработка” или “Языково- ориентированное программирование”
  • 15. Что дает DSL? 1. Разделение сложностей на: ○ машино-ориентированную часть кода (низкоуровневую функциональность) ○ человеко-ориентированную часть кода (собственно решение прикладной задачи) 2. DSL существенно повышает уровень абстрактности кода 3. DSL исключает экспоненциальный рост результирующей сложности разработки всего проекта 4. DSL решает проблему сложности как фундаментальную проблему программирования, описанную Фредериком Бруксом
  • 16. Пример 1. Биллинг/страхование Ядро: бизнес-объекты “юр. лицо”, “физ лицо”, предметы страхования, страховая сумма, налоги и их базовые отношения. Сам “движок” вычисления страховой суммы. Обвеска: ● конфигурация правил начисления страховых взносов ● скидки в зависимости от возраста, стажа, объема услуг, истории сотрудничества bill = volume * price.PerVolume + instances * price.PerInstance bill -= bill * price.AnnualDiscount bill < price.MinimalBill => bill = price.MinimalBill bill += bill * country.Tax
  • 17. Пример 2. Распределение данных в облаках Ядро: “движок” отвечающий за выделение места для хранения данных в различных датацентрах по миру Обвеска: конфигурация движка в зависимости от: ● купленных лицензий ● предпочтений пользователя ● законодательства стран в которых находятся датацентры 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)
  • 18. Что мы имеем в итоге? ● Гибкость архитектуры и методологии ● Универсальный простой критерий декомпозиции системы ● Разбиение на небольшие команды ● Отсутствие лишнего формализма в работе ● Соответствие методологии технической части и организационной структуре ● Экономия человекочасов там, где возможно
  • 19. Антон Наумович naumovich@dpi.solutions DPI Solutions www.dpi.solutions Belarus QA Automation Community www.comaqa.by Спасибо! Вопросы?

Notas do Editor

  1. Орг. структура Scrum эффективна при этих ограничениях