avatarMichael Szczepanik

Summary

The provided content introduces Domain-Driven Design (DDD) with a focus on practical implementation for mobile developers, emphasizing strategic and tactical design aspects.

Abstract

The article, written by a solution architect, initiates a series on Domain-Driven Design (DDD), aiming to offer a fresh perspective that emphasizes practical application over theoretical knowledge. It defines DDD as an approach derived from Eric Evans' 2003 book, which has evolved through community contributions. The author likens DDD to urban planning, encompassing both a broad view of the system (Strategic Design) and a detailed focus on individual components (Tactical Design). Strategic Design includes identifying generic and supporting subdomains, as well as the core domain, and understanding context boundaries. Tactical Design deals with the detailed implementation within these strategic parameters. The series promises to deliver insights and strategies tailored for mobile developers, suggesting that DDD can be adapted to various projects and organizational contexts.

Opinions

  • The author believes that DDD is particularly suited for complex domains where logic needs to be well-organized.
  • DDD is seen as a way to align software architecture with business strategy effectively.
  • The article recommends "Domain-Driven Design Distilled" by Vernon Vaughn for a deeper understanding of strategic design.
  • For those interested in tactical design, the author suggests "Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy" by Vlad Khononov.
  • The author's goal is to make DDD highly accessible and relevant for design solutions, targeting both experienced professionals and newcomers to the field.
  • The series is expected to explore how DDD principles can be applied, modified, and integrated within various projects, particularly from a mobile developer's perspective.

Domain-Driven Design for Mobile Developers — introduction

As a solution architect, I’m commencing a fresh series that will take a close, analytical look at Domain Driven Design (DDD). Though this subject has been extensively covered, I will strive to present it in a new light, focusing on practical implementation rather than mere theoretical understanding. The goal is to make it highly accessible and relevant for our design solutions.

What Exactly is Domain Driven Design (DDD)? The name comes from a 2003 book by Eric Evans that describes the approach through a catalog of patterns. Since then communities of practitioners have further developed the ideas, spawning various other books and training courses. The approach is particularly suited to complex domains, where a lot of often-messy logic needs to be organized. Let's think of DDD in terms of urban planning. It offers the perspective to view a system both as a comprehensive city layout (the agglomeration) and an individual building unit within that city (a house).

Here’s how DDD can be broken down:

Strategic Design (the City Viewpoint): This level of design gives you an overview of the whole system. It consists of several components:

  • Generic Subdomain: These are elements essential for running a business but not the core focus. For instance, in a clothing retail company, the delivery system is vital but not central to the business strategy.
  • Supporting Subdomain: It includes the infrastructure and frameworks that assist the company in functioning smoothly. This could mean tools for efficient team and employee management.
  • Core Domain: The primary earning focus of the company and the aspect that holds the greatest value and priority.

It also describes boundaries between different contexts and mapping techniques between them.

If you would like to follow strategic design topic in detail I recommend you book Domain-Driven Design Distilled by Vernon Vaughn. Looks like the author of the “red book” has rethought the topic and described it much better in this book.

Tactical Design (the House or Apartment Viewpoint): This is the intricate aspect of DDD, focusing on the individual components within the system. Tactical design is tightly correlated with strategic design and often pertains to specific tasks or responsibilities undertaken by individuals or teams.

If you would like to follow the tactical design and more about DDD topic in detail I recommend you book Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy by Vlad Khononov

As we delve into this series, we’ll explore how these aspects of DDD can be applied, modified, and integrated within various projects and organizational contexts. The aim is to offer practical insights and actionable strategies that resonate with both experienced professionals and those new to the field. Everything of course from the mobile developer's perspective and how we can adapt to our world, so stay tuned.

Domain Driven Design
Software Architecture
Strategic Thinking
Requirements
Software Development
Recommended from ReadMedium