On 26 September 2018 Numendo invited Michaël Azerhad, the founder of WealCome, a company specialising in software craftsmanship, to talk to us about BDD, DDD and TDD. If you are not familiar with these three acronyms, they stand for effective project management methods designed to make you more efficient! We talk about these methods in a little more detail further down in the article. BONUS: for those who were not able to attend our meet-up, you can watch the video of the event below.
The replay video of the meet-up was embedded here in the French version and needs to be re-attached.
In this video you will see, through BDD, why it is important for the business team to challenge what is said with the technical team. Along the same lines, you will learn how to gain precision during the User Story definition stage. You will also see how DDD demonstrates the usefulness of defining a common language that everyone can understand, so that the various teams grasp the previously defined User Stories in the same way. Finally, TDD will show you how to save time by writing clean code by means of tests written up front.
Behavior Driven Development, or BDD, for a language everyone understands
According to Michaël, Behavior Driven Development (BDD) is an approach based on discovery through examples! In particular, this approach aims to avoid any misunderstanding between the various stakeholders involved in a project. The underlying idea of this approach is to illustrate the acceptance criteria (business rules) through simple, concrete and extremely precise examples. This first stage quite simply makes it possible to define the ins and outs of a project in a very straightforward way. Functional requirements are therefore easier to get to grips with, and it makes it possible to avoid any confusion upstream of the project. The result is a common language spoken by all the stakeholders, whether they belong to the business team or to the technical team.
Domain Driven Design (DDD), the second stage, to illustrate
Domain Driven Design, for its part, is a complete, in-depth design approach. One of the objectives of this software development approach is to ensure that the source code strongly reflects the common language defined earlier during the BDD stage, but also that specific domain-modelling concepts suited to the domain emerge from it. Michaël also mentions two tools available within this approach:
- Context mapping: a diagram of the structure, of the major groupings and of all their stakeholders, with the aim of visualising upstream/downstream exchange flows
- Bounded context: this involves defining a language common to everyone in order to demystify each party’s jargon and arrive at a single, unique possible interpretation.
Test Driven Development (TDD): multiply the tests in order to code without bugs
The last part of the meet-up covered Test Driven Development. In short, this TDD programming discipline is based on a clean-coding principle. It therefore aims to write each test before writing a program’s source code. This has the effect of speeding up development drastically while ensuring strong benefits such as:
- a focus on the customer’s view of a software use case
- the absence of dead code
- code that is highly malleable without risk
- living documentation
- as well as plenty of other surprising aspects highlighted by Michaël in the video
If you want to find out more about these methods, we invite you to read Michaël Azerhad’s articles.
Did you enjoy this article? Don’t hesitate to follow our news on our blog.