24
Introduction to Domain Driven Design How can an IT Dev Dept improve in achieving business driven goals

Domain Driven Design

Embed Size (px)

Citation preview

Page 1: Domain Driven Design

Introduction to Domain Driven Design

How can an IT Dev Dept improve in achieving business driven goals

Page 2: Domain Driven Design

Successful enterprise must be able adapt fast to new market conditions

Page 3: Domain Driven Design

IT department is a key element to support such change

• Business complexity grows and changes quickly!

• We must find the way how to achieve the goals set by a business!

Page 4: Domain Driven Design

Understand and follow DDD paradigms

Page 5: Domain Driven Design

We have been doing all these things, but our own way

Page 6: Domain Driven Design

Spaghetti code

Page 7: Domain Driven Design

Objects with too many responsibilities

Page 8: Domain Driven Design

Untested code is difficult to change later

• application bugs

• creating of Heroes

• barrier for new features

Page 9: Domain Driven Design

Fear Driven Development

Page 10: Domain Driven Design

We should utilize existing knowledge and best practices

Page 11: Domain Driven Design

What is DDD?

• Domain Knowledge

• Ubiquitous Language

• Bounded Context

Page 12: Domain Driven Design

Layered Architecture

Page 13: Domain Driven Design

Building Blocks

• Entity: Contractor, Contractor Rate

• Value Object: CXC_Date

• Aggregate: Invoice, Contractor, Wree

• Service: Company Service

• Factory: Company Contact Factory

• Repository: Contractor Repository

Page 14: Domain Driven Design

Building Blocks

Page 15: Domain Driven Design

Started with Entities

Page 16: Domain Driven Design

Factories

Unit tested!

Page 17: Domain Driven Design

Services

Page 18: Domain Driven Design

Repositories

Page 19: Domain Driven Design

Repositories

Page 20: Domain Driven Design

Aggregates

Aggregate Root

Aggregate Members

Page 21: Domain Driven Design

Value Objects

Page 22: Domain Driven Design

What is next?

Page 23: Domain Driven Design

Improve Domain Layer

• Ongoing process of refactoring driven by Business requirements

• No need for complete overhaul – iterative process is more aligned with Business needs.

Page 24: Domain Driven Design

Thank you!