2.3 Évolution des architectures en produits utilisables
Objectifs d'apprentissage
À la fin de cette section, vous serez capable de :
- Analyser les similitudes entre les architectures et appliquer des motifs
- Discuter des moyens d'accélérer la création d'applications
La combinaison d'une réutilisation de conception adaptative descendante et d'une pensée informatique (computational thinking) ascendante optimise le développement de logiciels modernes. Ce mélange permet aux développeurs de logiciels de trouver un juste milieu en adaptant et en assemblant des composants existants, minimisant ainsi le besoin de développer des logiciels entièrement nouveaux. Un exemple clair de cette coopération est évident dans les sites web modernes, où le patron d'architecture Modèle-Vue-Contrôleur est largement employé. Le modèle-vue-contrôleur (MVC) (Model-View-Controller (MVC)) est un patron d'architecture (architectural pattern) logicielle couramment utilisé dans la conception d'applications interactives, offrant une manière systématique d'organiser et de structurer le code. Le patron sépare une application en trois composants interconnectés : le modèle, la vue et le contrôleur. Le modèle représente la structure de données et la logique métier de l'application, gérant les données et les règles. La vue est responsable de l'affichage de l'interface utilisateur ; elle montre les données à l'utilisateur et envoie les commandes utilisateur au contrôleur. Le contrôleur sert d'intermédiaire entre le modèle et la vue. Il traite les entrées utilisateur reçues de la vue, interagit avec le modèle pour récupérer ou mettre à jour les données, et détermine la vue appropriée pour présenter la réponse. De nombreux cadriciels d'application web pratiques, tels que Django, ont déjà implémenté le patron MVC. Dans cette configuration, l'application est divisée en trois parties : le modèle gère la structure des données, la vue affiche les données sur les pages web, et le contrôleur gère la logique métier, facilitant l'interaction entre le modèle et la vue. L'ajout d'un patron de courtier aux architectures MVC peut améliorer l'extensibilité et la flexibilité du système lorsque cela est applicable et/ou nécessaire. Le courtier agit comme un intermédiaire qui gère la communication entre les différentes parties de l'application, aidant à gérer plus de données et des opérations complexes de manière efficace.
L'exploitation de ces cadriciels existants permet aux développeurs de se concentrer sur l'élaboration de la logique spécifique pertinente au site web plutôt que de réinventer la roue. La beauté de cette approche réside dans la capacité à assembler rapidement des solutions en étendant et en adaptant les cadriciels disponibles. Ce faisant, les développeurs rationalisent le processus de développement, améliorent l'efficacité et capitalisent sur la sagesse collective intégrée dans des cadriciels éprouvés, favorisant ainsi l'innovation d'une manière plus ciblée et plus économe en ressources.
Exploiter les similitudes architecturales et appliquer des motifs
L'approche de réutilisation de conception adaptative est une stratégie de développement logiciel qui met l'accent sur la réutilisation efficace de solutions de conception existantes pour créer de nouveaux systèmes ou applications. La beauté de l'approche de réutilisation de conception adaptative est que le modèle d'architecture (architecture model) de solution d'affaires aide à créer des représentations abstraites de systèmes réels. Par conséquent, s'il existe des réalisations tangibles des divers composants qui font partie de ces représentations abstraites, il est possible d'implémenter le modèle et d'en créer des solutions d'affaires spécialisées en cours d'exécution.
Un continuum de solutions (solutions continuum) est une stratégie où les solutions, composants ou motifs existants sont exploités et adaptés pour être utilisés dans différents contextes. La Figure 2.24 illustre le modèle de réutilisation TOGAF appelé continuum de solutions. Comme mentionné précédemment, TOGAF ne fournit pas d'approche prescriptive pour créer et/ou gérer un catalogue de motifs. Cependant, divers dépôts de motifs sont disponibles sur Internet et la technique de conception adaptative peut être utilisée pour éviter de réinventer la roue lorsque des patrons d'architecture et des implémentations de composants associés existent et peuvent être personnalisés et assemblés avec de nouveaux composants. Plus d'informations sur ce sujet sont fournies au Chapitre 10 Gestion des architectures d'entreprise et de solution.
Comme illustré à la Figure 2.25, le continuum d'architecture TOGAF offre un ensemble limité de dimensions. Il sert de ligne directrice, et The Open Group permet aux parties intéressées d'améliorer le modèle en y incorporant des dimensions supplémentaires pertinentes à leurs besoins spécifiques.
Accélérer la création de solutions d'affaires courantes
Pour illustrer la puissance de la conception architecturale et de la réutilisation de conception adaptative, diverses conceptions utilisées dans les solutions d'affaires courantes sont examinées, suivies d'explications sur la manière dont les solutions clés en main correspondantes peuvent être dérivées de ces modèles. Plusieurs chapitres ultérieurs du livre développent la construction de solutions connexes.
Concepts en pratique
Architecture de gestion d'objets
Des organisations comme l'Object Management Group créent des architectures de fondation et des architectures système (system architecture) communes qui peuvent être utilisées dans toutes les industries. Un exemple est l'Object Management Architecture, qui est une fondation pour le développement d'architectures en tant que blocs de construction. Elle élabore ensuite en fournissant des services d'objets, des facilités horizontales et des facilités verticales comme sous-composants pour aider à classer les architectures de systèmes communs qui peuvent être utilisées pour assembler une architecture complète centrée sur l'OMA. Il incombe ensuite aux diverses industries d'établir des architectures standard qui peuvent être exploitées par les organisations opérant dans ces industries. Enfin, les organisations bénéficient de la possibilité d'exploiter les architectures de fondation, de systèmes communs et industrielles pour développer leurs propres architectures propriétaires. Basé sur les modèles des diverses architectures que les organisations peuvent utiliser et en supposant qu'il existe des solutions pour celles-ci, les organisations peuvent développer leurs propres solutions plus rapidement en réutilisant et en personnalisant les composants de solution existants au lieu de réinventer la roue. C'est ainsi que le continuum de solutions TOGAF applique la réutilisation de conception adaptative.
Solutions d'affaires Web 2.0 réactives
Le World Wide Web Consortium (W3C) (World Wide Web Consortium (W3C)) est une communauté internationale qui développe des lignes directrices pour assurer la croissance à long terme et l'accessibilité du World Wide Web. Le Web 2.0 (Web 2.0) est la deuxième génération du World Wide Web, lorsque nous passons des pages web statiques au contenu dynamique. Le Web 3.0 (Web 3.0) est la troisième génération du World Wide Web et représente une vision de l'avenir d'Internet caractérisée par des technologies avancées. La plupart des sites web modernes s'appuient sur le modèle architectural Web 2.0 défini par le W3C. Un exemple de modèle d'architecture d'application (application architecture) logique est illustré à la Figure 2.26.
Dans ce cas, le modèle exploite les divers composants disponibles sur le nuage Microsoft Azure. Microsoft Azure (Microsoft Azure) est une plateforme complète d'informatique en nuage fournie par Microsoft. Azure est conçu pour aider les organisations à construire, déployer et gérer des applications et des services via un réseau mondial de centres de données. Azure offre des capacités de développement rationalisées dans le cadre de son offre DevOps pour faciliter grandement le développement et le déploiement rapide de sites web sur la plateforme Azure à l'aide de cadriciels d'application web courants. DevOps est une approche axée sur les outils de génie logiciel Agile qui se concentre sur le développement de logiciels et leur déploiement en production.
De nombreux composants de support nécessaires pour les implémentations de sites web sont facilement disponibles sur Microsoft Azure et d'autres systèmes qui fournissent des composants réutilisables pour une conception web responsable. Il est facile de faire évoluer le modèle présenté ci-dessous en un site web fonctionnel. Un cadriciel d'application web (web application framework) intègre un support pour les patrons d'architecture qui facilitent l'extension du cadriciel et l'utilisation de plug-ins pour implémenter des sites web de qualité commerciale en un temps raisonnable. Ils prennent également en charge l'utilisation de cadriciels web qui permettent de construire une application web réactive rendant les fonctionnalités de la version de bureau de l'application disponibles de manière transparente sur un appareil mobile. En plus de ces capacités, l'approche de réutilisation de conception adaptative peut être utilisée pour créer la partie personnalisée de l'application web. Plus d'informations relatives au développement de solutions web sont fournies au Chapitre 9 Génie logiciel, au Chapitre 10 Gestion des architectures d'entreprise et de solution et au Chapitre 11 Développement d'applications web.
Réfléchissez-y
Similitudes architecturales
Quel est l'un des mécanismes qui permet de comparer les similitudes architecturales entre deux solutions à différents niveaux ?
Solutions d'affaires mobiles natives
Une application web (appli web) (web application (web app)) est une application logicielle à laquelle on accède et avec laquelle on interagit via un navigateur web sur Internet. De nombreuses solutions basées sur le web exploitent les capacités inhérentes des appareils mobiles, offrant des applications web adaptées à divers types de téléphones en plus des sites web réactifs. De nombreux cadriciels existent pour faciliter le développement d'applications web natives, rationalisant le processus de création d'applications pouvant fonctionner de manière transparente sur différentes plateformes mobiles. Ces cadriciels offrent souvent une approche unifiée et efficace pour créer des applications mobiles multiplateformes, garantissant une expérience utilisateur cohérente sur divers appareils.
Dans certains cadriciels et environnements de développement, les bibliothèques de composants d'interface utilisateur React Native peuvent être exploitées pour porter des applications web vers des appareils mobiles. Les exemples incluent le support de React Native pour les applications Android utilisant Android Studio (Android Studio fournit un environnement complet pour le développement, le test et le débogage (debugging) d'applications Android) ou les applications web iPhone utilisant les EDI XCode (Xcode est un environnement de développement intégré [IDE] développé par Apple pour macOS qui offre une suite d'outils pour la création de logiciels pour les plateformes Apple, y compris macOS, iOS, watchOS et tvOS). La Figure 2.27 illustre l'architecture d'application logique des applications web mobiles qui utilisent React Native. En plus de ces capacités, l'approche de réutilisation de conception adaptative peut être utilisée pour créer la partie personnalisée de l'application web native. Plus d'informations relatives au développement de solutions d'applications web natives sont fournies au Chapitre 9 Génie logiciel, au Chapitre 10 Gestion des architectures d'entreprise et de solution et au Chapitre 11 Développement d'applications web.
Exemples d'affaires mobiles natives
Les applications mobiles natives sont conçues spécifiquement pour les systèmes d'exploitation mobiles, offrant des performances optimales et une expérience utilisateur fluide.
- WhatsApp : WhatsApp est une application mobile native conçue spécifiquement pour les plateformes iOS et Android. Elle accède directement au matériel de l'appareil, tel que le GPS, la caméra et le microphone, ce qui permet des fonctionnalités comme le partage de localisation en temps réel, les appels vocaux et vidéo, et le partage de médias.
- Instagram : Instagram est une application de partage de photos et de vidéos. Le développement natif aide Instagram à gérer efficacement le contenu multimédia de haute qualité, à appliquer des filtres en temps réel et à gérer en douceur les animations intégrées à l'application.
- Uber Eats : Uber Eats est un service de livraison de repas qui fonctionne comme une application native sur les appareils mobiles. Le fait d'être native permet à l'application d'utiliser des fonctionnalités spécifiques à l'appareil, telles que le GPS pour suivre la localisation du livreur en temps réel.
- Spotify : Spotify utilise son application native pour fournir des services de streaming de musique et de podcasts personnalisés. La nature native de l'application lui permet de s'intégrer étroitement au matériel de l'appareil, offrant des fonctionnalités comme le téléchargement hors ligne, le streaming à faible latence et la lecture en arrière-plan.
Solutions d'affaires Web 3.0
La méthode sécurisée et transparente d'enregistrement des transactions qui utilise une chaîne de blocs, chaque bloc stockant une liste de transactions chiffrées, est appelée chaîne de blocs (blockchain). Une fois qu'un bloc est plein, il est lié au précédent, formant une chaîne. La technologie de la chaîne de blocs décentralise le traitement pour assurer l'intégrité des transactions sur plusieurs nœuds informatiques. Cela garantit qu'aucun nœud informatique unique n'est affecté au traitement répété des transactions, empêchant ainsi d'éventuelles modifications frauduleuses des transactions. Un contrat intelligent (smart contract) est un accord automatisé écrit en code qui s'exécute sur la technologie de la chaîne de blocs. Il applique automatiquement les termes du contrat lorsque des conditions spécifiques sont remplies, éliminant le besoin d'intermédiaires et assurant la sécurité. L'utilisation des contrats intelligents de chaîne de blocs dans les applications web devient de plus en plus populaire. Le modèle d'architecture d'application logique de la Figure 2.28 illustre comment cela est rendu possible en créant des sites web hybrides Web 2.0 qui interagissent avec des contrats intelligents Web 3.0.
La construction de ces types de solutions d'affaires est grandement facilitée par l'utilisation de la plateforme Ethereum (Ethereum platform), une plateforme de chaîne de blocs à code source ouvert qui permet la création et l'exécution de contrats intelligents et d'applications décentralisées, ou des plateformes de chaîne de blocs infonuagiques fournies par l'un des fournisseurs de services infonuagiques tels qu'Amazon AWS, Google GCP, IBM Cloud, Consensys, Oracle Cloud, et d'autres. Ces plateformes fournissent des cadriciels et des API qui facilitent le développement et le déploiement de contrats intelligents. La partie Web 2.0 du site web peut exploiter les cadriciels mentionnés précédemment. En plus de ces capacités, l'approche de réutilisation de conception adaptative peut être utilisée pour créer la partie personnalisée de l'application Web 3.0. Plus d'informations relatives au développement de solutions Web 3.0 sont fournies au Chapitre 9 Génie logiciel, au Chapitre 10 Gestion des architectures d'entreprise et de solution et au Chapitre 13 Développement de solutions numériques multinuages hybrides.
Solutions d'affaires infonuagiques natives
Une façon de construire des logiciels en les décomposant en petites pièces indépendantes où chaque pièce, ou service, effectue un travail spécifique et fonctionne de manière autonome est appelée microservices (microservices). Un grand nombre d'entreprises ont migré leurs solutions d'affaires héritées vers l'infonuage pour tirer parti des microservices qui sont conçus autour de fonctions (function) métier spécifiques et peuvent être déployés indépendamment à l'aide de systèmes de déploiement automatisés. La Figure 2.29 illustre comment des API sécurisées, gérées et monétisées, essentielles pour une entreprise numérique, peuvent être créées en tirant parti d'une combinaison de cadriciels d'intégration basés sur les API et de technologies infonuagiques natives. L'utilisation de tels cadriciels et technologies aide à rationaliser la migration de solutions d'affaires héritées (migrating legacy business solutions), ce qui signifie la mise à niveau ou le remplacement d'anciens systèmes par des systèmes plus récents et plus efficaces. En plus de ces capacités, l'approche de réutilisation de conception adaptative peut être utilisée pour créer la partie personnalisée des applications infonuagiques natives. Plus d'informations relatives au développement de solutions infonuagiques natives sont fournies au Chapitre 9 Génie logiciel, au Chapitre 10 Gestion des architectures d'entreprise et de solution et au Chapitre 12 Développement d'applications infonuagiques natives.
La Figure 2.29 illustre l'architecture d'une plateforme numérique qui combine des applications web et mobiles avec la technologie de la chaîne de blocs. Côté client, les utilisateurs interagissent avec la plateforme via des tableaux de bord web et des applications mobiles, qui communiquent avec le serveur en utilisant JSON et gèrent les notifications via des services comme Firebase, Huawei et Apple. Le côté serveur comprend une couche API qui traite ces requêtes, une couche de mise en cache pour améliorer les performances, et une couche de logique dorsale responsable de la logique d'application, des sauvegardes et de l'analytique. L'architecture intègre également des réseaux de chaîne de blocs publics pour une sécurité et une transparence accrues, et elle prend en charge divers services de notification pour tenir les utilisateurs informés.
Enjeux mondiaux en technologie
Transformations à grande échelle
L'approche qui consiste à réinventer, repenser et recâbler les solutions dans diverses industries semble favoriser les pays qui ont les moyens de réaliser des transformations à grande échelle. Cela peut avoir des implications éthiques, sociales et économiques dans d'autres parties du monde.
Considérez comment les pays avancés adoptent rapidement les voitures électriques. Ils ont les ressources pour réinventer le transport en investissant dans la technologie des véhicules électriques (VE), en repensant leur consommation d'énergie pour réduire la pollution et en recâblant leur infrastructure pour prendre en charge les stations de recharge de VE. Ce passage aux voitures électriques est plus difficile dans les pays moins riches en raison des coûts élevés des VE et du manque d'infrastructure de recharge. En conséquence, ces pays peuvent continuer à dépendre de véhicules plus anciens et plus polluants, faisant face à des désavantages environnementaux et économiques.
Applications composites infonuagiques innovantes
Les applications composites infonuagiques innovantes désignent des combinaisons créatives de différentes solutions d'affaires innovantes qui exploitent des technologies disruptives telles que l'IoT, l'analytique des mégadonnées, l'apprentissage automatique, la chaîne de blocs et d'autres qui peuvent être rapidement assemblées aujourd'hui sous forme d'applications de nuage hybride (hybrid cloud application). Une application de nuage hybride combine les avantages des nuages privés et publics, permettant aux organisations d'optimiser leur infrastructure en fonction de leurs besoins spécifiques.
L'internet des objets (IoT) (Internet of Things (IoT)) fait référence au réseau d'appareils physiques intégrés avec des capteurs, des logiciels et une connectivité, leur permettant de collecter et d'échanger des données. Le processus d'examen, de traitement et d'extraction d'informations précieuses à partir de grands ensembles de données est appelé analytique des mégadonnées (big data analytics). Le développement d'algorithmes (algorithm) qui permettent aux ordinateurs d'apprendre à partir de données et de prendre des décisions sans programmation explicite est appelé apprentissage automatique (machine learning). Cela est rendu possible en créant des applications composites de services de plateforme fournis par divers fournisseurs de nuage public pour accéder à ces technologies disruptives.
La Figure 2.30 et la Figure 2.31 illustrent des modèles de solutions qui sont utilisés aujourd'hui pour prendre en charge une variété d'applications de santé mobile, de réseaux corporels, de surveillance des émotions et de médias sociaux. En plus des capacités fournies par les grands nuages, l'approche de réutilisation de conception adaptative peut être utilisée pour créer la partie personnalisée de ces solutions hybrides. Google Maps et Zillow sont des exemples par excellence d'applications qui utilisent des données de localisation pour fournir des services précieux. Un appareil GPS identifie la localisation d'un utilisateur, et cette information transite par le réseau central. Les applications affichent ensuite ces données de manière conviviale, connectant les utilisateurs à des informations géographiques en temps réel dans Google Maps ou à des détails sur le marché immobilier dans Zillow. L'intégration du GPS avec d'autres systèmes IoT permet la présentation transparente de contenu personnalisé et spécifique à la localisation pour améliorer l'expérience utilisateur. Plus d'informations relatives au développement de solutions web sont fournies au Chapitre 9 Génie logiciel, au Chapitre 10 Gestion des architectures d'entreprise et de solution et au Chapitre 13 Développement de solutions numériques multinuages hybrides.
Le Web 3.0 permet aux entreprises de créer des services plus personnalisés et prédictifs pour les utilisateurs, favorisant une plus grande confiance et un engagement accru en donnant aux utilisateurs le contrôle de leurs propres données. Pour les entreprises, cela se traduit par de nouvelles opportunités de collaboration, d'innovation et d'atteinte directe des consommateurs sans intermédiaires, stimulant finalement des modèles d'affaires (business model) plus efficaces et créant de la valeur d'une manière qui n'était pas possible avec les technologies web antérieures.