Searching...
Français
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Clean Architecture

Clean Architecture

A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
by Robert Martin 2017 432 pages
Programming
Technology
Computer Science
Écouter

Points clés

1. L'architecture logicielle vise à minimiser les ressources humaines et à maximiser la productivité

L'objectif de l'architecture logicielle est de minimiser les ressources humaines nécessaires pour construire et maintenir le système requis.

Les décisions architecturales sont cruciales. Une bonne architecture réduit l'effort nécessaire pour développer, déployer et maintenir les systèmes logiciels. Elle permet aux équipes de travailler de manière indépendante, minimise l'impact des changements et permet au système d'évoluer au fil du temps.

Aspects clés d'une bonne architecture :

  • Séparation des préoccupations
  • Gestion des dépendances
  • Abstraction des détails d'implémentation
  • Flexibilité pour accueillir les changements futurs

En se concentrant sur ces aspects, les architectes peuvent créer des systèmes plus faciles à comprendre, modifier et étendre, ce qui conduit finalement à une productivité accrue et à une réduction des coûts sur la durée de vie du système.

2. L'architecture propre sépare les règles métier des détails externes

Le centre de votre application n'est pas la base de données. Ce ne sont pas non plus un ou plusieurs des frameworks que vous pouvez utiliser. Le centre de votre application est constitué des cas d'utilisation de votre application.

Les règles métier sont au cœur. L'architecture propre organise le code en cercles concentriques, avec les règles métier au centre et les détails d'implémentation aux couches extérieures. Cette séparation permet à la logique métier centrale de rester intacte face aux changements des facteurs externes tels que les bases de données, les interfaces utilisateur ou les frameworks.

Couches clés dans l'architecture propre :

  • Entités : Règles métier à l'échelle de l'entreprise
  • Cas d'utilisation : Règles métier spécifiques à l'application
  • Adaptateurs d'interface : Convertir les données entre les cas d'utilisation et les agences externes
  • Frameworks et pilotes : Outils et technologies externes

En respectant cette structure, les développeurs peuvent créer des systèmes qui sont :

  • Plus flexibles et adaptables aux changements
  • Plus faciles à tester et à maintenir
  • Moins dépendants des technologies ou frameworks spécifiques

3. Les principes SOLID guident la création de systèmes flexibles et maintenables

Les principes SOLID nous indiquent comment organiser nos fonctions et structures de données en classes, et comment ces classes doivent être interconnectées.

SOLID améliore la modularité. Ces cinq principes fournissent des lignes directrices pour créer des systèmes logiciels plus compréhensibles, flexibles et maintenables. Ils aident les développeurs à concevoir du code résistant aux changements et facile à étendre.

Les principes SOLID sont :

  • Principe de responsabilité unique : Une classe ne doit avoir qu'une seule raison de changer
  • Principe ouvert/fermé : Les entités logicielles doivent être ouvertes à l'extension mais fermées à la modification
  • Principe de substitution de Liskov : Les objets d'une superclasse doivent pouvoir être remplacés par des objets de ses sous-classes sans affecter la correction du programme
  • Principe de ségrégation des interfaces : De nombreuses interfaces spécifiques aux clients sont meilleures qu'une interface généraliste
  • Principe d'inversion des dépendances : Les modules de haut niveau ne doivent pas dépendre des modules de bas niveau ; les deux doivent dépendre des abstractions

En appliquant ces principes, les développeurs peuvent créer des architectures logicielles plus robustes et évolutives, capables de s'adapter aux exigences changeantes au fil du temps.

4. Les composants sont les blocs de construction d'une architecture propre

Les composants sont les unités de déploiement. Ce sont les plus petites entités pouvant être déployées dans le cadre d'un système.

La conception modulaire permet la flexibilité. Les composants dans une architecture propre sont des parties du système indépendamment déployables et développables. Ils encapsulent des fonctionnalités connexes et ont des interfaces bien définies, permettant une maintenance et une modification plus faciles du système.

Caractéristiques clés des composants bien conçus :

  • Forte cohésion : Fonctionnalités connexes regroupées
  • Faible couplage : Dépendances minimales entre les composants
  • Interfaces claires : Méthodes d'interaction bien définies
  • Déployabilité indépendante : Peut être mis à jour ou remplacé sans affecter les autres parties du système

