Qu'est-ce qu'un point de fonction COSMIC, et en quoi diffère-t-il d'une estimation en heures ?

Mesterséges Intelligencia Központ Kft., société de développement logiciel basée à Budapest, mesure la taille du logiciel en points de fonction COSMIC : une propriété du logiciel, et non le ressenti de l'estimateur, donc vérifiable, mesurable à nouveau et utile pour comparer deux offres.

L'essentiel : COSMIC (ISO/IEC 19761) mesure la taille fonctionnelle d'un logiciel : chaque mouvement de données (entrée, sortie, lecture, écriture) vaut 1 point de fonction COSMIC (CFP). L'estimation en heures indique combien de travail l'estimateur prévoit ; la taille mesurée indique l'ampleur de la tâche. Elle est donc vérifiable, peut être mesurée à nouveau et permet de comparer deux offres ; l'effort peut ensuite être déduit de la taille et de la productivité observée dans la pratique.

Qu'est-ce que la mesure de la taille fonctionnelle ?

La taille d'un logiciel peut s'exprimer de bien des manières : en lignes de code, en heures, en points. La mesure de la taille fonctionnelle (en anglais functional size measurement, FSM) mesure ce que le logiciel doit savoir faire du point de vue de l'utilisateur, et non la manière dont il est réalisé. Ses notions de base sont fixées par la norme ISO/IEC 14143-1:2007 ; selon la description de la norme, l'objectif est précisément que la mesure porte sur les fonctions demandées par l'utilisateur plutôt que sur la manière de les réaliser.

La mesure repose sur l'ensemble des exigences fonctionnelles des utilisateurs (functional user requirements, FUR) : la partie des exigences des utilisateurs qui décrit les tâches et les services que le logiciel doit accomplir. La performance, la sécurité ou la technologie choisie n'en font pas partie. Nous en parlons plus bas, avec les limites.

Il existe plusieurs méthodes normalisées de mesure de la taille fonctionnelle. Les plus connues sont COSMIC (ISO/IEC 19761:2011) et la méthode IFPUG (ISO/IEC 20926:2009) ; l'ISO a aussi normalisé d'autres méthodes (NESMA, FiSMA, Mk II). Toutes partent des exigences, mais avec des règles et des unités de mesure différentes ; les nombres obtenus avec des méthodes différentes ne sont donc pas directement comparables.

Qu'est-ce que COSMIC ?

COSMIC est l'abréviation de Common Software Measurement International Consortium : une organisation à but non lucratif qui entretient la méthode et organise la certification des mesureurs. La méthode est née à la fin des années quatre-vingt-dix comme un prolongement des méthodes de points de fonction antérieures, elle est devenue une norme ISO en 2003, et l'édition actuellement en vigueur est l'ISO/IEC 19761:2011. La description détaillée de la méthode, le COSMIC Measurement Manual dans sa version 5.0, peut être téléchargée gratuitement ; sa première partie date de 2021, la seconde de 2024.

Selon la norme, la méthode convient pour mesurer des logiciels d'application (par exemple des systèmes de gestion), des logiciels temps réel et des combinaisons des deux. On peut donc mesurer avec elle aussi bien un système ERP, CRM ou de boutique en ligne qu'un logiciel de commande.

Les notions du modèle COSMIC

COSMIC décrit le logiciel au moyen d'un modèle simple : le logiciel échange des données avec ses utilisateurs fonctionnels à travers sa frontière, et à l'intérieur de cette frontière, il lit dans le stockage persistant et y écrit.

NotionSignificationExemple
Utilisateur fonctionnelcelui ou ce qui envoie des données au logiciel ou en attend de lui : une personne, un autre logiciel ou un appareille gestionnaire, le système de facturation
Frontièreinterface conceptuelle entre le logiciel mesuré et ses utilisateurs fonctionnelsl'interface web et l'interface ouverte vers les autres systèmes
Événement déclencheurévénement en réponse auquel l'utilisateur fonctionnel lance un processusun nouveau client se présente
Processus fonctionnelunité élémentaire des exigences, exécutable de manière autonome, suite cohérente de mouvements de données« enregistrement d'un nouveau client »
Groupe de donnéesensemble d'attributs de données portant sur une seule chose dont le logiciel doit gérer les donnéesle Client : nom, adresse, numéro fiscal, e-mail
Mouvement de donnéesle déplacement d'un seul groupe de données ; il en existe quatre typesvoir ci-dessous

