You are on page 1of 17

UNIVERSITÉ DE SFAX

Institut Supérieur d’Informatique et de Multimédia

Démarche de la qualité des logiciels


D-ITMW, P
P--MPISI

Cours 3:
Qualité d’un design orienté-objet

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 1


Hiver2011

Thèmes couverts
Caractéristiques d’un bon design
Qu’est-ce qui est mesurable?
Exemple

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 2


Hiver2011

1
Caractéristiques d’un bon design
Couplage

Hautement associés lorsqu’il ya beaucoup de dépendances


Composants faiblement associés ont une certaine dépendance, mais les
interconnexions entre composants sont faibles
Composants non-associés n'ont aucune interconnexion

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 3


Hiver2011

Caractéristiques d’un bon design


Couplage (Suite…)

Couplage entre les composants dépend


des références
de la quantité des données transmises
du niveau de contrôle
du degré de complexité dans l'interface
#ous pouvons mesurer le couplage dans un étendue de dépendance

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 4


Hiver2011

2
Caractéristiques d’un bon design
Couplage: Types de couplage

Couplage du contenu
Couplage général
Couplage de contrôle
Couplage de données

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 5


Hiver2011

Caractéristiques d’un bon design


Couplage du contenu

Se produit lorsqu’un composant modifie un item des


données internes dans un autre composant, ou lorsqu’un
composant se branche dans un autre composant

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 6


Hiver2011

3
Caractéristiques d’un bon design
Couplage général

Apporter un changement aux données générales signifie de


suivre tous les composants qui accèdent à ces données pour
évaluer l'effet de changement

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 7


Hiver2011

Caractéristiques d’un bon design


Cohésion

Un composant est cohésif si tous les éléments du composant sont


nécessaires pour réaliser la même tâche
Plusieurs formes de cohésion

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 8


Hiver2011

4
Caractéristiques d’un bon design
Exemple de cohésion

Communicational

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 9


Hiver2011

Caractéristiques d’un bon design


Identification et traitement d’une exception

Exceptions: situations connues qui vont à l’encontre


de ce que l’on attend réellement du système
Défaut de fournir un service
Fournir un mauvais service ou des données erronées
Corrompre les données
Les exceptions peuvent être traitées selon trois façons
Réessayer
Corriger
Rapporter

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 10


Hiver2011

5
Caractéristiques d’un bon design
Problèmes de contrôle
Systèmes 1 et 2 sont deux designs possibles pour le même système
Fan-in est le nombre de composants qui contrôlent un composant particulier
Fan-out est le nombre de composants contrôlés par un composant
Un design est dit meilleur lorsqu’il a moins de fan-out

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 11


Hiver2011

Qu’est-ce qui est mesurable: DOO


 Pour rendre utilisable la mesure durant le Design OO, les
composants OO doivent être mesurés directement ou indirectement

 Qualité de DOO
Propriétés de DOO qui peuvent être mesurées sont:
• Couplage
• Héritage
• Cohésion
• Polymorphisme
• Taille de l’application

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 12


Hiver2011

6
Mesures orientées-classe CK
Proposées par Chidamber & Kemerer
Kemerer::

weighted methods per class (WMC)


depth of the inheritance tree (DIT)
number of children (#OC)
coupling between object classes (CBO)
response for a class (RFC)
lack of cohesion in methods (LCOM)

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 13


Hiver2011

Règles d’un bon DOO


 Minimiser le couplage
 Augmenter la cohésion
 Augmenter le polymorphisme
 Minimiser la taille de l’application

En se rappelant de ces points durant le design:

 Vous pouvez améliorer votre design


 Juger (mesurer) deux designs
 Le gestionnaire de projet aura la capacité de choisir le meilleur design
dés le début du processus de design logiciel

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 14


Hiver2011

7
Couplage
 N’importe quelle connexion entre les éléments d’un système
 Une mesure de la puissance des connexions physiques entre
les composants d’un système [Whitwrmire, 1997]
 Il y a deux classes générales de couplage:
• Nécessaire: requise pour supporter les interactions entre
les composants
• Non-nécessaire: résulte d’un mauvais design
 Il y a quatre types de connexions qui peuvent exister entre
les classes:
• Héritage
• Association
• Agrégation
• Lien de message

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 15


Hiver2011

Exemple d’un couplage excessif dans un DOO

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 16


Hiver2011

8
Degré de couplage entre objets
• Un degré élevé de couplage entre les objets est prometteur de compliquer
la maintenance de l'application, car l’interaction et l’interconnexion des
objets deviennent plus complexes
• Plus que le degré d'indépendance des objets (i.e. le maximum d’objets qui
sont « découplés » les uns des autres) est élevé, plus qu’il est probable de
réutiliser les objets dans les mêmes applications et dans d'autres
applications
• La testabilité est susceptible de se dégrader avec un système d'objets
hautement couplés

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 17


