Be Software Architecture Wise
Be Wise Apps

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.

Télécharger le chapitre (PDF)Lire dans l’application

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

1.1 · Débutant · 18 minDéfinir l’architectureLa norme internationale, le SEI et des praticiens de premier plan définissent l’architecture logicielle de manières différentes. Découvrez les principales définitions, ce qu’elles ont en commun et les trois types de structures que possède tout système.Lire →1.2 · Débutant · 17 minArchitecture ou conceptionL’architecture et la conception forment un même continuum de décisions. Découvrez ce qui rend une décision architecturalement significative, ce qui distingue les décisions stratégiques des décisions tactiques, et comment s’articulent l’architecture d’entreprise, l’architecture de solution et l’architecture logicielle.Lire →1.3 · Débutant · 19 minPourquoi c’est importantL’architecture détermine les qualités d’un système, le coût et la rapidité de chaque changement futur, ses risques et la façon dont les équipes peuvent travailler. Des cas réels, chez Knight Capital, HealthCare.gov et Prime Video, montrent pourquoi.Lire →1.4 · Débutant · 18 minLe rôle de l’architecteCe que font réellement les architectes au quotidien, les huit attentes décrites par Richards et Ford, les types d’architectes, l’étendue face à la profondeur, et la question de savoir si les architectes doivent encore écrire du code.Lire →1.5 · Débutant · 18 minParties prenantes et préoccupationsQui a un intérêt dans un système, ce que l’ISO/IEC/IEEE 42010 entend par préoccupation, comment cartographier et impliquer les parties prenantes, et comment des préoccupations contradictoires deviennent des exigences, des décisions et des vues explicites.Lire →1.6 · Intermédiaire · 20 minDécisions et compromisPourquoi chaque choix architectural est un compromis, comment structurer une décision bien formulée, les portes à sens unique et à double sens, le dernier moment responsable, la conception pour la réversibilité, les pièges cognitifs et la matrice de décision pondérée.Lire →1.7 · Intermédiaire · 20 minDette techniqueCe que voulait vraiment dire la métaphore de la dette de Ward Cunningham, le principal et les intérêts, le quadrant de la dette de Fowler, pourquoi la dette architecturale coûte le plus cher, l’érosion et la dérive, et comment détecter, gérer et expliquer la dette en termes métier.Lire →1.8 · Intermédiaire · 19 minL’architecture dans le cycle de vieLa conception complète en amont (big design up front) face à la conception émergente, ce que dit réellement le Manifeste agile, le modèle piloté par les risques de Fairbanks, l’architecture intentionnelle et la piste architecturale, l’architecture continue, les squelettes ambulants, les spikes et l’architecture dans le DevOps.Lire →

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’app

Lectures complémentaires