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

Introduction Au Génie Logiciel

1. INTRODUCTION 

Dans ce premier chapitre nous donnerons les différentes définitions du terme « Génie Logiciel ». Ensuite, nous présenterons le cycle de vie d'un logiciel dans ses différentes phases et ses différents modèles en se focalisant tout particulièrement sur l'estimation du coût d'un projet informatique.

2. GENIE LOGICIEL 

2.1. Présentation 

L'appellation génie logiciel concerne l'ingénierie appliquée au logiciel informatique. [LAN 88] Ce terme a été introduit à la fin des années soixante pour répondre à la crise de l'industrie du logiciel. Cette crise est apparue lorsqu' on a prit conscience que la qualité des systèmes produits ne correspond pas a l'attente des clients.

Depuis, le génie logiciel constitue un véritable enjeu stratégique pour le développement des applications informatiques, en particulier les évolutions stratégiques des ateliers de génie logiciel qui concernent :

· Les outils de développement (conception, production, fiabilité, maintenance) ;

· Les outils d'analyse et d'expertise ;

· Les outils de gestion ;

· Les outils de création et des de gestion de base de données ;

· Les outils de modélisation, de conception et d'évolution des architectures. [ALP 95]

Ces outils portent sur une partie ou sur l'ensemble du cycle de vie du logiciel.

2.2. Définitions 

Le génie logiciel est le domaine dédié à l'étude, la conception et la réalisation de programmes informatiques. Ce terme a été défini à l'origine par un groupe de travail en 1968, à Garmisch-Partenkirchen, sous le parrainage de l'OTAN.

Actuellement, le Génie Logiciel(en anglais software engineering), peut se définir comme un ensemble composé de méthodes, de modèles, d'outils d'aide au développement et de critères d'évaluation de la qualité permettant à un maître d'oeuvre de produire un logiciel répondant aux besoins exprimés par un maître d'ouvrage.

Le Génie Logiciel est donc l'art de spécifier, de concevoir, de réaliser, et de faire évoluer, avec des moyens et dans des délais raisonnables, des programmes, des documentations et des procédures de qualité en vu d'utiliser un système informatique pour résoudre certains problèmes.

Une définition plus précise  décrit le Génie Logiciel comme l'ensemble des activités de conception et de mise en oeuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi.

Autrement dit, le Génie Logiciel est « l'art »de produire de bons logiciels, au meilleur rapport qualité/prix. Il utilise pour cela des principes d'ingénierie et comprend des aspects à la fois techniques et non techniques: le génie logiciel est basé sur des méthodologies et des outils qui permettent de formaliser et même d'automatiser partiellement la production de logiciels, mais il est également basé sur des concepts plus informels, et demande des capacités de communication, d'interprétation et d'anticipation.

L'utilisation du génie logiciel dans la production d'un logiciel qui accompli les besoins attendu en même temps qu'il satisfait les objectifs d'un processus d'ingénierie est implantée avec un processus par étapes. Ces différentes étapes forment le cycle de vie d'un logiciel.

2.3. Objectif du Génie logiciel 

Le Génie logiciel se préoccupe des procédés de fabrication des logiciels en s'assurant que les 4 critères suivants soient satisfaits [INT 1] :

· Le système qui est fabriqué répond aux besoins des utilisateurs (contraintes Fonctionnelles),

· La qualité correspond à celle consignée dans le contrat de service initial,

· Les coûts restent dans les limites prévues au départ,

· Les délais restent dans les limites prévues au départ.

3. CYCLE DE VIE D'UN LOGICIEL 

Il faut un temps considérable pour développer un grand système logiciel qui, d'ailleurs, sera utilisé pendant très longtemps .en identifie donc un certain nombre d'étapes distinctes dans cette périodes de développement et d'utilisation, ces étape constituent le cycle de vie du logiciel [LAN 88], de sa conception à sa disparition.