Hiver2011

TRADER System Example


Trade
trade id
counterparty
Position_mana trade value
ger
evaluate_counterparty()
report_trade() get_trade_id()
position_update()

position_manager::report_trade()

exchange trade
bond trade equity trade
forex_details
bond details company
calculate_exchange_rates() stock_market
get_bond_info() PE ratio
earnings
52_week_hi_lo

estimate_beta()
quotron get_stock_quotes()
quotron::quotes()
quotes()

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 18


Hiver2011

9
Mesure de couplage dans CK:
Mesure CBO
 CBO est le nombre de couples avec d’autres classes (où l’appel d’une méthode ou
l’utilisation d’une variable d’instance d’une classe constitue le couplage)

 Les valeurs élevées du CBO indique une sensibilité élevée des changements dans
le design et ainsi une maintenance plus difficile (complexité élevée de design)

 Les valeurs faibles du CBO indique une classe indépendante, qui peut être
facilement réutilisée par une autre application

 [CBO (classe) = Nombre des autres classes couplées avec celle-ci]

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 19


Hiver2011

Exemple: Mesure CBO

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 20


Hiver2011

10
TRADER System Example: CBO

Trade CBO(Trade)=1
trade id
counterparty
Position_mana trade value
ger
evaluate_counterparty()
report_trade() get_trade_id()
position_update()
opname()
CBO(P_m)=0 position_manager::report_treade()

CBO(e_t)=2
CBO(e_t)=1
exchange trade
bond trade equity trade
forex_details
bond details company
calculate_exchange_rates() stock_market
get_bond_info() PE ratio
earnings
CBO(b_t)=1 52_week_hi_lo

estimate_beta()
quotron get_stock_quotes()
CBO(quotron)=0 quotron::quotes()
quotes()
Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 21


Hiver2011

Mesure de couplage dans CK:


Mesure RFC
Response For Class (RFC):

RFC est défini comme étant le nombre total des méthodes qui peuvent être
exécutées en réponse à un message pour une classe

Ce nombre inclut toutes les méthodes disponibles dans toute la hiérarchie de


classe

Si une classe est capable de produire un grand nombre de résultats en réponse à


un message, le test devient plus difficile pour tous les résultats possibles

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 22


Hiver2011

11
TRADER System Example: RFC
Trade RFC(Trade)=4
trade id
counterparty
Position_mana trade value
ger
evaluate_counterparty()
report_trade() get_trade_id()
position_update()

RFC(P_m)=1 position_manager::report_treade()

RFC(e_t)=7
RFC(e_t)=5
exchange trade
bond trade equity trade
forex_details
bond details company
calculate_exchange_rates() stock_market
get_bond_info() PE ratio
earnings
RFC(b_t)=5 52_week_hi_lo

estimate_beta()
quotron get_stock_quotes()
quotron::quotes()
RFC(quotron)=1
Asma Sellami-
Sellami-Mnif
quotes()

Démarche de la qualité des logiciels Acétate 23


Hiver2011

Héritage

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 24


Hiver2011

12
Mesure d’héritage dans CK:
Mesures =OC et DIT
 Chidamber and Kemerer’s metric Depth of Inheritance Tree (DIT):