Les quatre mouvements de données :

Quelques-unes des règles de mesure qui déterminent le décompte :

Le résultat se situe sur une échelle de rapport, ce qui signifie que les tailles peuvent être additionnées et comparées : deux parties de 40 CFP font ensemble 80 CFP, et le sous-total peut aussi être présenté par groupe de fonctions.

Exemple détaillé : « enregistrement d'un nouveau client »

Prenons une exigence simple : « Le gestionnaire enregistre les données d'un nouveau client (nom, adresse, numéro fiscal, e-mail). Le système vérifie que le client n'est pas déjà enregistré, sauvegarde les données et signale la réussite ou l'erreur. » Les étapes de la mesure :

  1. L'utilisateur fonctionnel est le gestionnaire, l'événement déclencheur est l'arrivée d'un nouveau client.
  2. Le groupe de données est le Client ; les quatre attributs portent sur la même chose, ils forment donc un seul groupe.
  3. Les mouvements de données sont identifiés à partir des phrases de l'exigence, et chacun d'eux est compté.
ÉtapeMouvement de donnéesGroupe de donnéesTaille
Le gestionnaire envoie le formulaireEntry (entrée)Client1 CFP
Le système vérifie si le client existe déjàRead (lecture)Client1 CFP
Le système enregistre le nouveau clientWrite (écriture)Client1 CFP
Retour sur la réussite ou sur toute erreurExit (sortie)message d'erreur et de confirmation1 CFP
Totalquatre mouvements de donnéesun groupe de données4 CFP

L'exemple « enregistrement d'un nouvel employé » du guide publié sur le site de COSMIC est construit de la même manière. Les modifications de l'exigence se reflètent ainsi dans la taille :

L'exemple montre aussi pourquoi la mesure est vérifiable : derrière chaque CFP se trouvent une exigence nommée, un groupe de données et une règle. Si quelqu'un la conteste, on peut indiquer précisément de quelle ligne il s'agit.

Mesurer tôt, affiner plus tard

Une mesure COSMIC commence par la définition de l'objectif et du périmètre de la mesure : ce que l'on mesure, ce qui en fait partie, et à quoi servira le résultat. Une mesure précise nécessite des exigences suffisamment détaillées pour identifier les processus fonctionnels et leurs mouvements de données. Au début d'un projet, elles n'existent souvent pas encore ; pour ce cas, COSMIC publie des méthodes d'approximation pour l'estimation précoce de la taille, et une fois les exigences élaborées, la mesure précise peut suivre.

Le guide de la méthode avertit aussi que de nombreux besoins qui semblent d'abord non fonctionnels (par exemple le temps de réponse ou la facilité d'utilisation) se transforment en fonctions logicielles au cours du projet, ce qui fait apparemment croître la taille. Ce n'est pas un défaut de la mesure : cela montre que l'exigence est devenue plus précise. En pratique, il est donc utile de rédiger la spécification poste par poste, de mesurer à nouveau les modifications avec la même méthode et de présenter séparément la taille de chaque modification. Ainsi, l'élargissement du périmètre ne se fait pas en silence, mais se voit en chiffres.

Comparaison : heures, story points, IFPUG, COSMIC

