It is not uncommon to oppose the empirical process of TDD, together with its heavy use of unit tests, to the more mathematically based techniques, with the »formal methods » and formal verification at the other end of the spectrum. However I experienced again recently that the process of TDD can indeed help discover and draw upon [...]
Continue Reading »
Tags: cycle, ddd, design, domain, enum, established, finance, formalism, group, IMM, integers, maths, ordering, partial order, supple, tdd
Posted in Patterns, Programming • Comments Off
Alberto Brandolini (@ziobrando) gave a great talk at the last Domain-Driven Design eXchange in London. In this talk, among many other insights, he described a recurring pattern he had seen many times in several very different projects: « Collaborative Construction, Execution & Tracking. Sounds familiar? Maybe we didn’t notice something cool » Analysis conflicts are hints In [...]
Continue Reading »
Tags: Alberto Brandolini, boundedcontext, collaboration, conflict, ddd, DDDx, deal, domain, Domain-Driven Design, draft, immutable, insight, pattern, semantics, signed, trade, ux, validation
Posted in Programming, ddd • Comments Off
You write code to deliver business value, hence your code deals with a business domain like e-trading in finance, or the navigation for an online shoe store. If you look at a random piece of your code, how much of what you see tells you about the domain concepts? How much of it is nothing [...]
Continue Reading »
Tags: communication, ddd, DDDx, domain, Domain-Driven Design, intentionrevealing, noise, physics of software, signal, snr, ubiquitouslanguage
Posted in Programming, ddd • Comments Off
As suggested by its name, Domain-Driven Design is not only about Event Sourcing and CQRS. It all starts with the domain and a lot of key insights that are too easy to overlook at first. Even if you’ve read the « blue book » already, I suggest you read it again as the book is at the [...]
Continue Reading »
Tags: analysis, ddd, design, domain, insight, language, methodology, model, Programming
Posted in Programming, ddd • 1 Comment »
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, [...]
Continue Reading »
Tags: crosscuttingconcern, ddd, design, domain, Programming
Posted in Programming, ddd • Comments Off
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 [...]
Continue Reading »
Tags: craftsman, ddd, design, domain, human, methodology, Programming, trick
Posted in Programming • Comments Off
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 [...]
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 [...]
Continue Reading »
Tags: ddd, design, domain, experience, immutable, intent, java, methodology, oo, pattern, valueobject
Posted in Programming • 2 Comments »