En organisant les systèmes en composants, les architectes peuvent :

  • Faciliter le développement parallèle par différentes équipes
  • Permettre des tests et un débogage plus faciles
  • Autoriser des mises à jour et des améliorations incrémentielles du système
  • Améliorer l'évolutivité et la maintenabilité globales du système

5. Les frontières définissent et protègent la logique métier centrale

À chaque frontière architecturale, nous sommes susceptibles de trouver le modèle de l'objet humble quelque part à proximité.

Les frontières protègent le cœur. Les frontières architecturales dans une architecture propre séparent différentes zones de préoccupation, en particulier entre la logique métier et les détails d'implémentation. Ces frontières aident à maintenir l'indépendance des règles métier centrales face aux changements externes.

Aspects clés des frontières architecturales :

  • Utilisation d'interfaces pour définir les interactions entre les couches
  • Inversion des dépendances pour garantir que les dépendances pointent vers l'intérieur
  • Objets de transfert de données pour transmettre des informations à travers les frontières
  • Objets humbles pour séparer le comportement testable des composants difficiles à tester

En établissant des frontières claires, les architectes peuvent :

  • Minimiser l'impact des changements dans les systèmes ou technologies externes
  • Faciliter les tests de la logique métier centrale
  • Permettre le remplacement des détails d'implémentation sans affecter le système central
  • Améliorer la flexibilité et l'adaptabilité globales du système

6. L'architecture propre facilite le développement piloté par les tests et le déploiement indépendant

Une bonne architecture rend le système facile à changer, de toutes les manières nécessaires, en laissant les options ouvertes.

La testabilité et la flexibilité sont essentielles. L'architecture propre promeut des pratiques qui rendent les systèmes plus faciles à tester et à déployer indépendamment. En séparant les préoccupations et en gérant les dépendances, il devient plus simple d'écrire des tests unitaires pour la logique métier centrale et de déployer différents composants du système séparément.

Avantages de l'architecture propre pour les tests et le déploiement :

  • Les règles métier centrales peuvent être testées sans dépendances UI, base de données ou externes
  • Différents composants peuvent être déployés indépendamment, permettant des mises à jour plus faciles
  • Les changements dans une zone du système ont un impact minimal sur les autres
  • De nouvelles fonctionnalités peuvent être ajoutées avec moins de risque de casser les fonctionnalités existantes

Ces caractéristiques conduisent à :

  • Des cycles de développement plus rapides
  • Un risque réduit lors des déploiements
  • Une fiabilité améliorée du système
  • Une plus grande flexibilité pour adopter de nouvelles technologies ou modifier les existantes

7. Les frameworks et les bases de données sont des détails d'implémentation, pas des éléments architecturaux

Les frameworks sont des outils à utiliser, pas des architectures à suivre.

La logique centrale doit être indépendante des frameworks. L'architecture propre traite les frameworks et les bases de données comme des détails externes qui ne doivent pas influencer la logique métier centrale. Cette approche permet une plus grande flexibilité pour changer ou mettre à jour ces éléments externes sans affecter la fonctionnalité centrale du système.

Principes clés pour gérer les frameworks et les bases de données :

  • Les traiter comme des plugins pour la logique métier centrale
  • Utiliser l'inversion des dépendances pour garder la logique centrale indépendante
  • Créer des abstractions pour les opérations de base de données
  • Retarder les décisions concernant les frameworks et les bases de données autant que possible

Avantages de cette approche :

  • Plus facile de changer ou de mettre à jour les frameworks et les bases de données
  • La logique métier centrale reste stable malgré les changements externes
  • Réduction de la dépendance aux fournisseurs
  • Amélioration de la testabilité des composants du système central

8. Le web n'est qu'un autre mécanisme de livraison dans l'architecture propre

Le web est un mécanisme de livraison, et l'architecture de votre application doit le traiter comme tel.

La logique métier est indépendante du mode de livraison. Dans l'architecture propre, le web est traité comme un détail externe, similaire aux bases de données ou aux frameworks. Cette perspective permet à la logique métier centrale de rester indépendante du mécanisme de livraison spécifique, qu'il s'agisse d'une application web, d'une application de bureau ou d'une API.

Considérations clés pour les applications web dans l'architecture propre :

  • Séparer le code spécifique au web de la logique métier centrale
  • Utiliser des adaptateurs d'interface pour convertir entre les formats web et les structures de données internes
  • Traiter les frameworks web comme des plugins pour le système central
  • Concevoir les cas d'utilisation pour être indépendants des préoccupations spécifiques au web

