Разработчик, аналитик, заказчик — как найти общий язык?ngrebnev
В проектах по разработке программного обеспечения участвуют множество различных специалистов, у которых разные роли, разные специализации, своя терминология, свой жаргон. И часто в проекте люди не понимают друг друга. Заказчики не понимают, почему те или иные доработки стоят так дорого. Аналитики вынуждены выступать переводчиками между пользователями и разработчиками. А разработчики работают сразу с двумя моделями системы — с моделью представленной аналитиками и моделью реализованной в коде. Это приводит к тому, что основные усилия расходуются не на разработку полезного функционала, а на попытки удержать обе модели в голове и сопоставить их друг с другом.
Методология Domain Driven Design (проектирование на основе предметной области — далее DDD) для решения этой проблемы предлагает в качестве единой опорной точки использовать модель предметной области. Такая модель хорошо понятна заказчикам, служит отличным инструментом для аналитиков. Но важной особенностью такой модели является то, что она может быть напрямую реализована в коде, а значит, пригодна для использования разработчиками.
При принятии решения всегда встают вопросы:
– Что такое Domain Driven Design?
– На каких проектах можно применить DDD? Является ли мой проект таким?
– Какова цена и какие риски?
– Какие типичные ошибки ждут на пути?
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]Alex V. Petrov
Прошедший в «Академии информационных систем» (г. Москва) семинар «Как измерить архитектуру ПО?» ответил на вопрос о том, реально ли оценить архитектуру программной системы и сказать, насколько она полна, качественна, подвержена тем или иным недостаткам. В ходе семинара слушатели узнали, какие архитектурные метрики существуют, какие из них — признаны отраслью, в чем состоит их польза и как подходить к их применению в условиях производства.
Разработчик, аналитик, заказчик — как найти общий язык?ngrebnev
В проектах по разработке программного обеспечения участвуют множество различных специалистов, у которых разные роли, разные специализации, своя терминология, свой жаргон. И часто в проекте люди не понимают друг друга. Заказчики не понимают, почему те или иные доработки стоят так дорого. Аналитики вынуждены выступать переводчиками между пользователями и разработчиками. А разработчики работают сразу с двумя моделями системы — с моделью представленной аналитиками и моделью реализованной в коде. Это приводит к тому, что основные усилия расходуются не на разработку полезного функционала, а на попытки удержать обе модели в голове и сопоставить их друг с другом.
Методология Domain Driven Design (проектирование на основе предметной области — далее DDD) для решения этой проблемы предлагает в качестве единой опорной точки использовать модель предметной области. Такая модель хорошо понятна заказчикам, служит отличным инструментом для аналитиков. Но важной особенностью такой модели является то, что она может быть напрямую реализована в коде, а значит, пригодна для использования разработчиками.
При принятии решения всегда встают вопросы:
– Что такое Domain Driven Design?
– На каких проектах можно применить DDD? Является ли мой проект таким?
– Какова цена и какие риски?
– Какие типичные ошибки ждут на пути?
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]Alex V. Petrov
Прошедший в «Академии информационных систем» (г. Москва) семинар «Как измерить архитектуру ПО?» ответил на вопрос о том, реально ли оценить архитектуру программной системы и сказать, насколько она полна, качественна, подвержена тем или иным недостаткам. В ходе семинара слушатели узнали, какие архитектурные метрики существуют, какие из них — признаны отраслью, в чем состоит их польза и как подходить к их применению в условиях производства.
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"Sasha Kutsenko
Презентация Саши Куценко для семинара «Front-end разработка. Менеджерский блок», 29 января 2014 года, Санкт-Петербург.
http://leadzeppelin.timepad.ru/event/101471/
Рассмотрю с практической стороны создание своего предметно-ориентированного языка. Продемонстрирую почти готовое решение возникшей задачи и расскажу, в каких случаях может потребоваться внедрение DSL.
Докладчик: Михаил Воротынцев (AgoraDoxa)
Видео: https://www.youtube.com/watch?v=Qf0TjcBG1oI
CompanyMedia4You - новая корпоративная платформа поддержки принятия решений, управления документами, временем, задачами и личной результативностью от компании "ИнтерТраст".
Презентация состоялась 9 октября 2012 года в Москве, в культурном центре Автовилль.
Domain driven design (DDD) - отражение модели предметной области в код (Максим Цепков на Software People 2013). Подробнее http://mtsepkov.org/DDD_problem_and_solving
A multi-agent system (MAS) is a system composed of multiple interacting intelligent agents within a given environment that generated a lot of excitement in recent years because of its promise to become a new paradigm for conceptualizing, designing, and implementing software systems. We'll talk about JADE (Java Agent Development Framework) and what could be created using it.
Проектирование Программных Систем. Лекция 01Dima Dzuba
Лекция рассказывает о базовых принципах построения программного обеспечения. Проводится сравнение гибких (Agile) и водопадных методологий разработки программного обеспечения.
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...Yury Buluy
Доклад, сделанный на конференции ReqLabs 2009, г. Москва. В докладе рассматривается подход к классификации методов и техник используемых в инженерии требований и описание ряда техник.
Дарелл Хафф «Как лгать при помощи статистики» Tados
«Существуют три вида лжи: ложь, наглая ложь и статистика», — Бенджамин Дизраэли.
Чтобы принять верное решение в условиях конкуренции, необходимо располагать огромными объемами информации. Нужно провести анализ рынка, целевой аудитории, решений конкурентов и их успешности. Неверная оценка информации часто связана с некорректной статистикой.
Помните рекламу VW с маленьким Дартом Вейдером? Традиционные тесты прогнозировали, что у неё маленький шанс на успех. Показывать в перерывах Супербоула не стоит. Нейромаркетинговое исследование доказало обратное, и ролик запустили. Он стал одним из прорывов VW в рекламе.
На чем базируется нейромаркетинг, какие интересные исследования проведены? Разберёмся с помощью книги «Нейромаркетинг в действии» Дэвида Льюиса, одного из основателей направления. Посмотрим на минусы и ограничения направления, соберем полезные практические советы.
Саша Куценко: "Cпецификация формы и поведения — зачем, кому и как?"Sasha Kutsenko
Презентация Саши Куценко для семинара «Front-end разработка. Менеджерский блок», 29 января 2014 года, Санкт-Петербург.
http://leadzeppelin.timepad.ru/event/101471/
Рассмотрю с практической стороны создание своего предметно-ориентированного языка. Продемонстрирую почти готовое решение возникшей задачи и расскажу, в каких случаях может потребоваться внедрение DSL.
Докладчик: Михаил Воротынцев (AgoraDoxa)
Видео: https://www.youtube.com/watch?v=Qf0TjcBG1oI
CompanyMedia4You - новая корпоративная платформа поддержки принятия решений, управления документами, временем, задачами и личной результативностью от компании "ИнтерТраст".
Презентация состоялась 9 октября 2012 года в Москве, в культурном центре Автовилль.
Domain driven design (DDD) - отражение модели предметной области в код (Максим Цепков на Software People 2013). Подробнее http://mtsepkov.org/DDD_problem_and_solving
A multi-agent system (MAS) is a system composed of multiple interacting intelligent agents within a given environment that generated a lot of excitement in recent years because of its promise to become a new paradigm for conceptualizing, designing, and implementing software systems. We'll talk about JADE (Java Agent Development Framework) and what could be created using it.
Проектирование Программных Систем. Лекция 01Dima Dzuba
Лекция рассказывает о базовых принципах построения программного обеспечения. Проводится сравнение гибких (Agile) и водопадных методологий разработки программного обеспечения.
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...Yury Buluy
Доклад, сделанный на конференции ReqLabs 2009, г. Москва. В докладе рассматривается подход к классификации методов и техник используемых в инженерии требований и описание ряда техник.
Дарелл Хафф «Как лгать при помощи статистики» Tados
«Существуют три вида лжи: ложь, наглая ложь и статистика», — Бенджамин Дизраэли.
Чтобы принять верное решение в условиях конкуренции, необходимо располагать огромными объемами информации. Нужно провести анализ рынка, целевой аудитории, решений конкурентов и их успешности. Неверная оценка информации часто связана с некорректной статистикой.
Помните рекламу VW с маленьким Дартом Вейдером? Традиционные тесты прогнозировали, что у неё маленький шанс на успех. Показывать в перерывах Супербоула не стоит. Нейромаркетинговое исследование доказало обратное, и ролик запустили. Он стал одним из прорывов VW в рекламе.
На чем базируется нейромаркетинг, какие интересные исследования проведены? Разберёмся с помощью книги «Нейромаркетинг в действии» Дэвида Льюиса, одного из основателей направления. Посмотрим на минусы и ограничения направления, соберем полезные практические советы.
Короткая история Tados: как все начиналось, к чему пришли и с какими проблемами столкнулись.
Презентация для выступления в клубе «Предпринимательская среда» ПНИПУ.
2. Что это вообще такое?
Вроде бы всего лишь один из шаблонов реализации бизнес-
логики!
Но не только..
Пример того, как следует выделить предметную область в
программном обеспечении, для того, чтобы проще преодолевать
сложности, частые изменения, проблемы коммуникации и прочие
недуги предметной области.
3. Не отменяет практики
DDD – лишь дополнение
- ООП
- Паттерны
- SOLID, KISS, DRY, …
- TDD
- IoC
- ORM
4. Где это нужно?
Не надо использовать DDD везде!
Хорошо подходит для Enterprise
- длинный жизненный цикл
- большое количество сущностей со сложными
«взаимоотношениями»
- эволюция бизнес-модели
5. 2 стороны DDD
Тактика
- сущность
- объект-значение
- сервис
- событие
- агрегат
- фабрика
- хранилище
Стратегия
- единый язык
- предметная область
- предметная подобласть
- смысловое ядро
- ограниченный контекст
- карта контекстов
6. Единый язык
Язык созданный и понимаемый ВСЕМИ участниками проекта –
экспертами, разработчиками, бизнес-аналитиками, а то и
заказчиками.
Каждый участник проекта использует в своей работе именно этот
язык – и в коде, и в документации и в общении.
7. Единый язык (честно украденный пример)
«Медсестра назначает вакцину от гриппа пациенту в стандартной дозе»
patient.SetShotType(ShotTypes.Flu);
patient.SetDose(dose);
patient.SetNurse(nurse);
patient.GiveFluShot();
Vaccine vaccine = Vaccines.StandartAdultFluDose();
nurse.AdministerFluVaccine(patient, vaccine);
8. Ограниченный контекст
В рамках предметной области смысл определенного термина или
фразы может сильно отличаться.
Ограниченный контекст - некая граница, в пределах которой
понятия единого языка имеют вполне конкретное контекстное
значение.
10. Предметная область, подобласть,
смысловое ядро
Предметная область – это то, что делает организация, и среда, в
которой она это делает. Смысл бизнеса, вся его аутентичность.
Это и есть DOMAIN – первая D в DDD.
Смысловое ядро – подобласть, имеющая первостепенное
значение.
11. Пространство задач и пространство
решений
Пространство задач – части предметной области, необходимые для
создания смыслового ядра (т.е. само ядро + какие-либо
предметные подобласти).
Пространство решений – один или несколько ограниченных
контекстов. Разработанный ограниченный контекст – это по сути
реализация решения пространства задач.
Идеальный вариант – однозначное соответствие между
подобластями и контекстами, т .е. между задачами и решениями.
12. Карта контекстов
Отображение пространства решений, в котором находится команда.
Набор ограниченных контекстов и связей между ними:
- Partnership
- Shared kernel
- Customer-supplier development
- Conformist
- Anticorruption layer
- Open host service
- Published language
- Separate ways
- Big ball of mud
13. Сущность
Понятие предметной области, которое является уникальным и
отличным от всех других объектов в системе.
То, что имеет свою идентичность/индивидуальность, которая
связана с ней на протяжении всего существования.
14. Объект-значение
Объект, для которого не важна его индивидуальность.
Объект, который полностью определяется своими атрибутами.
- измеряет, описывает объекты предметной области
- можно считать неизменяемым
- моделирует нечто концептуально целое
15. Сервис
Выполняет действия, которые нельзя отнести к какой-то
конкретной сущности или объекту-значению.
- Операция не принадлежит ни одному из объектов предметной
области
- Операция выполняется над различными объектами предметной
области
Злоупотребление приводит к «анемичной модели предметной
области».
16. Агрегат
Кластер из объектов сущностей или значений.
Агрегаты рассматриваются как единое целое с точки зрения
изменения данных.
У агрегата есть корень агрегации. Все обращения к агрегату
должны происходить через него.
17. Фабрика
Некоторые агрегаты или сущности могут быть достаточно
сложными.
Сложный объект не может создавать сам себя посредством
конструктора.
Двигатель автомобиля собирается либо механиком, либо роботом,
но он никак не должен собираться сам по себе.
18. Хранилище
Область, которая предназначена для безопасного хранения
помещенных в нее элементов.
Каждый агрегат, предполагающий постоянное хранение, должен
иметь свое хранилище.