1.Contexte
L'informatique est aujourd'hui pour les entreprises une source
d'innovation commerciale et de différenciation concurrentielle.
De nombreuses études ont montrer des résultats intéressants et
surprenants. L'expérience de programmation est certes importante
mais comme il sera préciser le langage utilisé n'est pas déterminant.
Les langages utilisés, le niveau de connaissance des utilisateurs
et les relations avec les utilisateurs sont des facteurs positifs.
Des faiblesses de gestion de projets et de mauvaises relations
au niveau des équipes de développement entraînement le plus souvent
une baisse de productivité. Le développement de logiciels doit
satisfaire simultanément plusieurs objectifs :
> Réalisation des fonctionnalités
> Respect de la qualité
> Programme flexible
> Respect des délais
> Respect du budget
Dans ce contexte la mesure de la performance ne peut s'apprécier
qu'a partir de plusieurs indicateurs.
2. Problématique
Comment mesurer la performance de développement et la complexité
de l'application ? Mieux estimer les délais, mieux gérer les modifications
et mieux communiquer avec les utilisateurs pour assurer une livraison
dans les temps et ne pas dépasser le budget. Pour les différents
départements informatiques, il s'agit de s'appuyer sur une base
de données de leur expérience pour améliorer leur performance
et de choisir les indicateurs les plus pertinents pour prendre
les mesures nécessaires afin d'atteindre les objectifs visés.
Pour cela les échantillons doivent se constituer rétrospectivement
à partir de l'analyse du temps passé, des efforts consentis, de
la charge, de l'ampleur du projet en lignes de code ou de sa complexité
en nombre de points de fonction.
On peut apprécier à partir de ces indicateurs quantitatifs certains
aspects de performance d'une équipe ou d'un département informatique
pour affiner le planification de nouveaux projets et pour prendre
les meilleures décisions stratégiques. Ces performances peuvent
être évaluées à partir de :
> Efficacité (en points de fonction par mois.homme)
> Délai de livraison (en mois)
> Respect du budget
> Respect du calendrier
> Qualité technique (absence d'erreurs en phase de test)
> Fiabilité
Un certain nombre de statistiques ont été établies sur plusieurs
milliers de projets concernant des centaines d'entreprises. Ce
qui permets de garantir avec certaines précautions les logiques
de raisonnements fondés sur l'étude de résultats fournis par des
Cabinets de Conseil ou s'appuyer sur des préconisations fournies
par des outils utilisant d'aussi larges échantillons. Il faut
cependant restituer les contextes propres au projet et à l'entreprise.
Les deux principaux facteurs qui influent généralement sur le
niveau de productivité d'un projet sont :
> L'ampleur ou la complexité du projet en points de fonction
> Le nombre de personnes constituant l'équipe projet
3. L'analyse en points de fonction
L'analyse en points de fonction apparaît comme la méthodologie
la mieux adaptée pour évaluer le poids fonctionnel ou la complexité
d'une application. Cette méthodologie s'appuie sur la conception
logique de l'application et est donc indépendante du langage utilisé.
3.1 Qualité, nombre net de points de fonction
Pour un utilisateur la qualité d'un système dépasse le strict
contenu fonctionnel. La valeur ajouté provient de facteur comme
la facilité de traitement des données ou les performance de l'exploitation.
Ces facteurs entraînent un effort supplémentaire de l'effort de
développement et de la valeur perçue par l'utilisateur que l'on
peut faire transparaître par le Coefficient d'Ajustement en nombre
net de points de fonction.
Une analyse d'un cabinet de conseil menée sur 95 entreprises concernant
près de 2000 projets a révélé de fortes disparités. A tailles
comparables, les projets les plus efficaces ont été cent fois
plus productifs que les moins efficaces. Certains projets ont
donc nécessité une charge de travail cent fois plus importante
que d'autres pour aboutir à des fonctionnalités comparables. L'écart
entre les entreprises les plus efficaces et les moins est encore
plus important. D'un certain point de vue, ces différences ne
se manifestent que dans coût. C'est à dire que des entreprises
dépensent plus que d'autres pour mettre en place des applications
comparables.
3.2 Obstacles
La mise en place d'un système de mesure peut se voir confrontée
à un certain nombre d'obstacles dans l'entreprise. Suivant l'utilisation
qui sera faite de ces résultats, l'effet sur l'entreprise sera
plus ou moins positif. La mesure peut être mal perçue, s'en suivent
alors des réactions diverses de la part des utilisateurs.
> Peur des individus que les données qu'ils fournissent soient
utilisées à leur détriment.
> Peur d'une mauvaise interprétation des résultats.
> Crainte que la mesure de productivité puisse altérer l'esprit
de collaboration en esprit de compétition
> Evaluations coûteuses et longues Interrogations sur la réelle
fiabilité des résultats et la pertinence de la méthode
3.3 Recommandations
> Pour contourner ces obstacles, il faut impliquer les équipes
dans ce système de mesure et ne pas détourner les résultats de
leur but premier.
> Se concerter avec les différents collaborateurs pour la définition
des différents indicateurs
> Communiquer les résultats aux collaborateurs et établir en
communs les résultats et les recommandations
> Placer la mesure au niveau de l'équipe et non à un niveau
individuel
> Collecter les données sur les projets les plus importants
puis encourager à placer ces mesures dans le travail de développement
> Relativiser sur la précision des résultats, analyser les
tendances et examiner les raisons d'échec de la méthode
> Vouloir imposer un seul indicateur de mesure ne peut que
nuire au processus de développement. De même ne se concentrer
que sur un seul ne peut que déséquilibrer une vision globale du
projet.
4. Indicateurs de suivi de projet
4.1 Exemples d'indicateurs
Il est préférable de choisir plusieurs indicateurs plutôt que
vouloir mesurer la performance en ne s'appuyant que sur un seul
indicateur.
Exemple d'entreprises :
Entreprise A
> Productivité en points de fonction par jour.homme
> Coût direct (CA par jour.homme, cas de projets réalisés pour
clients extérieurs)
> Taux de non erreurs (% de lignes de codes inchangées après
une durée à fixer depuis le début du projet)
> Respect des délais
Entreprise B
> Satisfaction des clients
> Productivité
> Qualité
> Délais
> Maturité des processus
> Maturité des technologies
Ces indicateurs répondent aux buts spécifiques de chaque entreprise.
Ils visent à l'amélioration du développement d'application et
l'optimisation de la performance. Une fois les buts fixés, l'entreprise
identifie les indicateurs et posent les questions dont les réponses
lui permettront de les atteindre.
4.2 Indicateurs comme outils de communication
La mise en place d'indicateurs de mesure peut apparaître comme
une nouvelle culture dans le développement d'application. Par
ce processus de mesure, l'équipe de développement se responsabilise,
et s'appuie sur ces résultats pour enrichir ses connaissances
et argumenter les discussions.
Enfin ces outils doivent être utilisés comme aide à la communication
et non comme moyen de contrôle et de pression. Afin de favoriser
le dialogue ces indicateurs doivent être simples et parlant pour
l'utilisateur tout en répondant à ses priorités (qualité, coûts
et délais).
De même pour l'équipe de développement ces indicateurs doivent
être suffisamment détaillés pour éclairer un dysfonctionnement
ou de mauvaise performances. D'un projet à un autre conserver
ces mêmes indicateurs favorisera la communication et permettra
de transmettre les meilleures pratiques sans les utiliser comme
outil de comparaison.
5. Mesurer l'ampleur d'un projet
La productivité d'un projet ne peut être suivi que s'il existe
une mesure fiable de sa taille. Son ampleur est souvent appréciée
en charge, durée ou coût. Cependant cela représente les ressources
nécessaires à la réalisation et non une ampleur du système.
Il s'agit de deux types de paramètre qu'il faut distinguer qui
servent à mesurer la productivité. En phase préalable d'un projet
le budget est calculé en fonction de l'estimation de l'ampleur
et de la productivité. Deux méthodes peuvent servir à mesurer
l'ampleur d'un projet :
> La méthode des points de fonction pour évaluer la complexité
du projet
> Le nombre de lignes de code pour en donner la taille
Suivant les entreprises, l'une de ces deux méthodes est utilisée,
voire même les deux. Dans certaines circonstances, il peut paraître
intéressant d'associer les deux méthodes :
> Lorsqu'une partie du code est réutilisé
La taille en points de fonction ne change pas que l'on parte de
rien ou que l'on réutilise une partie de code déjà écrit. Cette
réutilisation viendrait fausser une mesure de la productivité
si celle ci était mesurée en points de fonction par mois.homme.
Dans ce genre de situation la mesurer du nombre de lignes de code
montre l'intérêt de la réutilisation du code en terme de productivité
et d'efficacité des équipes de développement. La mesure en points
de fonction doit permettre de suivre ma productivité réelle.
> Pour évaluer la productivité d'un processus de développement
Les efforts de développement sont plus directement proportionnelles
au nombre de lignes de code qu'aux fonctionnalités.
Les nombre de lignes de code par mois.homme ne varie pas trop
d'un langage à un autre. A l'inverse l'effort pour réaliser un
point fonctionnel varie considérablement suivant le langage choisi.
La mesure en points de fonction ne fournit qu'une information
sur la complexité de l'application.
5.1 Comptage du nombre de lignes de codes
5.1.1 Avantages
> Le nombre de lignes de code représente mieux l'effort à
fournir ou la quantité de travail effectuée
> Les mesure de productivité fondée sur le nombre de lignes
de code ne varie pas en fonction du langage utilisé
> Le taux d'erreur étant généralement proportionnel au nombre
de lignes de code, sa connaissance améliore la planification de
la phase de test
> Pour les langages de troisième génération et orientés objet,
le comptage du nombre de ligne de code est très facile et peut
se voir automatisé
5.1.2 Inconvénients
> Le nombre de lignes de code ne permet pas d'évaluer le coût
prévisionnel d'un projet car il est difficile de les compter avant
qu'elles ne soient écrites
> Le nombre de lignes de code peut être gonflé par le développeur
suivant l'interprétation qui en sera faite
Elles sont pratiquement impossibles à compter dans de nouveaux
environnements de développement de systèmes.
5.2 Comptage en points de fonction
5.2.1 Avantages
> La méthode des points de fonction est normalisée
> Elle utilisée dans de nombreuse entreprises pour mesurer
la complexité ou la taille d'une application
> Elle peut être réalisée très en amont dans le cycle de développement
de l'application
> Cette méthode est indépendante du langage et de la technologie
utilisée
> Elle permet de décomposer un grand projet en plusieurs sous
phases de tailles plus raisonnables pour être développées par
des équipes plus réduites
5.2.2 Inconvénients
> L'utilisation de cette méthode demande encore un travail
important, la présence d'un spécialiste de cette méthode et ne
peut pas encore être automatisée
> Le comptage d'une personne à une autre peut varier de 10%
contrairement à ce que la méthode présente théoriquement
> Cette méthode est conçue pour des applications de gestion
et non pour des applications industrielles, techniques ou d'ingénierie.
En effet, dans ces cas précis la méthode des points de fonction
ne permet pas d'apprécier la complexité de développement d'algorithmes
ou l'utilisation d'outils statistiques. Pour ce genre d'applications,
le nombre de lignes de code reste le mieux approprié.
6. Mesure de la productivité
6.1 Facteurs d'influence sur la productivité
Lorsqu'on cherche a estimer la productivité de développement
en étude de projet, ou lorsqu'on la calcule une productivité d'une
équipe en cours ou en fin de projet, différents facteurs sont
à prendre en compte pour affiner ou commenter ces mesures.
Taille du projet
La taille du projet est une des premières caractéristiques du
projet que l'on va chercher à mesurer afin de pouvoir estimer
la charge puis le délai de réalisation. Les premières études qui
ont tente de lier la taille du projet à la productivité de développement
ont montré que plus la taille était élevée, plus la productivité
diminuait. Ceci pourrait s'expliquer par la lourdeur des charges
administratives et de coordination et le renchérissement d'échelle
liés au gros projets. De récentes études ont à l'inverse, dégagé
une tendance selon laquelle la productivité augmenterait avec
la taille du projet. Plusieurs explications peuvent confirmer
cette tendance. Ces études s'appuient sur de larges échantillons
d'entreprises et de projets. Cette volonté de vouloir étudier
la productivité a permis de recueillir plus d'informations sur
un grand nombre de projets récents. Ces projets ont d'avantage
été marqué par des économies d'échelle. L'expérience de grands
projet a permis d'améliorer la productivité tant par le management
que par les techniques de développement. Il est possible de toutefois
retenir qu'il existe un optimum de la productivité pour chaque
entreprise. Cette productivité croîtrait donc avec la taille du
projet dans un certaine limite.
Expérience des équipes de développement
Toujours en s'appuyant sur de larges statistiques, il est possible
d'observer une relation entre la productivité et l'expérience.
Ainsi, les observations suivantes ont pu être faites :
L'expérience en méthodologie n'augmente pas pour autant la productivité.
Il est même intéressant de préciser à ce sujet qu'il est souhaitable
d'adapter la méthodologie à l'outil de mesure de complexité ou
de taille du projet. Ainsi une méthode Merisienne apparaît particulièrement
appropriée à une mesure en points de fonction. Une expérience
globale en informatique favorise la productivité. L'expérience
en programmation favorise d'avantage la productivité qu'une connaissance
particulière d'un langage de programmation. Une plus grande expérience
en matière de langage porte parfois sur un langage d'une ancienne
génération, ce qui peut entraîner une baisse de productivité pour
le développement utilisant les langages de dernière génération.
Cela marque aussi la tendance des programmeur à vouloir changer
de langage pour ne pas rester tributaire d'un langage obsolescent.

