Cours 2 : Style d'architecture Flashcards
(36 cards)
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
Definissez des alternatives a MVC.
- MVP – Model-View-Presenter (IBM)
- L’utilisateur interagit avec le présenter, pas la vue. Un présenter par vue.
- MVVM – Model-View-ViewModel (Microsoft)
- ViewModel peut contrôler plusieurs vues.
- MVA – Model-View-Adapter
- Le modèle et la vue ne sont pas connectés.
- PAC – Presentation-Abstraction-Control
- Si le modèle est modulaire. Les composantes sont organisées dans une hiérarchie.
Quels sont les avantages et desavantages de MVC.
- Avantages
- Séparation des responsabilités.
- Le modèle peut être partagé parmi divers vues et contrôleurs.
- Il y a déjà plusieurs cadriciels prêts à étendre pour implémenter le MVC.
- Désavantages
- L’architecture peut augmenter la complexité du système.
- Il y a la possibilité de plusieurs mises à jours des composantes, pas vraiment nécessaires.
- Les diverses alternatives et définitions peuvent créer de la confusion.
Definir blackboard.
• Imaginez qu’on a un grand problème sur le tableau et un groupe d’étudiants. Chaque étudiant peut résoudre une partie du problème. On a aussi un professeur qui décide quel étudiant va écrire sur le
tableau. Quand l’étudiant a fini, le processus est répété.
• Imaginez qu’on a un grand problème sur le tableau et un groupe
d’étudiants. Chaque étudiant peut résoudre une partie du problème.
On a aussi un professeur qui décide quel étudiant va écrire sur le
tableau. Quand l’étudiant a fini, le processus est répété.
• Le tableau représente un grand problème qui peut être divisé en
petites parties. Il fournit la structure de données partagée.
• La structure peut être complexe avec divers représentations, des données
décomposées et organisées en différents niveaux.
• Les étudiants sont les sources de connaissance. Ils ont l’expertise pour résoudre une partie.
• Chaque source de connaissance ajoute à la solution du problème.
• Le professeur est le planificateur qui décide quelle expertise est nécessaire selon le travail qui est déjà complété.
• Il réagit aux changements sur le tableau pour mettre les décisions.
• Exemple : reconnaissance de la parole• Le tableau représente un grand problème qui peut être divisé en petites parties. Il fournit la structure de données partagée.
• La structure peut être complexe avec divers représentations, des données décomposées et organisées en différents niveaux.
• Les étudiants sont les sources de connaissance. Ils ont l’expertise pour résoudre une partie.
• Chaque source de connaissance ajoute à la solution du problème.
• Le professeur est le planificateur qui décide quelle expertise est
nécessaire selon le travail qui est déjà complété.
• Il réagit aux changements sur le tableau pour mettre les décisions.
• Exemple : reconnaissance de la parole
Definir les avantages et desavantages de blackboard.
• Avantages
• Il peut fonctionner avec des problèmes grands, mais décomposables.
• Il peut accommoder plusieurs « expertises ».
• Il est facile d’ajouter de nouvelles sources de connaissance et d’étendre les
structures de données.
• Désavantages
• Le planificateur peut être lourd et complexe.
• Comment va-t-on décider de l’ordre d’exécution?
• La synchronisation et le contrôle d’accès sont nécessaire.
• Il est difficile de modifier les structures de données.
Definissez event bus.
• Si on a plusieurs modules qui veulent communiquer entre eux, le bus d’évènements peut gérer la
communication.
• Les modules peuvent soumettre des messages directs, diffuser des messages ou attendre des messages d’un type spécifique (Publish -Subscribe).
• Les messages ont une en -tête, qui peut spécifier le receveur et le type du message, et un corps.
• Exemples : systèmes de notification, monitoring, interfaces graphiques
• Un peu comme le patron Observer.
Definissez les aantages et desavantages d’un event bus.
• Avantages
• On peut ajouter ou supprimer des modules en cours d’exécution.
• Les modules ne sont pas responsables de la livraison des messages.
• Désavantages
• Problèmes d’évolutivité : Il y a un risque de dépassement de capacité, s’il y a
beaucoup de messages pour un seul bus.
• La synchronisation est aussi une considération critique.
Definissez ce qu’est une architecture distribuee.
- Ce sont aussi des architectures modulaires, mais dans ce cas, les modules sont distribués parmi plusieurs fournisseurs et situés à différents endroits.
- L’importance du réseau est critique.
- Le développement est partagé parmi divers organisations, ce qui a un impact sur les aspect économiques liés au logiciel.
- Le logiciel devient plus flexible et dynamique.
- Les technologies avancent rapidement pour répondre aux défis posés par ces architectures.
Quels sont les avantages et desavantages du distribue.
• Avantages
• Transparence : Plusieurs détails sont cachés, ce qui facilite le développement.
• Partage des ressources (matériel et logiciel).
• Ouverture : Flexibilité accrue pour utiliser divers fournisseurs de matériel et de
logiciel.
• Traitement concurrent pour améliorer la performance.
• Évolutivité : Capacité augmentée en ajoutant de nouvelles ressources.
• Tolérance aux fautes : Capacité de continuer à fonctionner après une la détection et
la résolution d’une faute.
• Désavantages
• Complexité augmentée.
• Sécurité diminuée.
• L’effort de gestion est augmenté.
• Il y a des réponses et des effets imprévisibles par des parties du système.
Definir l’architecture client-serveur.
• Deux entités : Un serveur, qui fournit la fonctionnalité (un service) et le client, qui est un consommateur du service, Le client fait des demandes et le server répond.
• Le server peut servir plusieurs clients.
• La communication se passe par un réseau.
• Deux types possibles de client:
• Client-léger (thin-client) : juste le rendu de l’interface
graphique. Aucune logique. Terminal
• Client-lourd (thick-client) : Le rendu de l’interface
graphique et quelque partie de la logique. Navigateur
• Exemples : Presque toutes les applications web.
• L’architecture fondamentale de l’Internet.
• On ne peut pas parler d’avantages ou de désavantages parce que
l’architecture est vraiment générique.
• Des styles plus spécifiques ont des avantages ou des désavantages plus
concrets.