Académique Documents
Professionnel Documents
Culture Documents
CONCEPTION
Activités
Principes
Types abstraits de données
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 2
• C’est aussi une activité de création. Il n’existe pas de recette toute faite.
La conception
• Objectif : Transformer progressivement la spécification d’analyse
en une description structurée d’un système fiable et évolutif.
La conception
Processus en n Implémentation
étapes: chaque étape n
étape raffine et Conception bas niveau La décomposition
décompose (en étape 2 se poursuit jusqu’à
sous-modules) ce qu’on obtienne
Conception haut niveau
les modules étape 1 des modules
définis à l’étape Conception globale suffisamment
précédente. (architecture) simples pour être
directement
Besoins implémentés.
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 5
La conception
• La conception d'un logiciel peut être divisée en plusieurs étapes :
La conception
• Conception = Activité intellectuelle
• créativité
• expérience
• Principes essentiels :
• Modularité
• Abstraction
• Masquage
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 7
Activités de conception
Conception architecturale (conception de haut niveau, conception
globale/générale)
• Elle produit la structure et l’organisation générale du système à concevoir
• Première étape qui consiste à définir les fonctions des éléments d'un
système et leurs relations fonctionnelles.
• Elle contient la description des éléments principaux, les relations entre eux,
les contraintes à respecter, les motifs et la logique de cette décomposition.
Conception architecturale
• La conception de l’architecture du système global : identifie les sous-
systèmes qui composeront le système global
• Une spécification abstraite des sous-systèmes : établit une description
des services supportés par chaque sous-système
• La conception de l’interface : décrit l’interface de chaque sous-système
avec les autres
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 9
Activités de conception
Conception détaillée
• Consiste à détailler les résultats de l’analyse fonctionnelle, jusqu'à un
niveau suffisant (algorithmes) pour en permettre finalement le codage
dans un langage de programmation choisi.
• Définition d’un « design logiciel » respectant le plan de la conception
architecturale.
Conception détaillée
• La conception des composants, architectures des sous-systèmes :
découpe les sous-systèmes en plusieurs composants
• La conception des structures des données : conçoit et spécifie en détail
les structures de données
• La conception des algorithmes : conçoit et spécifie en détail les
algorithmes pour réaliser les différents services
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 10
Principe : 1- Abstraction
Principe selon lequel on représente un problème (une donnée, une
procédure, une entité, etc.) en éliminant les aspects les moins
pertinents pour ne considérer que ceux qui sont essentiels pour
servir les buts recherchés.
• Permet de maîtriser la complexité d’un problème.
• Permet de se dégager de certains détails pour se concentrer sur ceux qui
sont pertinents.
Principe : 2- Raffinement
Elaborer une description étape par étape depuis une description très
abstraite jusqu’à son implémentation (dans un langage de
programmation).
A chaque étape, une ou plusieurs parties d’une description sont redéfinies
en donnant de plus en plus de détails.
• Chaque étape de raffinement implique un choix de conception. (Il est
important de garder une trace des solutions alternatives.)
• Le raffinement se termine lorsque la description est totalement
exprimée dans un langage de programmation.
Principe : 3- Modularité
Décomposition en modules séparés, clairement identifiés, aux
interfaces bien définies, pouvant être traités ou modifiés
individuellement.
La modularité permet de mieux gérer la complexité des systèmes et
facilite leur maintenance
La modularité vise 3 importants objectifs:
• Faciliter la compréhension et la maintenance du système en le
divisant en parties.
• Permettre la décomposition d’un système complexe (diviser pour
régner, approche descendante)
• Permettre la composition d’un système à partir de modules déjà
existants (assemblage de composants, approche ascendante).
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 15
Qualité de la Modularité
Qualité de la Modularité
Objectif : forte cohésion et faible couplage
Cohésion
Types de cohésion
Cohésion
Cohésion
=
Facilité de maintenance
Cohésion
forte
COHÉSION
Couplage
• Mesure l’interdépendance de deux modules
• Ex. un module A appelle une fonction offerte par un module B.
Types de couplage
▪ De contenu: Il y a couplage de contenu si un module fait référence
et/ou modifie une partie du code de l’autre (i.e. intervient dans sa
partie qui devrait être cachée (implémentation)).
Couplage de contenu: m1 modifie des données ou des instructions à
l'intérieur de m2
Types de couplage
Couplage
Couplage
Types de couplage
Couplage fort
• de contenu
Couplage dangereux et • global
difficile à comprendre • de contrôle
• de structures de
Couplage discipliné
données
traditionnel
• de données
• absence de
couplage Couplage faible
GI 21 Meriem Zaoui - Génie Logiciel - Chap 6 27
Exemple
• classes Java, C++ ; fichier C
Contre-exemple
• sous-programmes non compilables séparément
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 30
Exemple
• Trop gros : un unique module pour une API graphique
• API (Application Programming Interface)
• Trop petit : un module pour remettre un tableau à zéro
Contre-exemple
• modules naturellement gros : lecture/écriture d'image
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 31
• Exemples
• faible nombre d'arguments des fonctions/méthodes
• transmission de pointeurs restreinte
• Contre-exemple
• variables globales
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 33
Masquage de l’information
Principe
• Toute information d'un module est privée, sauf son
interface explicite
Exemples
• en C : n'est visible à l'extérieur d'un fichier que ce qui est déclaré «
extern » (variables, fonctions)
Modularisation/Masquage : Interface et
implémentation
Partie publique d’un module
• Interface : Vitrine décrivant l’ensemble des ressources
(opérations, attributs et autres informations pertinentes) rendues
accessibles aux modules clients.
• La visibilité des éléments de l’interface peut être contrôlée en utilisant les
mécanismes « public », « private », « protected ».
• Pour faire la conception d’un module M, on n’a besoin que des interfaces
des autres modules que M pourra utiliser.
Changements
(perfectionnements) du
système imposés par les Maintenance perfective
nouvelles exigences du
client ou utilisateur
Changements
(adaptations) imposés
par la modification de Maintenance adaptative
l’environnement
matériel, social, etc.
Cours GL/ Meriem ZAOUI - La conception 40
La conception – Démarches
Il existe différentes manières pour classer les démarches de conception, dont :
• Distinction composition/décomposition :
• Méthodes ascendantes qui consistent à construire un logiciel par
composition à partir de modules existants (ou a commencer par les
modules de niveaux inférieurs puis passer à ceux de niveau plus élevé),
• Méthodes descendantes qui décomposent récursivement le système jusqu'à
arriver à des modules programmables « simplement » ;
Stratégies de conception
Stratégie Stratégie
descendante ascendante
(top-down) Conception (buttom-up)
Inconvénients
• Les sous-problèmes ont tendance à être analysés séparément.
• Réutilisation des composants peu exploitée (le partitionnement
précoce des problèmes empêche de voir les solutions communes)
• La conception des données et le masquage de l’information sont moins
bien réalisés
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 43
Inconvénients
• Pas facile de savoir quelle information il faut précisément encapsuler
(une approche descendante est parfois nécessaire…)
• La représentation de la conception n’est pas toujours simple et facile à
comprendre
• De plus on n’a aucune de garantie de :
• l'existence d'un véritable besoin de réutilisation
• la convergence vers une solution du problème
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 44
La conception détaillée ?
• La conception des composants ou modules formant l’architecture
d’un système.
• De moins en moins abstrait, pour s’approcher d’une conception
de plus en plus détaillée, prête à être codée dans un langage de
programmation.
• On peut soit décrire la conception détaillée des composants
directement dans un langage de programmation ou utiliser une
notation intermédiaire (de plus haut niveau qu’un langage de
programmation) qui peut facilement être traduite en code
source.
• Ces notations intermédiaires peuvent être
• graphiques (flowchart, organigramme)
• textuelles (pseudocode).
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 54
Documents de conception
Le document doit comprendre les éléments suivants:
✓Sommaire du travail de conception: objectifs à atteindre en regard de
la spécification d’analyse.
✓Description de la conception des bases de données: structure,
système de fichiers, structure des données.
✓Description de la conception architecturale: explication de la façon
dont la structure générale du système a été dérivée depuis la
spécification d’analyse.
✓Description de la conception des interfaces usagers. Prototype peut
être fourni.
✓Description détaillée des composants: description des fonctions et
procédures. Description en langue naturelle et/ou en intégrant une
notation structurée.
✓Annexe: description d’algorithmes, procédures alternatives, notices,
etc.
GI 21 Mme Zaoui - Génie Logiciel - Chap 6 56
Conclusion
• Conception
• séparation des problèmes / décomposition modulaire
• Méthodologie
• globalement descendante, parfois ascendante
Conception
• diagrammes d'état, d'activité
• diagrammes de classe, d'objet, de package
• diagrammes de séquence, de collaboration
• diagrammes de déploiement