Tableau 5 : Productivité selon le langage
Délai de livraison
Les délais sont de plus en plus tendus, pour les respecter l'équipe
de développement est parfois obligée d'augmenter sa rapidité de
production. Cette rapidité a des répercutions tant sur le budget
que sur la production. Les deux graphiques suivant illustrent
d'une part l'influence d'une réduction du délai sur la charge
de travail et sur les effectifs et d'autre part l'influence d'une
réduction des effectif sur la charge de travail et le délai. Ainsi
une augmentation des effectifs raccourcira les délais dans des
proportions moindres tout en affectant la productivité. De même
une diminution des effectifs n'augmentera pas les délais de livraison
dans les mêmes proportions.

Tableau 6 : Influence du délai

Tableau 7 : Influence des effectifs
Qualité
On a coutume de dire : " plus on trouve d'erreurs, plus les
utilisateurs sont susceptibles d'en trouver aussi ". Gérer
la qualité tout au long du projet, ne peut que favoriser la productivité.
Une telle démarche peut réduire le nombre d'erreurs qui seront
révélées en phase de tests. Concernant les erreurs, l'expérience
montrent que : Le nombre d'erreurs augmente avec la taille du
projet mais en proportion plus réduite. Plus le projet mobilise
de ressources humaines, plus le nombre d'erreurs détectées est
élevé. Il n'existe pas de règles arithmétiques liant les effectifs
au délai.
Technologie utilisée
Le langage de programmation est un des facteurs le plus influent
sur la productivité. En plaçant la moyenne aux langages de troisième
génération, on constate que les langages de quatrième génération
et les générateurs de code sont plus productifs. Les langages
orientés objet ne présentent une productivité élevé car les modules
ne sont pas encore réutilisés dans les premiers temps d'utilisation,
ce qui normalement entraîne des gains de productivité. Des langages
comme Lotus, Access sont sans doute plus productifs, mais ces
langages évolués ont des domaines d'application plus réduits.
6.2 Facteurs engendrant des baisses de productivité
L'observation d'une baisse de productivité est liée à différents
facteurs, dont l'origine est souvent due à de mauvaises relations
entre développeurs et utilisateurs. Des baisses de productivité
sont constatées lors de :
> Difficultés de gestion de projet
> Mauvaises relations au sein de l'équipe de développement
> Difficulté d'interface avec d'autres applications
Recommandations :
Favoriser les relations entre utilisateurs et développeurs. Les
échanges permettent de mieux cerner les besoins et améliorent
la compréhension du projet et des aspects liés aux performances.
Il s'agit toutefois d'une recommandation qui s'avère parfois difficile
à mettre en œuvre. Les comptages en points de fonction peuvent
y contribuer dans leur réalisation, en effet ils nécessitent une
discussion et une compréhension du projet afin d'identifier les
différents composants.
|