Dans ce chapitre, nous allons couvrir l'architecture modulaire (plug-in architecture), en quoi elle consiste et pourquoi elle a été créée. À la fin du chapitre, je vous montrerai un exemple concret (Pacific Product Viewer), puis vous devrez résoudre un cas similaire en appliquant ce que vous avez appris. Alors, prêt ?
Qu'est-ce qu'une architecture modulaire ?
De nombreuses personnes sont préoccupées par la protection de leur vie privée, qu'il s'agisse de protéger leurs données bancaires, leurs mots de passe, ou de s'assurer que personne ne lit leurs messages ou leurs e-mails. L'un des moyens d'assurer la protection de la vie privée est le chiffrement, ce que de nombreux logiciels font.
La plupart des applications de chiffrement sont installées dans notre navigateur (Chrome, Mozilla, Explorer, etc.) sous la forme de module additionnel : un module qui se superpose au navigateur pour toutes les communications et qui les crypte. Cette application s'appelle un module (ou plug-in, en anglais).
Un module est comme un siège pour enfant sur un vélo : il ajoute une fonctionnalité au vélo (la possibilité de transporter un enfant derrière soi) qui n'existait pas auparavant. Vous pouvez même ajouter des fonctionnalités à une application initialement conçue pour tout autre chose. Reprenons notre exemple du chiffrement : un navigateur peut être conçu pour naviguer sur le web, visiter des sites web et lire des e-mails. Le module, lui, est conçu pour ajouter une fonctionnalité (le chiffrement) à ce navigateur existant.
Quelle est la structure d'une architecture modulaire ?
Voyons à quoi cela ressemble :
Comme vous pouvez le voir dans le schéma ci-dessus, une architecture modulaire standard comporte quatre parties :
Les exigences de base du produit (Baseline product requirements) : Il s'agit de l'ensemble des exigences minimales qui définissent l'application, déterminées au début du processus de développement lorsqu'un ensemble initial de fonctionnalités a été inclus dans le produit.
Le système principal (Main System) : Il s'agit de l'application à laquelle on connecte les modules. Le système principal doit fournir un moyen d'intégrer les modules et, par conséquent, il modifiera légèrement le produit de base original pour assurer la compatibilité.
L’interface client (Customer Interface) : Il s'agit de la partie qui interagit avec le client, par exemple, un navigateur web (Chrome, Mozilla, etc.).
Les modules (Plug-in) : Il s'agit de modules complémentaires qui complètent les exigences minimales de l'application et lui confèrent des fonctionnalités supplémentaires.
Comment cela fonctionne-t-il en pratique ?
Imaginez que vous êtes un chasseur de têtes qui consulte souvent les profils LinkedIn des candidats (parfois toutes les deux minutes). Vous utilisez une application de sélection de profil sur mesure développée dans votre entreprise.
Pour chaque profil que vous consultez, vous devez changer d'onglet dans votre navigateur (passant de l'application de sélection à LinkedIn), taper le nom du candidat et le rechercher. Vous devez ensuite sélectionner le candidat et extraire des informations pertinentes de son profil. Puis, il vous faut copier et coller ces informations dans l’application de votre entreprise.
Ne serait-il pas mieux de travailler uniquement dans l'application de sélection et d'avoir une petite fenêtre en haut à droite pour rechercher et extraire les informations directement de LinkedIn ? Cette petite fenêtre s'appelle « un module LinkedIn » et elle peut être branchée sur votre navigateur.
Vous saisissez le nom de la personne dans un champ de recherche du module LinkedIn et toutes les données correspondantes apparaissent dans la fenêtre. Vous pouvez aussi avoir un long rapport avec des données provenant de nombreuses personnes, vous évitant d'aller sur LinkedIn pour chacune d'elles.
L'utilisation d’une architecture modulaire présente plusieurs avantages :
L'architecture modulaire est le meilleur moyen d'ajouter une fonctionnalité à un système qui n'a pas été conçu initialement pour cela.
Cette architecture supprime les limites de quantité de fonctionnalités qu'une application peut offrir. Nous pouvons ajouter une infinité de modules (le navigateur Chrome dispose de centaines de modules appelés extensions).
Il existe également quelques inconvénients majeurs :
Les modules peuvent être une source de virus et d'attaques venant d'acteurs externes.
La présence de nombreux modules dans une application peut affecter ses performances.
Quand utiliser l'architecture modulaire ?
Alors, quelles sont les situations où cela peut être utile ?
Nom de l'exemple | Définition | Exemple concret | Avantages |
Logiciel de chiffrement | Un logiciel de chiffrement est un système qui crypte un texte à l'aide d'une clé secrète. L'expéditeur crypte le message avec la clé secrète et le récepteur le décrypte, en supposant que le récepteur possède la clé. |
| Le processus de chiffrement se fait automatiquement, à l'insu de l'utilisateur. L'utilisateur écrit un e-mail et celui-ci est crypté par le module. Tout ce processus est invisible pour l'utilisateur. |
Module d'information sur les sites web locaux | Un module d'informations sur les sites web locaux est un module qui apporte les informations d'un site web directement dans une fenêtre de votre navigateur. Cela évite d'ouvrir plusieurs onglets sur le même site. |
| Ces modules apportent des informations directement d'un site web à une fenêtre de votre navigateur. |
Étude de cas : Résoudre un problème d'entreprise avec l'architecture modulaire
Appliquons ce que vous avez appris sur l'architecture modulaire et voyons comment elle fonctionne dans une entreprise réelle.
Pacific est un site web marchand qui connaît un grand succès en Asie du Sud-Est. Voici quelques généralités :
L'entreprise vend plus de 64 000 articles sur son site web, principalement à des clients d'Asie du Sud-Est.
Environ 12 articles sont vendus chaque seconde sur le site, 24 heures sur 24, 365 jours par an.
Il y a de gros utilisateurs du site : des utilisateurs qui achètent beaucoup d'articles à la fois, et qui doivent le faire rapidement.
Quelle est la problématique ?
Chaque fois qu'un gros utilisateur veut acheter plusieurs articles à la fois, il doit ouvrir des fenêtres de navigation distinctes pour chaque article, ce qui entraîne confusion et frustration, et qui peut empêcher l'utilisateur de faire un achat. Par exemple, certains utilisateurs sélectionnent dix articles, mais n'en achètent finalement que six parce qu'ils font des allers-retours entre leur panier et les pages des articles.
Comment résoudre ce problème ? Pacific a développé une extension pour Chrome appelée Pacific Product Viewer : lorsque l'utilisateur installe le module, une liste d'articles intéressants s'affiche dans une fenêtre pop-up, et il n'est pas nécessaire d'ouvrir plusieurs onglets. Cette fenêtre permet à l'utilisateur de voir de nombreux articles sans avoir à changer d'onglet. Il est généralement situé dans le coin supérieur droit de l'écran.
Cette fenêtre est le Pacific Product Viewer, un module fonctionnant avec tous les navigateurs. C'est une solution parfaite pour résoudre ce problème ! Voyons comment cela fonctionne :
Voyons en détail chaque composant du progiciel de gestion intégré (ERP) :
Le site web de Pacific : Il s'agit du site web principal de Pacific, développé selon un ensemble minimal d'exigences.
Le navigateur client : Chrome, Mozilla, Explorer, etc.
Le module Pacific Product Viewer : La partie du logiciel qui a été développée comme module pour apporter une fonctionnalité supplémentaire.
Essayez vous-même !
Maintenant que vous avez découvert une solution, voyons si vous pouvez appliquer ce que vous avez appris à un autre cas !
Le contexte : Vous êtes un architecte logiciel travaillant pour une agence de recrutement de cadres.
Votre mission : On vous a demandé de développer un module logiciel pour afficher le profil LinkedIn d'un candidat chaque fois qu'un recruteur tape le nom de celui-ci dans son navigateur. Ainsi, le recruteur peut voir le profil de sa cible sans avoir à se connecter à chaque fois à LinkedIn.
Voici quelques questions clés que vous pouvez vous poser pour commencer :
LinkedIn offre une connexion à ses données par le biais d'une interface. Comment allez-vous l’utiliser pour construire votre module ?
Certains candidats ne disposent pas de profil LinkedIn. Comment allez-vous résoudre ce problème ?
Pouvez-vous créer un schéma d'architecture pour ce contexte commercial ?
En résumé
Modèle d'architecture | Description | Avantages | Inconvénients | Quand l'utiliser |
Modulaire | Parties supplémentaires du logiciel développées pour ajouter une fonctionnalité spécifique non prévue dans le système. | Pas de réécriture du système. Augmentation de la fonctionnalité sans limite. | Les modules se font fréquemment planter les uns les autres et produisent des dysfonctionnements dans le système principal. | Lorsque vous avez une fonctionnalité spécifique que vous devez ajouter sans réécrire le système de base. |