Clean architecture
Update : 02/19/2021
Introduction
When we create software, an article of bmc explain that several stages intervene in its life cycle:
- An objective, which, starting from an idea, will allow us to think about the reason for which we are going to implement an application and what the intended goal is through this.
- Analyzes, in order to confirm that the objective is viable, through various study and research procedures which will make it possible to confirm or not, whether the application deserves to see the light of day.
- A design, the goal of which is from the different analyzes, to think about the software in its short, medium and long terms, in order to bring out the methodology, the budget, the number of staff and other factors involved in its concrete realization.
- An achievement, a natural result of the design stage, which will bring the software to life. This is the longest stage in the life cycle and it is during this that the product comes to life.
- A release, which is the culmination but is usually only the beginning of an iteration cycle aimed at improving or adding functionality to the application.
- Maintenance, which is the step after delivery of the product, to ensure that it still meets objectives.
Throughout this life cycle, Philippe kructhen explain that the stage of software development occurs in different contexts, such as the time during which the product is produced, the technology used, the competence of those making the product, or well the necessary updating of the software in order to guarantee a certain level of service, to name a few.
Regardless, as it says in this article from "fastcompagny", the years have shown that the majority of technical debts and therefore of the time wasted in making software, come from the architecture chosen according to the purpose of the product.
However, the choice of software architecture is difficult. Everyone will want to share their expertise, their vision of product design and the right way to organize themselves technically, in order to bring consistency, stability and maintainability to the product.
Thus, we have seen the emergence of design pattern and through this desire to formalize good practices, a conceptualization of models such as MVC, MVVM or even MVP.
There are plenty of them with their pros and cons, but here we will limit ourselves to one of these models: clean architecture.
Through this page, I offer you to study what clean architecture is. Its interest in relation to other models and an implementation in order to be able to use it, through different exercises.
Going further
These ideas are developed in full in my open courses: