Tactical design without strategic design?

Tactical design without strategic design?

Technically, yes, it is possible to apply the tactical design elements of DDD without going through the strategic design phase. However, doing so may limit the benefits you can gain from DDD.

The tactical design patterns of DDD are designed to help developers tackle specific design challenges that are common in complex domains, such as aggregate design, domain events, and bounded contexts. These patterns can be applied to a codebase without necessarily needing to engage in a larger strategic design effort.

However, the strategic design phase is crucial in establishing a shared understanding of the domain between the domain experts and the development team, as well as identifying the key business concepts and boundaries that should be reflected in the software architecture. Without this shared understanding, it can be difficult to apply the tactical design patterns effectively.

Moreover, DDD is not a one-size-fits-all approach, and not all of the tactical patterns may be relevant to every project. The strategic design phase can help determine which patterns are most appropriate for the specific domain and identify additional patterns that may be needed.

In a brownfield project, which is a software development project that starts from an existing codebase or system, applying DDD involves identifying and understanding the existing domain concepts and aligning them with the ubiquitous language. This may involve refactoring the codebase to better represent the domain concepts and separating the concerns of the application into appropriate bounded contexts.

Applying DDD from the bottom up can be more challenging than applying it from the top down. However, it is still possible to apply the tactical design patterns of DDD incrementally and iteratively. For example, a team could start by applying the repository pattern to a portion of the codebase, and gradually expand the use of DDD patterns as the team gains more familiarity with the domain and the codebase.

Leave a comment