domain driven design. Как писать простой код для сложных систем?

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

Upload: dmitry-pavlov

Post on 15-Apr-2017

538 views

Category:

Engineering


1 download

TRANSCRIPT

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