Temps estimé: 20 minutes
Série d'exercices sur I-A
Question 1
Comment interprétez-vous la métrique d'instabilité?
Rappel: I = dépendances sortantes / (dépendances sortantes + dépendances entrantes)
Plus le ratio I tend vers 0, plus le module devrait être stable, car plusieurs classes en dépendent. Il est donc préférable qu'il soit stable et abstrait pour éviter les ripple effects.
Ainsi un ratio I qui tend vers 1 signifie qu'il pourrait être instable sans effet d'avalanche parce qu'il a peu de dépendances entrantes. De plus, le module a plusieurs dépendances externes et donc plusieurs possibilités de changer.
Stability is related to the amount of work required to make a change. One way to make a package difficult to change is to make a lot of other packages depend on it. A package with a lot of incoming dependencies is very stable because it requires a great deal of work to reconcile any changes with all dependent packages [...]
source: Robert C. Martin Agile Software Development, Principles Patterns and Practices
Question 2
Que signifie un ratio A = 0 et I = 0?
Le module est très stable et est majoritairement constitué de classes concrètes. De ce fait, il est difficile à changer à cause de sa stabilité, plusieurs classes en dépendent, mais il n'expose pas de contrats (d'interface). Ceux-ci aideraient à ajouter des contrats stables qui permettraient de limiter les ripple effects. Cette situation doit le plus possible être évitée.
Question 3
Quelle(s) affirmation(s) est(sont) vraie(s)?
Il est préférable qu'un module soit ...
a) instable et abstrait.
b) stable et abstrait.
c) stable et concret.
d) instable et concret.
b) et d) Il est préférable qu'un module soit stable et abstrait ou instable et concret. En effet, un module stable, mais abstrait exposera des contrats (interface) au lieu de classes concrètes, ce qui limitera les effets d'avalanche et donc contraindra moins le design. Tandis qu'un module concret et instable sera facilement modifiable. D'où le fait qu'on privilégie les métriques suivantes: A + I = 1.
Question 4
Quelle affirmation est vraie?
Il est préférable qu'un module dépende d'un module plus [...] que lui:
a) instable
b) stable
Il est préférable qu'un module dépende d'un module qui est plus stable que lui. En effet, car chaque fois qu'un module change, il faut s'assurer que les modules qui en dépendent fonctionnent toujours comme voulu. C'est pourquoi il est préférable de dépendre sur quelque chose qui est plus stable que soi, pour entre autres, ne pas avoir à constamment subir les effets d'avalanche qu'entraîne un changement.
Question 5
Vrai ou faux: un projet ne devrait être constitué que de modules/classes stables.
Faux. Rappel sur ce qu'est la stabilité: l'effort requis pour effectuer des modifications. Donc si tout le projet est constitué par des classes difficilement modifiables, la situation sera moins favorable afin de maintenir et faire évoluer le projet. Un équilibre entre des modules stables et instables est, pour la plupart du temps, préférable.