Read in English · Leer en español · Auf Deutsch lesen
Chapitre 1 sur 12 · Débutant à intermédiaire
Qu’est-ce que l’architecture logicielle ?
Ce chapitre explique ce qu’est l’architecture logicielle et pourquoi elle compte. Il compare les définitions de référence, distingue l’architecture de la conception, montre à travers des incidents réels comment les décisions structurelles déterminent le coût, la qualité et les risques, et décrit ce que font les architectes. Il aborde ensuite les parties prenantes et leurs préoccupations, les décisions et les compromis, la dette technique et l’érosion, et la place de l’architecture dans la livraison itérative moderne. Il s’adresse aux développeurs qui évoluent vers des responsabilités d’architecture et à toute personne qui travaille avec des architectes, et il ne suppose que les éléments de base du chapitre 0.
Introduction vidéo au chapitre 1
6 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Bienvenue dans le chapitre 1 : Qu’est-ce que l’architecture logicielle ? Le chapitre zéro vous a donné les briques de base. Ce chapitre prend du recul et se demande ce que signifie agencer ces briques de façon délibérée, qui le fait, et pourquoi cela en vaut la peine. Il vous donne le vocabulaire dont dépend le reste du cours, et une manière de penser applicable à n’importe quel système, d’une petite application de réservation à une plateforme nationale de paiement.
Tout système logiciel a une architecture, que quelqu’un l’ait conçue ou non. C’est l’ensemble des structures fondamentales qui composent le système, et des décisions importantes qui les ont produites. Ces structures déterminent bien plus de choses que la plupart des gens ne l’imaginent : la rapidité et la fiabilité du système, son coût d’exploitation, et le nombre d’équipes qui peuvent y travailler en même temps. Surtout, elles déterminent combien coûtera la modification du système l’an prochain. Les fonctionnalités sont ce que fait un système. L’architecture détermine en grande partie la qualité avec laquelle il le fait, et ce qu’il en coûte de faire autre chose.
Ce chapitre s’adresse aux développeurs qui évoluent vers des responsabilités d’architecture. Il s’adresse aussi à toute personne qui travaille avec des architectes et veut comprendre ce qu’ils font, et pourquoi. Il s’appuie sur les briques de base du chapitre zéro : composants, stockages de données, réseaux et API. Si elles vous sont familières, vous êtes prêt. Et il mène au chapitre 2, qui rend les objectifs d’une architecture précis et mesurables, sous forme d’attributs de qualité.
Le chapitre compte huit sections. La section un point un compare les définitions qui comptent, de la norme internationale et du Software Engineering Institute, ou SEI, jusqu’aux praticiens qui insistent sur la compréhension partagée et sur les décisions coûteuses à changer. La section un point deux s’attaque à la confusion la plus courante : où s’arrête l’architecture et où commence la conception. La réponse est qu’il n’y a pas de mur, seulement un continuum ordonné par l’importance. La section un point trois explique pourquoi s’en soucier, en s’appuyant sur trois cas réels : la perte de trading de Knight Capital en deux mille douze, le lancement chaotique de HealthCare point gov en deux mille treize, et un changement opéré en deux mille vingt-trois chez Amazon Prime Video.
Ce diagramme de la section un point un montre les idées que partagent les définitions, à l’aide d’un système de livraison de repas. La ligne en pointillés est la frontière du système. Les boîtes à l’intérieur sont des éléments : une application mobile, un service des commandes, une base de données des commandes, un service des livreurs et un module de paiement. Les flèches sont des relations. L’application appelle le service des commandes en HTTPS. Le service des commandes interroge la base de données en SQL, et envoie un événement au service des livreurs. De petites étiquettes indiquent des propriétés. Le service des commandes, par exemple, est sans état, et trois copies tournent en parallèle. Hors de la frontière se trouve l’environnement : les clients, les livreurs et les restaurants, et le prestataire de paiement par carte. Et l’environnement ne se limite pas aux autres systèmes. Il comprend aussi la loi, le budget, l’organisation et ses équipes, et la plateforme cloud. On ne peut pas comprendre une architecture sans eux.
La section un point quatre s’intéresse aux personnes : ce que font réellement les architectes, les différents types d’architectes, pourquoi l’architecture est un rôle avant d’être un intitulé de poste, et le débat de longue date sur la question de savoir si les architectes doivent encore écrire du code. La section un point cinq élargit l’angle aux parties prenantes, toutes les personnes qui ont un intérêt dans le système, des utilisateurs et développeurs jusqu’aux régulateurs. Elle montre comment les préoccupations contradictoires sont rendues explicites, plutôt que tranchées par celui qui crie le plus fort. La section un point six passe aux décisions et aux compromis : ce que contient une bonne décision, quelles décisions sont facilement réversibles et lesquelles ne le sont pas, et l’idée de décider au dernier moment responsable.
Les deux dernières sections portent sur le temps. La section un point sept explique la dette technique au sens où Ward Cunningham l’entendait à l’origine, ce qui la distingue d’un simple désordre, et comment les architectures s’érodent et dérivent de la forme voulue. La section un point huit situe l’architecture dans le cycle de livraison, entre la conception complète en amont et la conception purement émergente, et montre un juste milieu pragmatique : juste assez d’architecture, au bon moment, vérifiée en continu.
Ce diagramme de la section un point deux montre comment distinguer l’architecture de la conception. Plus une décision est à gauche, plus elle est architecturale ; plus elle est à droite, plus elle relève de la conception et du code. Le premier critère est le coût de l’annulation d’une décision : des mois de travail pour de nombreuses équipes à un bout, quelques minutes pour une seule personne à l’autre. Le deuxième est la portée de l’impact : tout le système ou toute l’organisation, ou une seule fonction ou classe. Le troisième est l’effet sur les qualités clés. Les points placent une décision réelle, le choix du format des messages, sur chaque ligne, et sur les trois elle penche vers l’extrémité architecturale.
Si vous ne retenez qu’une chose de ce chapitre, que ce soit celle-ci. L’architecture est l’ensemble des décisions sur lesquelles il est coûteux de se tromper. Le travail de l’architecte consiste à identifier ces décisions, à les prendre délibérément avec les bonnes personnes, à en consigner les raisons et à les réexaminer régulièrement, tout en rendant le plus grand nombre possible d’autres décisions peu coûteuses à changer. Le reste du cours applique cette idée.
Vous pouvez lire les sections dans l’ordre, ce qui est préférable si les idées sont nouvelles pour vous, ou piocher dans celles dont vous avez besoin. Le chapitre entier demande environ deux heures et demie de lecture. Chaque section se termine par quelques questions d’autoévaluation. Essayez d’y répondre de tête avant de regarder, pour voir ce que vous avez retenu. Quand vous serez prêt, un test du chapitre facultatif vous attend, avec vingt questions à choix multiples et deux réponses rédigées. Comptez environ quarante-cinq minutes. La note de réussite est de quatre-vingts pour cent, comme pour tous les tests de chapitre du cours.
Voilà la carte du chapitre 1. Commencez par la section un point un, où nous comparons les définitions de référence de l’architecture logicielle pour dégager ce qu’elles ont en commun. À très vite.
En un coup d’œil
Vous apprendrez à
- Expliquer les définitions de l’architecture logicielle données par l’ISO/IEC/IEEE 42010:2022 et par le SEI, ainsi que les idées qu’elles partagent.
- Distinguer les structures de modules, de composants et connecteurs et d’allocation, et distinguer une architecture de sa description.
- Classer des décisions comme relevant de l’architecture ou de la conception d’après leur réversibilité, leur portée et leur effet sur les attributs de qualité.
- Analyser comment des décisions structurelles ont contribué à des incidents réels comme ceux de Knight Capital et de HealthCare.gov.
- Décrire les responsabilités, les compétences et les types d’architectes, et la façon dont les architectes restent dans la pratique.
- Identifier les parties prenantes et leurs préoccupations, et rendre explicites les préoccupations contradictoires.
- Évaluer les décisions architecturales comme des compromis, en tenant compte de la réversibilité et du moment opportun.
- Expliquer la dette technique, l’érosion et la dérive, et comment les détecter et les gérer tout au long du cycle de vie.
Avant de commencer
Le chapitre 0, ou une connaissance pratique des composants, des bases de données, des API, des réseaux et du cloud.
Durée
Environ 2 h 30 de lecture ; 45 minutes pour le test.
Termes clés
Architecture logicielle · Description d’architecture · Structure · Architecturalement significatif · Attribut de qualité · Coût du changement · Partie prenante · Préoccupation · Compromis · Réversibilité · Dette technique · Érosion de l’architecture · Fonction d’aptitude (fitness function) · Loi de Conway
Pourquoi ce chapitre vient en premier
Tout système logiciel a une architecture, que quelqu’un l’ait conçue ou non. C’est l’ensemble des structures fondamentales qui composent le système (ses parties principales, la façon dont elles sont reliées et leurs propriétés) et des décisions importantes qui les ont produites. Ces structures déterminent bien plus de choses que la plupart des gens ne l’imaginent : la rapidité et la fiabilité du système, son coût d’exploitation, le nombre d’équipes qui peuvent y travailler en même temps et, surtout, le coût de sa modification l’an prochain. Les fonctionnalités sont ce que fait un système ; l’architecture détermine en grande partie la qualité avec laquelle il le fait et ce qu’il en coûte de faire autre chose.
Le chapitre 0 a présenté les éléments de base : programmes, stockages de données, réseaux, API, serveurs et cloud. Ce chapitre prend du recul et se demande ce que signifie agencer ces éléments de façon délibérée, qui le fait et pourquoi cela en vaut la peine. Il vous donne le vocabulaire dont dépend le reste du cours, et une manière de penser applicable à n’importe quel système, d’une petite application de réservation à une plateforme nationale de paiement.
Ce qu’est l’architecture, et ce qu’elle n’est pas
Les deux premières sections portent sur les définitions, car des définitions confuses mènent à un travail confus. La section 1.1 compare les définitions qui comptent : la norme internationale ISO/IEC/IEEE 42010:2022, qui parle des concepts ou propriétés fondamentaux d’un système dans son environnement et des principes qui régissent son évolution ; la définition du Software Engineering Institute, qui parle des structures nécessaires pour raisonner sur un système, faites d’éléments, de relations et de leurs propriétés ; et les définitions des praticiens, qui insistent sur la compréhension partagée et sur les décisions coûteuses à changer. Elle montre ce qu’elles ont en commun et présente trois types de structures que possède tout système : la façon dont son code est découpé, ce qui s’exécute et communique avec quoi, et la façon dont le logiciel se répartit sur l’infrastructure et les équipes.
La section 1.2 s’attaque ensuite à la confusion la plus courante : où s’arrête l’architecture et où commence la conception. La réponse est qu’il n’y a pas de mur, seulement un continuum ordonné par l’importance. Une décision est architecturalement significative lorsqu’elle est coûteuse à annuler, large dans sa portée ou décisive pour une qualité clé ; c’est pourquoi une modeste convention, comme la façon de stocker les montants, peut être plus architecturale qu’une grande boîte sur un diagramme. La section distingue aussi les niveaux auxquels le mot est employé : architecture d’entreprise, de solution et logicielle, les architectures des données, de la sécurité et de l’infrastructure les traversant toutes.
Pourquoi elle compte et qui s’en charge
La section 1.3 explique pourquoi s’en soucier. Elle montre comment des attributs de qualité comme la disponibilité et les performances naissent de la structure plutôt que de lignes de code isolées, comment le coût du changement augmente à mesure que l’on construit sur une décision, et comment l’architecture façonne les risques, l’organisation des équipes (à travers la loi de Conway), la communication et l’estimation. Trois cas réels, racontés à partir de sources primaires, ancrent l’argumentation : la perte de trading de Knight Capital en août 2012, le lancement chaotique de HealthCare.gov en octobre 2013, et la décision prise en 2023 par Amazon Prime Video de faire passer un service de supervision d’étapes serverless distribuées à un processus unique, ce qui aurait réduit son coût de plus de 90 % et montre que l’architecture est une affaire d’adéquation, pas de mode.
La section 1.4 s’intéresse aux personnes. Elle décrit ce que font réellement les architectes, en s’appuyant sur les huit attentes formulées par Mark Richards et Neal Ford et sur les tâches du programme iSAQB Foundation ; les différents types d’architectes ; pourquoi l’architecture est un rôle avant d’être un intitulé de poste ; pourquoi les architectes accordent de la valeur à l’étendue des connaissances ; et le débat de longue date sur la question de savoir si les architectes doivent encore écrire du code.
La section 1.5 élargit l’angle aux parties prenantes (toutes les personnes qui ont un intérêt dans le système, des utilisateurs et développeurs aux équipes d’exploitation, en passant par les délégués à la protection des données et les régulateurs) et à leurs préoccupations, et montre comment les préoccupations contradictoires sont rendues explicites plutôt que tranchées par celui qui crie le plus fort. La section 1.6 passe aux décisions et aux compromis : l’anatomie d’une bonne décision, la différence entre les décisions facilement réversibles et celles qui ne le sont pas, l’idée de décider au dernier moment responsable, et les pièges cognitifs qui égarent des personnes compétentes.
L’architecture dans le temps
Les deux dernières sections portent sur le temps. La section 1.7 explique la dette technique au sens où Ward Cunningham l’entendait à l’origine en 1992, ce qui la distingue d’un simple désordre, et comment les architectures s’érodent et dérivent de la forme voulue ; elle montre comment détecter les dégâts et comment les expliquer en termes métier. La section 1.8 situe l’architecture dans le cycle de livraison : le vieux débat entre la conception complète en amont (big design up front) et la conception purement émergente, et le juste milieu pragmatique d’une architecture guidée par les risques, continue et évolutive, dans laquelle une équipe fait juste assez d’architecture, au bon moment, et vérifie en permanence qu’elle convient toujours.
L’idée à retenir
Si vous ne retenez qu’une chose de ce chapitre, que ce soit celle-ci : l’architecture est l’ensemble des décisions sur lesquelles il est coûteux de se tromper, et le travail de l’architecte consiste à identifier ces décisions, à les prendre délibérément avec les bonnes personnes, à en consigner les raisons et à les réexaminer régulièrement, tout en rendant le plus grand nombre possible d’autres décisions peu coûteuses à changer. Tout le reste de ce cours, des attributs de qualité au chapitre 2 à la conception de systèmes intégrant l’IA au chapitre 12, est une application de cette idée.
Les 8 sections
Test du chapitre
Vérifiez votre compréhension du chapitre 1
Facultatif : 20 questions à choix multiples et 2 courtes réponses rédigées, tirées à chaque fois d’une banque de 72 questions. Note de réussite : 80 %. Réussir tous les tests de chapitre, puis l’évaluation finale, donne droit au Certificat de fin de formation Be Wise.
Passer le test du chapitre 1 dans l’appLectures complémentaires
- Software Architecture in Practice, 4th edition, Len Bass, Paul Clements and Rick Kazman (2021), Addison-Wesley. Le manuel de référence du SEI : structures, attributs de qualité et tactiques, et la définition utilisée dans tout ce cours.
- Fundamentals of Software Architecture, 2nd edition, Mark Richards and Neal Ford (2025), O'Reilly Media. Une introduction pratique et agréable à lire au rôle de l’architecte, à la réflexion en termes de compromis et aux styles architecturaux.
- ISO/IEC/IEEE 42010:2022 Software, systems and enterprise: Architecture description, ISO/IEC JTC 1/SC 7 and IEEE (2022), ISO. La norme internationale sur les descriptions d’architecture, les parties prenantes, les préoccupations et les vues.
- Documenting Software Architectures: Views and Beyond, 2nd edition, Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord and Judith Stafford (2010), Addison-Wesley. La source des catégories de structures module, composants et connecteurs, et allocation.
- Who Needs an Architect?, Martin Fowler (2003), IEEE Software. Un essai court et influent sur ce qu’est l’architecture et sur le type d’architecte dont une équipe a besoin.
- Just Enough Software Architecture: A Risk-Driven Approach, George Fairbanks (2010), Marshall & Brainerd. Explique quelle quantité de travail d’architecture fournir, en fonction des risques auxquels un projet est réellement exposé.
- The Software Architect Elevator, Gregor Hohpe (2020), O'Reilly Media. Sur le rôle de l’architecte dans les grandes organisations, qui relie la stratégie métier et la réalisation technique.
- The WyCash Portfolio Management System (OOPSLA '92 experience report), Ward Cunningham (1992), OOPSLA 1992. Le court rapport dans lequel la métaphore de la dette technique est apparue pour la première fois.