Domain Driven Design IS. An architectural methodology for evolving a software system that closely aligns to business requirements

Similar documents
Domain Driven Design Kevin van der Vlist

Designing the M in MVC

DDD at 10. Eric Evans #dddesign

Understanding. Domain-Driven Design

developer.* The Independent Magazine for Software Professionals

Systems software design

Programming II. Modularity 2017/18

COPYRIGHTED MATERIAL CONTENTS PART I: THE PRINCIPLES AND PRACTICES OF DOMAIN DRIVEN DESIGN

Lecture 23: Domain-Driven Design (Part 1)

CHAPTER 5 GENERAL OOP CONCEPTS

DDD Where s the value and what s in it for me?

There is no such thing as a microservice!

1 Software Architecture

Unit Wise Questions. Unit-1 Concepts

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav

Application Architectures, Design Patterns

Architecting and Implementing Domain-driven Design Patterns in.net

What is a Programming Paradigm

OBJECT-ORIENTED DOMAIN DRIVEN DESIGN. Robert Bräutigam MATHEMA So ware GmbH.

Systems Analysis & Design

Introduction to System Design

Riccardo Tempesta. MageSpecialist

monolith to micro-services? event sourcing can help Doug

B Nagaraju

Creating Models. Rob Allen, July 2014

An Introduction to Software Architecture

ArchiMate symbols for relating system elements

Introduction to Software Architecture. The top level... (and design revisited)

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve?

*ANSWERS * **********************************

Hippo Software BPMN and UML Training

An Introduction to Software Architecture

Avancier Methods (AM) CONCEPTS

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Whole Platform Foundation. The Long Way Toward Language Oriented Programming

Responsibilities. Using several specific design principles to guide OO design decisions.

End the Software Crisis! Nicole Michael

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve?

Designing Procedural 4GL Applications through UML Modeling

A Separation of Concerns Clean Architecture on Android

Elevator Control System

DOMAIN ENGINEERING OF COMPONENTS

Design Patterns for Net- Centric Applications

Design Patterns

CS 575: Software Design

Distributed Middleware. Distributed Objects

An Introduction to Software Architecture By David Garlan & Mary Shaw 94

Topics. Software Process. Agile. Requirements. Basic Design. Modular Design. Design Patterns. Testing. Quality. Refactoring.

Design concepts for data-intensive applications

SoberIT Software Business and Engineering Institute. SoberIT Software Business and Engineering Institute. Contents

Object-Oriented Analysis and Design Using UML (OO-226)

Your TOOLKIT 9-11 March 2018

Systems Analysis & Design

J, K F, G, H. Library/framework, 168 LIKE() predicate, 142 Load-balancing server (LBS), 120 Lock on check out (LOCO), 1

Beginning To Define ebxml Initial Draft

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

Keyword Driven Test Automation Framework for Web Based Applications

Design Patterns. CSC207 Fall 2017

Computer Information Systems

Pro XAML with C# From Design to Deployment on WPF, Windows Store, and Windows Phone. Buddy James. Lori Lalonde

DDD and BDD. Dan North ThoughtWorks

Introduction... ix. Chapter 1: Exploring Fundamental Programming Concepts... 1

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9)

Object-Oriented Design

Topics in Object-Oriented Design Patterns

17. GRASP: Designing Objects with Responsibilities

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

Cyber Defense Maturity Scorecard DEFINING CYBERSECURITY MATURITY ACROSS KEY DOMAINS

Implementation Architecture

Web Services. Lecture I. Valdas Rapševičius. Vilnius University Faculty of Mathematics and Informatics

ENTERPRISE ARCHITECTS CONCERN LEGAL REQUIREMENTS FOR THE COMPLIANCE WITH THE LAW

CHAPTER 9 DESIGN ENGINEERING. Overview

An Example. Unified Modelling Language - 2 ITNP090 - Object Oriented Software Design. Class diagram. Class diagram. Dr Andrea Bracciali

Achieving Right Automation Balance in Agile Projects

"Charting the Course... Agile Database Design Techniques Course Summary

Klocwork Architecture Excavation Methodology. Nikolai Mansurov Chief Scientist & Architect

Tackling Complexity in the Heart of Software. Domain-Driven Design 카페서비스개발팀 조영호

The Data Access Layer:

Object-Oriented Analysis and Design Using UML

Strategies for Rapid Development in Internet Time. William A. Cunningham December 5, 2000 NYOUG New York, NY

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

Nonprogrammers Can Build Important Parts of Prototypes

ENTITIES IN THE OBJECT-ORIENTED DESIGN PROCESS MODEL

JOURNAL OF OBJECT TECHNOLOGY

