WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Un atelier de genie logiciel dedié a l'estimation du cout logiciel

( Télécharger le fichier original )
par houria laouti et soumia meflahi
Université Des Sciences Et De La Technologie D?Oran Mohamed Boudiaf - licence informatique lmd 2008
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Chapitre2

CHAPITRE II

Les Méthodes D'estimation De Coûts

De Logiciel

1. INTRODUCTION

De nombreux projets d'informatisation sont confrontés au problème de l'estimation de l'effort nécessaire à leur réalisation. L'objectif des chercheur et responsables informatiques est de fournir des estimations exactes et précises de l'effort de développement de projets logiciels à une étape prématurée du cycle de vie du logiciel

Pour répondre à ce type de difficulté et atteindre cet objectif, plusieurs méthodes d'estimations d'effort a été développées.

Dans ce chapitre, nous présentons les différentes techniques d'estimation des coûts de développement de logiciels, ainsi nous représentons celles se basent sur l'expertise, analogie et la stratégie descendante ou ascendante. Nous exposons, en particulier, deus modèles, les modèles algorithmiques (paramétriques) sont les plus cités dans la littérature. Ils sont développés en appliquant des méthodes statistiques (la régression simple ou multiple, l'analyse en Composantes principales, l'analyse bayésienne, ...etc.) ou des méthodes de l'analyse numérique telle que l'interpolation polynomiale sur des données historiques. Des exemples de tels modèles sont COCOMO'81, COCOMO II, PUTNAM-SLIM et ceux se basant sur les points de fonction.

Et les modèle non algorithmiques (non paramétrique) utilisant des approches de l'intelligence artificielle telles que les réseaux de neurones, le raisonnement par analogie, les arbres de régression. [ALI]

Pour chaque technique de modalisation, nous représentons les avantages et les inconvénients.

2. LE CONCEPT JOURS HOMMES 

Le « Jour*Homme» est l'unité de mesure de la charge de travail dans le contexte d'un projet.

Concrètement, si un projet est estimé à «cent jours pour une personne à plein temps» pour arriver à son terme, on pourra considérer qu'il s'agit d'un projet estimé à « 100 jours hommes» comme l'indique l'intitulé du résultat de l'évaluation, si l'on confie la réalisation de ce projet à un unique homme, ce dernier devrait (sauf erreur d'estimation, et sauf évènements extérieurs perturbant la réalisation du projet) passer exactement cent jours à le réaliser.

Cependant, nous pouvons nous permettre de supposer que tout projet, à un certain niveau, est « scindable » : c'est-à-dire que l'on va pouvoir le décomposer (dans la mesure où ce projet est de taille intuitivement suffisamment élevée) en un ensemble de tâches. Et ceci est aussi vrai dans les projets informatiques « classiques », que dans les projets de la nouvelle économie.

Si ce projet est partitionnable (et ce sera quasiment toujours le cas), il est raisonnablement possible d'effectuer plusieurs de ces tâches en parallèle - donc de les faire effectuer par plusieurs hommes simultanément. Partant de ce postulat, et dans un cadre idéal (figure II.1), on peut donc considérer qu'un projet de 36 J*H (planifié pour 12 hommes sur 3 jours) pourra être effectué en 9 jours par 4 hommes. [GEO]

Fig II.1 -le principe de jour homme. [GEO]

Une définition plus complète donnés par SELON BROKS : « l'homme-mois comme unité de mesurer la taille d'un travail est un mythe dangereux et trompeur. Il implique que les hommes et les mois sont interchangeables. Les hommes et les mois sont des biens interchangeables seulement lorsqu'une tâche peut être partitionnée entre plusieurs employés sans qu'il faille une communication entre eux ».

3. LIGNE DE CODE

Le nombre de milliers de ligne de code représente la "taille" du projet. C'est principalement en fonction de cette "taille" que l'on estimera le temps nécessaire à la réalisation du projet.

On considère la définition de la ligne de code donnée par N.E.Fenton (SOFTWARE METRICS: A RIGOROUS AND PRACTICAL DATA, 1998) :« Une ligne de code est toute ligne du texte d'un programme qui n'est pas une ligne de commentaire, ou une ligne blanche, sans considération du nombre d'instructions ou de fragments d'instructions dans la ligne. Sont incluses toutes les lignes contenant des en-têtes de programmes, des déclarations, et des instructions exécutables et non exécutables. » [GEO]

On utilise les lignes de code dans les études statistiques pour montrer que le ligne de code corrèle mieux que tout autre mesure(par exemple, mesure de HLSTED, de McCABE) avec les différentes autres données de mesure telles que celles sur l'effort de développement et de maintenance et sur les erreurs.

4. TECHNIQUE D'ESTIMATION DES COÛTS 

Il existe plusieurs méthodes d'estimation de coût de logiciel :

· Les modèles paramétriques(ou algorithmique) ;

· Le jugement de l'expert(ou la méthode Delphi);

· L'estimation par analogie ;

· Price to Win (gagner pour plaire) ;

· La méthode descendante ;

· La méthode ascendante ;

· Les modèles non paramétriques(ou non algorithmique).

4.1. Les modèles paramétriques d'estimation des coûts (algorithmiques) 

Les modèles paramétriques d'estimation des coûts de développement de logiciels se basent essentiellement sur une équation centrale exprimant l'effort en fonction d'un certain nombre de variable considérées comme étant les principales conductrices du coût.

En plus, le modèle pourra utilise des tables ou des formules prédéterminées pour évaluer les entrées de son équation centrale.la mise au point d'un modèle paramétrique d'estimation suppose donc que la forme de l'équation central du modèle est connu .cette équation central représente la relation exprimant l'effort en fonction des facteurs affectant les coûts.

Du fait que les modèles paramétriques étaient les premières appliquées dans le domaine de l'estimation des coûts .Plusieurs modèle paramétriques ont été développés :

Des exemples de ces modèles sont :

· Les modèles linéaires.

· Les modèles analytiques.

Ø Halstead (1975)

Ø Putnam (1978)

· Point de fonction (Albert et Gaffney 1983)

· Cocomo (Boehm)

Ø Cocmo81 (Boehm 1981)

Ø CocomoII (Boehm 1995)

4.1.1. Les modèles linéaires 

Un modèle linéaire est de la forme :

Effort = a0+a1x1+a2x2+ ... +amxm (Equation 1).

Ou les xi sont les facteurs affectant l'effort et les ai sont des coefficients choisis pour fournir le meilleur ajustement à l'ensemble des données historiques observées.

Le coût de développement est généralement obtenu par multiplication de l'effort par un coût constant de la main d'oeuvre.

Une étude, réalisée par le system développement corporation ver la moitié des années soixante, examina plus de 100 conducteurs de coûts possibles, en utilisant un échantillon de 169 projet.

Le meilleur modèle linéaire obtenue alors était un modèle de 13 variables avec une estimation significative de 40 homme-mois (HM) et une déviation standard de 62 HM.

4.1.2. Le modèle analytique 

Les modèles analytiques adoptent une équation centrale non-linéaire. Leur utilisation est nécessaire quand la relation initiale, exprimant l'effort en fonction des facteurs du coût, n'est pas toujours linéaire et qu'aucune transformation des variables n'est possible afin de rendre cette relation linéaire.

Dans la littérature, on ne trouve que peu de modèles analytique qui ont été développés (Halsted, 1975 ; Putnam, 1978). En effet :

· Souvent, un modèle linéaire satisfaisant et concurrent peut être mis en place, éventuellement après la transformation des variables.

· Quand cette relation n'est pas linéaire, l'identification de la forme de la relation exprimant l'effort en fonction des facteurs du coût est souvent très ardu.

· Les praticiens, dans leur majorité, préfèrent apporter des améliorations de détail au modèle linéaire concurrent plutôt que l'étudier le modèle non-linéaire initial.

Fig II.2 - Exemple où relation Effort-taille n'est pas linéaire.

Dans ce qui suit, nous représentons brièvement deux exemples de modèles analytique : le modèle d'Halstead et le modèle Putnam.

4.1.2.1. Le modèle d'Halstead 

En 1972, Murice Halstead a entreprise une étude empirique des algorithmes afin de tester l'hypothèse sel0n laquelle, dans un programme, le comptage des opérateurs(expressions verbales) et des opérandes(noms ou désignations de données) pouvait faire apparaître des taille corrélations avec le nombre des erreurs contenues dans les algorithmes (Halstead,1975).

Suite de cette étude empirique, Halstead avait défini quatre métriques basées sur l'analyse lexicale du code source :

1 = nombre d'opérateurs distincts

2 = nombre d'opérandes distincts.

N1 = nombre totale d'utilisation des opérateurs.

N2 = nombre total d'utilisation des opérandes.

En suite, Halstead avait utilisé ces quatre métriques pour développer une panoplie de formule d'évaluation de certains attributs d'un logiciel tels que le vocabulaire et le volume d'un programme, l'effort et la durée de codage d'un programme. Les deux équations en rapport avec l'effort et la durée de codage d'un programme sont respectivement :

Effort= (Equation 2)

Durée=

Où N=N1+N2. Cette équation d'estimation de l'effort à partir des quatre métriques de base d'Halstead n'a pas eu beaucoup d'intérêt dans la plupart des travaux de recherche en estimation des coûts du fait que plusieurs hypothéses adoptées par Halstead sont considérées comme erronées (fenton et pflegger, 1997). En plus, la plupart des mesures proposées par Halstead sont basées sur le code source d'un logiciel ; les autres phases du cycle de développement telles que la spécification et la conception ne sont pas prises en considération bien qu'elles requièrent souvent un effort considérable. [ALI]

4.1.2.2. Le modèle Putnam 

En 1978, Putnam a proposé un modèle d'estimation de l'effort de développement et de maintenance d'un logiciel en se basant sur les remarques et sur les conclusions de Norden avait déjà déduit en étudiant des projets de développement dans beaucoup de domaine autres que le génie logiciel (Putnam, 1978). En effet, Norden n'avait observé que la distribution de l'effort total sur tout le cycle de la fonction de Rayleigh (fig II.3).

Ainsi, Putnam avait utilisé cette fonction pour exprimer la répartition de l'effort total de développement sur tout le cycle de vie d'un logiciel (développement et maintenance).

Effort(t) = CT (Equation 3)

Effort(t) représente l'effectif cumulé à l'instant t, CT est l'effort total de tout le cycle de vie du logiciel et td est le temps de développement.

Fig II.3- répartition de l'effort selon la courbe de Rayleigh et la courbe classique. [ALI]

A partir des résultats obtenus ci-dessus et d'observation des projets réels, Putnam établi une relation entre la charge totale, le nombre d'instruction et la durée du développement. L'effort à fournir est en relation inverse à la puissance 4 du temps de développement. Ce qui signifie que par exemple un raccourcissement du temps de développement de 10% suppose une augmentation de la charge totale de 40%. Dans le modèle de Putnam, l'augmentation de la durée diminue la charge tandis que son raccourcissement l'accroît. [ALI]

4.1.3. Point de fonction 

4.1.3.1. Présentation historique de la fonction 

Les points de fonction constituent la métrique de pointe dans le monde du logiciel. Alors qu'originellement, la méthode des points de fonctions est une méthode destinée à évaluer la taille d'un projet logiciel, et ce, indépendamment de la technologie utilisée pour le réaliser.la puissance et l'utilité de cette méthode se sont étendues à d'autres usages, loin de leur propos initial. En ce début de 21e siècle, les points de fonction s'appliquent maintenant aux domaines suivants :

· Etudes de données de référence.

· Estimation des coûts de développement.

· Gestion des litiges en contrats informatique.

· Gestion des litiges en taxation des logiciels.

· Estimation de coûts de maintenance.

· Contrats d'externalisation.

· Analyse des processus d'amélioration.

· Estimation de la qualité.