DIT = longueur maximale à partir du nœud jusqu’à la racine
de l’arbre d’héritage
L’étendue des valeurs de mesure: [0..NDIT ]
La valeur la plus élevée indique une complexité élevée
de design et un effort élevé de maintenance de la classe

 Chidamber and Kemerer’s metric Number of Children (NOC):


NOC = nombre de sous-classes immédiatement subordonnées
à une classe dans une hiérarchie de classes
L’étendue des valeurs de mesure: [0..NNOC ]
La valeur la plus élevée indique une complexité élevée
de design et un effort élevé de maintenance

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 25


Hiver2011

TRADER System Example: DIT and =OC

Trade DIT(Trade)=0
trade id
Position_mana
counterparty NOC(Trade)=3
trade value
ger
evaluate_counterparty()
report_trade() get_trade_id()
position_update()
DIT(P_m)=0 position_manager::report_treade()

NOC(P_m)=0 DIT(e_t)=1
DIT(e_t)=1;
NOC=0 NOC(e_t)=0
exchange trade
bond trade equity trade
forex_details
bond details company
calculate_exchange_rates() stock_market
get_bond_info() PE ratio
earnings
52_week_hi_lo
DIT(b_t)=1
estimate_beta()
quotron
NOC(b_t)=0 get_stock_quotes()
quotron::quotes()
quotes()
Asma Sellami-
Sellami-Mnif
DIT(quotron)=NOC=0 Acétate 26
Hiver2011 Démarche de la qualité des logiciels

13
Exemple: mesures =OC et DIT

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 27


Hiver2011

Cohésion
 Définie comme le degré auquel les tâches accomplies
par une entité sont fonctionnellement reliées
 Degré auquel les méthodes dans une classe sont
reliées les unes des autres
 La mesure de cohésion reflète la similarité entre les
objets d’une classe dans un contexte d’utilisation
des mêmes méthodes et attributs de classe
 Une cohésion élevée indique une bonne subdivision
des classes )
 Une cohésion élevée implique la simplicité et une
réutilisabilité élevée

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 28


Hiver2011

14
Mesure de cohésion dans CK:
Mesure LCOM

MOOSE: Lack of Cohesion Measure (LCOM)


 LCOM mesure le degré de similarité des méthodes par la variable
d'instance ou d’attributs
Les méthodes sont très similaires si elles opèrent sur les mêmes attributs. Compter le
nombre d'ensembles disjoints, produits à partir de l'intersection de l'ensemble des attributs
utilisés par les méthodes

 Les classes
classes à faible cohésion pourraient être subdivisées en deux ou
plusieurs sous-
sous-classes avec une cohésion élevée

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 29


Hiver2011

Définition LCOM

P = {Paires de méthodes dont la similarité est 0}

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 30


Hiver2011

15
Exemple: LCOM

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 31


Hiver2011

Mesure de complexité dans CK:


Mesure WMC

Weighted Method Per Class (WMC):


Elle est définie comme étant la somme des
complexités de toutes les méthodes définies dans
une classe
WMC = somme de la complexité cyclomatique de toutes
les méthodes
Une méthode avec un WMC n’est pas recommandée
Lorsque les corps des méthodes ne sont pas
connues, WMC = nombre total des méthodes
définies dans la classe

Asma Sellami-
Sellami-Mnif

Démarche de la qualité des logiciels Acétate 32


Hiver2011

16
TRADER System Example: WMC

Trade WMC(Trade)=3
trade id
counterparty
Position_mana trade value
ger
evaluate_counterparty()
report_trade() get_trade_id()
position_update()

WMC(P_m)=1 position_manager::report_treade()

WMC(e_t)=2
WMC(e_t)=1
exchange trade
bond trade equity trade
forex_details
bond details company
calculate_exchange_rates() stock_market
get_bond_info() PE ratio
earnings
WMC(b_t)=1 52_week_hi_lo

estimate_beta()
quotron get_stock_quotes()
quotron::quotes()
WMC(quotron)=1
Asma Sellami-
Sellami-Mnif
quotes()

Démarche de la qualité des logiciels Acétate 33


Hiver2011

17

You might also like