Lecture Notes UML UNIT-II. Subject: OOAD Semester: 8TH Course No: CSE-802

THE ESSENCE OF DATA GOVERNANCE ARTICLE

Microsoft Dynamics Road To Repeatability Technical Deep Dive Server Extensibility in Microsoft Dynamics NAV. Vjekoslav Babić, MVP

Schedule(3/3) March 18th 13:00 Unified Process and Usecase-Driven Approach. (problem definition, use case model)

Logical Architecture & Design Preliminaries

Principles of Software Construction: Objects, Design, and Concurrency

Building the User Interface: The Case for Continuous Development in an Iterative Project Environment

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 8 Slide 1

Association for International PMOs. Expert. Practitioner. Foundation PMO. Learning.

Key Ideas. OO Analysis and Design Foundation. Objectives. Adapted from slides 2005 John Wiley & Sons, Inc.

Clean Architecture Patterns, Practices, and #sddconf

Clean Architecture Patterns, Practices, and #DevSum17

Requirements and Design Overview

Executable UML the silver bullet or maybe not Dr. Joel Henry October 22, 2008

CORA Technical Annex. ESSnet. WP3: Definition of the Layered Architecture. 3.2 Technical Annex. Statistics Netherlands

Transcription:

Domain Driven Design IS An architectural methodology for evolving a software system that closely aligns to business requirements

Domain Driven Design IS Domain First Focus on the Object Model Focus on Object-Oriented Design Works well with other *DD methods to: Reduce Complexity Increase Maintainability

Domain Driven Design IS NOT l A silver bullet l A panacea for all your troubles l An easy path to follow l Always the best solution l And most importantly, it is not focused on the How, but the What and Why

The Domain Vision Statement l A shared understanding of what it is you are actually trying to create l Should be brief, written in clear English and understood by business and tech people alike l Should be factual, realistic, honest l Should avoid superlatives and marketing speak l Should avoid technical and implementation details

Domain l A Domain is a Sphere of Knowledge, Influence or Activity l A Domain is represented by the Ubiquitous Language l A Domain encapsulates a Domain Model l A Domain lives within a Bounded Context

The Ubiquitous Language l A major reason for failure of software projects is a failure of people, the failure to communicate l The Ubiquitous Language is a shared language between the business and the development teams

Domain Experts l Domain Experts are the primary point of contact the development teams have with the business l They are the Experts on their part of the business, not just users of the system l They should have deep knowledge of the subject Domain

Domain Model l A Domain Model is a representation of the relationships between the Entities and Value Objects in your Domain l It may look similar to UML or a class relationship diagram, but it is not one l The Domain Model should be recognisable and understandable by the business

Building Blocks

Entities l Entities are the things within your Model l An Entity is defined by being unique, and uniquely identifiable through time l They have identity, state and behaviour l E.g. Person, Account

Value Objects l Value Objects are the things within your model that have no uniqueness l They are equal in all ways to another Value Object if all their properties match l Value Objects are interchangeable

Aggregates l An aggregate is a collection of items that are gathered together to form a total quantity Wikipedia l Provides a boundary to manage invariants l An Aggregate Root is the root item containing a number of parts that form a whole

Services l Some concepts or operations from the domain model are not naturally modelled as objects l These operations often involve many domain objects and co-ordinate their behaviour

Factories l Abstract away the creation of aggregates so objects can be simpler and focused l Factories manage the beginning of the life cycle of some aggregates

Persistence Ignorance l There Is No Database l DDD uses the Repository pattern to create Persistence Ignorance l A Repository represents itself as an inmemory list of items l Repositories are specific to Aggregate Roots, not to Entities

Repositories l Abstraction over data access l Repositories manage the middle and end of the life cycle l Repositories might delegate persistence responsibilities to object-relational mappers for retrieval of objects l 1 Aggregate : 1 Repository

Bounded Contexts l When you have multiple models you should consider Bounded Contexts l Each BC is a self contained mini application containing it s own model, persistence and code base l To map between BCs you use a Context Map

Factors For Success of DDD l Your domain is not trivial l You have access to Domain Experts l You have an iterative process l You have a skilled and motivated team

Messaging Architectures l DDD is ideally suited to Message Based Architectures l DDD is ideally suited to Commands and Events l DDD is ideally suited to providing multiple autonomous systems that are loosely coupled

Command Query Responsibility Separation (CQRS) l Bertrand Meyer principle of CQS: every method should either be a command that performs an action, or a query that returns data to the caller l At an architectural level this means: either issue commands, or issue queries, but never both l And, query from a separate source from your domain commands

CQRS in a Picture