Chapitre 8 : Conception Flashcards
Donne la définition de conception
Offrir une solution implémentable
Le workflow de la conception détermine quoi ?
La structure interne du logiciel : comment il va atteindre ses buts
Vrai ou faux ? Bonne conception contribue à la qualité du logiciel
Vrai (fiabilité, flexibilité, modularité)
Donne les deux types de conceptions
Conception architecturale (haut niveau)
Conception détaillée (bas niveau)
Défini la conception architecturale
- Définit la structure et l’organisation générale du
logiciel - Décrit les modules clés du domaine, les relations entre eux et contraintes
Défini la conception détaillée
- Réalise chaque cas d’utilisation
- Respecte le plan de la conception architecturale
- Décrit le fonctionnement interne de chaque module * Prépare l’implémentation
Donne les objectifs d’une bonne conception
Forte cohésion, faible couplage, abstraction, encapsulation et dissimulation d’information
Qu’est-ce qu’une forte cohésion ?
Éléments ne sont pas réunis dans un même module par hasard, ils forment un tout pour réaliser une tâche
Qu’est-ce qu’un faible couplage ?
Modules sont relativement indépendants : dépendent le moins possible des éléments d’autres modules
Qu’est-ce qu’une abstraction ?
Décomposition intuitive exprimée en termes du problème, qui permet de se concentrer sur un module à la fois
La conception doit tenir compte de quoi ?
Des besoins existants, des besoins à venir
Qu’est-ce qu’une encapsulation et dissimulation d’information ?
Détails d’implémentation propices à changer sont cachés derrière une interface stable
Vrai ou faux ? On doit obtenir une conception qui facilite l’adaptation du logiciel aux changements
Vrai, les types de changements sont :
* Fonctionnalité, algorithme
* Représentation des données * Environnement
* Processus de développement
Devrait-on diviser le système en petits modules ?
Oui, ils sont individuellement plus faciles à concevoir et implémenter
Qu’est-ce qu’un module ?
- Unité fournissant des ressources et/ou des services
- Morceau de code indépendant muni d’une interface bien définie avec le reste du
système (ex : classes, méthode, objet…)
- Morceau de code indépendant muni d’une interface bien définie avec le reste du
Le système est partitioné en modules distincts mis en relation. Quelles sont les relations ?
- Relation « spécialise » : raffine les détails du module plus général
- Relation « contient » : modules contenus dans un module parent
- Relation « utilise » : fait référence/dépend d’un autre module
Pourquoi devrions-nous établir une hiérarchie ?
- Facilite la compréhension de la structure par niveau d’abstraction
- Facilite les tests unitaires
- Permet de bâtir un système partiel mais fonctionnel: de manière incrémentale
Explique la différence entre l’interface et l’implémentation
Interface: partie publique
* Quoi offrir ? Analyse et conception
* Ensemble des ressources (opérations, attributs…) rendues accessibles aux autres modules (« clients »)
* Conception d’un module ne nécessite que les interfaces des modules qu’il pourra utiliser
Implémentation : partie privée
* Comment le réaliser ? Conception et
implémentation
* Façon dont les ressources sont concrètement représentées et réalisées dans le module
Quel est le but de la conception orientée-objet ?
But: Concevoir le logiciel en termes d’objets
Instances des classes extraites du modèle d’analyse
Décrit le diagramme de séquence
Comment les objets interagissent entre eux pour réaliser chaque CU
Il y a un ordre dans lequel les méthodes sont invoqués
Un diagramme de séquence par CU
Quelles sont les spécificités dans le diagramme des classes ?
Identifier les classes, identifier les attributs (type d’attribut : primitifs et abstraits), identifier les méthodes