# 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](https://www.iso.org/standard/38931.html) ; 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](https://www.iso.org/standard/54849.html)) et la méthode IFPUG ([ISO/IEC 20926:2009](https://www.iso.org/standard/51717.html)) ; 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](https://cosmic-sizing.org/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.

| Notion | Signification | Exemple |
|---|---|---|
| Utilisateur fonctionnel | celui ou ce qui envoie des données au logiciel ou en attend de lui : une personne, un autre logiciel ou un appareil | le gestionnaire, le système de facturation |
| Frontière | interface conceptuelle entre le logiciel mesuré et ses utilisateurs fonctionnels | l'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 processus | un nouveau client se présente |
| Processus fonctionnel | unité é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ées | ensemble d'attributs de données portant sur une seule chose dont le logiciel doit gérer les données | le Client : nom, adresse, numéro fiscal, e-mail |
| Mouvement de données | le déplacement d'un seul groupe de données ; il en existe quatre types | voir ci-dessous |

Les quatre mouvements de données :

- **Entry (entrée) :** un groupe de données arrive de l'utilisateur fonctionnel dans le processus, à travers la frontière.
- **Exit (sortie) :** un groupe de données part du processus vers l'utilisateur fonctionnel, à travers la frontière.
- **Read (lecture) :** le processus lit un groupe de données dans le stockage persistant.
- **Write (écriture) :** le processus écrit un groupe de données dans le stockage persistant ; la suppression compte aussi comme une écriture.

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

- Chaque mouvement de données vaut 1 CFP. La taille d'un processus fonctionnel est la somme de ses mouvements de données, et celle du logiciel est la somme des tailles de ses processus.
- Tout processus fonctionnel comprend au moins deux mouvements de données : une entrée déclenchante et au moins une sortie ou une écriture.
- Au sein d'un processus, un même type de mouvement d'un même groupe de données ne compte qu'une fois, quel que soit le nombre de champs qu'il contient.
- L'ensemble des messages d'erreur et de confirmation d'un processus compte comme une seule sortie.
- La taille dépend des types, et non des occurrences : que l'on enregistre dix ou dix mille clients par jour ne change rien à la taille.
- La méthode ne mesure pas séparément le traitement des données (calcul, contrôle) : il fait partie du mouvement de données concerné.

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é.

| Étape | Mouvement de données | Groupe de données | Taille |
|---|---|---|---|
| Le gestionnaire envoie le formulaire | Entry (entrée) | Client | 1 CFP |
| Le système vérifie si le client existe déjà | Read (lecture) | Client | 1 CFP |
| Le système enregistre le nouveau client | Write (écriture) | Client | 1 CFP |
| Retour sur la réussite ou sur toute erreur | Exit (sortie) | message d'erreur et de confirmation | 1 CFP |
| Total | quatre mouvements de données | un groupe de données | 4 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 :

- Si le système doit aussi transmettre le nouveau client au système de facturation, c'est une sortie supplémentaire vers un autre utilisateur fonctionnel : 5 CFP.
- Si le code postal doit être vérifié dans une table des communes, c'est une lecture supplémentaire, car elle porte sur un autre groupe de données : 1 CFP de plus.
- Si le formulaire demande douze champs sur le client au lieu de quatre, la taille ne change pas, car le groupe de données reste le même.
- Si un processus existant doit être modifié, la taille de la modification est la somme des mouvements de données ajoutés, modifiés et supprimés.

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ère | Estimation en heures | Story points | Points de fonction IFPUG | Points de fonction COSMIC |
|---|---|---|---|---|
| Ce qui est exprimé | le travail prévu par l'estimateur | l'estimation relative de l'équipe ; on ne sait pas toujours s'il s'agit de taille, d'effort ou de durée | une taille fonctionnelle | une taille fonctionnelle |
| Normalisé | non | non | oui, ISO/IEC 20926:2009 | oui, ISO/IEC 19761:2011 |
| Dépend de | l'expérience, la prudence et l'équipe de l'estimateur | l'équipe concernée ; le sens varie d'une équipe à l'autre | les exigences | les exigences |
| Vérifiable de l'extérieur | seulement à partir des explications de l'estimateur | à peine, hors de l'équipe | oui, selon des règles publiques | oui, selon des règles publiques et librement accessibles |
| Unité de mesure | heure | le point propre à l'équipe | point de fonction IFPUG | CFP, 1 CFP = 1 mouvement de données |
| Usage privilégié | planifier des tâches courtes et bien connues | la planification des sprints au sein de l'équipe | mesurer la taille, comparer | mesurer 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 :

