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 »
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 »
In my very first job, I was doing R&D, working on a map-matching algorithm. The goal of this algorithm was to pinpoint a moving car on a vector map, based on the data from various sensors, including a GPS, an electronic compass and the car odometer. Such algorithm was essential for the business of the [...]
Continue Reading »
Tags: abstraction, analysis, design, methodology, pattern, problem, Programming, research, uml
Posted in Patterns, Programming • Comments Off
The Self-Descriptiveness pattern can save your life many times in the course of any software project. The power behind it is to harness the computer, rather than yourself. What is Self-Descriptiveness? Self-Descriptiveness is a property of any system that is able to describe itself with no external help. Just ask it « describe yourself » and it [...]
Continue Reading »
Tags: analysis, convention, guideline, principle, Programming
Posted in Patterns, Programming • Comments Off
Patterns represent a couple (intent, solution), where the intent matters most. Based on that intents, that can be generic or specialized, I propose to consider patterns like types in languages with strong typing, for the compiler to enforce their constraints. Declaring patterns: what for? Consider the very simple Quantity pattern from Analysis Patterns (Fowler): Represent [...]
Continue Reading »
Tags: analysis, ddd, design, intent, java, methodology, pattern, Programming, tdd, typing
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 • Comments Off
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 [...]
Continue Reading »
Tags: analysis, book, design, domain, education, java, pattern, problem, Programming, solution
Posted in Patterns • 2 Comments »
Information hiding is one of the very essential principles of object orientation. If you dont know it well, I suggest you take a look at it on the Web, e-g at UncleBob. But information hiding is much more than just putting data private through accessors to protect them, it is especially a great tool to [...]
Continue Reading »
Tags: analysis, encapsulation, idiom, oo, primitive, trick
Posted in Programming • 1 Comment »
One thing human are particularly pride of is our ability to use abstraction to solve problems. We in software development all know that « another level of abstraction can solve my problem ». But what do you call abstraction ? Abstract is the opposite of concrete. Concrete things are simply things, the kind of things a dog [...]
Continue Reading »
Tags: abstraction, analysis, domain, pattern, Programming
Posted in Programming • Comments Off