L'objectif d'un tel découpage est de permettre de définir des jalons intermédiaires permettant la validation du développement logiciel, c'est-à-dire la conformité du logiciel avec les besoins exprimés, et la vérification du processus de développement, c'est-à-dire l'adéquation des méthodes mises en oeuvre. [INT 3]

3.1. Les phases du cycle de vie du logiciel 

3.1.1. Etude préalable  [INT4]

L'étude préalable consiste à élaborer une version de base du cahier des charges, qui doit inclure

· la décision de faisabilité,

· le plan général du projet,

· une estimation approchée du coût et des délais de réalisation.

· Les concepteurs doivent effectuer une enquête précise au niveau des demandeurs de l'application (les clients), et des utilisateurs (souvent le personnel des clients),

· et une étude précise du système d'information les concernant.

c'est-à-dire consiste à définir les services qui seront rendus à l'utilisateur et les contraintes sous lesquelles ce logiciel devra fonctionner. [INT3]

3.1.2. La spécification 

La spécification a pour but d'établir une première description du futur système. Cette activité utilise les résultats de l'analyse des besoins, les considérations techniques et la faisabilité informatique pour produire une description de ce que doit faire le système mais sans préciser comment il le fait (on précise le quoi mais pas le comment). [INT3]

3.1.3. La conception 

la phase de conception (design phase), généralement décomposée en deux phases successives dont la première est appelée conception générale, conception globale, conception préliminaire ou conception architecturale, et la deuxième conception détaillée. A partir du document de spécification, la phase de conception doit fournir une réponse à la question: «Comment réaliser le logiciel ? ». [INT3]

3.1.3.1. La conception générale 

La conception générale consiste en une description de l'architecture du logiciel, c'est à dire obtenir à la fois :

· une décomposition du système d'information en un ensemble de modules et de structures de données,

· et une description du rôle de chaque module individuellement, et en interaction avec les autres. [INT4]

3.1.3.2. La conception détaillée 

La conception détaillée consiste à obtenir une description détaillée des traitements et des structures de données (requêtes et tables dans un modèle S.G.B.D ou algorithme et lexique dans un modèle fichiers).

On utilise pour cela des langages intermédiaires entre le langage naturel (homme), et les langages de programmation (ordinateur) par exemple l'algèbre relationnel (S.G.B.D.) ou le « Pseudo code » (programmation classique). [INT4]

3.1.4. La codification

La codification permet de réaliser, à partir de la conception détaillée, d'un ensemble de programme ou de composants de programmes. [INT3]

3.1.5. Les tests unitaires 

Les tests unitaires consistent à vérifier le bon fonctionnement du programme et des différents modules le composant (individuel et interactif) par l'intermédiaire de jeux d'essai judicieusement choisis au sein du domaine d'application de ce programme. [INT4]

3.1.6. Les tests systèmes 

Les tests systèmes correspondent :

· A la phase d'intégration des divers programmes pour obtenir le logiciel fini,

· Ainsi qu'à l'ensemble des testes qui permettra de vérifier que le logiciel correspond exactement au cahier des charges,

· Et enfin à la rédaction de la documentation utilisateur. [INT4]

3.1.7. L'exploitation [INT4]

L'exploitation consiste à la mise à disposition de l'ensemble des utilisateurs du logiciel fini, de telles façons à ce que ce logiciel soit opérationnel en situation réelle de production.

3.1.8. La maintenance 

La maintenance prend trois formes :

· La maintenance corrective permet de corriger les erreurs qui n'ont pas été détectées lors des précédentes phases de tests.

· La maintenance adaptative doit s'occuper de faire évoluer et d'adapter le logiciel à l'apparition de nouvelles contraintes.

· La maintenance perfective  a pour objectif l'optimisation des performances du logiciel.

3.2. Modèles cycle de vie 

3.2.1. Modèle en cascade 

Dans ce modèle le principe est très simple : chaque phase se termine à une date précise par la production de certains documents ou logiciels. Les résultats sont définis sur la base des interactions entre étapes et activités, ils sont soumis à une revue approfondie, on ne passe à la phase suivante que s'ils sont jugés satisfaisants.

