COCOMO (acronyme de l'anglais COnstructive COst MOdel) est un modèle permettant de définir une estimation de l'effort à fournir dans un développement logiciel et la durée que ce dernier prendra en fonction des ressources allouées.
Le résultat de ce modèle n'est qu'une estimation, il n'est en rien infaillible et parfaitement exact.
Conçu dans les années 1970 par Barry Boehm, COCOMO est une méthode basée sur les résultats de 63 projets de développements informatiques (allant de 2 000 à 100 000 lignes de code). Elle se base donc sur des statistiques.
Aujourd'hui, il existe également le modèle COCOMO II, plus adapté à l'aspect ré-utilisation des composants.
COCOMO est divisé en trois modèles, qui affinent l'estimation en prenant en compte de plus en plus de paramètres :
Les complexités des applications à développer peuvent être de trois types :
La catégorisation d'une application dans un type de complexité reste une des choses la plus compliqué à définir dans le modèle de base de COCOMO. En cas de doute et pour ne pas avoir de surprise (comme une sous-estimation de l'effort et donc du temps de développement), il vaut mieux surestimer la complexité d'une application, sans tomber dans l'excès...
En fonction de la complexité de l'application, on utilisera différents coefficients prenant en compte les différentes complexités et forcément les efforts différents à fournir.
Complexité | Effort (en mois homme) | Temps de développement (en mois) |
---|---|---|
S | Effort = 2,4 * KLS1,05 | TDev = 2,5 * Effort0,38 |
P | Effort = 3 * KLS1,12 | TDev = 2,5 * Effort0,35 |
E | Effort = 3,6 * KLS1,2 | TDev = 2,5 * Effort0,32 |
KLS (pour Kilo Ligne Source) représente le nombre de milliers d'instructions que contiendra l'application.
Le plus complexe est de déterminer le nombre de KLS. A première vue, on peut se dire que c'est une chose impossible ou avec une très grande marge d'erreur. Cependant, pour être valable le modèle COCOMO ne doit être utilisé que lorsque la phase de conception est déjà bien avancé, de manière à avoir une idée assez précise du travail à réaliser. De plus, l'expérience de la personne utilisant le modèle est déterminante, car il sera ainsi en mesure de s'approcher au plus près du bon nombre de KLS.
Comme nous l'avons vu plus haut, la ventilation, aussi appelé distribution par phase, permet de déterminer le temps de développement et l'effort nécessaire pour chaque phase du cycle de développement. COCOMO divise en 4 grandes phases le cycle de développement :
Selon la complexité et la taille (en KLS) de l'application, l'effort et le temps de développement varie sur chacune des phases. Le modèle COCOMO exprime cela sous la forme d'un coefficient représentant le pourcentage d'effort a réaliser et le temps passé.
Complexité | Phase | Taille de 2 KLS | Taille de 8 KLS | Taille de 32 KLS | Taille de 128 KLS | Taille de 512 KLS |
---|---|---|---|---|---|---|
S | Expression des besoins et planification | 6 | 6 | 6 | 6 | |
Conception général | 16 | 16 | 16 | 16 | ||
Programmation | 68 | 65 | 62 | 59 | ||
Conception détaillée | 26 | 25 | 24 | 23 | ||
Programmation et tests unitaires | 42 | 40 | 38 | 36 | ||
Tests et intégration | 16 | 19 | 22 | 25 | ||
P | Expression des besoins et planification | 7 | 7 | 7 | 7 | 7 |
Conception général | 17 | 17 | 17 | 17 | 17 | |
Programmation | 64 | 61 | 58 | 55 | 52 | |
Conception détaillée | 27 | 26 | 25 | 24 | 23 | |
Programmation et tests unitaires | 37 | 35 | 33 | 31 | 29 | |
Tests et intégration | 19 | 22 | 25 | 28 | 31 | |
E | Expression des besoins et planification | 8 | 8 | 8 | 8 | 8 |
Conception général | 18 | 18 | 18 | 18 | 18 | |
Programmation | 60 | 57 | 54 | 51 | 48 | |
Conception détaillée | 28 | 27 | 26 | 25 | 24 | |
Programmation et tests unitaires | 32 | 30 | 28 | 26 | 24 | |
Tests et intégration | 22 | 25 | 28 | 31 | 34 |
Ainsi, la somme de l'effort nécessaire aux phases de conception générale, de programmation et de tests et intégration fait 100, ce qui correspond à 100% de l'effort du développement d'une application. On remarquera que l'effort de l'expression des besoins et planification est mis à part et doit être ajouté pour avoir l'effort total.
Complexité | Phase | Taille de 2 KLS | Taille de 8 KLS | Taille de 32 KLS | Taille de 128 KLS | Taille de 512 KLS |
---|---|---|---|---|---|---|
S | Expression des besoins et planification | 10 | 11 | 12 | 13 | |
Conception général | 19 | 19 | 19 | 19 | ||
Programmation | 63 | 59 | 55 | 51 | ||
Tests et intégration | 18 | 22 | 26 | 30 | ||
P | Expression des besoins et planification | 16 | 18 | 20 | 22 | 24 |
Conception général | 24 | 25 | 26 | 27 | 28 | |
Programmation | 56 | 52 | 48 | 44 | 40 | |
Tests et intégration | 20 | 23 | 26 | 29 | 32 | |
E | Expression des besoins et planification | 24 | 28 | 32 | 26 | 40 |
Conception général | 30 | 32 | 34 | 36 | 38 | |
Programmation | 48 | 44 | 40 | 36 | 32 | |
Tests et intégration | 22 | 24 | 25 | 28 | 30 |
Le modèle intermédiaire introduit des facteurs de coût supplémentaires pour affiner les résultats, tels que :
L'inconvénient des modèles COCOMO simplifié ou intermédiaire est qu'ils considèrent que le produit logiciel est un tout auquel ils appliquent des multiplicateurs. En réalité, les grands systèmes sont très rarement homogènes (certains peuvent être organiques, d'autres intégrés). Le COCOMO complet tient compte de cette diversité. En effet, l'évaluation de l'effort se fait de la maniere suivante :
Cette approche permet de réduire des erreurs de l'estimation finale de l'effort.