User Tools

Site Tools


2015:deliver_domain_driven_designs._dynamically

Back to 2015-proposals

Title: Deliver Domain Driven Designs. Dynamically!
Proposer: Austin Bingham
Proposer: Robert Smallshire
Type: Workshop
Duration: 360 mins
Description:
How do you statically model an ever changing world? The approach of Domain Driven Design (DDD) describes the codification of perspectives of reality into a domain model, which is in turn realized as a software system around which valuable services can be constructed. As business and physical domains evolve, our requirements, models and implementations must follow if they are to remain relevant.

Dynamic languages such as Python are a great match for the dynamism of the real world. It is perhaps surprising then, that for much of the decade since its inception, DDD has manifested its results in rigid relational database schemas, object relational mappers pushed beyond reasonable limits, and inflexible object models in statically typed languages such as Java or C#.

In this hands-on workshop, participants will work together to implement a domain model in Python using nothing more that plain-old-Python objects . We’ll show how core DDD concepts such as entities, immutable value objects, aggregates and repositories can be implemented in Python. We’ll build declarative tools from scratch to facilitate model implementation, and we’ll develop a simple but powerful event-sourcing system for persistence. Along the way we’ll discover some useful properties of dynamic languages when it comes to making supple designs which are testable, extensible, customisable, and configurable into the future, understanding how bounded contexts and pluggable subdomains can ease the delivery and maintenance of large models.

Up front, we provide a domain, a vision, a ‘ubiquitous language’, and Python development tools. We’ll work hard together as a class to implement a small, but complete and robust, model over the course of one day, and we’ll put it to work in a simulation.



2015/deliver_domain_driven_designs._dynamically.txt · Last modified: 2016/06/11 14:05 by 127.0.0.1