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

More Related Content

What's hot

DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovMaxim Tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovMaxim Tsepkov
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation processDima 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
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиПрофсоUX
 
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 лекция 12Technopark
 
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
 

What's hot (20)

DDD-secon-2014-tsepkov
DDD-secon-2014-tsepkovDDD-secon-2014-tsepkov
DDD-secon-2014-tsepkov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
 
DDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требованийDDD — правильный курс в потоке изменений требований
DDD — правильный курс в потоке изменений требований
 
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
 
Применение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложенииПрименение DDD подхода в Symfony 2 приложении
Применение DDD подхода в Symfony 2 приложении
 
Domain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требованияDomain Driven Design: модель вместо требования
Domain Driven Design: модель вместо требования
 
Модель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработкиМодель системы — архитектура для Agile-разработки
Модель системы — архитектура для Agile-разработки
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
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 ...
 
3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений
 
Itgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решенияItgm #9. dmn. как моделировать принимаемые решения
Itgm #9. dmn. как моделировать принимаемые решения
 
CEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессыCEE-SECR'2011 Бизнес-процессы
CEE-SECR'2011 Бизнес-процессы
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
 
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]
 
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
 
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...
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революции
 
Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Профессиональный стандарт Специалист по дизайну графических и пользовательски...Профессиональный стандарт Специалист по дизайну графических и пользовательски...
Профессиональный стандарт Специалист по дизайну графических и пользовательски...
 
Моделирование бизнес-процессов: методы и инструменты
Моделирование бизнес-процессов: методы и инструментыМоделирование бизнес-процессов: методы и инструменты
Моделирование бизнес-процессов: методы и инструменты
 

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

Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?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 MatrixOlena Syrota
 
Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Evgeniy Krivosheev
 
Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)Vladimir Ivanov
 
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной областиCUSTIS
 
Управление строительным проектом
Управление строительным проектом Управление строительным проектом
Управление строительным проектом Vladimir Ivanov
 
03 т сервис
03 т сервис03 т сервис
03 т сервисGoudron1979
 
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системCUSTIS
 
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...LuxoftTraining
 
Рабочая учебная программа
Рабочая учебная программаРабочая учебная программа
Рабочая учебная программаRauan Ibraikhan
 
Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovMaxim 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 2018Timur 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 на PythonPyNSK
 

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

Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?
 
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложений
 
Software Engineering Knowledge Matrix
Software Engineering Knowledge MatrixSoftware Engineering Knowledge Matrix
Software Engineering Knowledge Matrix
 
Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"Вебинар "Введение в процесс разработки ПО"
Вебинар "Введение в процесс разработки ПО"
 
ооп
оопооп
ооп
 
Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)Обзор решений по управлению проектами (2009)
Обзор решений по управлению проектами (2009)
 
Необъектные модели предметной области
Необъектные модели предметной областиНеобъектные модели предметной области
Необъектные модели предметной области
 
Управление строительным проектом
Управление строительным проектом Управление строительным проектом
Управление строительным проектом
 
03 т сервис
03 т сервис03 т сервис
03 т сервис
 
Три точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных системТри точки опоры в архитектуре корпоративных систем
Три точки опоры в архитектуре корпоративных систем
 
BPM для всех
BPM для всехBPM для всех
BPM для всех
 
Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...Эффективное объектно-ориентированное проектирование и структурное качество пр...
Эффективное объектно-ориентированное проектирование и структурное качество пр...
 
Рабочая учебная программа
Рабочая учебная программаРабочая учебная программа
Рабочая учебная программа
 
Ddd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkovDdd happy dev-2013-tsepkov
Ddd happy dev-2013-tsepkov
 
я.прогр птп
я.прогр птпя.прогр птп
я.прогр птп
 
Алексей Мерсон «Domain Driven Design: профит малой кровью»
Алексей Мерсон «Domain Driven Design: профит малой кровью»Алексей Мерсон «Domain Driven Design: профит малой кровью»
Алексей Мерсон «Domain Driven Design: профит малой кровью»
 
Учебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектамиУчебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектами
 
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
Карта знаний инженера-программиста // Timur Shemsedinov // KharkivJS 2018
 
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.
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
 

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