Avantages de cette approche :

  • Plus facile d'adapter le système à différents mécanismes de livraison
  • La logique métier centrale peut être réutilisée sur plusieurs plateformes
  • Simplification des tests des règles métier sans dépendances web
  • Plus grande flexibilité pour changer ou mettre à jour les technologies web

9. L'architecture propre embarquée sépare les préoccupations matérielles de la logique métier

Bien que le logiciel ne s'use pas, il peut être détruit de l'intérieur par des dépendances non gérées sur le matériel.

L'indépendance matérielle est cruciale. L'architecture propre embarquée applique les principes de l'architecture propre aux systèmes embarqués, séparant les préoccupations spécifiques au matériel de la logique métier centrale. Cette séparation permet des mises à jour plus faciles des composants matériels et une meilleure portabilité du logiciel.

Éléments clés de l'architecture propre embarquée :

  • Couche d'abstraction matérielle (HAL) pour isoler le code spécifique au matériel
  • Logique métier indépendante du matériel
  • Interfaces claires entre les composants matériels et logiciels
  • Utilisation de l'inversion des dépendances pour gérer les dépendances matérielles

Avantages de cette approche dans les systèmes embarqués :

  • Plus facile de porter le logiciel sur de nouvelles plateformes matérielles
  • Simplification des tests de la logique centrale sans dépendances matérielles
  • Réduction de l'impact des changements matériels sur le système global
  • Amélioration de la maintenabilité et de la longévité du logiciel embarqué

10. Les microservices et les architectures orientées services peuvent bénéficier des principes de l'architecture propre

L'architecture d'un système est définie par des frontières qui séparent les éléments logiciels les uns des autres, et restreignent ceux d'un côté de connaître ceux de l'autre.

Les principes propres s'appliquent à toutes les échelles. Bien que l'architecture propre soit souvent discutée dans le contexte des applications monolithiques, ses principes peuvent être appliqués efficacement aux microservices et aux architectures orientées services. Ces principes aident à maintenir l'indépendance et la testabilité des services individuels tout en gérant la complexité des systèmes distribués.

Application de l'architecture propre aux microservices :

  • Traiter chaque microservice comme un contexte délimité avec sa propre architecture propre
  • Utiliser des interfaces bien définies pour la communication inter-services
  • Appliquer l'inversion des dépendances entre les services
  • Maintenir la déployabilité indépendante des services

Avantages de l'architecture propre dans les microservices :

  • Amélioration de la modularité et de l'évolutivité du système global
  • Plus facile à comprendre et à maintenir les services individuels
  • Plus grande flexibilité pour faire évoluer et remplacer les services
  • Réduction du couplage entre les services, conduisant à des systèmes plus robustes

Last updated:

Avis

4.23 out of 5
Average of 6k+ ratings from Goodreads and Amazon.

Clean Architecture : Un guide artisanal de la structure et de la conception logicielle reçoit des avis mitigés. Beaucoup louent son accent sur les principes SOLID et le découplage, tandis que d'autres le trouvent répétitif et manquant d'exemples pratiques. Certains lecteurs apprécient le contexte historique et les anecdotes, tandis que d'autres estiment qu'ils détournent de l'essentiel. Le livre est généralement considéré comme utile pour comprendre les concepts architecturaux de haut niveau, mais les opinions divergent quant à son utilité pour les débutants par rapport aux développeurs expérimentés. Plusieurs critiques notent que le contenu du livre aurait pu être présenté de manière plus concise.

À propos de l'auteur

Robert Cecil Martin, connu sous le nom d'Oncle Bob, est un ingénieur logiciel éminent et un défenseur des méthodes de développement Agile. En tant que président d'Object Mentor Inc., il dirige une équipe de consultants spécialisés dans la conception orientée objet, les motifs, UML et les méthodologies Agile. Martin possède une vaste expérience dans l'industrie du logiciel, ayant été rédacteur en chef du C++ Report de 1996 à 1999. Il est un conférencier très recherché lors de conférences internationales et de salons professionnels, partageant son expertise sur les meilleures pratiques de développement logiciel. L'influence de Martin s'étend au-delà du conseil, puisqu'il a également écrit plusieurs livres influents sur l'artisanat logiciel et les pratiques de codage propre.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.