Vous êtes sur la page 1sur 49

Chapitre

La Conception

Cours « Génie Logiciel 1 »


Niveau II2
Cours « GL-ACOO » ENSI
2
Introduction
1 . I N TRO D UCTION

De l’analyse à la conception

• Analyser → c’est définir le quoi?

Cours « GL-ACOO » ENSI


• Concevoir → c’est définir le comment?

• Difficulté de la conception:
• La conception ne se contente pas d’identifier le problème mais doit
lui apporter une solution valide.
• Processus créatif

3
1 . I N TRO D UCTION

De la conception à l’implémentation

• L’implémentation est la mise en œuvre des choix issus de la


conception.

Cours « GL-ACOO » ENSI


• L’implémentation doit pouvoir répondre aux contraintes de
réalisation sans mettre en cause les choix de conception.

• Si on introduit, lors de l’implémentation, une optimisation qui


brise une abstraction issue de la conception.

Ceci témoigne d’une mauvaise conception et/ou d’une


mauvaise implémentation

4
Présentation de la
conception

Cours « GL-ACOO » ENSI


5
2 . P R É S E N TAT I O N D E
LA CONCEPTION

La conception = série de décisions


• Lors de la résolution d’un problème, tout concepteur fera face
à une série de problèmes:
1. Ce sont des sous-problèmes devant être résolus.
2. Chacun de ces problèmes peut être solutionné de différentes façons

Cours « GL-ACOO » ENSI


=> Ce sont des options de conception.
3. Le concepteur doit donc prendre des décisions de conception afin de
résoudre chacun de ces sous-problèmes en tenant compte:
• des exigences du design courant
• de la technologie disponible
• des principes de bon design
• de l’expérience passée
4. Il faudra être en mesure de toujours choisir la meilleure alternative. 6
2 . P R É S E N TAT I O N D E
LA CONCEPTION
La conception

• La conception est un processus de résolution de problèmes dont l’objectif


est d’identifier la meilleure façon:
• d’implémenter les besoins fonctionnels d’un système...

Cours « GL-ACOO » ENSI


• tout en respectant les contraintes imposées par les besoins non
fonctionnels...
• et en adhérant à des principes de base menant à un logiciel de
qualité.
• Activité intellectuelle qui se base sur la créativité et l’expérience
• Pas de recettes toute faites mais il existe des méthodes, principes, bonnes
pratiques, patrons pouvant être de bon conseil

7
2 . P R É S E N TAT I O N D E
LA CONCEPTION

Étapes de la conception

• La conception passe par deux étapes:

Cours « GL-ACOO » ENSI


8
2 . P R É S E N TAT I O N D E
Étapes de la conception LA CONCEPTION

• Conception architecturale
Conception de haut niveau= conception globale
• Objectif: Structuration et organisation générale du système
à concevoir
• Contient la description des éléments principaux du système,

Cours « GL-ACOO » ENSI


les relations entre eux, les contraintes à respecter, les motifs et
la logique de cette décomposition.

• Conception détaillée
Conception de bas niveau
• Objectif: détailler les éléments produits dans la conception
architecturale et préparer au mieux l’implémentation:
• Description précise de chaque module
• Algorithmes mis en œuvre
9
Principes de
conception

Cours « GL-ACOO » ENSI


10
3 . P RI NCIP ES D E
L A CO N CEP TI O N

Quelques principes de conception

1. Modularité
2. Abstraction
Qualité
3. Encapsulation

Cours « GL-ACOO » ENSI


logicielle en
4. Réutilisabilité jeu
5. Réutilisation
6. Forte cohésion
7. Faible couplage
8. Anticipation des changements

11
3 . P RI NCIP ES D E
L A CO N CEP TI O N

Modularité
• Objectif: déterminer la structure modulaire du système à développer

• unité de codage et tests


unité de • unité d'intégration et d'archivage
conception • unité de réutilisation

Cours « GL-ACOO » ENSI


• unité de maintenance
• Répondre aux questions:
• Quels sont les modules ?
• Quelles relations lient les modules entre eux ?

12
3 . P RI NCIP ES D E
L A CO N CEP TI O N
Modularité