Certaines phases portent le nom d'une activité ce qui signifie que l'activité est essentielle pour cette phase, mais n'impose pas qu'elle n'ait lieu que dans cette étape. D'autres activités interviennent, par exemple le contrôle technique et la gestion de la configuration sont présents tout au long du processus.

Le modèle original ne comportait pas de possibilité de retour en arrière. Celle-ci a été rajoutée ultérieurement sur la base qu'une étape ne remet en cause que l'étape précédente, ce qui, dans la pratique, s'avère insuffisant.

Fig I.1 -le cycle de vie en cascade.

3.2.2. Modèle en V 

Le principe de ce modèle est qu'avec toute décomposition doit être décrite la recomposition, et que toute description d'un composant est accompagnée de tests qui permettront de s'assurer qu'il correspond à sa description.

Ceci rend explicite la préparation des dernières phases (validation - vérification) par les premières (construction du logiciel), et permet ainsi d'éviter un écueil bien connu de la spécification du logiciel : énoncer une propriété qu'il est impossible de vérifier objectivement après la réalisation.

Fig I.2 - le cycle de vie en V.

3.2.3. Modèle par incrément 

Dans les modèles par incrément un seul ensemble de composants est développé à la fois : des incréments viennent s'intégrer à un noyau de logiciel développé au préalable. Chaque incrément est développé selon l'un des modèles précédents.

Avantage :

· chaque développement est moins complexe ;

· les intégrations sont progressives ;

· possibilité de livraisons et de mises en service après chaque incrément ;

· meilleur lissage du temps et de l'effort de développement à cause de la possibilité de recouvrement des différentes phases.

Risque :

· mettre en cause le noyau ou les incréments précédents ;

· ne pas pouvoir intégrer de nouveaux incréments.

FigI.3 - le cycle de vie par incrément

3.2.4. Le prototypage 

Ce modèle consiste à produire une version d'essai du logiciel un prototype utilisée pour tester les différents concepts et exigences. Il sert à montrer au client les fonctionnements que l'on se propose de mettre en oeuvre. Après que le client a donné son accord, le développement du logiciel suit généralement les phases du modèle en cascade. Les efforts consacrés à la réalisation du prototype sont le plut souvent compensés par ceux gagnés à ne pas développer de fonctions inutiles.

Caractéristiques :

· Un degré élevé de participation du client.

· Une représentation tangible des exigences du client.

· Très utile quand les exigences sont instables ou incertaines.

Avantages participation du client :

· Le client participe activement dans le développement du produit.

· Le client reçoit des résultats tangibles rapidement.

· Le produit résultant est plus facile à utiliser et à apprendre.

Applicabilité :

· Pour des systèmes interactifs de petite et moyenne taille.

· Pour des parties de grands systèmes (par exemple l'interface utilisateur).

· Pour des systèmes avec une vie courte.

Fig I.4 -Modèle de prototypage

3.2.5. Le modèle en spirale 

Proposé par B. Boehm en 1988, ce modèle est beaucoup plus général que le précédent. Il met l'accent sur l'activité d'analyse des risques : chaque cycle de la spirale se déroule en quatre phases:

1-) détermination, à partir des résultats des cycles précédents, ou de l'analyse préliminaire des besoins, des objectifs du cycle, des alternatives pour les atteindre et des contraintes ;

2-) analyse des risques, évaluation des alternatives et, éventuellement maquettage;

3-) développement et vérification de la solution retenue, un modèle « classique» (cascade ou en V) peut être utilisé ici ;

4-) revue des résultats et vérification du cycle suivant.

Avantage 

· Un modèle simple est facile à suivre.

Risque :

· Impossibilité de suivre et assurer le bon déroulement du projet ;

· Augmentation du risque cas validation tendit ;

· Modèle difficile à utiliser quand il difficile d'obtenir un énoncé complet de besoins.

Fig I.5 - le cycle de vie en spirale

 
 
 
 
 
 
 
 
 
 