· Dimensionnement de tous les livrables (documentation, code source, jeux d'essai).

· Coûts de mise en conformité an 2000.

En octobre 1979, Alan Albrecht, d'IBM, propose une première version de sa méthode. Cette parution n'a pas été sans réactions. C'était en effet la première fois que l'on proposait une mesure de la production de logicielle basée sur les fonctions utilisateurs. Elle doit aider à prévoir la taille d'un projet, son effort de développement et la productivité du développement informatique.

Cette méthode à l'origine était fondée sur quatre entités (entrée, sortie, interrogation, fichiers) sans catégorie de complexité avec un intervalle d'ajustement de +/- 25%. Depuis 1984, les comptages se font a partir des entités entrées, sorties, interrogations, données externes et internes, avec pour chacune de ces entités un niveau de complexité simple, moyen ou élevé.

Les points de fonction se voulaient une méthode pour mesurer un « problème » contrairement aux nombre de ligne de code (LOC) qui mesuraient une « solution ».

4.1.3.2. Paramètres de points de fonction 

Les points de fonctions reposaient, à l'origine, sur un calcul basé sur quatre entités (entrée, sortie, interrogation, fichiers), et ce, sans catégorisation de complexité. (Albrecht, 1979) Depuis le milieu des années 80, avec l'IFPUG13, et la normalisation AFNOR, le comptage des points de fonctions se fait à partir des entités suivantes :

· Données internes (GDI)

Relatif à l'aspect statique du Système d'Information.

Groupe de données logiquement liées, ou de groupe de paramètres de contrôle, et identifiables par l'utilisateur. Ces données sont mises à jour et utilisés à l'intérieur de la frontière de l'application.

Notons que certaines entités reliées par une cardinalité (1,1) sont susceptibles de former un seul et même GDI.

· Données externes (GDE)

Relatif à l'aspect statique du Système d'Information.

Groupe de données logiquement liées, ou groupe de paramètre de contrôle, et identifiables par l'utilisateur. Ces données sont utilisées par l'application, mais mises à jour par une autre application. Le GDE est un GDI dans un autre domaine.

· Entrées (ENT)

Relatif à l'aspect dynamique du Système d'Information.

Ce sont les données, ou les paramètres de contrôle, qui entrent dans l'application considérée. Ces entrées maintiennent un ou plusieurs GDI, initialisent ou contrôlent un traitement, et font l'objet d'un traitement unique.

Une Entrée correspond donc à un écran de saisie, ou à une réception de données. Il est à noter qu'à chaque GDI doit correspondre au moins une entrée, permettant sa mise à jour.

· Sorties (SOR)

Relatif à l'aspect dynamique du Système d'Information.

Ce sont les données, ou les paramètres de contrôle qui sortent de l'application. Ces sorties sont le résultat d'un traitement unique. (Ce traitement unique doit être différent d'une simple extraction de données). Ce peut être un écran de visualisation, ou un message vers une autre application.

· Interrogations (INT)

Relatif à l'aspect dynamique du Système d'Information.

Ce sont des données élémentaires qui correspondent à une extraction de données.

L'INT ne met à jour aucun GDI.

Ces entités peuvent être définies sur trois acteurs (fig II.4) :

Ø L'application.

Ø L'utilisateur.

Ø Les autres Applications. [GEO]

Fig II.4 - Principe des Points de Fonctions.

4.1.4. Cocomo 

4.1.4.1. Cocomo'81 

COCOMO est un acronyme pour COnstructive COst MOdel. C'est une méthode pour estimer le coût d'un projet logiciel dans le but d'éviter les erreurs de budget et les retards de livraison, qui sont malheureusement habituels dans l'industrie de développement logiciel.

Il a été développé par Dr. Barry Boehm en 1981 pour estimer le coût, en s'appuyant sur une donnée de base : le nombre de ligne de code source prévisible, exprimé en Kilo Instruction Source Livrées(KISL). A l'origine il a été construit sur une étude de 63 projets logiciels de 2000 à 100.000 lignes de code dans l'entreprise TRW Inc.

Il permet de formuler des estimations de l'effort et du temps de développement ainsi que ceux de maintenance d'un logiciel. En plus, il fournit la répartition de cet effort sur les quatre phases du cycle de développement (Analyse, Conception, Codage et Tests unitaires, Intégration et Tests) et sur les huit activités de chaque phase (Analyse de besoins, Conception, Programmation, Plan de test, Vérification et Validation, Gestion du projet, Gestion des configurations et Assurance qualité, Documentation).

Le modèle COCOMO'81 existe en trois modèles: le modèle de base, le modèle Intermédiaire et le modèle Détaillé.

· Modèle de Base
Le modèle de base est assez simpliste. Il estime l'effort (le nombre de mois-homme) en fonction du nombre de lignes de code, la productivité (le nombre de lignes de code par personne par mois) et un facteur d'échelle qui dépend du type de projet. Les 3 types de projet identifiés sont :

Ø organique :
organisation simple et petites équipes expérimentées. (ex: système de notes dans une école)

Ø semi-détaché :
entre organique et imbriqué. (ex: système bancaire interactif)

Ø imbriqué :
techniques innovante, organisation complexe, couplage fort avec beaucoup d'interactions. (ex : système de contrôle aérospatial.)

· Modèle Intermédiaire
Le modèle intermédiaire introduit 15 facteurs de productivité (appelés 'cost drivers'), représentants un avis subjectif et expert du produit, du matériel, du personnel, et des attributs du projet.
Chaque facteur prend une valeur nominative de 1, et peut varier selon son importance dans le projet. Ils sont semblables aux points de fonction utilisés par d'autres modèles. Les 15 facteurs sont multipliés pour donner un facteur d'ajustement - qui vient modifier l'estimation donnée par la formule de base.

· Modèle Expert
Le modèle expert inclue toutes les caractéristiques du modèle intermédiaire avec une estimation de l'impact de la conduite des coûts sur chaque étape du cycle de développement: définition initiale du produit, définition détaillée, codage, intégration. De plus, le projet est analysé en termes d'une hiérarchie : module, sous système et système. Il permet une véritable gestion de projet, utile pour de grands projets.

4.1.4.2. Cocomo II 

Le modèle COCOMO II il basé sur l'idée d'améliorer et de réactualiser le modèle COCOMO'81 en considérant les besoins suivants :

- développer un modèle d'estimation fondé sur une architecture de processus mieux adapté que le cycle en V aux nouvelles pratiques de la programmation, en particulier en se positionnant sur la problématique du maquettage / prototypage, de l'utilisation des progiciels et des perspectives offertes par l'approche composants réutilisables comme les logiciels « libre/gratuit » ;

- adapter les paramètres qualitatifs du modèle intermédiaire de COCOMO pour prendre en compte les progrès en ingénierie du logiciel, ou tout simplement la plus grand diversité des projets, tant en ce qui concerne les coûts que les durées de réalisation des logiciel.

Le modèle COCOMO II prend en compte les pratiques prévisibles de développement du logiciel aux états unis, à l'horizon 2005, sur la base d'une répartition sociologique des activités relevant de l'informatique en cinq secteurs, selon le niveau d'expertise informatique requis.

COCOMO II est constitué en fait de trois modèles :

· Modèle de composition d'application
Ce modèle est utilisé pour les projets fabriqués à l'aide des toolkits d'outils graphiques. Il est basé sur les nouveaux « Object Points ».

· Modèle avant projet
Modèle utilisé pour obtenir une estimation approximative avant de connaître l'architecture définitive. Il utilise un sous ensemble de facteurs de productivité (Cost drivers). Il est basé sur le nombre de lignes de code ou les points de fonction non ajustés.

· Modèle post-architecture
Il s'agit du modèle le plus détaillé de COCOMO II. A utiliser après le développement de l'architecture générale du projet. Il utilise des facteurs de productivité (Cost drivers) et des formules.

4.1.5. Limitation des modèles paramétriques 

Les modèles paramétriques d'estimation des coûts (linéaires ou analytiques) supposent la connaissance de la forme de la relation exprimant l'effort en fonction des facteurs conducteurs du coût. Autrement dit, la forme de l'équation centrale du modèle est bien connue et il suffit donc de déterminer les paramètres de cette équation en utilisant des techniques statistiques ou des méthodes théoriques du domaine de l'approximation des fonctions. En estimation des coûts de logiciels, on détermine souvent la forme de l'équation centrale du modèle en utilisant des connaissances relevant de l'environnement étudié ou en adoptant des formes déjà établies dans d'autres environnements.

Une autre limitation des modèles paramétriques d'estimation des coûts est qu'ils requièrent une adaptation ou une calibration quand on veut les appliquer dans des environnements différents de ceux où ils ont été développés. En effet, le modèle paramétrique représente l'état de l'environnement étudié à l'aide de la forme de son équation centrale ainsi que les conducteurs du coût qu'il considère. Cependant, vu que les environnements de développement et/ou de maintenance de logiciels n'ont pas généralement les mêmes caractéristiques, l'application d'un modèle, initialement mis au point dans un environnement à un autre, n'est pas souhaitable. Des exemples de caractéristiques qui peuvent différencier deux environnements de développement de logiciels sont le type d'applications logicielles développées (Scientifique, Gestion, Business, etc.), les méthodes et les outils de développement utilisés, et les contraintes imposées sur l'application (fiabilité, portabilité, complexité, etc.).

Selon Gulizian, la calibration d'un modèle paramétrique est sa reformulation sur une base de données de projets logiciels d'un environnement autre que celui du modèle initial. Ainsi, les équations du modèle calibré, y compris son équation centrale, ont les mêmes structures que celles du modèle initial mais pour lesquelles les coefficients sont recalculés. L'adaptation d'un modèle paramétrique est la modification des formes de certaines de ses équations ainsi que l'ajout ou la suppression de facteurs affectant le coût dans le modèle. Souvent en estimation des coûts, les chercheurs et les industriels utilisaient ces deux techniques (calibration et adaptation) pour mettre au point des modèles propres à leurs environnements à partir de modèles déjà mis au point dans d'autres environnements. Bien que la calibration (ou l'adaptation) représente, dans certains cas, une solution au problème de l'utilisation d'un modèle paramétrique ailleurs que dans son environnement, elle reste insuffisante quand les différences entre les environnements sont très flagrantes. [ALI]

4.2. Jugement de l'expert (méthode Delphi) 

Cette technique consiste à consulter un ou plusieurs experts qui utilisent leurs expériences ainsi que leur compréhension du projet afin de fournir une estimation à son coût. Elle était parmi les premières techniques utilisées en estimation des coûts. Il est préférable d'avoir plusieurs valeurs estimées du coût émanant de plusieurs experts pour alléger les problèmes de subjectivité, de pessimisme et d'optimisme (Boehm, 1981). Il y a plusieurs façons de combiner les différentes valeurs estimées du coût d'un projet logiciel. La plus simple est d'utiliser une des méthodes statistiques telles que la moyenne, la médiane ou le mode de toutes les valeurs pour déterminer une estimation du coût. Cette approche présente l'inconvénient d'être sujette aux préjugés des estimations extrêmes. Une autre méthode référée souvent dans la littérature par la méthode Delphi, consiste à réitérer ce processus d'estimation plusieurs fois jusqu'à ce qu'un consensus soit établi. L'idée principale de la méthode Delphi est qu'un coordinateur distribue une description du projet logiciel (souvent le dossier d'analyse des besoins du logiciel) ainsi qu'un formulaire d'estimation aux experts; ensuite, les experts remplissent les formulaires et les renvoient au coordinateur. Ce dernier pourra, dépendamment de la version de la méthode Delphi, convoquer une réunion des experts pour discuter des différentes estimations. Ce processus est réitéré jusqu'à l'adoption d'une estimation par tout le groupe. [ALI]

4.3. Estimation par analogie 

Dans cette technique d'estimation, l'évaluateur compare le projet logiciel dont on veut estimer le coût avec des projets logiciels déjà achevés. Il doit identifier les similarités et les différences entre le nouveau projet et tous les anciens projets. Pour cela, il doit auparavant décrire les projets logiciels par un ensemble de caractéristiques. Les ressemblances entre les caractéristiques du nouveau projet avec celles des projets achevés déterminent les degrés de similarité entre les projets. Ensuite, il utilise ces degrés de similarité pour déterminer une estimation au coût du nouveau projet.

Dans sa première version informelle, l'estimation par analogie a été considérée comme une alternative de l'estimation par les jugements des experts. En effet, les experts raisonnent souvent par analogie quand on leur demande une évaluation du coût d'un logiciel à partir de son dossier d'analyse des besoins. Ainsi, les experts utilisent leurs connaissances sur des projets déjà achevés et déterminent implicitement les similarités et les différences entre le nouveau projet et les projets achevés. Cependant, plusieurs versions formelles de l'estimation par analogie ont été récemment développées (Vicinanza et Prietula, 1990; Malabocchia, 1995; Shepperd et Schofield, 1997). Par ce fait, on la considère de plus en plus comme une technique d'estimation qui se base sur la modélisation. D'ailleurs, le modèle d'estimation des coûts, que nous développons dans cette thèse, adopte une version floue de l'estimation par analogie. Le quatrième chapitre décrira l'état de l'art des versions formelles de l'estimation par analogie ainsi que notre nouvelle modélisation de l'estimation par analogie. Notre modèle d'estimation par analogie aura comme avantage la prise en considération de la tolérance des imprécisions, la gestion des incertitudes et l'apprentissage.

4.3.1. Processus d'estimation par analogie 

· Caractérisation des projets logiciels par un ensemble de variables (complexité logicielle, compétence des analystes, méthodes de développement utilisées, ...).

· Evaluation de la similarité entre le nouveau projet et les projets logiciels historiques.

· Utilisation des valeurs des coûts réels des projets similaires au nouveau projet pour en déduire une estimation à son coût.

4.3.2. Limitation de l'estimation par analogie 

· Elle ne traite pas convenablement le cas des projets logiciels décrits par des valeurs linguistiques telles que « bas », « élevé », et « complexe »

· Elle ne permet pas la gestion de l'incertitude au niveau des estimations fournies

· Elle ne permet pas l'apprentissage

4.4. La méthode « prise to Win » (gagner pour plaire) 

Pour illustre cette méthode, nous allons présenter deux exemples :

Exemple1 :

« Nous savons que ce travail est estimé a deux millions et aucun de nos experts ne croient pouvoir le faire avec moins d'un million et demi. Mais nous savons aussi que le client ne dispose gue d'un budget d'un million. Maintenant, nous allons arranger l'estimation du coût et la rendre crédible ».

Exemple2 :

« Nous devons absolument annoncer ce produit à la conférence national sur le génie logiciel en juin prochain, et nous sommes encire en Septembre. Cela signifie que nous disposons de 9 mois pour réaliser le logiciel ».

Ces deux exemples illustrent très bien le nom de la méthode (Price to Win, gagner pour plaire).cette méthode a permis de conclure un grand nombre de contrats de logiciels pour un grand nombre de compagnies. Ceci n'a pas empêché que certains contrats ont du être réalisés pour différentes raisons (budgétaires) alors que d'autres contrats ont permis la réalisation de projets de très mauvaises qualité.

Dans ce type de méthode, le résultat est que l'argent et le temps diminuent avant que le travail ne soit fait : le personnel devient furieux, un grand nombre de programmeurs travaillent de longues heures essayant justes d'éviter un désastre complet.

Néanmoins, la principale raison qui fait cette méthode continue a être utilisée est que la technologie de l'estimation du coût du logiciel n'a pas donné des techniques assez puissantes pour aider les clients ou les développeurs a différencier avec conviction une estimation légitime d'une estimation « Price to Win »

4.5. Estimation ascendante et descendante 

4.5.1. Estimation ascendante 

Dans l'estimation ascendante, le projet logiciel (ou le logiciel) est décomposé en plusieurs tâches (ou composantes) constituant ainsi une arborescence de toutes les tâches (ou composantes) du projet logiciel (ou du logiciel).

Tout d'abord, on estime l'effort nécessaire pour chaque tâche du plus bas niveau dans l'arborescence; ensuite, on détermine progressivement l'effort des autres tâches, se retrouvant dans un niveau supérieur dans l'arborescence, en combinant les efforts nécessaires associés aux sous-tâches. En général, l'effort nécessaire d'une tâche sera la somme de ceux de ses sous-tâches. Cependant, dans le cas des projets logiciels complexes, d'autres techniques plus sophistiquées, telles que celles se basant sur des formules mathématiques typiques ou sur des règles d'induction (si-alors), peuvent être utilisées afin de mettre en valeur la complexité des interfaces de communication entre les tâches.

4.5.2. Estimation descendant 

Dans l'estimation descendante, on évalue une estimation globale de l'effort de tout le projet logiciel; ensuite, on répartit cet effort total sur toutes les tâches du projet logiciel. Dans les deux cas de l'estimation ascendante ou descendante, les valeurs estimées de l'effort sont déterminées en utilisant la technique du jugement de l'expert, l'estimation par analogie ou un modèle d'estimation.

4.6. Les modèles non paramétriques d'estimation des coûts (non algorithmique) 

Les modèles non-paramétriques d'estimation des coûts ont été développés pour remédier aux inconvénients cités ci-dessus dans les modèles paramétriques. Ils n'ont pas une équation centrale d'estimation de l'effort. Ainsi, les modèles non-paramétriques n'exigent au préalable aucune forme à la relation exprimant l'effort en fonction des conducteurs du coût. Ils modélisent cette relation en utilisant des techniques d'intelligence artificielle telles que le raisonnement à base de cas, les réseaux de neurones, les algorithmes génétiques, les systèmes à base de règles et les arbres de décision. Les modèles non-paramétriques représentent donc une alternative prometteuse quand la relation entre l'effort et les conducteurs du coût semble n'avoir aucune forme prédéfinie.

Dans cette section, nous présentons les modèles non-paramétriques utilisant les réseaux de neurones, les arbres de décision et les algorithmes.

4.6.1. Les réseaux de neurones 

La modélisation par les réseaux de neurones est inspirée de la structure biologique du cerveau humain. Un réseau de neurones est caractérisé par son architecture, son algorithme d'apprentissage et ses fonctions d'activation. Dans la littérature, plusieurs modèles de réseaux de neurones ont été développés. Ils peuvent être classifiés en deux catégories principales: les réseaux de neurones « feedforward » où il n'y a aucune boucle dans l'architecture du réseau, et les réseaux récurrents où une ou plusieurs boucles récursives apparaissent dans l'architecture du réseau. Le Perceptron multicouches utilisant l'algorithme d'apprentissage de rétro-propagation est souvent le plus adopté en estimation des coûts de logiciels. Dans ce modèle, les neurones sont organisés en couches et chaque couche ne peut avoir des connexions que vers la couche suivante. La figure II.5 illustre un exemple d'un tel réseau pour l'estimation de l'effort de développement de logiciels. Le réseau produit un résultat (effort) en propageant ses entrées initiales (facteurs du coût ou attributs du projet logiciel) à travers les différents neurones du réseau jusqu'à la sortie. Chaque neurone d'une couche calcule sa sortie en appliquant sa fonction d'activation à ses entrées. Souvent, la fonction d'activation d'un neurone est la fonction Sigmoïde définie par:

f(x)= (Equation 4)

Fig II.5 - Architecture d un réseau de neurones à trois couches pour l'estimation de l'effort.

La configuration d'un réseau de neurones pour l'estimation de l'effort de développement de logiciels nécessite le choix d'une architecture adéquate, un algorithme d'apprentissage et des fonctions d'activation. Dans le cas d'un Perceptron multicouches, la configuration se restreint au choix des différents paramètres de sa topologie tels que le nombre de couches cachées, le nombre de neurones par couche, et les valeurs initiales des poids de connexions (wij et bj). Dans la pratique, ces paramètres sont déterminés en se fiant sur une base de données de projets logiciels déjà achevés. Ainsi, on divise la base de données en deux ensembles: un ensemble de projets logiciels pour entraîner le réseau et l'autre pour tester le réseau.

L'utilisation des réseaux de neurones pour estimer le coût d'un logiciel a trois avantages principaux.

· Les réseaux neurones permettent l'apprentissage automatique à partir des situations et des résultats précédents. L'apprentissage est très important pour les modèles d'estimation des coûts car l'industrie des logiciels est en évolution croissante.

· Les réseaux neurones permettent un traitement parallèle de l'information. Ainsi, le processus d'estimation du modèle profitera de la grande puissance de calcul de toutes les machines disponibles surtout que, souvent, le processus de formulation d'une estimation engage des calculs très intensifs.

· Les réseaux neurones peuvent modéliser les relations complexes existantes entre la variable dépendante (coût ou effort) et les variables indépendantes du modèle (facteurs de coût). En effet, les réseaux de neurones sont reconnus en tant qu'approximateurs universels de fonctions continues à valeurs dans l'ensemble des réels. Hornik, Stinchcombe et White ont particulièrement montré qu'un réseau de neurones « feedforwad », avec une seule couche cachée et des fonctions d'activation continues et non-linéaires, peut approcher n'importe quelle fonction continue à valeurs dans l'ensemble des réels et ceci au degré de précision qu'on veut (Hornik, Stinchcombe et White, 1989).

Cependant, L'approche neuronique a trois limitations qui l'empêchent d'être acceptée comme une pratique usuelle en estimation des coûts:

· L'approche neuronique est considérée comme étant une approche boîte noire. Par conséquent, il est difficile d'expliquer et d'interpréter son processus.

· Les réseaux de neurones ont été utilisés spécifiquement pour les problèmes de classification et de catégorisation, alors qu'en estimation des coûts, nous traitons un problème de généralisation et non pas de classification.

· Les réseaux neurones n'existe aucune démarche standard pour le choix des différents paramètres de la topologie d'un réseau de neurones (nombre de couches, nombre d'unités de traitement par couche, valeurs initiales des poids de connexions, etc.). [ALI]

4.6.2. Les arbres de régression 

Les arbres de régression constituent un outil de modélisation simple et de plus en plus répandu par la diversité des applications qui lui font appel. Plusieurs approches de construction de ces arbres ont été développées; ces approches dépendent du type de la connaissance disponible du domaine étudié selon qu'elle est discrète ou continue. Des exemples de telles approches sont CART, ID3 et C4.5 .La construction de l'arbre de régression s'effectue à partir d'un échantillon de données historiques dit d'apprentissage.

Les arbres de régression, en particulier binaires, ont été utilisés avec succès pour la mise au point de plusieurs modèles d'estimation en génie logiciel. En estimation des coûts, ils ont été utilisés pour estimer l'effort de développement d'un logiciel. Premièrement, chaque projet logiciel est décrit par un ensemble de variables qui serviront à la prédiction de son effort de développement. Ensuite et progressivement, à partir de la racine de l'arbre, le projet logiciel auquel on veut estimer le coût emprunte le chemin approprié, selon les valeurs de ses variables, en descendant dans l'arborescence jusqu'à l'une des feuilles de l'arbre. Chaque feuille contient une valeur numérique représentant l'effort de développement des projets logiciels associés.

La figure II.6 illustre un arbre de régression binaire construit à partir des projets du COCOMO'81. Dans cet arbre de régression binaire, la racine représente la variable AKDSI de chaque projet logiciel; si la valeur de l'AKDSI du projet logiciel est supérieure à 315,5, alors son effort est estimé à 9000H-M; sinon, on passe au deuxième niveau de l'arbre où il y a un seul noeud représentant aussi la variable AKDSI et ainsi de suite jusqu'à l'une des feuilles de l'arbre.

Fig II.6- Arbre de régression construit à partir des 63 projets logiciels du COCOMO'81.

En général, la plupart des algorithmes de construction d'un arbre de régression binaire, à partir d'un ensemble de projets logiciels historiques, sont basés sur une stratégie descendante. Cette stratégie consiste à choisir, parmi tous les attributs décrivant le projet logiciel, celui qui divise mieux l'ensemble de tous les projets logiciels en deux sous-ensembles disjoints. Souvent, on choisit l'attribut qui minimise l'erreur moyenne quadratique (MSE) de la variable dépendante (l'effort de développement) des projets logiciels historiques. L'erreur moyenne quadratique d'un sous-ensemble S de projets logiciels est calculée par:

MSE(S) = (Equation 5)

Effort k est l'effort réel du k ème projet logiciel de S et Effort est la moyenne arithmétique d'Effort k.

· L'attribut est mesuré par des valeurs discrètes. Dans ce cas, pour chaque attribut Vi, on divise l'ensemble de tous les projets logiciels T en des sous-ensembles Tij contenant des projets logiciels ayant la même valeur Aj de l'attribut Vi.

· L'attribut est mesuré par des valeurs numériques continues. Dans ce cas, pour chaque attribut Vi, on divise l'ensemble de tous les projets logiciels en k-1 sous ensemble selon l'ordre des valeurs observées de Vi (où k est le nombre de valeurs observées de Vi).

Ainsi, on choisit l'attribut Ai qui maximise la différence :

MSE = MSE(T) - (Equation 6)

L'expansion d'un noeud de l'arbre s'arrête quand le nombre de projets logiciels classifiés dans ce noeud est assez petit ou ces projets logiciels sont jugés similaires. Dans ce cas, le noeud représente une feuille de l'arbre et l'effort estimé de tout nouveau projet logiciel, qui sera classifié dans ce noeud, est calculé en fonction des valeurs réelles des efforts de tous les projets logiciels historiques de ce noeud (en général, on considère la moyenne ou la médiane).

La modélisation de l'estimation des coûts par les arbres de régression présente l'avantage d'être facile à expliquer et à utiliser contrairement au cas de celle utilisant les réseaux de neurones. En effet, un chemin dans l'arbre de régression peut être représenté par une règle du type:

Si condition1 et condition2 et ... et conditionN Alors Effort=CTS

Par exemple, dans la figure II.5, le chemin indiqué par des flèches peut être représenté par la règle suivante:

Si (AKDSI =111.0) et (TIME= 1.415) et (TKDSI=26.0) Alors Effort = 57.3H-H

Ce genre de règles est facilement interprétable car les règles ressemblent à celles qu'on Utilise dans notre quotidien. Ainsi, une modélisation par un arbre de régression binaire n'est qu'un cas particulier d'un système à base de règles Si-Alors.

4.6.3. Les algorithmes génétiques 

Les algorithmes génétiques sont inspirés des concepts de l'évolution et de la sélection naturelle élaborés par Charles Darwin. Ils ont été utilisés comme des méthodes heuristiques dans les problèmes d'optimisation où l'espace de recherche de la solution est de taille assez grande. Le pionnier du domaine est John Holland qui a le premier tenté d'implanter artificiellement des systèmes évolutifs (Holland, 1975). L'idée de base de la théorie Darwinienne de l'évolution postule que seulement les meilleurs éléments d'une population survivent et transmettent à leurs descendants leurs caractéristiques biologiques à travers des opérations génétiques telles que le croisement, la mutation et la sélection. Dans l'implantation informatique du principe de l'évolution, le problème étudié est représenté par une chaîne binaire (formée de 0 et 1) symbolisant les chromosomes de son équivalent biologique. Ainsi, à partir d'une population, c'est-à-dire à partir d'un ensemble de chaînes binaires (chromosomes).

· les chromosomes les mieux adaptés se reproduisent le plus souvent et

Contribuent davantage aux populations futures (sélection),

· lors de la reproduction, les chromosomes des parents sont combinés et mélangés pour reproduire les chromosomes des enfants (croisement),

· le résultat du croisement peut être à son tour modifié par des perturbations aléatoires (mutation) ;

En général, un algorithme génétique est composé de trois étapes principales bien que d'autres variations sont possibles (Goldberg, 1989; Davis, 1991):

1- Générer aléatoirement une population initiale de N chromosomes (solutions);

2- répéter les sous étapes suivantes jusqu'à une condition d'arrêt (souvent on fixe un temps d'exécution ou un nombre d'itérations)

2.1- évaluer la fitness de chaque chromosome de la population et sélectionner

Ceux ayant les meilleurs scores;

2.2- reproduire une nouvelle population de chromosomes en appliquant les deux opérations génétiques (croisement et mutation) aux chromosomes sélectionnés dans 2.1;

2.3- Remplacer l'ancienne population par la nouvelle population obtenue de 2.1 et 2.2 ;

3- Choisir comme solution au problème qui a le meilleur score dans la population finale.

Récemment, les algorithmes génétiques ont été appliqués en estimation des coûts de développement de logiciels. Shukla a utilisé les algorithmes génétiques dans l'apprentissage d'un Perceptron multicouches afin de trouver le vecteur des poids W qui permette au Perceptron multicouches de fournir des estimations acceptables. Ses expérimentations se sont basées sur la base de données du COCOMO'81. Il identifie un Perceptron multicouches PN par un vecteur de poids W(PN). À chaque vecteur de poids W(PN), il associe un chromosome de M éléments où M est le nombre d'éléments de W(PM). La figure II.7 illustre un exemple d'un Perceptron multicouches ainsi que le chromosome qui lui est associé; ce Perceptron comporte 18 poids de connexions auxquels il associe un chromosome de 18 éléments. Chaque élément du chromosome représente un poids du vecteur W(PN). Pour coder un poids, il lui réserve dix bits. Ainsi, le chromosome associé sera composé de 180 bits. La fonction de fitness utilisée pour sélectionner les chromosomes dans une population est:

F (W) = E (W) =

(Equation7)

Shukla utilise une technique hybride de sélection des chromosomes qui vont survivre dans la prochaine population. Cette technique considère les deux premiers chromosomes ayant les meilleurs scores F(W) et applique sur les autres la stratégie de la roue roulante dans laquelle chaque chromosome reçoit une part de la roue proportionnelle à son score F(W). Pour l'opérateur de croisement, Shukla a utilisé une version modifiée de l'opérateur standard afin d'éviter que des bits, représentant des poids appartenant à différentes couches du Perceptron, soient interchangés. Les autres paramètres de l'algorithme, tels que la taille de la population, la probabilité accordée à l'opérateur de croisement ainsi que celle accordée à l'opérateur de mutation, ont été choisis en exécutant plusieurs fois l'algorithme sur les données du COCOMO'81.

Fig II.7 - Exemple d'un Perceptron multicouches et sa représentation avec un chromosome.

Dolado, Burgess et Lefley ont respectivement utilisé la programmation génétique (Genetic Programing) pour le développement de modèles d'estimation des coûts de logiciels. La programmation génétique (GP) est une variante des algorithmes génétiques qui n'exige pas que la représentation des chromosomes soit seulement sous forme de chaînes binaires, mais elle peut être sous d'autres formes telles que des équations, des programmes, des circuits, et des plans. Dans ces deux expérimentations de la programmation génétique en estimation des coûts, l'équation, exprimant l'effort en fonction des variables affectant le coût, a été représentée par un arbre binaire dont les noeuds sont soit des opérandes ou soit des opérateurs. Les opérandes sont les conducteurs du coût tels que la complexité et la fonctionnalité du logiciel, et la compétence du personnel. Ils sont généralement dans les feuilles de l'arbre binaire. Les opérateurs, quant à eux, représentent les différentes opérations susceptibles d'être dans l'équation exprimant

L'effort en fonction des conducteurs du coût. Des exemples de ces opérateurs sont +, -, *, /, Racine carrée, Logarithme, et l'Exponentiel. La figure II.8 illustre la représentation de l'équation Effort=0,03453*FP/Ln(FP) par un arbre binaire:

Fig II.8 - Représentation de l'équation Effort=0,03453*FP/Ln(FP) par un arbre binaire. [ALI]

Les deux variantes de la programmation génétique utilisées respectivement par Dolado, Burgess et Lefley sont presque les mêmes avec des différences mineures au niveau des choix de certains paramètres tels que la fonction d'évaluation de la fitness de chaque arbre binaire, la taille de chaque population, et la technique de sélection des arbres binaires. Voici brièvement la description du programme génétique utilisé par Dolado, Burgess et Lefley :

1- Générer aléatoirement une population de P équations, c'est-à-dire P arbres binaires. Dolado a utilisé les opérateurs suivants: +, -, *, /, Racine carrée, Carrée, Logarithme, Exponentiel. Burgess et Lefley ont utilisé les opérateurs suivants: +, -, *. Ils ont aussi limité la taille de chaque population à 1 000, la profondeur de chaque arbre binaire à quatre, et le nombre maximal des noeuds dans un arbre à 64.

2- Répéter jusqu'à un nombre maximal de génération ;

2.1- Évaluer la fitness de chaque équation:

· Dolado utilise la fonction MSE (Mean Square Error):

MSE =

(Equation8)

où N est le nombre de projets logiciels, Effortréel,i est l'effort réel du ième projet, et Effortestimé,i est l'effort estimé du ième projet par l'équation.

· Burgess et Lefely ont utilisé la moyenne des erreurs relatives (MMRE):

MMRS =

(Equation9)

2.2- sélectionner les équations ayant les meilleurs scores de la fonction de fitness:

· Dolado utilise la technique de la roue roulante (Roulette Wheel) en affectant à chaque équation, i, une probabilité égale à fi fi fi est la fitness de l'ième équation.

· Burgess et Lefley choisissent les cinq premières équations ayant les meilleurs scores.

2.3- Appliquer les deux opérateurs de croisement et de mutation aux équations sélectionnées. Le croisement de deux équations consiste au choix d'un noeud N1 dans l'arbre représentant la première équation, d'un noeud N2 dans l'arbre représentant la deuxième équation, et échanger les deux sous-arbres de racine respectivement N1 et N2. La figure II.9 illustre un exemple de l'opération de croisement appliquée sur les deux équations: Effort=0,03453*FP/Ln(FP) et Effort= 4.3 +2.1*FP+1.01*FP2. Certaines précautions sont nécessaires pour éviter les problèmes d'incompatibilité des opérateurs avec des opérandes (valeur négative avec la fonction Logarithme par exemple). L'opérateur de mutation est appliqué sur chaque équation sélectionnée en choisissant aléatoirement un noeud de l'arbre binaire (opérateur ou opérande) et en le remplacant par un autre élément (opérateur ou opérande) ;

2.4- construire la nouvelle population ;

3- choisir l'équation ayant le meilleur score de fitness.

Fig II.9 - Résultats de l'application de l'opérateur de croisement aux deux équations:

Effort=0,03453*FP/Ln(FP) et Effort= 4.3 +2.1*FP+1.01*FP2.

L'utilisation du principe de l'évolution en estimation des coûts présente l'avantage de fournir une recherche heuristique de l'équation exprimant l'effort en fonction des conducteurs du coût. Ainsi, à partir d'un ensemble d'équations initiales, l'algorithme recherche celle qui représente adéquatement la relation. Ceci présente un avantage sur les techniques paramétriques classiques telles que la régression linéaire où une seule forme de l'équation est évaluée. Cependant, comme dans le cas des réseaux de neurones, la configuration d'un algorithme génétique (ou un programme génétique) nécessite le choix de plusieurs paramètres tels que la fonction de fitness, la taille de chaque population et la taille de l'arbre binaire représentant l'équation. Ces paramètres sont souvent déterminés par expérimentations. Ils dépendent donc de la base de projets logiciels utilisée.

Les modèles non algorithmiques sont basés sur des approches de l'intelligence artificielles telles que les réseaux de neurones, le raisonnement par analogie et les arbres de régression. Les avantages et les inconvénients de ces modèles sont : [IDR]

· Avantages 

Ils peuvent modéliser des relations complexes entre les différents facteurs affectant le coût.

Dans le cas des réseaux de neurones, ils incluent automatiquement des algorithmes d'apprentissages.

Leur comportement est facilement compréhensible sauf pour le cas des réseaux de neurones.

· Inconvénients 

Ils ne sont pas faciles à développer.

On ne peut pas les utiliser sont les programmer.

Ils impliquent des calculs très intensifs pour générer l'estimation.

5. RESUME SUR LES METHODES D'ESTIMATION 

Un certain nombre de méthodes d'estimation ont été développés. Dans la figure II.10 nous allons présenter les principales méthodes utilisées pour l'estimation des coûts de développement de logiciels.

Suite a notre recherche, nous avons distingué Sept méthodes : modèles paramétrique, jugement de l'expert, l'estimation par analogie, Price to Win, méthode descendante et modèles non paramétrique.

Les modèles paramétriques fournissent plusieurs algorithmes produisant une estimation du coût, les formes les plus communes des algorithmes sont (les modèles linéaires, les modèles analytiques, pionts de fonction et cocomo)

Les modèles non paramétriques sont représentés par (les réseaux de neurones, les arbres de régression et les algorithmes génétiques).

Fig II.10 - méthodes d'estimation de coûts de développement de logiciel

6. CONCLUSION 

L'estimation des coûts de développement de logiciels est l'un des problèmes critiques les plus débattus en métrologie de logiciels. La maîtrise et l'évaluation de ces coûts semblent encore préoccuper aussi bien les chercheurs que les responsables et les chefs de projets logiciels. Dans ce chapitre, nous avons présenté un ensemble de techniques d'estimation des coûts, spécifiquement celles se basant sur la modélisation. Ainsi, nous avons décrit des exemples de modèles paramétriques et non-paramétriques. Chaque type de modèle d'estimation a des avantages et des inconvénients et aucun modèle n'a pu prouver qu'il performe mieux que tous les autres dans toutes les situations.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faudrait pour le bonheur des états que les philosophes fussent roi ou que les rois fussent philosophes"   Platon