- **Elle mesure l'exigence, et non la réalisation.** La taille fonctionnelle découle uniquement des exigences ; elle est donc indépendante de la technologie, du processus et de la personne qui développe le logiciel.
- **Elle peut être mesurée à nouveau selon des règles publiques.** Les règles sont publiques et le résultat de la mesure doit être documenté ; un autre mesureur peut donc le vérifier à partir de la même spécification.
- **La taille et la productivité sont séparées.** L'estimation de l'effort découle de la taille et d'une productivité observée dans la pratique (effort = taille / productivité). On voit ainsi quel facteur change, et pourquoi.
- **La mesure améliore les exigences.** Selon le guide COSMIC, une mesure précoce aide à repérer les exigences ambiguës, contradictoires ou manquantes.
- **Elle est comparable.** Pour la même spécification, deux offres obtiennent la même taille ; les prix portent donc sur le même périmètre.

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 :

- **Les algorithmes complexes.** Selon la norme, la méthode n'a pas été conçue pour mesurer des logiciels caractérisés par des algorithmes mathématiques complexes ou par des systèmes de règles particuliers (par exemple un système expert, une simulation, un logiciel auto-apprenant, la prévision météorologique).
- **Le traitement de signaux continus.** Le traitement du son et de l'image, ainsi que, par exemple, les parties de ce type des jeux vidéo, sortent également du champ d'application de la norme.
- **Les véritables exigences non fonctionnelles.** Selon la méthode, les contraintes technologiques, de performance et de projet doivent être consignées, mais elles ne sont pas mesurées en CFP.
- **Le travail de création.** Selon le guide COSMIC, les tâches purement créatives, comme la création artistique, ne relèvent pas de la méthode ; la taille n'exprime donc pas le travail graphique et de conception visuelle sur mesure.
- **La mise en place d'une solution prête à l'emploi.** Si les exigences sont en grande partie couvertes par le paramétrage d'un produit existant, il vaut mieux estimer l'effort d'une manière propre à cette solution.

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](https://www.mestersegesintelligenciakozpont.hu/fr/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](https://www.mestersegesintelligenciakozpont.hu/fr/methode-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 ?](https://www.mestersegesintelligenciakozpont.hu/fr/base-de-connaissances/choisir-une-societe-de-developpement-logiciel) ; et l'article [Logiciel sur mesure ou solution prête à l'emploi ?](https://www.mestersegesintelligenciakozpont.hu/fr/base-de-connaissances/logiciel-sur-mesure-ou-pret-a-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](https://www.mestersegesintelligenciakozpont.hu/fr/tarification).

## Comment pouvons-nous vous aider ?

Si vous envisagez un [logiciel sur mesure](https://www.mestersegesintelligenciakozpont.hu/fr/services/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](https://www.mestersegesintelligenciakozpont.hu/fr/contact).

## Sources

- [COSMIC : Measurement Manual v5.0, Part 1: Principles, Definitions and Rules (PDF)](https://cosmic-sizing.org/wp-content/uploads/2020/06/Part-1-MM-Principles-Definitions-Rules-v5.0-Aug-2021.pdf)
- [COSMIC : Measurement Manual v5.0, Part 2: Guidelines (PDF)](https://cosmic-sizing.org/wp-content/uploads/2024/09/Part-2-MM-Guidelines-v5.0-Sep-2024.pdf)
- [COSMIC : A Guide to Software Size Measurement (PDF)](https://cosmic-sizing.org/wp-content/uploads/2020/08/Measuring-software-size-v1.0-August-2020-1.pdf)
- [COSMIC : Measurement Manual (téléchargements)](https://cosmic-sizing.org/measurement-manual/)
- [ISO : ISO/IEC 19761:2011, COSMIC: a functional size measurement method](https://www.iso.org/standard/54849.html)
- [ISO : ISO/IEC 14143-1:2007, Functional size measurement, Part 1: Definition of concepts](https://www.iso.org/standard/38931.html)
- [ISO : ISO/IEC 20926:2009, IFPUG functional size measurement method](https://www.iso.org/standard/51717.html)
