Professional Documents
Culture Documents
Cours 3:
Qualité d’un design orienté-objet
Asma Sellami-
Sellami-Mnif
Thèmes couverts
Caractéristiques d’un bon design
Qu’est-ce qui est mesurable?
Exemple
Asma Sellami-
Sellami-Mnif
1
Caractéristiques d’un bon design
Couplage
Asma Sellami-
Sellami-Mnif
Asma Sellami-
Sellami-Mnif
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
Asma Sellami-
Sellami-Mnif
3
Caractéristiques d’un bon design
Couplage général
Asma Sellami-
Sellami-Mnif
Asma Sellami-
Sellami-Mnif
4
Caractéristiques d’un bon design
Exemple de cohésion
Communicational
Asma Sellami-
Sellami-Mnif
Asma Sellami-
Sellami-Mnif
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
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
6
Mesures orientées-classe CK
Proposées par Chidamber & Kemerer
Kemerer::
Asma Sellami-
Sellami-Mnif
Asma Sellami-
Sellami-Mnif
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
Asma Sellami-
Sellami-Mnif
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
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
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
Asma Sellami-
Sellami-Mnif
Asma Sellami-
Sellami-Mnif
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
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
Asma Sellami-
Sellami-Mnif
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()
Héritage
Asma Sellami-
Sellami-Mnif
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
Asma Sellami-
Sellami-Mnif
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
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
14
Mesure de cohésion dans CK:
Mesure LCOM
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éfinition LCOM
Asma Sellami-
Sellami-Mnif
15
Exemple: LCOM
Asma Sellami-
Sellami-Mnif
Asma Sellami-
Sellami-Mnif
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()
17