• Définition : Un module est un composant d’une


application, contenant des définitions de données et/ou
de types de données et/ou de fonctions et constituant un
tout cohérent.

Cours « GL-ACOO » ENSI


Par exemple les méthodes, les classes, les paquetages sont des modules en
Java.

• Quand on décompose un système en modules il faut


décrire précisément les relations entre ces modules.

13
3 . P RI NCIP ES D E
Modularité L A CO N CEP TI O N

• Relations entre modules : Deux types de relations sont


utiles pour décrire la structure d’un système

Cours « GL-ACOO » ENSI


• Relation « UTILISE »: On dit que Mi UTILISE Mj si Mi requiert la
présence de Mj car Mj lui fournit des ressources ou des services.
Exemple : Appel de fonction/de méthode

• Relation « CONTIENT »: On dit que Mi CONTIENT Mk si Mi est


réalisé en assemblant un ou plusieurs modules dont le module
Mk
Exemple : regroupement en paquetages (ensemble de classes)
14
3 . P RI NCIP ES D E
Abstraction L A CO N CEP TI O N

Maintenir le niveau d’abstraction aussi élevé que


possible

Cours « GL-ACOO » ENSI


• La complexité d’un design est réduite lorsqu’on masque
un maximum de détails

• Exemple: en orienté objet, pour accroitre la qualité


d’abstraction créer des super-classes et des interfaces

15
3 . P RI NCIP ES D E
Encapsulation L A CO N CEP TI O N

• Associer à un composant une vue externe et une vue


interne.
• Vue externe : c'est l'interface, elle définit ce que le composant doit
faire.

Cours « GL-ACOO » ENSI


Vue interne: c'est l'implémentation, elle définit comment il le fait.
• Exemple : PILE (tableau, liste, …)
• initialiser,
• empiler,
• depiler.

16
3 . P RI NCIP ES D E
L A CO N CEP TI O N
Réutilisabilité

Accroître la réutilisabilité autant que possible


• Concevoir le design de façon à ce que les différents
aspects du système soient utilisables dans différents

Cours « GL-ACOO » ENSI


contextes
• Généraliser le design autant que possible
• Simplifier le design autant que possible
• Ajouter des options aux différents modules

17
3 . P RI NCIP ES D E
Anticipation des changements L A CO N CEP TI O N

Cours « GL-ACOO » ENSI


• Un des principaux soucis de l’activité de conception:
développer un design qui facilite l’ajustement du système
aux changements:
• Perfectionnement du système imposé par les nouvelles exigences
du client.
• Adaptations imposés par la modification de l’environnement
matériel, social, etc.
• Importante qualité logicielle en jeu: maintenabilité
18
3 . P RI NCIP ES D E
L A CO N CEP TI O N
Faible Couplage

Le couplage mesure de l’interdépendance entre les modules


• Un ensemble de modules est faiblement couplé si les liens de
dépendances (cf. interactions induisant une relation

Cours « GL-ACOO » ENSI


«UTILISE») entre les modules sont peu nombreux.

• Un faible couplage induit :


• Un bon découpage du système: les éléments qui dépendent les uns
des autres ne sont pas « éparpillés » à travers les modules du
système.
• Une facilité de maintenance: une modification dans un module
affecte éventuellement un nombre restreint d’autres modules.
19
Nombre de révisions réduites…
Couplage- illustration 3 . P RI NCIP ES D E
L A CO N CEP TI O N

Cours « GL-ACOO » ENSI


20
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE PROCÉDURALE L A CO N CEP TI O N

Cours « GL-ACOO » ENSI


A éviter

A atteindre

21
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE PROCÉDURALE L A CO N CEP TI O N

• De contenu: les modules échangent de l'information en


lisant et écrivant directement dans leurs espaces de
données (variables) respectifs.

• Commun (global) : les modules échangent de


l'information via un ensemble de données (variables)

Cours « GL-ACOO » ENSI


commun. (surtout si modification)

22
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE PROCÉDURALE L A CO N CEP TI O N

• De contrôle: les modules se passent leur contrôle.


• Exemple:

Cours « GL-ACOO » ENSI


23
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE PROCÉDURALE L A CO N CEP TI O N

• De structures de données: Il y a couplage de structures de


données si un module passe une structure de données par
argument à un autre module.

Cours « GL-ACOO » ENSI


• De données: Il y a couplage de données si un module passe
des données par argument à un autre module.

24
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE OBJET L A CO N CEP TI O N

• Au niveau de la classe on distingue trois types de


couplage:

Cours « GL-ACOO » ENSI


• Couplage d’héritage
• Couplage entre composants
• Couplage d’interaction

25
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE OBJET L A CO N CEP TI O N

 Couplage d'héritage : si une des deux classes est


directement ou indirectement une sous-classe de l'autre.

 Couplage entre composants : lorsqu'une classe utilise en tant

Cours « GL-ACOO » ENSI


qu'attribut, une autre classe.

 Couplage d'interaction : Lorsqu'une classe invoque une ou


plusieurs méthodes de l'autre.

26
3 . P R I NC IP ES D E
Forte cohésion LA CONCEPTION

La cohésion mesure de la force des relations qui unissent les éléments


fonctionnels à l’intérieur d’un module.

Cours « GL-ACOO » ENSI


Un module est fortement cohésif si tous les éléments sont destinés
et sont essentiels à la réalisation d’une tâche commune unique.
• Une forte cohésion induit:
• Un bon découpage du système: les éléments qui ont rapport les uns
avec les autres se retrouvent dans un même module.
• Une facilité de maintenance: les éléments destinés à une même tâche
sont regroupés et on peut facilement les retrouver.
• Un faible couplage: les éléments inter-dépendants se trouvant dans le
même module, les dépendances inter-modules sont moindres.
27
TYPES DE COUPLAGE 3 . P RI NCIP ES D E
APPROCHE PROCEDURALE L A CO N CEP TI O N

Types de cohésion

Cours « GL-ACOO » ENSI


28
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE PROCEDURALE L A CO N CEP TI O N

 Aléatoire: les éléments du module n’ont rien à voir les uns avec
les autres.

Cours « GL-ACOO » ENSI


 Logique: éléments réunis autour d’un thème commun, ils
effectuent de traitements semblables.

 Temporelle: éléments réunis ensemble car leurs moments


d’exécution sont reliés dans le temps.


29
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE PROCEDURALE L A CO N CEP TI O N

Procédurale : lorsque les éléments du module doivent être appelées


dans un même processus selon un ordre (une séquence
d’opérations).
Communicationnelle : lorsque les éléments du module manipulent

Cours « GL-ACOO » ENSI


le même ensemble spécifique de données. ‘en entrée ou en sortie)
Séquentielle : dans laquelle la sortie d'un élément est utilisée en
entrée d'un autre.
 Fonctionnelle: tous les éléments réunis contribuent à l’exécution
d’une même et unique tâche (une fonction)
Remarque: On dit une fonction « fait ceci » mais pas « fait ceci et
cela » ou « fait ceci ou cela »! 30
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE PROCEDURALE L A CO N CEP TI O N

Résumé
Function A
Fonction Fonction A Temps t0
Fonction
Function Fonction
Function
B C logic Fonction A’ Temps t0 + X
Fonction
Function Fonction
Function Tempst0 + 2X

Cours « GL-ACOO » ENSI


D E Fonction A’’

Pas de relation Cohésion logique Cohésion temporelle


(fonctions similaires) (fonctions reliées par le temps)

Fonction A

Fonction B

Fonction C
Cohésion procédurale (reliées par un ordre)

31
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE PROCEDURALE L A CO N CEP TI O N

Résumé
Fonction A Fonction A

Fonction B Fonction B

Fonction C Fonction C

Cours « GL-ACOO » ENSI


Cohésion communicationnelle Cohésion séquentielle
Output de l’un = input de l’autre

Fonction A partie 1

Fonction A partie 2

Fonction A partie 3

Cohésion fonctionelle
32
32
32
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE PROCEDURALE L A CO N CEP TI O N

EXEMPLES Cohésion aléatoire

