Code Monkey home page Code Monkey logo

domaindriven's Introduction

Domain Driven Design

Important Topics:

Ubiquitous Language

Ubiquitous languages aims to build a common and business oritented language.

  • Shared by all parties between the project

    Primary goals : avoiding Common misunderstandings and bad assumptions.

  • Vocabulary of domain specific terms

    Nouns, verbs, adjectives, idimatic expressions and even adverbs

alt text

Bounded Context:

Bounded context is the Delimited space where each element in the Ubiquitous language is well-defined meaning. Main adavantages of Bounded Context :

  • Remove ambiguity and duplications
  • Simply design of Software modules.
  • Integration of external components.

Context Map

Context Map is the diagram that provides comprehensive view of the system being designed.

Event Storming:

Event Storming is exploring a business domain starting from observable domain events. It works like:

  • Identifying relavant domain events.
  • Find what cause the event
  • Look at the model surface as a timeline.

Domain Model Supporting Architecture:

alt text

Value Objects

The Value Object has very specific characteristics:

  • It is used to Measure, quantifies, or describes a thing in the domain.
  • Identiity is basded on composition of values.
  • Immutable.

Domain Services:

  • Implement the Domain logic tha belongs to multiple entities.
  • Coordinate the activity of aggregates and repositories with the purpose of implementing the business action.

Action in Domain Services come from Requirments and approved by Domain Experts.

Aggregates

Aggregate consists of one or more Entities and ValueObjects which change together. Aggregate must have Aggregate Root, which is parent object of all members of Aggregate. Data changes to Aggregate must follow A.C.I.D rule, which is : Automic, Consistant, Isolated and Durable.

In the Domain Driven Design book Eric Evans states, "An aggregate is a cluster of associated objects that we treat as a unit for the purpose of data changes."

domaindriven's People

Contributors

milindchavan12 avatar milind-chavan-mcconss avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.