4. CRISE LOGICIEL ET GENIE LOGICIEL 

Alors que le matériel informatique a fait, et continue de faire, des progrès très rapides,

Le logiciel, l'autre ingrédient de l'informatique, traverse une véritable crise. Etant donné que cette crise a été décelée en 1969 déjà et qu'elle dure toujours, il serait plus approprié de parler d'une maladie chronique.

La crise du logiciel (software crisis) peut tout d'abord se percevoir à travers ses symptômes:

· les logiciels réalisés ne correspondent souvent pas aux besoins des utilisateurs;

· les logiciels contiennent trop d'erreurs (qualité du logiciel insuffisante);

· les coûts du développement sont rarement prévisibles et sont généralement prohibitifs;

· la maintenance des logiciels est une tâche complexe et coûteuse;

· les délais de réalisation sont généralement dépassés;

· les logiciels sont rarement portables.

La crise du logiciel a ensuite des conséquences économiques: aujourd'hui le coût du logiciel est supérieur à celui du matériel. Même si des chiffres précis font défaut, les experts sont unanimes quant à la tendance: partant d'une proportion 50%-50% en 1965, et passant par 70%-30% en 1975, ce rapport avait atteint 80%-20% en 1985. Mais pas seulement en proportion, en valeur également, le coût du logiciel croît à une vitesse vertigineuse. On peut montrer que cette inflation des coûts est surtout due aux frais de maintenance, situés actuellement entre 40% et 75% du coût total d'un système informatique (matériel et logiciel). Or ces frais de maintenance résultent avant tout de la qualité déficiente du logiciel, au moment de sa livraison déjà ou après qu'il ait évolué.

La raison de fond de la crise du logiciel réside dans le fait qu'il est beaucoup plus difficile de créer des logiciels que le suggère notre intuition. Comme les solutions informatiques sont essentiellement constituées de composants immatériels, tels des programmes, des données à traiter, des procédures et de la documentation, on sous-estime facilement leur complexité. Déjà la taille des programmes montre que cette complexité est souvent bien réelle: un million de lignes pour un logiciel de commande et de navigation d'un avion moderne, le décuple pour une station orbitale [INT 2].

5. DEFINITION D'UN ATELIER DE GENIE LOGICIEL 

Ensemble cohérent d'outils informatiques formant un environnement d'aide à la conception, au développement et à la mise au point de logiciels d'application spécialisés. On retrouvera par exemple dans un AGL des dictionnaires de données, des outils permettant de réaliser des diagrammes, pour faciliter la phase d'analyse et de conception des applications. Puis des générateurs de code ainsi que des aides à la mise au point (encore appelés débogueurs) viendront accélérer la production et la finalisation de l'application.

6. ESTIMATION DE COUT DE DEVLOPPEMENT DE LOGICIEL 

6.1. Introduction 

Il n'est pas rare pour un projet logiciel de dépasser le délai estimer de 25 à 100%, c'est même à partir de ces constatations que la crise du logiciel est apparue...Aujourd'hui si quelques projets ont encore des dérapages parfois catastrophiques, certains ne dépassent les prévisions que de 5 à 10% seulement.

Il est indispensable pour le client comme pour le fournisseur (chef de projet et management) d'estimer à l'avance la durée (calendrier) et le coût (effort) d'un projet logiciel. Il convient également d'en mesurer les risque en recensant les dépendances extérieures qui influeront sur les coûts et délais .une remarque préalable s'impose quant au processus d'estimation  beaucoup trop souvent, le management et les client ont de la peine à comprendre que l'estimation est une activité comportant des difficultés intrinsèques et la rendent encore plus difficile par ce manque de compréhension .le processus requiert des raffinement successifs, il est impossible de fournir une estimation correcte jusqu' a ce que le logiciel soit appréhendé dans son intégralité.

Les estimations interviennent dans au moins quatre phase du cycle de vie du projet :

· L'expression du besoin ;

· L'étude fonctionnelle ;

