Chapitre 11 : Architecture Flashcards
Quelle exigence dirige l’architecture ?
Exigences non-fonctionnelles : Portabilité, fiabilité, robustesse, sécurité
Quelles sont les inconvénients d’un design monolithique ?
Il est difficile à comprendre, localiser les fautes, étendre ou améliorer, réutiliser dans un autre produit
Quelles sont les caractéristiques d’une bonne conception ?
Faible couplage et forte cohésion, réutilisation, conception modulaire (décomposition en modules indépendants et interchangeables qui contiennent tous ce qui leur est nécessaires pour exécuter un aspect d’une fonctionnalité), conception évolutive
Quelles sont les caractéristiques d’une mauvaise conception ?
Rigidité, fragilité, immobilité
Quelles sont les deux types de réutilisation ?
Réutilisation opportuniste (accidentelle) et réutilisation systématique (délibérée)
Qu’est-ce qu’est une réutilisation opportuniste ?
Construction du système, durant le développement des parties du systèmes sont réutilisables et sont utilisées dans le produit
Qu’est-ce qu’est une réutilisation systématique ?
Construction de composants réutilisables, système est construit en assemblant ces composants
Pourquoi réutiliser ?
Mettre les produits le plus rapidement sur le marché, but de la réutilisation : faciliter la création de nouveau logiciel (extensions, corrections, modifications)
Quelles sont les obstacles à la réutilisation :
Syndrome du « pas inventé ici », crainte des défauts dans des routines potentiellement réutilisable, coût de la réutilisation, problèmes légaux…
Qu’est-ce qu’une librairie ?
Ensemble de programmes/modules réutilisables (ex : librairie de classes pour le GUI)
Utilisateur de la librairie est responsable de la logique du contrôle
Une librairie fournit une API pour l’utiliser
Qu’est-ce qu’une Framework ?
La plateforme incorpore la logique de contrôle générique
Utilisateur personnalise les fonctionnalités génériques pour les besoins de l’application
Une plateforme fournit une API à laquelle votre application doit se conformer
Qu’est-ce qu’une programmation orientée composants ?
Combine les deux autres approches
Mise en place d’une plateforme applicative
Identification des librairies réutilisables
Qu’est-ce qu’est le modèle C4 ?
Ensemble d’abstraction hiérarchique de diagrammes d’architecture logicielle
Quelles sont les niveaux d’abstractions du modèle C4 ?
Système (Plus haut niveau d’abstractions, Perçu par les autres systèmes et utilisateurs)
Conteneurs (unités logiques du système indépendantes l’une de l’autre)
Composant (Éléments de base et modules retrouvés dans chaque conteneur)
Code (facultatif) Détail de chaque composant
Décrit la vue du système ?
Décrire les limites externes du système, ainsi que ses principales interactions
Le système est représenté au centre et connecté aux différents utilisateurs et systèmes externes
Il offre une vue d’ensemble sans entrer dans les détails internes
Décrit la vue des conteneurs
Détailler l’architecture interne principale du système
- Présente les conteneurs qui composent le système, ainsi que leurs interactions et protocoles de communication.
- Exemples: Applications backend, frontend, CLI, API, bases de données, etc.
Décrit la vue des composantes
Développer un conteneur spécifique pour voir ses composants internes
- Montre les différents composants (modules, bibliothèques, classes importantes) d’un conteneur et leurs interactions.
- Précise comment le conteneur organise et réalise ses requêtes.
Nomme quelques patrons populaires
Architecture en couche, architecture 3-tier, architecture micro-services, architecture client-serveur vs Peer-to-peer, architecture pipe-et-filtre, architecture mvc
Décrit l’architecture en couche
Organise l’application en couches distinctes ayant chacune un rôle spécifique
- Communication : Les couches supérieures appellent les couches inférieures pour obtenir des services.
- Par exemple, l’interface utilisateur interagit avec la couche de logique métier, qui elle-même interagit avec la couche d’accès aux données.
- Cas d’utilisation : Adaptée aux applications d’entreprise et aux logiciels cherchant une séparation stricte des responsabilités
Décrit l’architecture 3-tier
Système séparé en trois couches fonctionnelles indépendantes : la couche de présentation, la couche logique et la couche de données
* Communication : Même que en couche
* Cas d’utilisation : Idéale pour les applications d’entreprise, les applications web, et les systèmes de gestion nécessitant une structure modulaire et évolutive, où les couches peuvent être maintenues indépendamment.
Décrit l’architecture micro-service
Divise une application en plusieurs services indépendants et autonomes, chacun traitant une fonction ou une fonctionnalité spécifique du système
- Communication : Chaque microservice communique via des protocoles de réseau légers (ex: HTTP).
- Cas d’utilisation : Adaptée pour les applications de grande envergure nécessitant une flexibilité accrue pour le déploiement, la mise à l’échelle, et la tolérance aux pannes
Décrit l’architecture peer-to-peer
Dans cette architecture, chaque nœud (ou pair) est à la fois un client et un serveur pour les autres nœuds, ce qui permet une communication et un partage de ressources directs sans passer par un serveur centralisé.
* Communication : Les pairs partagent directement des fichiers, des informations ou des services les uns avec les autres, ce qui permet une plus grande résilience et une meilleure distribution des charges.
* Cas d’utilisation : Couramment utilisée pour le partage de fichiers (ex : BitTorrent) et de plus en plus dans des applications décentralisées comme la blockchai
Donne la mise en garde de l’importance de l’architecture
L’architecture du logiciel est cruciale au produit
* Le workflow des exigences peut être corrigé durant le workflow d’analyse
* Le workflow d’analyse peut être corrigé durant le workflow de conception
* Le workflow de conception peut être corrigé durant le workflow d’implémentation
* mais, il n’y a pas moyen de surmonter une architecture non-optimale plus tard. Il faut absolument reconcevoir l’architecture immédiatement!