Chapitres 12-14 Flashcards
La conception de l’architecture est guidé par les besoins
non-fonctionnels
La conception architecturale inclu la conception…
- des interfaces utilisateurs du logiciel
- des bases de données
- des points de contrôle du logiciel
- du réseau
Conséquence d’un couplage fort entre modules M et N
Changer M nécessite de changer N
4 principes d’un bonne
conception architecturale
- Faible couplage et forte cohésion
- Réutilisation
- Conception modulaire
- Conception évolutive
Conception évolutive
Minimiser l’effort d’apporter des modifications au logiciel après le développement initial
Conception modulaire
Décomposition en modules indépendants et interchangeables qui contiennent tout ce qui leur est nécessaire pour exécuter un aspect d’une fonctionnalité
Rigidité
Logiciel difficile à modifier car chaque changement impacte beaucoup trop de parties du système
Fragilité
Quand on effectue une modification, des parties imprévues du système ne fonctionnent plus
Immobilité
Difficile de réutiliser un composant dans une autre application car on ne peut la démêler de l’application courante
Librarie
Ensemble de programmes/modules réutilisables
But du programmation orientée composants
maximiser la réutilisation
Programmation orientée composants
Concevoir en assemblant des composants fortement encapsulés avec une interface concise et rigoureuse
Aspects d’intégration de composants
- Interface avec l’architecture et l’environnement externe
- activités communes à plusieurs composants
- gestion et accès aux ressources matérielles cohérente pour tous les composants de la librairie
Différents types de systèmes
- interactif
- évènement
- transformationel
- base de données
MVC
Modèle-vue-controleur
Modèle
encapsule l’état de l’application et répond aux demandes d’état en exposant les fonctions de l’application
Vue
fait le rendu du modèle et envoie des actions de l’utilisateur au contrôleur
Contrôleur
définit le comportement de l’application. Il traite les actions de l’utilisateur et met à jour le modèle.
Peer-to-peer
Chaque nœud joue le rôle à la fois du client et du serveur (aucun serveur central)
Architecture 3-tier
Client tier
Business logic tier
Database tier
Polymorphism
Une opération définie dans plus d’une classe qui prend différentes implémentations
Dissimulation
utilisation de l’encapsulation pour restreindre la perception depuis l’extérieur sur les méchanismes internes
Généricité
Mécanisme pour que les clients décident du type d’objets dans une classe à travers des paramètres passé lors de la déclaration et qui est évalué lors de la compilation
Singleton
Garantir qu’une classe n’a qu’une seule instance et offre un point d’accès global
Patrons de conception
Schéma générique d’une solution à un problème récurrent dans un contexte donné.
Objectifs des Patrons de conception
Augmenter flexibilité
Augmenter fiabilité
Augmenter compréhension/performance
Patron de méthode
Implémente les parties invariantes d’un algorithme et laisse les sousclasses implémenter le comportement qui va varier
SOLID
- single responsibility principle
- open-closed principle
- Liskov substitution principle
- interface segregation principle
- dependency inversion principle
Open-closed principle
Class must be closed to modification and open to extension.
New class functionality should be added to an existing class through inheritance, and not by modifying the existing one.
The Liskov Substitution Principle
If you have a function or class X using class A, then the replacement of class A by any of its subclasses should not break the function of X.
Interface Segregation Principle
Do not overload a class and force it to implement and execute functionality that it does not need.
Dependency Inversion Principle
Classes should depend on abstractions, not on specific implementations of those abstractions.
Une bonne conception contribue à ________ d’implémentation !
la moitié de l’effort
L’implémentation d’un artéfact est toujours suivi de _____
tests
Taches d’implémentation
- Choisir le langage de programmation le plus approprié
- Établir les normes de programmation
- Répartir l’effort de travail
- Implémenter = coder + tester
- Intégrer
Le développement de ______ est crucial pour la programmation distribuée
interfaces
Le but de standardiser est de…
rendre la maintenance plus facile
L’imbrication d’expressions SI ne doit pas dépasser ___ niveaux
3
Path pour code source (Java)
src/main/java/
Path pour tous le code et autres
fichiers pour les tests.
src/test/
Doit correspondre à la structure de main/
Path pour fichiers, text, images, etc…
src/main/resources/
fichiers classes compilé
target/
la documentation générée
doc/
Débogage
Processus méthodique de trouver et réduire le nombre de défauts dans un programme lors de l’exécution afin qu’il se comporte tel qu’attendu
Défaut bloqueur
empêche de poursuivre les tests jusqu’à ce qu’il soit corrigé ou une alternative est identifiée
Défaut critique
- impossible d’éviter la perturbation d’opérations essentielles;
- sécurité compromise
Défaut majeur
opération essentielle est affectée, mais on peut continuer
Défaut mineur
opération non-essentielle est perturbée