La Clean Architecture est une ligne directrice pour l'architecture système proposée par Robert C. Martin (surnommé Uncle Bob). Elle s'inspire de nombreuses directives architecturales comme l'Architecture Hexagonale, l'Architecture en Oignon, etc., développées au fil des années.
C'est l'une des directives suivies par les ingénieurs logiciels pour construire des logiciels évolutifs, testables et maintenables.
Pourquoi Avons-Nous Besoin "d'Architecturer" ?
"L'objectif de l'architecture logicielle est de minimiser les ressources humaines nécessaires pour construire et maintenir le système requis."
― Robert C. Martin, *Clean Architecture*
Les avantages d'une architecture appropriée
✔ Testable
✔ Maintenable
✔ Modifiable
✔ Facile à Développer
✔ Facile à Déployer
✔ Indépendante
La Clean Architecture
Voici l'illustration de la Clean Architecture créée par Robert Martin :
Nous pouvons y voir quatre couches dans le diagramme :
🔵 Bleue, 🟢 Verte, 🔴 Rouge et 🟡 Jaune.
Chaque cercle représente différentes zones du logiciel. La couche la plus externe est le niveau le plus bas du logiciel et plus nous allons vers le centre, plus le niveau est élevé. En général, plus on va en profondeur, moins la couche est sujette à changement.
La Règle des Dépendances
La Règle des Dépendances stipule que les dépendances du code source ne peuvent pointer que vers l'intérieur.
Cela signifie que rien dans un cercle interne ne peut connaître quoi que ce soit à propos de quelque chose dans un cercle externe. Autrement dit, le cercle interne ne devrait pas dépendre de quoi que ce soit dans le cercle externe. Les flèches noires représentées dans le diagramme montrent cette règle de dépendance.
Cadres et Pilotes
Les zones logicielles résidant à l'intérieur de cette couche sont :
- Interface Utilisateur (UI)
- Base de Données (DB)
- Interfaces Externes (ex : API de plateforme native)
- Web (ex : Requête Réseau)
- Appareils (ex : Imprimantes et Scanners)
Adaptateurs d'Interface
Cette couche contient :
- Présentateurs (Logique UI, États)
- Contrôleurs (Logique UI, États)
- Passerelles (CRUD)
Règles Métiers de l'Application
Les règles qui ne sont pas des règles métiers principales mais essentielles pour cette application. Cette couche contient les Cas d'Usage.
Règles Métiers de l'Entreprise
Cette couche contient les règles métiers essentielles ou spécifiques au domaine. Elle est la moins sujette aux changements.
Un petit mot pour la fin ...
L'architecture propre offre une approche efficace pour construire des applications évolutives, maintenables et testables. Les trois couches de base, à savoir le domaine, l'infra et la couche principale, permettent une séparation claire des préoccupations, ce qui permet de créer des bases de code modulaires et flexibles.
En encapsulant la logique d'entreprise dans la couche Domaine, en implémentant les dépendances externes dans la couche Infra et en assemblant les cas d'utilisation dans la couche Principale, les développeurs peuvent obtenir une architecture bien organisée, plus facile à comprendre et à maintenir.