Cours « GL-ACOO » ENSI


Cohésion Logique

Cohésion temporelle

Cohésion fonctionnelle

33
Cohésion?
• Dans une fonction mettre tous les traitements (ajout,
modification, suppression) sur un fichier

• Calculer le rayon puis calculer la surface (à partir du rayon)

Cours « GL-ACOO » ENSI


• Toutes les impressions dans une fonction paramétrée
• Rassembler tous les traitement qui se font au début
(ouvrir les fichiers, Initialiser les tableaux, …)
• fonction qui trie un tableau

34
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE OO L A CO N CEP TI O N

• En orienté objet, la distinction entre la cohésion d'une méthode et la


cohésion d'une classe est fondamentale
• En orientée objet, trois types de cohésion:
• Cohésion de méthode

Cours « GL-ACOO » ENSI


• Cohésion de classe
• Cohésion d’héritage
• Cohésion de méthode: les types de cohésion définis dans l’approche
procédurale sont utilisés (aléatoire, logique, temporelle, procédurale,
communicationnelle, séquentielle et fonctionnelle)
• Préalable à toute discussion de la cohésion de classe et d’héritage, il
faudra que les méthodes soient caractérisées par une cohésion
fonctionnelle.
35
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE OO L A CO N CEP TI O N

• Cohésion de classe: La cohésion s'applique à la


relation entre les méthodes et les attributs définis à
l'intérieur de la classe.

Cours « GL-ACOO » ENSI


• Cohésion d’héritage: se réfère à la cohésion de
classes, mais en prenant en considération les éléments
hérités.

36
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE OO L A CO N CEP TI O N
• Cohésion de classe: types de cohésion (de la plus faible à la plus forte):
• Séparable: les éléments de la classe n’ont pas de lien entre eux: Il
existe des attributs non utilisés par les méthodes ou des méthodes qui
n’utilisent aucun attribut et qui n’appelle aucune autre méthode.
• Solution: décomposer la classe en plusieurs classes ou revoir
l’affectation des responsabilités aux classes (méthodes).

Cours « GL-ACOO » ENSI


Exemple:
class Employe { N’utilise aucun
….. attribut n’appelle
aucune méthode
double calculerRevenuCompagnie (Projet o)
{…
}
}
37
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE OO L A CO N CEP TI O N

• Multi-facettes: n’est pas séparable et les variables


d’instance représentent plusieurs concepts sémantiques
(abstraction multiple)
Par analogie au modèle relationnel , n’est pas en 2ème forme
normale
Exemple :

Cours « GL-ACOO » ENSI