CritèreEstimation en heuresStory pointsPoints de fonction IFPUGPoints de fonction COSMIC
Ce qui est expriméle travail prévu par l'estimateurl'estimation relative de l'équipe ; on ne sait pas toujours s'il s'agit de taille, d'effort ou de duréeune taille fonctionnelleune taille fonctionnelle
Normalisénonnonoui, ISO/IEC 20926:2009oui, ISO/IEC 19761:2011
Dépend del'expérience, la prudence et l'équipe de l'estimateurl'équipe concernée ; le sens varie d'une équipe à l'autreles exigencesles exigences
Vérifiable de l'extérieurseulement à partir des explications de l'estimateurà peine, hors de l'équipeoui, selon des règles publiquesoui, selon des règles publiques et librement accessibles
Unité de mesureheurele point propre à l'équipepoint de fonction IFPUGCFP, 1 CFP = 1 mouvement de données
Usage privilégiéplanifier des tâches courtes et bien connuesla planification des sprints au sein de l'équipemesurer la taille, comparermesurer la taille, comparer, servir de base à l'offre et au calendrier

L'estimation en heures n'est pas un mauvais outil, elle mesure simplement autre chose : le travail attendu, qui dépend non seulement de la taille de la tâche, mais aussi des compétences, des outils et de la prudence de l'équipe. Les story points sont utiles pour la planification au sein d'une équipe, mais selon le guide publié sur le site de COSMIC, ils sont subjectifs et leur signification varie d'une équipe à l'autre. IFPUG et COSMIC sont tous deux des tailles fonctionnelles normalisées, mais avec des règles différentes ; les nombres des deux méthodes ne sont donc pas interchangeables.

Pourquoi la taille mesurée est-elle une base plus fiable ?

Pour répondre précisément à la question posée dans le titre : COSMIC n'estime pas les heures plus précisément, il mesure l'ampleur de la tâche, et c'est ce qui rend l'estimation de l'effort plus fiable. Les raisons :

Le guide COSMIC cite plusieurs études dans lesquelles la taille mesurée en CFP suivait l'effort réel de plus près que les estimations exprimées en story points. Ce même guide avertit aussi qu'une estimation de l'effort déduite de la taille est fiable lorsque le processus de développement est suffisamment reproductible et que l'effort est déterminé avant tout par la taille. La taille mesurée est donc un meilleur point de départ, mais une bonne estimation exige aussi de connaître la productivité.

Que ne mesure pas COSMIC ?

La taille COSMIC mesure les fonctions, et la description de la méthode le dit ouvertement. Ce qu'elle n'exprime pas :

C'est pourquoi une bonne offre présente séparément, à côté de la taille mesurée, ce que la taille n'exprime pas : les intégrations, les exigences non fonctionnelles, l'interface et les graphismes sur mesure, les plateformes multiples, la migration des données, les calculs complexes et le fonctionnement en temps réel. Dans nos offres, ces postes figurent de cette manière ; nous en parlons sur la page Tarification.

Comment l'utilisons-nous dans notre propre travail ?

Nous mesurons la taille fonctionnelle d'un développement en points de fonction COSMIC. Pour la mesure, nous avons construit notre propre flux de travail assisté par l'intelligence artificielle, et une personne vérifie le résultat lors d'une phase de revue. Les étapes :

  1. Spécification poste par poste : nous découpons le développement en groupes de fonctions et décrivons chacun avec le même modèle : objectif, acteurs, données, fonctions, fonctions d'IA, et ce qui n'en fait pas partie (voir Notre méthode de travail).
  2. Plusieurs comptages indépendants : plusieurs modèles de langage comptent chaque groupe de fonctions, à plusieurs reprises ; la dispersion des comptages indique l'incertitude.
  3. Phase de rapprochement : elle garantit que chaque processus fonctionnel compte exactement une fois, même s'il figure dans plusieurs descriptions.
  4. Revue : nous relisons la mesure, clarifions les points incertains et, si nécessaire, corrigeons à la main les regroupements automatiques.
  5. Verrouillage : la mesure terminée peut être figée sous forme de version non modifiable, qui devient la base du contrat.

Lors de l'évolution d'un système existant, nous décrivons séparément la partie existante ; seule la nouvelle partie entre ainsi dans la taille. La mesure signale aussi ce que la taille fonctionnelle n'exprime pas.

Comment la taille devient-elle une offre et un calendrier ?

