ݺߣ

ݺߣShare a Scribd company logo
DomainDrivenDesign - как, почему и зачем?Николай ГребневCUSTIS
Что такое DDD?2
DDD – Domain Driven Design3
4
Организация бизнес-логикиСценарий транзакции
Модуль таблицы
Модель предметной области5
Сценарий транзакцииВходБизнес-операцияИзмененияРезультат6
Модуль таблицы7
RecordsetDataSet
Модель предметной области9
Модель предметной областиКаждая сущность модели:Имеет идентичностьИнкапсулирует:СостояниеПоведение10
11
Что?Переработка знаний
Единый язык
Проектирование по модели (Model Driven Design)12
ДизайнМодель13
14
Переработка знанийПроектирование моделиУглубляющий рефакторинг15
Переработка знаний
Переработка знаний– поиск системы абстрактных понятий, учитывающей все необходимые подробности17
ВыполняютСпециалисты в предметной области
Разработчики18
Руководят процессомРазработчики19
Пример20
ЗадачаРассчитать зарплатусотрудника в заданном месяце21
С. в П. О.: Отношение количества отработанных дней к количеству рабочих дней в месяце умноженное на отношение оклада сотрудника к количеству рабочих дней в месяце22
Модель23
Р.: Что такое отработанный день?
С. в П. О.: Рабочий день, когда сотрудник присутствовал на рабочем местепри этом он еще не уволился24
Модель25
С. в П. О.: Но сотрудник может взять отпуск, или быть на больничном, при этом такие дни рассчитываются по особой ставке26
Модель27
Р.: А откуда можно узнать работал ли в  этот день сотрудник или был в отпуске?
С. в П. О.: Из табеля учета рабочего времени28
Модель29
Единый язык30
Единый языкМежду всеми участниками проекта
На основе модели предметной области
Проверяет модель предметной области
Используется во всех документах
Используется в коде31
Модель предметной областиТерминология32
Терминология— система терминов — слов научно-технического языка, обладающих определенным, четко отграниченным значением33
Терминология— система терминов — слов научно-технического языка, обладающих определенным, четко отграниченным значением34
Общение между людьми35
Терминология— система терминов — слов научно-технического языка, обладающих определенным,четко отграниченным значением36
Использование в коде
Проектирование по модели
Проектирование по моделиModel Driven Development– проектирование архитектуры, при котором соблюдается максимально точное соответствие между некоторым подмножеством элементов программы и элементами модели39
Модель предметной области40
Модель программы41
Модель программыМодель предметной областиDataSetDataReaderCommandDataAdapterConnectionИ т. д.КнигаАвторИздательЧитательИ т. д.42
Модель предметной области43
Model Driven DevelopmentMDD – прямаяпроекция языка предметной области на объектно ориентированный язык программирования44

More Related Content

What's hot (20)

DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
Maxim Tsepkov
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
Maxim Tsepkov
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
Dima Dzuba
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
SQALab
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
CUSTIS
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложении
Антон Шабовта
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
CUSTIS
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
CUSTIS
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
CUSTIS
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
Alex V. Petrov
3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений
KewpaN
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решения
SPbCoA
CEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессыCEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессы
Yury Kupriyanov
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
Профсо
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
Alex V. Petrov
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
Technopark
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
Alex V. Petrov
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революции
CUSTIS
Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Профессиональный стандарт Специалист по дизайну графических и пользовательски...Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Русская школа сервисного дизайна
Моделирование бизнес-процессов: методы и инструменты
Моделирование бизнес-процессов: методы и инструментыМоделирование бизнес-процессов: методы и инструменты
Моделирование бизнес-процессов: методы и инструменты
SQALab
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
Maxim Tsepkov
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
Dima Dzuba
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
SQALab
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
CUSTIS
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложении
Антон Шабовта
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
CUSTIS
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
CUSTIS
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
CUSTIS
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
Alex V. Petrov
3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений
KewpaN
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решения
SPbCoA
CEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессыCEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессы
Yury Kupriyanov
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
Профсо
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
Alex V. Petrov
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
Technopark
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
Alex V. Petrov
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революции
CUSTIS
Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Профессиональный стандарт Специалист по дизайну графических и пользовательски...Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Русская школа сервисного дизайна
Моделирование бизнес-процессов: методы и инструменты
Моделирование бизнес-процессов: методы и инструментыМоделирование бизнес-процессов: методы и инструменты
Моделирование бизнес-процессов: методы и инструменты
SQALab

Similar to Domain Driven Design - как, почему и зачем? (20)

Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?
ngrebnev
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложений
ngrebnev
Software Engineering Knowledge Matrix
Software Engineering Knowledge MatrixSoftware Engineering Knowledge Matrix
Software Engineering Knowledge Matrix
Olena Syrota
Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"
Evgeniy Krivosheev
ооп
оопооп
ооп
LidiKashka
Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)
Vladimir Ivanov
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной области
CUSTIS
Управление строительным проектом
Управление строительным проектом Управление строительным проектом
Управление строительным проектом
Vladimir Ivanov
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных систем
CUSTIS
BPM для всех
BPM для всехBPM для всех
BPM для всех
CaseAgile LLC
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...
LuxoftTraining
Рабочая учебная программа
Рабочая учебная программаРабочая учебная программа
Рабочая учебная программа
Rauan Ibraikhan
Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
Maxim Tsepkov
Алексей Мерсон «Domain Driven Design: профит малой кровью»
Алексей Мерсон «Domain Driven Design: профит малой кровью»Алексей Мерсон «Domain Driven Design: профит малой кровью»
Алексей Мерсон «Domain Driven Design: профит малой кровью»
SpbDotNet Community
Учебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектамиУчебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектами
Technomatix
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Timur Shemsedinov
DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.
mikhaelsmirnov
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
PyNSK
Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?
ngrebnev
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложений
ngrebnev
Software Engineering Knowledge Matrix
Software Engineering Knowledge MatrixSoftware Engineering Knowledge Matrix
Software Engineering Knowledge Matrix
Olena Syrota
Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"
Evgeniy Krivosheev
Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)
Vladimir Ivanov
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной области
CUSTIS
Управление строительным проектом
Управление строительным проектом Управление строительным проектом
Управление строительным проектом
Vladimir Ivanov
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных систем
CUSTIS
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...
LuxoftTraining
Рабочая учебная программа
Рабочая учебная программаРабочая учебная программа
Рабочая учебная программа
Rauan Ibraikhan
Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
Maxim Tsepkov
Алексей Мерсон «Domain Driven Design: профит малой кровью»
Алексей Мерсон «Domain Driven Design: профит малой кровью»Алексей Мерсон «Domain Driven Design: профит малой кровью»
Алексей Мерсон «Domain Driven Design: профит малой кровью»
SpbDotNet Community
Учебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектамиУчебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектами
Technomatix
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Timur Shemsedinov
DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.
mikhaelsmirnov
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
PyNSK

Domain Driven Design - как, почему и зачем?