class Emploi {
Employe e;
Societe s; Dépend de
Date dateEmploi; société
seulement
String adrSocieté;
void affichage {// affiche aussi l’adresse} et la date de l’emploi..}
}

38
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE OO L A CO N CEP TI O N

• Non déléguée: ni séparable, ni multi-facettes mais une


méthode utilise des variables d’instances qui décrivent
un seul composant de la classe.
Par analogie au modèle relationnel , n’est pas en 3ème forme
normale
Exemple :

Cours « GL-ACOO » ENSI


Class Employe{ A mettre dans
Projet ne
String nom;
dépendent
Date daten; pas de
Projet projetChoisi; Employé
Employe gestionnaireProjet;

Boolean bonGestionnaire () {..}
}
39
TYPES DE COHESION 3 . P RI NCIP ES D E
APPROCHE OO L A CO N CEP TI O N

• Cachée: ni séparable, ni multi-facettes, ni non déléguée mais il


existe une abstraction de données qui est cachée.
Exemple:
class Employe{
Classe Date

Cours « GL-ACOO » ENSI


nomEmplpye;
int journ, moisn, anneen;
int jourEmb, moisEmb, anEmb,
…}
• Modèle: La cohésion demandée. La classe représente une seule
abstraction de données, ne contient pas des méthodes qui peuvent
être déléguées à d’autres classes et ne contient pas des classes
cachées.

40
Cours « GL-ACOO » ENSI
41
Qualité d’une bonne
conception

Cours « GL-ACOO » ENSI


42
4 . Q U A LIT É D E
L A CO N CEP TI O N

Qualité d’une bonne conception

• Il n'existe pas de critère définitif permettant de définir une bonne


conception (suivant le type de l'application)
• Les besoins fonctionnels

Cours « GL-ACOO » ENSI


• les besoins non fonctionnels,
• le critère décisif peut être l'efficacité du code produit, sa maintenabilité .

• Nous retenons
- la maintenabilité : une bonne conception facilite la maintenance:
- Une conception de qualité apporte à la fois:
• une forte cohésion,
• un faible couplage

43
4 . Q U A LIT É D E
L A CO N CEP TI O N
Mesurer le couplage

• Utiliser une métrique de couplage.


• Il existe plusieurs métriques.

Cours « GL-ACOO » ENSI


Exemple: CBO (Coupling between object classes)
métrique pour l’orientée objet

• La mesure de couplage correspond au nombre de classes dont


la classe considérée est dépendante ;

44
3 . P RI NCIP ES D E
Exercice L A CO N CEP TI O N

• Dans un logiciel de gestion de vente, nous avons les trois classes suivantes :
Facture : contient un ensemble de produits facturés et est associée à un paiement,
Paiement : décrit un mode paiement (espèces, chèque, CB)

Cours « GL-ACOO » ENSI


Client : effectue les commandes et elle est associée à la classe facture.
• On ajoute une méthode payer() à la classe Client. On étudie le couplage dans les deux
cas suivants :
1. La méthode payer() crée une instance de Paiement et l'assigne à l'objet Facture.
2. La méthode payer() délègue l'action à la classe Facture qui crée une instance de
Paiement et l'assigne.
• Quel est le meilleur cas ?

45
• Utiliserla
Mesurer une métrique de cohésion.
cohésion 4 . Q U A LIT É D E
• Exemple: LCOM (lack of cohesion in methods) : métrique
L Aorientée
CO N objet
CEPpour
TI Omesurer
N
la cohésion des classes.
 LCOM mesure le manque de cohésion.(Plus la valeurs est élevée plus le manque de
cohésion est élevé!)

LCOM = max ( |P| - |Q|, 0 )


LCOM = | P | − | Q | , si | P | > | Q | = 0 sinon

Cours « GL-ACOO » ENSI


Soit une classe C avec n méthodes M1, …Mn
Ii = ensemble des variables d’instance utilisées par la méthode Mi
In= ensemble des variables d’instance utilisées par la méthode Mn

P = ensemble des paires (Ii,Ij) ayant une intersection vide


Q = ensemble des paires (Ii,Ij) ayant une intersection non vide

Remarque : Pour un ensemble de classes si LCOM = 0 ceci n’implique pas forcément que
la cohésion est maximale, certaines classes peuvent être plus cohésive que d’autres.
46
4 . Q U A LIT É D E
Mesurer la cohésion L A CO N CEP TI O N

• Example: Soit la classe C avec trois méthodes M1,M2 and M3.

Soit {I1} = {a,b,c,d,e} and {I2} = {a,b,e} and {I3} = {x,y,z}.

Cours « GL-ACOO » ENSI


I1,I2 inter non vide
I1,I3 inter vide
I2,I3 inter vide

LCOM = 1
47
4 . Q U A LIT É D E
Exemple L A CO N CEP TI O N
• Calculer le manque de cohésion des méthodes de la classe Node:

public class Node {

private int id;


private float weightN;

Cours « GL-ACOO » ENSI


public Node (int id,float weightN){
this.id = id;
this.weightN = weightN;
}
public int getid(){
return this.id;
}
public float getweightN(){
return this. weightN;
}
}
48
4 . Q U A LIT É D E
L A CO N CEP TI O N

Utiliser les patrons pour améliorer la qualité

• Pas de solution miracle pour évaluer et améliorer la qualité d’une


conception.

Cours « GL-ACOO » ENSI


• Pour améliorer la qualité, une solution empirique consiste à
réutiliser les solutions qui ont fonctionné dans le passé en les
adaptant éventuellement au contexte du système à concevoir.

-> C’est l’idée des patrons de conception (design patterns).


49