Domain-Driven Design encourages to analyse the domain deeply in a process called Supple Design. In his book (the blue book) and in his talks Eric Evans gives some examples of this process, and in this blog in several parts I will suggest some sources of inspirations and some recommendations drawn from my practice in order to help about this process.
Continue Reading »
Tags: analysis, ddd, design, domain, intent, maths, pattern, Programming, theory, tree
Posted in Patterns, Programming, ddd • 1 Comment »
Consider a domain, for example an online bookshop project that we call BuyCheapBooks. The Ubiquitous Language for this domain would talk about Book, Category, Popularity, ShoppingCart etc.
Business Domains
From scratch, coding this domain can be quite fast, and we can play with the fully unit-tested domain layer quickly. However if we want to ship, we will [...]
Continue Reading »
Tags: crosscuttingconcern, ddd, design, domain, Programming
Posted in Programming, ddd • No Comments »
Small details matter because you deal with them often. Any enhancement you make thus yields a benefit often, hence a bigger overall benefit. In other words: invest small care, get big return. This is an irresistible proposal!
Examples of small design-level details that I care about because I have experienced great payback from them:
Using Value Objects [...]
Continue Reading »
Tags: craftsman, ddd, design, domain, human, methodology, Programming, trick
Posted in Programming • No Comments »
Deciding where and how to place the annotations is not innocent. The last thing we want is to create extra maintenance effort because of the annotations. In other words, we want annotations that are stable, or that change for the same reasons and at the same time than the elements they annotate. This article suggests [...]
Continue Reading »
Tags: annotation, aop, architecture, c#, classdiagram, crosscuttingconcern, dependencies, design, domain, intent, intrinsic, java, location, pattern, Programming, stereotype, uml, use case
Posted in Programming • 1 Comment »
The concept of degrees of freedom looks so relevant to software development that I am wondering why it is not considered more often. Fortunately Michael L. Perry dedicates a full section of his blog to that concept. In this post I will quote a lot, please consider that as a sign of enthusiasm.
A common concept [...]
Continue Reading »
Tags: analysis, ddd, design, dof, domain, education, maths, methodology, problem, Programming, solution
Posted in Programming • 1 Comment »
Many concepts look obvious because they are used often, not because they are really simple.
Small quantities that we encounter all the time in most projects, such as date, time, price, quantity of items, a min and a max… hardly are a subject of interest from developers “as it is obvious that we can represent them [...]
Continue Reading »
Tags: ddd, design, domain, experience, immutable, intent, java, methodology, oo, pattern, valueobject
Posted in Programming • 2 Comments »
Over time, patterns have appeared on many different topics, not all related to programming. Here is a list of patterns and pointers to other lists of patterns, to illustrate two things:
Knowledge and experience in general can be packaged into patterns, often using the pattern form. Patterns are convenient for reuse, in any domain.
There are already [...]
Continue Reading »
Tags: design, domain, pattern, patternity, problem, Programming, solution
Posted in Patternity, Patterns, Programming • 1 Comment »
Low coupling between objects is a key principle to help you win the battle against software entropy. Making sure your dependencies are under control matters. Several tools can enforce dependencies restrictions, such as JDepend. However in a real project with many classes, packages and modules, the real issue is how to decide and configure the [...]
Continue Reading »
Tags: abstraction, analysis, dependencies, design, domain, interface, java, oo, pattern, patternity, Programming, research, tool
Posted in Patternity, Patterns, Programming • No Comments »
The more patterns developers know, the most efficient they become within a team: it only takes one or two words (the pattern name) to communicate a design decision or proposal, instead of 10 mn of explanations. Communication also gets much more accurate and to-the-point (or less fuzzy).
Because patterns often form a pattern language, not only [...]
Continue Reading »
Tags: analysis, book, design, domain, education, java, pattern, problem, Programming, solution
Posted in Patterns • 2 Comments »
What do you think about when you hear the word “architecture” about software? Fowler defines it: whoNeedsArchitect “In most successful software projects, the expert developers working on that project have a shared understanding of the design system design. This shared understanding is called ‘architecture.’”.
However for most people the word “architecture” comes full of middleware [...]
Continue Reading »
Tags: architecture, convention, design, domain, management, methodology, refactoring, syntax, tool, unittest
Posted in Programming • No Comments »