dimanche 26 avril 2015

Metrics & cocomo

cocomo 2
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.

Histoire[modifier | modifier le code]

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[modifier | modifier le code]

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é[modifier | modifier le code]

Les complexités des applications à développer peuvent être de trois types :
  • S (en anglais organic) : Ce sont des applications simples, n'ayant que peu de cas particuliers et de contraintes. Elles sont parfaitement déterministes.
  • P (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 (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[modifier | modifier le code]

Formules
ComplexitéEffort (en mois homme)Temps de développement (en mois)
S{\textit  {Effort}}=2,4\times KLS^{{1,05}}TDev=2,5\times {\textit  {Effort}}^{{0,38}}
P{\textit  {Effort}}=3\times KLS^{{1,12}}TDev=2,5\times {\textit  {Effort}}^{{0,35}}
E{\textit  {Effort}}=3,6\times KLS^{{1,2}}TDev=2,5\times {\textit  {Effort}}^{{0,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. À 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[modifier | modifier le code]

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 et 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 a réaliser et le temps passé.
Coefficients de l'effort[modifier | modifier le code]
Distribution par phase de l'effort
ComplexitéPhaseTaille de 2 KLSTaille de 8 KLSTaille de 32 KLSTaille de 128 KLSTaille de 512 KLS
SExpression des besoins et planification6666
Conception générale16161616
Programmation68656259
Conception détaillée26252423
Programmation et tests unitaires42403836
Tests et intégration16192225
PExpression des besoins et planification77777
Conception générale1717171717
Programmation6461585552
Conception détaillée2726252423
Programmation et tests unitaires3735333129
Tests et intégration1922252831
EExpression des besoins et planification88888
Conception générale1818181818
Programmation6057545148
Conception détaillée2827262524
Programmation et tests unitaires3230282624
Tests et intégration2225283134
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[modifier | modifier le code]
Distribution par phase du temps de développement
ComplexitéPhaseTaille de 2 KLSTaille de 8 KLSTaille de 32 KLSTaille de 128 KLSTaille de 512 KLS
SExpression des besoins et planification10111213
Conception générale19191919
Programmation63595551
Tests et intégration18222630
PExpression des besoins et planification1618202224
Conception générale2425262728
Programmation5652484440
Tests et intégration2023262932
EExpression des besoins et planification2428323640
Conception générale3032343638
Programmation4844403632
Tests et intégration2224262830

Metrics
´est une mesure d'une propriété d'un morceau de logiciel ou de ses spécifications
´Une bibliothèque Java qui vous donne un aperçu sans précédent en ce que fait votre code dans la production.
´Fournit un outil puissant de façons de mesurer le comportement des composants critiques dans votre environnement de production.
´Avec des modules pour les bibliothèques communes comme Jetty , Logback , Log4j , Apache HttpClient , Ehcache , JDBI , Jersey et backends déclaré comme ganglions et Graphite , Metrics vous offre une visibilité complète 
Plugin sous eclipse:

TP contraintes OCL + application de réservation de place avec java FX


le diagramme de classe avec les contraintes OCL.

l'application avec javaFX de réservation de place: