41
Domain Driven Design. Как писать простой код для сложных систем? Дмитрий Павлов Антон Бевзюк SmartStepGroup

Domain Driven Design. Как писать простой код для сложных систем?

Embed Size (px)

Citation preview

Page 1: Domain Driven Design. Как писать простой код для сложных систем?

Domain Driven Design.Как писать простой код для сложных систем?Дмитрий ПавловАнтон Бевзюк

SmartStepGroup

Page 2: Domain Driven Design. Как писать простой код для сложных систем?

SmartStepGroupВнедряем инженерные практики XPСтавим процессы

Page 3: Domain Driven Design. Как писать простой код для сложных систем?

Domain Driven Design

Page 4: Domain Driven Design. Как писать простой код для сложных систем?

DDDUbiquitous Language

BoundedContext

Page 5: Domain Driven Design. Как писать простой код для сложных систем?
Page 6: Domain Driven Design. Как писать простой код для сложных систем?

PersistanseIgnorance

Page 7: Domain Driven Design. Как писать простой код для сложных систем?

Ubiquitous Language

Page 8: Domain Driven Design. Как писать простой код для сложных систем?

Когда покупатель оплатил заказ,

мы отправим ему email с

подтверждением

Page 9: Domain Driven Design. Как писать простой код для сложных систем?

UPDATE tbl_userSET status = 18WHERE type = 3 AND id = …

Page 10: Domain Driven Design. Как писать простой код для сложных систем?
Page 11: Domain Driven Design. Как писать простой код для сложных систем?

Ubiquitous LanguageDeleteAllLines CancelOrder

SetStatus(Status.Approved)

Approve

CreateUser EnrollCustomer

Customer.Address = new Address()

Customer.RelocateTo(new Address())

Page 12: Domain Driven Design. Как писать простой код для сложных систем?

https://bitbucket.org/smartstepgroup/agileshop

Page 13: Domain Driven Design. Как писать простой код для сложных систем?
Page 14: Domain Driven Design. Как писать простой код для сложных систем?
Page 15: Domain Driven Design. Как писать простой код для сложных систем?
Page 16: Domain Driven Design. Как писать простой код для сложных систем?
Page 17: Domain Driven Design. Как писать простой код для сложных систем?
Page 18: Domain Driven Design. Как писать простой код для сложных систем?
Page 19: Domain Driven Design. Как писать простой код для сложных систем?
Page 20: Domain Driven Design. Как писать простой код для сложных систем?
Page 21: Domain Driven Design. Как писать простой код для сложных систем?
Page 22: Domain Driven Design. Как писать простой код для сложных систем?
Page 23: Domain Driven Design. Как писать простой код для сложных систем?
Page 24: Domain Driven Design. Как писать простой код для сложных систем?

ПреимуществаЭкономим время на «переводе»Не теряем информациюПонятный для всех код

Page 25: Domain Driven Design. Как писать простой код для сложных систем?

ПреимуществаКод мутирует вместе с бизнесом, вместо костылейМеньше документацииМеньше ошибок

Page 26: Domain Driven Design. Как писать простой код для сложных систем?
Page 27: Domain Driven Design. Как писать простой код для сложных систем?

Сложность

Мудрое руководство

Отдел продаж

Отдел закупок Аналитики Производств

о

Page 28: Domain Driven Design. Как писать простой код для сложных систем?

Bounded Context

Page 29: Domain Driven Design. Как писать простой код для сложных систем?
Page 30: Domain Driven Design. Как писать простой код для сложных систем?
Page 31: Domain Driven Design. Как писать простой код для сложных систем?
Page 32: Domain Driven Design. Как писать простой код для сложных систем?
Page 33: Domain Driven Design. Как писать простой код для сложных систем?
Page 34: Domain Driven Design. Как писать простой код для сложных систем?

Context Map

Page 35: Domain Driven Design. Как писать простой код для сложных систем?

Не все большие системы будут

хорошо спроектированы

http://www.laputan.org/mud

Page 36: Domain Driven Design. Как писать простой код для сложных систем?

Продажа

conforms

Отчеты

Page 37: Domain Driven Design. Как писать простой код для сложных систем?

Продажа

partners

conforms

Отчеты

Поставка

Page 38: Domain Driven Design. Как писать простой код для сложных систем?

Продажа

partners

conforms

Производство

Отчеты

Поставка

ACL

ACL

Page 39: Domain Driven Design. Как писать простой код для сложных систем?

Борьба со сложностьюДоменная модель != Объектная модельВездесущий языкДомены и поддомены вместо единой моделиContext Map

Page 40: Domain Driven Design. Как писать простой код для сложных систем?

СсылкиТренинг SmartStepGroup по DDDhttp://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215 DDD misconceptions - Dino Esposito (SA2014)How You Can Architect and Develop Enterprise Mission-Critical Applications with Domain-Driven Design - Vaughn VernonEric Evans: What I've learned about DDD since the book was publishedDDD & Microservices: At Last, Some Boundaries! • Eric EvansPluralsight - Domain-Driven Design in Practice - Vladimir Khorikov

Page 41: Domain Driven Design. Как писать простой код для сложных систем?

Спасибо за внимание!Дмитрий Павлов[email protected]Антон Бевзюк[email protected]

www.smartstepgroup.comblog.smartstepgroup.comtwitter.com/SmartStepGroup