0% ont trouvé ce document utile (0 vote)
4 vues20 pages

Guide de Conception Logicielle Efficace

Le document traite de la conception logicielle, en mettant l'accent sur la transition de l'analyse à la conception, la structuration des solutions et l'importance d'une bonne conception pour la qualité du logiciel. Il aborde les concepts de décomposition en modules, de conception orientée objet, et de communication entre classes, tout en soulignant l'importance de la hiérarchie et des interfaces. Enfin, il décrit les étapes pour identifier les classes, attributs et méthodes nécessaires à la réalisation des cas d'utilisation.

Transféré par

michaelkengne7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues20 pages

Guide de Conception Logicielle Efficace

Le document traite de la conception logicielle, en mettant l'accent sur la transition de l'analyse à la conception, la structuration des solutions et l'importance d'une bonne conception pour la qualité du logiciel. Il aborde les concepts de décomposition en modules, de conception orientée objet, et de communication entre classes, tout en soulignant l'importance de la hiérarchie et des interfaces. Enfin, il décrit les étapes pour identifier les classes, attributs et méthodes nécessaires à la réalisation des cas d'utilisation.

Transféré par

michaelkengne7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Conception

Après l’analyse, nous savons de quoi nous avons besoins pour


répondre aux exigences.
 Question: Comment y arriver?
• Structurer la solution, indépendamment
de l’implémentation finale.
• Comprendre les forces et faiblesses de sa
solution, sans voir le code.
• Une fois que les exigences sont comprises
et claires, la transformation de l’analyse à
la conception peut commencer
Des exigences • Le workflow de conception détermine la
structure interne du logiciel: comment il
à la conception va atteindre ses buts
• Bonne conception contribue à la qualité
du logiciel (fiabilité, flexibilité, modularité)
Conception architecturale (haut niveau)

• Définit la structure et l’organisation générale du


logiciel

Types de • Décrit les modules clés du domaine, les relations


entre eux et contraintes

conception Conception détaillée (bas niveau)

• 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
• 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
• Faible couplage
Objectifs Modules sont relativement indépendants : dépendent le
moins possible des éléments d’autres modules
d’une bonne • Abstraction
Décomposition intuitive exprimée en termes du
conception problème, qui permet de se concentrer sur un module à
la fois
• Encapsulation et dissimulation d’information
Détails d’implémentation propices à changer sont
cachés derrière une interface stable
• Conception doit tenir compte
• Des besoins existants
• Des besoins à venir
• Obtenir une conception qui facilite
l’adaptation du logiciel aux changements
Conception • Capacité d’évolution
• Anticipation du changement
évolutive • Types de changements
• Fonctionnalité, algorithme
• Représentation des données
• Environnement
• Processus de développement
Décomposition du
système
• Décomposer le système en petits
modules qui sont individuellement plus
faciles à concevoir et implémenter
• Si les sous-systèmes sont
indépendants, ils peuvent être
implémentés par des équipes
travaillant en parallèle
 Livraison plus rapide
Décomposer le système en modules par
fonctionnalité
Exemple: Concevoir un système qui gère
l’inscription à un cours. Les exigences sont:
Décomposition • Modifier et supprimer des étudiants de la base de données
• Modifier et supprimer des cours de la base de données
fonctionnelle • Ajouter, modifier et supprimer des sections d’un cours
• Inscrire et désinscrire des étudiants d’une section

Quels sont les modules nécessaires et


comment décomposer le système ?
Décomposition en modules
App
App

Étudiant Cours Section Inscription Étudiant Cours Section Inscription BD

Ajouter
Ajouter Ajouter Ajouter Inscrire

Modifier
Modifier Modifier Modifier Désinscrire
Supprimer

Supprimer Supprimer Supprimer


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
• Exemple: méthode, classe, objet, paquet, {…}
• Système est partitionné en modules distincts mis en relation
• 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
Établir une hiéarchie

• 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
Interface: partie publique

• Quoi offrir ? Analyse et conception


• Ensemble des ressources (opérations,
attributs…) rendues accessibles aux autres
Interface et modules (« clients »)
• Conception d’un module ne nécessite que les
implémentation interfaces des modules qu’il pourra utiliser

de modules 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
Java, C#, Python, Kotlin, Swift, PHP…

Conception
orientée-objet
(OO)
But: Concevoir le logiciel en termes d’objets
Instances des classes extraites du modèle d’analyse

Conception ALTERNATIVES
❑ Langage non OO (ex: C, Ada)
orientée-objet  Conception de type de donnée abstrait

❑ Langage non typé (ex: FORTRAN, Javascript)


 Conception par encapsulation des données
Communication
entre les classes

• Déterminer les messages envoyés


entre les objets
• Si objet A envoie message M à B, alors
B doit avoir une méthode m() qui
peut recevoir M
Collaboration entre classes
Construire un diagramme de séquence UML
1. Placer les objets interfaces et entités sur le diagramme
2. Pour chaque tâche représentée par un objet contrôle, identifier les messages qui doivent
être échangés entre les objets pour réaliser la tâche
3. Faire correspondre la signature d’une opération à chaque message
4. Ajouter les flèches d’envois de messages correspondantes dans le diagramme de
collaboration ou de séquence
5. Mettre à jour le diagramme de classes : ajouter les opérations identifiées
Diagramme de • Décrit les interactions entre les objets,
instances du diagramme de classe
séquence • Montre la trace des messages
échangés
• Ordre dans lequel les méthodes sont
invoquées
• Un diagramme de séquence par CU
• Des fois plus si on veut séparer les
scénarios alternatifs

• Doit être cohérent avec le


diagramme de classe
• Vue détaillée du design
• Plus de classes que dans le modèle
d’analyse
• N’ajouter que si nécessaire
• Déterminer les attributs de chaque classe
• État des objets
Diagramme de • Propriétés caractéristiques
classe • Type et format des attributs
• Identifier les méthodes à assigner à chaque
classe
• Opérations publiques nécessaires pour
réaliser les CU
• Méthodes privées/protégées pour les
aider
• Classes du modèle d’analyse et du
domaine

• Quels objets envoient ou reçoivent des


messages ?
• Invocateur et receveur
Identifier les
classes • Quelle information est nécessaire pour
chaque opération ?
• Paramètres, types de donnée
abstraite

• Quelle information est retournée par


chaque opération ?
• De quelle information un objet a-t-il
besoin pour effectuer une action ?
• Données pour créer l’objet
• Données pour calculer ou traiter un
message reçu
• Données à passer en paramètre à
Identifier les une méthode d’un autre objet
• Information caractéristique de l’état
attributs de l’objet
• Types d’attributs
• Types primitifs: booléen, nombre,
texte
• Types abstraits: DateTime, classes du
diagramme de classes (typiquement
modélisé comme association)
• Quelles actions le système doit-il effectuer ?
• Au moins une méthode publique par CU

Identifier les • Dans chaque CU, identifier le sujet de


chaque action

méthodes • Sujet est un acteur: humain ou autre système


• Sujet est un objet agissant sur un acteur
• Sujet est un objet agissant sur un autre objet

Vous aimerez peut-être aussi