Le prix de l'offre découle de la taille mesurée, complété par les postes que la taille n'exprime pas. Comme nous voyons aussi la taille par groupe de fonctions, nous construisons le calendrier sur elle : l'ordre des étapes, le contenu des démonstrations et les échéances. Si un nouveau besoin apparaît en cours de route, nous le mesurons de la même manière, et l'on voit de combien le périmètre change et ce que cela implique pour le prix et le calendrier. C'est pourquoi nous ne donnons un prix et un délai concrets qu'après la mesure, et non sur la base d'un premier entretien.

Comparer deux offres d'après la taille

Si vous demandez des offres à plusieurs développeurs, la taille aide à déterminer si elles portent sur la même tâche. Voici une bonne façon de procéder :

  1. La même spécification : chaque soumissionnaire reçoit la même description poste par poste.
  2. La taille et la liste des processus : demandez pour quelle taille et pour quels processus fonctionnels le prix a été établi.
  3. Les raisons des écarts : si deux offres diffèrent, regardez si elles divergent par la taille, par les postes que la taille n'exprime pas ou par le prix unitaire.
  4. Les postes séparés : demandez ce qui figure sur une ligne à part (intégration, migration des données, exploitation) et ce que le prix ne comprend pas.
  5. La gestion des modifications : demandez comment les modifications en cours de route sont mesurées et tarifées.

Si un soumissionnaire ne mesure pas la taille fonctionnelle, son offre reste comparable s'il a établi son prix sur la même liste détaillée de processus. Nous parlons des autres critères de choix d'un développeur dans l'article Comment choisir une société de développement logiciel ? ; et l'article Logiciel sur mesure ou solution prête à l'emploi ? aide à décider si un développement sur mesure est nécessaire.

Questions fréquentes

Qu'est-ce qu'un point de fonction COSMIC ?

Le point de fonction COSMIC (CFP) est l'unité de mesure de la taille fonctionnelle d'un logiciel selon la norme ISO/IEC 19761. Un CFP correspond à un mouvement de données : l'entrée, la sortie, la lecture ou l'écriture d'un groupe de données dans un processus fonctionnel. La taille du logiciel est la somme des mouvements de données de ses processus.

En quoi diffère-t-il d'une estimation en heures ?

L'estimation en heures indique le travail attendu, et dépend de l'estimateur et de l'équipe. COSMIC mesure la taille de la tâche à partir des exigences, selon des règles publiques ; une autre personne peut donc parvenir au même résultat à partir de la même spécification. Les heures peuvent ensuite être déduites de la taille et de la productivité observée dans la pratique.

Que ne mesure pas COSMIC ?

Selon la norme, la méthode n'a pas été conçue pour mesurer des algorithmes mathématiques complexes ni le traitement de signaux continus (son, image), et elle n'exprime pas non plus en CFP les véritables exigences non fonctionnelles, comme les contraintes de performance ou de technologie. Une bonne offre les présente comme des postes séparés.

Qui effectue la mesure, et peut-on la vérifier ?

La mesure est effectuée par un mesureur qui connaît la méthode ; chez nous, un flux de travail assisté par l'IA effectue le décompte, et une personne revoit le résultat. Les règles sont publiques et la mesure est documentée processus par processus ; un autre spécialiste connaissant la méthode peut donc la vérifier à partir de la même spécification.

Comment la taille devient-elle une offre ?

Le prix découle de la taille mesurée, complété par ce que la taille n'exprime pas : intégrations, exigences non fonctionnelles, graphismes sur mesure, plateformes multiples, migration des données. Le calendrier repose sur la taille par groupe de fonctions, et nous mesurons les modifications de la même manière. Les détails figurent sur la page Tarification.

Comment pouvons-nous vous aider ?

Si vous envisagez un logiciel sur mesure, nous rédigeons ensemble la spécification poste par poste, mesurons sa taille en points de fonction COSMIC et en tirons l'offre et le calendrier. Sur demande, nous signons un accord de confidentialité (NDA), et après la livraison nous assurons aussi l'exploitation et la maintenance. Le code source et les droits d'utilisation sont régis par le contrat. Le premier échange est gratuit : écrivez-nous via les coordonnées indiquées sur la page Contact.

Sources