Accueil🇫🇷Chercher

Constructive Cost Model

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 ou parfaitement exact.

Histoire

Conçu en 1981 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.

Principe

COCOMO est divisé en trois modèles, qui affinent l'estimation en prenant en compte de plus en plus de paramètres :

  • le modèle de base effectue un simple calcul de l'effort et de la durĂ©e en fonction du nombre d'instructions que l'application doit contenir et la complexitĂ© de cette dernière. Une ventilation est Ă©galement possible, permettant de dĂ©terminer le temps de dĂ©veloppement et l'effort nĂ©cessaire pour chaque partie du cycle de dĂ©veloppement.
  • le modèle intermĂ©diaire reprend l'effort et la durĂ©e du modèle de base, en appliquant cette fois-ci des coefficients prenant en compte des facteurs de coĂ»t (compĂ©tence de l'Ă©quipe, complexitĂ© de l'environnement technique, etc.).
  • le modèle dĂ©taillĂ© reprend les donnĂ©es du modèle intermĂ©diaire en affinant notamment les facteurs de coĂ»t en fonction de chaque phase du cycle de dĂ©veloppement. Ce modèle n'est vĂ©ritablement nĂ©cessaire que pour de très gros projets.

Complexité

Les complexités des applications à développer peuvent être de trois types :

  • S organique (en anglais organic) : Ce sont des applications simples, n'ayant que peu de cas particuliers et de contraintes. Elles sont parfaitement dĂ©terministes.
  • P semi-detachĂ©(en anglais semidetached) : Ce sont des applications intermĂ©diaires, plus complexes que les applications de type S, elles restent tout de mĂŞme dĂ©terministes, bien que le nombre de cas particuliers et de tests doivent ĂŞtre plus important que pour les applications de type S
  • E embarquĂ©(en anglais embedded) : Ce sont des applications très complexes, que ce soit au niveau de leurs contraintes (comme un système temps rĂ©el) ou au niveau des donnĂ©es saisies (comme certaines interfaces graphiques oĂą l'on ne peut envisager toutes les possibilitĂ©s de saisies qu'un utilisateur pourrait effectuer). Elles ne sont pas dĂ©terministes.

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.

Modèle de base

Formules
Complexité Effort (en mois Homme) Temps de développement (en mois)
S
P
E

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. À 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ée, 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.

La ventilation

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 :

  • Expression des besoins et planification (Plans and requirements) ;
  • Conception gĂ©nĂ©rale (Product design) ;
  • Programmation (Programming) ;
    • Conception dĂ©taillĂ©e (Detailed design) ;
    • Programmation et tests unitaires (Code and unit test) ;
  • Tests et intĂ©gration (Integration and test).

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 à réaliser et le temps passé.

Coefficients de l'effort
Distribution par phase de l'effort
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érale 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érale 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érale 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.

Coefficients du temps de développement
Distribution par phase du temps de développement
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érale 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érale 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 36 40
Conception générale 30 32 34 36 38
Programmation 48 44 40 36 32
Tests et intégration 22 24 26 28 30

Modèle intermédiaire

Le modèle intermédiaire introduit des facteurs de coût supplémentaires pour affiner les résultats, tels que :

  • la fiabilitĂ© requise ;
  • la taille de la base de donnĂ©es (s'il y en a une) ;
  • la complexitĂ© du produit ;
  • les contraintes concernant le temps d'exĂ©cution et la taille mĂ©moire disponible ;
  • l'instabilitĂ© du logiciel de base si c'est une Ă©volution ;
  • l'expĂ©rience du personnel concernant le domaine ;
  • les qualifications des dĂ©veloppeurs ;
  • la familiaritĂ© de l'Ă©quipe de dĂ©veloppement avec logiciel de base si c'est une Ă©volution ;
  • l'expĂ©rience de l'Ă©quipe de dĂ©veloppement concernant le langage utilisĂ© ;
  • l'utilisation de technologies ou/et mĂ©thodes rĂ©centes, l'Ă©quipe de dĂ©veloppement manque donc d'expĂ©rience et de recul ;
  • l'utilisation d'outils d'aide Ă  la programmation (comme les gĂ©nĂ©rateur de code) ;
  • les contraintes de dĂ©lai de livraison du projet.

Modèle détaillé

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 manière suivante :

  • identification des diffĂ©rents sous-projets relatifs Ă  une classe ;
  • calcul de l'effort simplifiĂ© pour chaque sous-projet en tenant compte de la classe Ă  laquelle il appartient ;
  • appliquer les facteurs qui influent sur chaque sous-projet et dĂ©duire l'effort intermĂ©diaire pour chacun d'eux ;
  • l'effort global sera Ă©quivalent Ă  la somme des efforts calculĂ©s.

Cette approche permet de réduire des erreurs de l'estimation finale de l'effort.

Voir aussi

Lien externe

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.