Conception Logicielle Flashcards
Diagrammes et architectures
Identifiez les tests de pertinence d’un cas d’utilisation (3)
- Test du patron : Patron dit oui ou non?
- Test du processus d’affaire élémentaire : Évaluation de la valeur ajoutée au projet
- Test de la dimension : Évaluation de la grosseur du cas d’utilisation
Identifiez les avantages du prototype (2)
- Vérification rapide des aspects importants
- Rétroaction rapide du client
Identifiez les désavantages du prototype (5)
- Difficulté de prototyper des projets complexes
- Facilite trop le changement
- Tendance à être conserver
- Pas de qualité opérationnelle
- Identification au produit final
Identifiez les types de prototype (2)
- Prototype évolutif : Devient le produit final après plusieurs itérations
- Prototype jetable : Sert d’exemple pour orienter le produit final
Identifiez les cinq étapes de l’analyse (Analyse et modélisation)
- Analyse des requis
- Reformulation des requis
a) Définition des requis
b) Spécification des requis - Construction d’un premier modèle
- Élaboration d’un prototype
- Validation du prototype
Identifiez les objectifs d’un cas d’utilisation (4)
- Capturer le comportement désiré
- Spécifier les fonctionnalités sans expliquer la façon de les faire
- Entente entre Utilisateurs / Experts / Développeurs sur les interactions possibles
- Validation de l’architecture logicielle
Définissez ce qu’est un cas d’utilisation
Document narratif décrivant une séquence d’événements dans laquelle plusieurs acteurs utilise un système pour accomplir un processus.
Un acteur est une entité externe au système utilisé
Définissez ce qu’est un diagramme de contexte
Le diagramme de contexte est une visualisation des cas d’utilisation primaires d’un système.
Il aide à définir :
- Acteurs principaux
- Cas d’utilisation primaires
- Limites du système
Identifiez les relations entre les cas d’utilisation (3)
- Relation d’utilisation (include) : Sous-fonction utilisé dans le cas
- Relation d’extension (extend) : Spécialisation du cas
- Relation de généralisation (héritage) : Type de cas
UML est-il un modèle conceptuel ?
Oui
Définissez ce qu’est un concept
Référence à un élément du monde réel issu du domaine d’application
Définissez ce qu’est une classe
Implémentation logicielle qui est associé à un langage d’un concept
Une classe contient :
- Nom
- Attributs
- Opérations (Méthodes)
- Description de ses responsabilités
Comment définir un attribut avec UML?
[visibilité] nom [multiplicité] [ : type ] [= valeur initiale] [{propriétés}]
EXEMPLE
- monNomComplet [2] : string = [“Prénom”, “Nom”] {frozen}
Si l’attribut est souligné, c’est un attribut de classe. (static)
Visibilité
public : +
protected : #
private : -
Propriétés
changeable (Objet mutable … peut être modifié)
addOnly (Valeurs peuvent être ajoutées, mais pas supprimées)
frozen (Objet const en C++)
Identifiez les associations UML (5)
Dépendance A —————> B
A utilise B dans ses méthodes
Association A ———— B
A est relié à B
Généralisation A ————|> B
A est une classe dérivée de B
Agrégation A ———— B
A fait parfois partie de B
Composition A ————- B
A fait toujours partie de B
Association peut avoir des multiplicités à ses extrémités
A 1..* ———– 0..1 B
A contient 0 à 1 fois B
B contient 1 à INF fois A
Identifiez les types de diagramme d’interaction (2)
- Diagramme de séquence
- Diagramme de collaboration
Identifiez les types de messages échangés dans un diagramme de séquence (5)
Appeler ——————|>
Invoque une opération d’un objet
Retourner - - - - - - - - - -|>
Retour d’une valeur à un appelant
Envoyer ___________\
Envoie d’un signal à un objet
Créer ————|> («create» en haut de la ligne)
Instancie un objet
Détruire ————|> («destroy» en haut de la ligne)
Détruire un objet
Identifiez les avantages d’une architecture à multi-niveaux (3)
- Séparation par module qui favorise la réutilisation
- Possibilité de la répartition des niveaux sur divers noeuds de calculs
- Parallélisation des efforts de développement
Définissez ce qu’est un paquetage
Ensemble d’éléments fournissant un service commun avec des responsabilités fortement cohésives
Un élément peut être:
- Classe
- Interface
- Composante
- Noeud de calcul
- Diagrammes
- Autre paquetage
Le principe de visibilité s’applique aussi pour les classes et interfaces contenues ( + , - , #)
Représenté par un «dossier»
Les niveaux verticaux et les niveaux horizontaux ont-ils une importance dans un diagramme de paquetages?
Oui
- Couche verticale : Hiérarchisation des paquetages (premier niveau … plus haut -> interaction du client …. Présentation)
- Partition horizontale : Sous-systèmes parallèles à l’intérieur d’une couche verticale
Identifiez les exigences d’une architecture distribuée (3)
- Avoir une grande tolérance aux délais et aux pannes
- Tenir compte des notions de sécurité en réseau
- Intégrer différentes technologies qui se combinent difficilement
Identifiez les avantages d’une architecture distribuée (4)
- Accès à une grande quantité de ressources
- Possibilité de partage de données et ressources entre utilisateurs
- Possibilité d’accroitre les ressources disponibles sans impact pour les utilisateurs
- Possibilité de parallélisation des processus pour accroitre la performance
Identifier les extensions du modèle Model-View-Controller a.k.a. MVC (3)
- Model-View-Presenter (MVP)
- Model-View-Viewmodel (MVVM)
- Presentation-Abstraction-Control (PAC)
Définissez ce qu’est un intergiciel (middleware)
Couche logicielle déployant des objets sur différents noeuds de calcul qui permet d’invoquer des méthodes dans un processus distant
Définissez ce qu’est un client dans une architecture client-serveur
Processus qui consomme ou utilise des ressources mises à sa disposition par un autre processus
Définissez ce qu’est un serveur dans une architecture client-serveur
Processus qui contrôle l’accès à des ressources
Identifiez les types de ressources dans une architecture client-serveur (2)
- Ressources matérielles : espace disque, processeurs, périphériques, ..
- Ressources logicielles : algorithmes, données, objets, processus, …
Définissez ce qu’est un composant
Partie physique et remplaçable d’un système qui réalise un ensemble d’interfaces
Identifiez les types de composants en UML (3)
- Composant de déploiement : Partie nécessaire pour construire un système exécutable
- Composant de réalisation : Résultat du travail de développement (code source, fichier, …)
- Composant d’exécution : Créé lors de l’exécution d’un système (logs, …)
Identifiez les stéréotypes standards des composants en UML (5)
- exécutable : Exécutable sur un noeud
- librairie : Librairie dynamique ou statique
- table : Table d’une base de données
- fichier : Fichier contenant des données ou du code source
- document : Document d’information quelconque
Définissez ce qu’est un processus métier
Ensemble d’activités s’enchaînant selon un ordre prédéfini pour atteindre un objectif
Identifiez les propriétés d’un service (5)
- Autonome
- Sans état
- Expose un contrat
- Frontières explicites entre services
- Communication par messages entre services
Identifiez les principes de base d’une architecture orienté service a.k.a. SOA (8)
- Contrat standardisé définissant un accord de communication entre les services
- Faible couplage entre les services
- Abstraction de la logique du service pour l’utilisateur
- Réutilisation des services
- Autonomie de la logique encapsulée par le service
- Sans état en minimisant la consommation de ressources et en reportant l’état du service si nécessaire
- Capacité de découverte d’un service par l’intermédiaire des métadonnées qu’il contient
- Composabilité de services entre-eux
Identifiez les avantages d’une architecture orienté service a.k.a. SOA (10)
- Améliore la flexibilité d’un processus métier
- Facilite la gestion des processus métier
- Brise les barrières organisationnelles
- Réduit le temps des cycles de développement
- Améliore le retour sur investissement
- Accroît les opportunités de revenu
- Réduit la complexité de la solution complète
- Garantit une intégration standardisée et le support de clients hétérogènes
- Facilite la maintenabilité
- Construit les services une fois, puis peuvent être réutilisés
Identifiez les désavantages d’une architecture orienté service a.k.a. SOA (3)
- Difficile à tester
- Risque de prolifération des messages entre services
- Risque de la sécurité des messages envoyés de sources externes
Identifiez les contraintes architecturales de Representational State Transfer a.k.a. REST (6)
- Architecture client-serveur
- Serveur sans état
- Capacité de mise en cache
- Architecture en couches
- Capacité de fournir du code à la demande
- Interface uniforme
Définissez ce qu’est un microservice
Processus indépendant et faiblement couplé souvent spécialisé dans une seule tâche provenant de la décomposition d’un ensemble complexe d’applications
Identifiez les patrons d’analyse GRASP (9)
- Cohésion élevée
Assignation des responsabilités dans l’objectif de garder un objectif unique pour chaque classe - Couplage faible
Assignation des responsabilités dans l’objectif de réduire les associations entre les classes - Créateur
Assignation de la responsabilité de création d’une classe B à une classe A contenant les informations nécessaires pour initialiser la classe B - Contrôleur
Assignation de la responsabilité de contrôler des événements à classe A - Polymorphisme
Création de sous-types lorsque plusieurs ont les mêmes responsabilités - Expert
Assignation d’une responsabilité à une classe ayant les informations pour s’en charger - Indirection
Assignation d’une responsabilité d’intermédiaire entre une classe A et une classe B par une classe C - Pure fabrication
Assignation d’un ensemble de responsabilité cohésive à une classe ne faisant pas partie du domaine d’application - Variation protégée
Identification des points d’instabilité et en faire des interfaces stables
Identifiez les caractéristiques d’une bonne interface (2)
Complète : Contient toutes les actions qu’un client pourrait vouloir raisonnablement faire
Minimale : Aucune paire d’opérations n’a de fonctionnalités qui se chevauchent
Identifiez les objectifs à respecter pour traiter correctement les exceptions (8)
- Essayer de laisser l’objet dans l’état initial (Avant l’appel à la fonction)
- Si impossible, laisser dans un état utilisable
- Si impossible, laisser dans un état défini (possibilité de destruction ou réinitialisation)
- Éviter les fuites de ressources
- Ne pas attraper des erreurs inutilement
- Ne pas cacher des informations d’une exception à d’autres parties du programme
- Ne pas compter sur les destructeurs pour traiter les exceptions
- Ne pas être trop paranoïaque
Identifiez les types de cas d’utilisation (3)
- Format de Haut Niveau
Nom du cas d’utilisation, acteurs, type (primaire ou secondaire), description du scénario principal - Format Informel
Nom du cas d’utilisation, acteurs, type (primaire ou secondaire), description du scénario principal, description des scénarios alternatifs - Format Étendu
Nom du cas d’utilisation, système, acteurs, parties prenantes, préconditions, postconditions, description du scénario principal, description des scénarios alternatifs
Parties prenantes : Liste de personnes ayant un intérêt dans ce cas d’utilisation avec l’identification de leurs intérêts
Système : Application ou objet matériel relié au cas d’utilisation
Scénario : Définie par une énumération numérotée (1. Je fais, 2. Je fais, 3. …)