· L'étude technique ;

· La réalisation.

A chaque des phases correspond un besoin d'estimer spécifique :

6.1.1. L'expression du besoin 

C'est le démarrage du projet. L'utilisateur(ou son représentant) :

Ø Décrit de façon macrocosmique les fonctions nécessaires a la application ;

Ø Evalue les gains générés par le nouveau produit.

A la fin de cette étape, il est possible d'estimer de manière globale le coût de l'outille souhaité. La comparaison entre les gains espérés et le coût du projet rendra possible le calcul du retour sur investissement du projet.

Les décideurs possèdent, de cette étapes, les données suffisantes pour continuer(ou non)de développer le projet.

6.1.2. L'étude fonctionnelle 

Le projet prend forme. Les fonctions qu'il regroupe sont décrites avec précision.

Cette étude reste fonctionnelle. On ne parle pas encore technique, même si l'on les écrans ou les traitements qui seront produites (les maquettes des écrans sont souvent créées durant cette phase).

A cette étape, l'estimation va permettre de :

Ø confirmer les charges estimées de étape précédente ;

Ø planifier les budgets.

Dans la majorité des cas, le délai d'un projet s'étend sur plus d'une année. Les directions financières se doivent de répartir dans le temps, le coût des étapes du projet.

Par exemple, les études seront menées sur le budget de l'année en cours, la réalisation sur l'année suivante, voire sur les deux années suivantes pour les projets importants.

6.1.3. L'étude technique 

La maitrise d'oeuvre l'application .À chaque fonctionnalité correspond au moins un objet informatique.

L'estimation est maintenant très proche de la réalité ; elle est plus précise. Les métriques utilisées sont différentes, plus précises elles aussi.

Le découpage en fonctions/taches, qui correspond à la réalité du projet, facilite la lourde mission de planification. L'approche de l'estimation correspond à la logique de la plupart des outils de planification. Les taches élémentaires, ainsi que leur charge, sont connus et facilement intégrées dans les plannings.

Il est question a cette étape, de planifier la réalisation du projet, de maitriser les éventuelles dérives, et de construire une application maitrisée.

6.1.4. La réalisation 

La mise à jour des estimations et la saisie des consommés(ou leur intégration automatique), présente trois avantages :

Ø Connaitre en permanence la charge estimée, réactualisée du projet, s'appuyant sur des données statistique issues de l'ensemble des projets terminés (base de référence) ;

Ø Obtenir une planification vivante grâce a ses mises a jour ;

Ø Maitriser la dérive éventuelle du projet en comparant le réalisé et l'estimé. La comparaison peut amener à réviser les métriques ou à reconsidérer la complexité des taches sujettes à dérive.

 

6.2. L'objectif de l'estimation de coût d'un logiciel 

· sensibiliser à l'existence de méthodes pour l'estimation de l'effort de développement d'un projet

· donner les bases rudimentaires pour estimer l'effort d'un nouveau projet ou l'effort de maintenance d'un projet

