Cours 2 : Style d'architecture Flashcards
Quels sont les trois stages d’evolution des architectures?
- Monolithique (mainframe)
- Modulaire (Pipe filtered, layered, mvc, blackboard, event bus)
- Distribue (client/server, master/slave, multitier, peer to peer, broker, SOA, Rest)
Definir les architectures monolithiques.
- Un seul programme. Un seul endroit de changement.
- Il n’y a pas de distinction entre l’IU, la logique, les données etc. Les éléments du programme sont fortement liés.
- Le programme est développé et maintenu seulement par une petite équipe de développeurs/experts. Connaissance absolue et concentrée.
- Il y a juste un propriétaire du système entier. Contrôle absolu.
- La logique et les données existent dans un seul lieu. La propriété est bien protégée.
- Chaque copie du programme s’exécute sur un seul ordinateur. Les frais d’exécution sont réduits.
Quels sont les avantages d’une architecture monolithique ?
• Sécurité maximale! Aucune opportunité pour une attaque externe.
• Le programme est souvent efficace, parce que tout est chargé en
mémoire et il n’y a pas de délais liés au réseau ou au chargement de
modules.
• Grâce à la taille de l’équipe, la communication et l’efficacité sont
optimisées.
• Le développement, la maintenance et l’évolution du système sont la
responsabilité d’une seule entité.
Quels sont les desavantages d’une architecture monolithique?
• Pas de réutilisabilité. Il est impossible de réutiliser des parties du
système, à moins de les copier en entier.
• Cela crée des clones.
• Pas d’évolutivité ou d’extensibilité.
• Difficile à maintenir!
• « La crise du logiciel »
• Difficile d’ajouter de nouveaux développeurs.
• Frais croissants pour la maintenance du système.
Definir les architectures modulaires.
• Le système comprend plusieurs modules.
• Les fonctionnalités et les responsabilités sont plus distinctes.
• Les modules sont développés et compilés séparément.
• Les modules sont plus petits et plus facile à gérer.
• Le développement est aussi séparé entre plusieurs plus petites
équipes.
• Ces architectures implémentent les principes de SRP et DIP.
• La propriété du système appartient toujours à une seule partie.
Quels sont les avantages des architectures modulaires?
• Le développement est parallélisé, donc il est plus efficace.
• La maintenance est généralement plus facile, car les changements
locaux et internes n’affectent pas les autres modules.
• Les modules sont aussi autonomes que possible au niveau des tests. Tests unitaires.
• Il est plus facile d’ajouter du nouveau personnel, étant donné que les
modules sont plus petits et plus facile à comprendre, et il y a moins de dépendances. « Conception par contrat » : Les interfaces sont très spécifiques et connues.
• Les modules peuvent être réutilisés et changés
Quels sont les desavantages des architectures modulaires?
• Comment assembler les modules en un seul système?
• La distribution du travail augmente le besoin de communication entre les
équipes.
• La connaissance du système entier est perdue.
• Il faut avoir une organisation hiérarchique.
• Il y a moins de dépendances, mais elles sont peut-être plus importantes.
• Un défaut peut exister dans un module, mais cela reste inconnu par les autres
modules. Son effet peut être apparent ailleurs dans le code, mais la correction n’est
possible que dans un module.
• On doit investir plus d’efforts dans la gestion du système.
• Tests, débogage, monitoring, maintenance.
Definir ce qu’est pipe-filter.
• Décomposition d’une fonctionnalité en composantes successives appliquant des transformations
incrémentales sur les données.
• Un producteur envoie des données par des tuyaux et au travers de filtres à un consommateur.
• Les tuyaux sont les canaux de communication et les connecteurs entre les filtres et entre les
producteurs et les consommateurs.
• Ils peuvent aussi fonctionner en tant que des agrégateurs de données ou des synchronisateurs.
• Les filtres sont des transformations appliquées progressivement aux données.
• Exemples : Programmes UNIX, compilateurs (analyse lexicale, analyse syntaxique, génération du
code), apprentissage profond
Quels sont les avantages de pipe-filter.
- Efficace : Les filtres peuvent être parallélisés.
- Les filtres sont indépendants des producteurs et des consommateurs et ils peuvent être réutilisés.
- Il est possible d’ajouter ou de supprimer des tuyaux et des filtres en cours d’exécution.
- S’il n’y a pas suffisamment de données dans les tuyaux, les filtres attendent tout simplement.
- Il est possible d’introduire de la récursion et des compositions.
Quels sont les desavantages de pipe-filter.
• Il est possible d’avoir des cas de dépassement de capacité ou de
blocage (deadlock), si un filtre doit attendre pour toutes les données.
• Les tuyaux acceptent souvent seulement des type de données
simples. Par conséquent, les filtres doivent faire plus de travail pour
pousser et extraire les données dans les tuyaux.
• Si on implémente des tuyaux pour différents types, il n’est plus
possible de connecter n’importe quel tuyau à n’importe quel filtre
Definir ce qu’est une architecture layered.
- La division d’architecture en couches.
- La couche est une notion abstraite et elle peut inclure des groupes de méthodes, de classes, de paquets etc.
- Chaque couche capture d’une responsabilité bien définie et distincte.
- Présentation (IU), Application (Service), Logique (Domain), Accès aux Données (Persistance)
- Les éléments d’une couche ne peuvent utiliser que des modules de la couche précédente ou suivante.
- La fonctionnalité s’exécute séquentiellement.
- Il est possible d’avoir plusieurs couches au même niveau, mais elles ne peuvent pas communiquer.
Quels sont les avantages et desavantages de layered.
• Avantages
• La maintenance est facile et peu coûteuse.
• On peu exploiter l’expertise des développeurs.
• Les couches peuvent être réutilisées et partagées parmi plusieurs autres
couches.
• Désavantages
• Il est interdit (ou vraiment compliqué) d’utiliser une couche pas
immédiatement adjacente.
• L’architecture est sensible à la conception des interfaces
Quel est la structure de MVC?
- Couche Modèle : responsable des données.
- Couche Vue : responsable de la présentation.
- Couche Contrôleur : responsable de la logique.
Definir MVC
• On peut dire que c’est une version de l’architecture en couches (mais pas
toujours).
• Un seul modèle peut être présenté par plusieurs vues.
• Le modèle est responsable de connaître toutes les vues et de les avertir lors de changements. (patron Observer)
• Le modèle ne doit pas faire partie du système. Un lien à une base de données et la fonctionnalité pour accéder à la base sont suffisants.
• Le contrôleur réagit aux évènements dans la vue et il sait comment changer le modèle.
Definissez le fonctionnement de MVC.
1. Le contrôleur accepte une action par l’utilisateur. 2a. Selon cette action, le contrôleur met à jour les caractéristiques de la vue… 2b. … et/ou le modèle. 3. Si le modèle est changé, il notifie toutes les vues enregistrées. 4. Les vues se mettent à jour