· donner les éléments qui permettent de nuancer l'effort calculé d'un projet (cohésion de l'équipe, maturité des processus,..)

· proposer aux personnes (chefs de projets et/ou analystes) des outils utiles à la négociation de contrats avec leur(s) client(s)

· proposer aux personnes (chefs de projets et/ou analystes) un modèle de coût permettant de décider de la stratégie de développement (coding ou reuse de certains composants)

6.3. Les étapes d'estimation d'un projet 

L'estimation d'un projet informatique comprend quatre étapes :

· Estimer la taille du produit à développer. Celle-ci se mesure généralement en nombre d'instructions (lignes de code) ou en points de fonction, mais il existe d'autres unités de mesure possibles.

· Estimer la charge en mois hommes ou en jours hommes.

· Construire le calendrier du planning.

· Estimer le coût du projet en monnaie locale.

6.4. Les difficultés de l'estimation 

L'estimation des charges des projets informatiques est absolument nécessaire ; mais c'est aussi l'une des activités les plus difficiles du développement de logiciels. Pourquoi est-ce si ardu ? La liste suivante indique quelques-unes de ces difficultés que nous devons surmonter.

· L'estimation de la taille est, intellectuellement, l'étape la plus difficile (mais non impossible) ; elle est souvent esquivée en passant directement à l'estimation des délais. Cependant, si vous ne vous interrogez pas sur l'objectif que l'on vous demande d'atteindre, vous n'aurez aucune base suffisante pour prévoir un délai ou évaluer les conséquences d'un changement de périmètre.

· Souvent, les clients et les techniciens de logiciels, ne comprennent pas que le développement de logiciels est un processus de raffinement progressif et que les estimations faites en a mon du projet sont floues. Les bonnes estimations, elles-mêmes, ne sont que des paris, avec des hypothèses sur les risques inhérents ; cependant, on a quelquefois tendance à les considérer comme gravées dans le marbre ! Il est pertinent de présenter les estimations comme une plage de valeurs possibles, en exprimant, par exemple, que le projet prendra de 5 à 7 mois, au lieu d'affirmer qu'il sera achevé le 15 juin. Méfiez-vous d'une plage trop étroite qui reviendrait à donner une date précise ! Vous pouvez inclure l'incertitude sous forme d'une probabilité en disant, par exemple, qu'il est probable, à 80 %, que le projet soit achevé avant le 15 juin.

· Souvent, l'Organisme ne recueille ni n'analyse les mesures des performances des projets terminés. L'utilisation de données historiques est cependant la meilleure manière pour élaborer des estimations d'un nouveau travail. Il est très important d'établir une liste de caractéristiques fondamentales que vous mesurerez dans chaque projet.

· Il est souvent difficile d'obtenir un planning réaliste accepté par l'encadrement et les clients. Chacun préfère que les résultats soient disponibles au plus tôt, mais pour chaque projet, il y a un délai minimal qui vous permet d'intégrer toutes les fonctionnalités avec la qualité requise. Vous devez définir ce que vous pouvez faire dans un délai donné et expliquer à toutes les parties concernées ce qui est possible et ce qui ne l'est pas. Oui, il arrive, de temps en temps, que l'impossible se réalise ... mais c'est très rare et très coûteux. Espérer l'impossible relève d'une téméraire imprudence !

6.5. Pourquoi de mauvaises estimation ?

· les besoins sont vagues, et la qualité des résultats difficile à évaluer,

· les « managers » sont trop optimistes et pensent que tout ira bien ; ils espèrent le succès parce qu'ils veulent le travail,

· on ne tira pas assez expérience du passé, on utilise trop le « pif » ; il faut de l'expérience pour bien estimer

· imprécision des notions d'homme-mois, de ligne de code source.

6.5.1. Pièges à éviter 

· faire trop précis.

Ø travailler avec des marges d'erreur importantes.

· Sous-estimer.

Ø Etre exhaustif dans la liste chose à estimer.

· Sur-estimer.

Ø Ne pas intégrer systématiquement tous les coûts des aléas possibles.

· Confondre objectif et estimation.

Ø Résister à « il ne faut pas que ça coûte plus de ... ».

· Vouloir tout estimer.

Ø Savoir avouer son ignorance.

6.5.2. Quelques règles d'or pour l'estimation 

· Eviter de deviner : prendre le temps de réfléchir, ne jamais sans avoir étudié la situation calmement.

· Prévoir de temps pour l'estimation et la planification.

· Utiliser des données de projets précédents.

· Prendre l'avis des développeurs qui vont effectivement effectuer le travail.

· Estimer par consensus : consulter les différentes équipes, converger sur des dates au plus tôt et au plus tard.

· Estimer par difficultés (facile, moyen, difficile).

· Ne pas oublier les tâches récurrentes : documentation, préparation des démonstrations utilisateurs, formation utilisateurs et développeurs, intégration à l'existant, récupération des données, revues, réunions, maintenance de l'existant pendant le développement du nouveau produit, gestion qualité, absentéisme (congés, maladie, RTT).

· Utiliser plusieurs techniques d'estimation.

· Changer de méthodes d'estimation au fil de l'avancement du projet.

· Prendre en compte les risques de gestion dans l'estimation.

· Eviter de données une estimation qui s'appuie sur un chiffre unique.

Mais recommandons plutôt d'encadrer les prédictions par une fourchette optimiste/pessimiste.

Le tableau ci dessous (adapté de « Cost Models For Future Software Life Cycle Processes : COCOMO 2.0 », Bohem et Al.1995) donne une base d'estimation pour passer d'un chiffre unique à une fourchette grâce à des coefficients multiplicateurs.

PhaseTaille Et EffortDurée

OptimistePessimisteOptimistePessimisteAnalyse initiale des besoins0.254.000.601.60Définition approuvée des besoins0.502.000.801.25Spécification des besoins0.671.500.851.15Conception globale0.801.250.901.10Conception détaillée0.901.100.951.05

Tableau  : coefficient multiplicateurs pour chaque phase du projet.

Pour utiliser les facteurs multiplicatifs de ce tableau, il suffit de multiplier le point d'estimation unique par les coefficients appropriés de manière à obtenir une fourchette d'estimation dont on peut remarquer qu'elle se resserre au fur et à mesure que l'on avance dans les phase (0.90 à 1.10 en conception détaillée contre 0.25 à 4 en analyse initiale des besoins, donc au moment de réponse à l'appel d'offres !) plutôt que d'estimer la durée du projet dans son ensemble on peut le décompose et estimer chacun de ses composants.

6.5.3. Qualités de l'estimation 

· Rendue dans les délais.

· Homogène en précision.

· Honnête.

· Complète.

· Afficher les hypothèses.

· Réaliste.

· Proche du coût réel Best Estimate.

6.6. Exactitude et précision d'une estimation 

L'exactitude caractérise l'approche de la réalité, alors que la précision caractérise la finesse avec laquelle une grandeur est mesurée. Par exemple, une estimation de taille de 70 ou 80 kilo-instructions peut être à la fois la plus exacte et la plus précise que vous puissiez faire à la fin de la phase de spécifications des besoins d'un projet. Si vous simplifiez votre estimation en annonçant 75 000 instructions, celle-ci semble plus précise mais en réalité elle est moins exacte. Vous pouvez annoncer 75 281 avec une précision d'instruction, mais

on ne pourra mesurer cette taille qu'à la fin de la phase de codage du projet, après décompte des instructions.

Si vous donnez l'estimation de la taille sous forme d'une plage (intervalle entre une valeur minimale et une valeur maximale) plutôt qu'avec une simple valeur, toutes les valeurs ultérieurement calculées (charges, délais, coûts) seront également représentées par des plages.

Si, lors du déroulement du projet, vous faites plusieurs estimations au fur et à mesure que les spécifications de l'ouvrage deviennent plus détaillées, l'intervalle peut se resserrer et votre estimation se rapprochera du coût réel de l'ouvrage que vous développez. (FigI. 6).

Fig I.6 -Graphe de convergence des estimations « Développement rapide » (MCCONNELL1996) adapté de Modèles de coûts pour le cycle de vie (BOEHM 1995).

Autres Facteurs :

d'autres facteurs importants qui affectent l'exactitude de vos estimations :

· l'exactitude de toutes vos données d'entrées des estimations (le vieil adage « flou en entrée, flou en sortie » reste vrai) ;

· l'exactitude de tous les calculs (par exemple, la conversion des points de fonction ou des nombres d'instructions en charges, conserve une certaine marge d'erreur) ;

· la façon dont vos données historiques ou les données classiques utilisées pour calibrer le modèle s'appliquent au projet en cours d'estimation ;

· le respect du processus de développement préconisé par votre Organisme ;

· les conditions de management du futur projet : rigueur de la planification, conduite et contrôle ;

· l'absence d'incident majeur déclenchant des retards intempestifs.

6.7. L'importance de l'estimation 

Il est important de pouvoir mesurer la productivité des programmeurs et ce au moins pour deux raisons. La première c'est qu'elle est indispensable à la planification des projets. La seconde, c'est que la démonstration des avantages qu'il peut y avoir a utiliser des méthodes de programmation et de gestion de projet évoluées ne peut être faite qu'en montrant des gains de productivité sur l'ensemble du cycle de vie de logiciel.

6.8. les unités de mesure 

Des unités de nature différente ont été proposées pour mesurer la productivité des

programmeurs par exemple :

· Nombre de lignes de code source écrites, par programmeur et par mois.

· Nombre d'instructions de code objet produites, par programmeur et par mois.

· Nombre de pages de documentation écrites, par programmeur et par mois.

· Nombre de tests écrits et exécutés, par programmeur et par mois.

L'unité la plus utilisée est le nombre de ligne source écrites, par programmeur et par mois ou par homme-mois.

6.9. Les coûts d'un projet 

le coût d'un projet est directement proportionnel au nombre d'homme-mois nécessaire a la réalisation du projet. Il y a, bien sur d'autres couts concernant le matériel, les déplacements, la formation, etc.., mais ceux-ci sont moins difficiles a établir. Ils ne sont pas basés sur des impondérables tels que la productivité des programmeurs ou l'estimation de la taille du code source.

6.9.1. Les différents coûts d'un logiciel 

6.9.1.1. Le coût de développement 

Le coût de développement d'un projet logiciel est une valeur numérique .Ainsi, l'ensemble des valeurs similaires au coût d'un projet logiciel dépend, en général, des spécificités et des contraintes de l'environnement impliqué.

Le coût détermine l'effort jugé nécessaire pour réaliser le logiciel ; s'exprime en homme- année ou en homme -mois.

6.9.1.2. Le coût de maintenance 

Les coûts de maintenance sont supérieurs aux coûts de développement, et leur est dramatique sous estimation .Par exemple, un produit livré à des premiers clients avant d'être complètement terminé, et dont la maintenance est assurée par l'équipe de développement principale, générée du coût de maintenance qui peuvent noyer l'équipe, retardant «AD VITAM AETERNAM » les échéances à venir.

Il est donc rentable d'investir dés la conception sur la réduction de ces coûts, au moyen d'actions organisationnelles et de contrôle qualité .On peut agir ainsi sur :

· Des facteurs non techniques :

Ø Stabilité de l'équipe ;

Ø Durée de vie du programme ;

Ø Dépendance du programme vis à vis de l'extérieur ;

Ø Stabilité du matériel.

· Des facteurs techniques :

Ø indépendance des modules ;

Ø Langage de programmation ;

Ø Style de programmation ;

Ø Méthodes et outils de validation et de test

Ø Documentation ;

Ø Gestion de configuration.

6.10. Quelle méthode d'estimation choisir ?

· Chaque méthode a ses avantages et ses inconvénients.

· L'estimation du coût du logiciel doit se baser sur plusieurs méthodes.

· Le fait que les résultats fournit par les différentes méthodes sont sensiblement différents montre qu'il y a un manque d'information. Dans ce cas, des actions doivent être entreprises pour obtenir plus d'information permettant d'améliorer la précision des estimations.

· L'affectation du coût pour gagner est parfois la seule méthode possible.

7. CONCLUSION :

Depuis sa naissance à la fin des années soixante, le génie logiciel a connue beaucoup de développement et d'évaluation. Les outils de développements, les méthodes et les techniques du génie logiciel évoluent rapidement et ont un cycle de vie très court.

Du fait de l'importance de maîtrise des coûts de production qui sont souvent imprévisibles un certain nombre de méthodes et techniques permettant d'estimer le coût d'un produit logiciel ont été mises à la disposition des responsables de projet informatiques. Ces méthodes sont détaillées dans le chapitre suivant

 
 
 
 
 
 
 
 

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 y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand