paint-brush
Comment j'ai construit un calculateur de coût logicielpar@romanlapa
2,575 lectures
2,575 lectures

Comment j'ai construit un calculateur de coût logiciel

par Roman Lapa10m2023/04/26
Read on Terminal Reader

Trop long; Pour lire

Cet article détaille l'expérience de la création d'un calculateur de coûts de développement logiciel qui produit des estimations très précises. Lisez la suite pour découvrir comment la solution fonctionne sous le capot !
featured image - Comment j'ai construit un calculateur de coût logiciel
Roman Lapa HackerNoon profile picture
0-item
1-item

En tant que CTO d'une petite entreprise de développement de logiciels créant des solutions IoT personnalisées, j'aide mes coéquipiers à évaluer les coûts de développement d'applications lors de la préparation des estimations de projet pour nos prospects.


Comme nous travaillons principalement avec des startups, nos clients sont très sensibles à leur budget.

Idéalement, vous commencez chaque projet de développement logiciel par une phase de découverte et plongez dans les exigences fonctionnelles et non fonctionnelles d'un produit dès le début. En conséquence, vous pouvez définir l'ensemble des fonctionnalités du produit, des prototypes fonctionnels à un MVP en passant par un produit à part entière, et proposer une estimation réaliste et précise.


Idéalement, mais ce n'est pas le cas des startups qui fonctionnent avec peu de moyens, car la découverte coûte également de l'argent.*


Certains de nos clients peuvent également avoir des attentes irréalistes concernant le prix de développement d'une solution technologique. Nous avons tous entendu des blagues sur les startups cherchant à créer un clone de Facebook pour 10 000 $ - et le plus triste, c'est que certaines personnes pensent que c'est possible.


Par conséquent, je jouais avec l'idée de minimiser le travail d'évaluation de notre côté tout en donnant aux clients un prix approximatif pour donner vie à leur idée technologique avant même qu'ils ne contactent mon équipe. Une confrontation avec la réalité, si vous le souhaitez. 🙂


C'est ainsi que le concept du calculateur de coût logiciel s'est formé dans ma tête .


Geek dans l'âme et développeur mobile de profession, j'ai décidé de faire d'une pierre deux coups. Outre les objectifs mentionnés ci-dessus, j'ai également mis à l'épreuve mes connaissances sur Flutter. J'ai développé une application multiplateforme de calcul des coûts logiciels fonctionnant de manière transparente sur les appareils iOS et Android et dans les navigateurs sans recourir à JavaScript, ce qui, dans sa forme pure, me fait grincer des dents.


Flutter s'est avéré suffisamment stable et efficace pour cette tâche. J'envisage même de construire une calculatrice physique basée sur un ordinateur monocarte comme cadeau de Noël à nos fidèles clients. En outre, les autres développeurs peuvent utiliser la calculatrice pour évaluer le prix du développement d'une solution technologique particulière (ou d'un élément de celle-ci !) en dehors de leur expertise.


Quoi qu'il en soit, dans cet article, je détaille mon expérience dans la création de la solution - et les défis que j'ai rencontrés en cours de route.


Alors on y va.


Comment j'ai lancé l'idée du calculateur de coût de développement logiciel

Ok, ok, je sais ce que tu penses.


* Conception d'une solution logicielle, qu'il s'agisse d'une petite boutique en ligne ou d'une solution complète système de back-office pour orchestrer des unités de cryothérapie , est une longue route venteuse avec des centaines de virages possibles et d'embûches à éviter.*


Et à moins que vous n'ayez préparé un document exhaustif de spécification des exigences logicielles (SRS) répertoriant l'ensemble des fonctionnalités du produit, les exigences UI/UX, la pile technologique optimale, le public cible, les dispositions de conformité et une douzaine d'autres problèmes, il est impossible de mettre un prix sur ton application.


C'étaient exactement mes préoccupations. J'ai donc décidé de vérifier comment d'autres ingénieurs en logiciel abordaient le problème de précision des estimations avant moi.


Après avoir testé plusieurs calculateurs de coûts logiciels, j'ai identifié plusieurs problèmes à retenir lors de la création de ma solution :


  1. Les calculatrices des concurrents ignorent complètement les besoins d'un utilisateur non technique. Par exemple, comment diable suis-je censé savoir quels langages de programmation mon application utilisera si je débute en programmation ? Pour naviguer dans ce problème, je me suis assuré d'écrire un guide détaillé sur l'utilisation de ma calculatrice sur la page de destination qui l'accompagne.


  2. Certaines solutions estiment le prix de la mise en place d'une équipe logicielle plutôt que de la création d'un produit logiciel. À moins d'avoir déjà travaillé avec des sociétés d'ingénierie logicielle ou d'en avoir dirigé une vous-même, vous ne connaissez probablement pas les entrailles du développement logiciel, y compris la composition optimale d'une équipe logicielle et les rôles au sein de celle-ci. C'est pourquoi je me suis concentré sur les fonctionnalités du logiciel plutôt que sur les responsabilités du développeur et j'ai implémenté le modificateur de taux mixte pour simplifier les calculs.


  3. La plupart des calculatrices ne donnent qu'une estimation en échange d'une adresse e-mail professionnelle. Je suis un ingénieur logiciel, pas un spécialiste du marketing. 🙂 Je veux résoudre les problèmes des entreprises au lieu de les bombarder d'e-mails faisant la promotion de nos services ; s'ils ont besoin d'aide, ils nous écriront quand même ! C'est pourquoi ma calculatrice ne collecte aucune donnée et ne vous oblige pas à remplir de formulaire avant d'obtenir votre estimation. Nous savons seulement que quelqu'un a atterri sur la page de destination du calculateur de coût du logiciel, a coché toutes les cases et a reçu une estimation.

Comment ma calculatrice évalue le coût du développement de logiciels personnalisés

Ma calculatrice prend en compte la plate-forme cible d'une application et les fonctionnalités attendues pour produire des estimations précises des coûts du logiciel. Ensuite, divers modificateurs sont mis en œuvre pour réduire ou augmenter le prix des logiciels personnalisés en fonction de l'étape du projet et des implications spécifiques à l'industrie. Dans la dernière étape, les efforts de développement de logiciels, estimés en heures-personnes, sont multipliés par le taux mixte de l'équipe informatique.


Pour concevoir le dispositif d'évaluation, j'ai étudié plus de 20 projets réalisés par mon entreprise et une dizaine de projets issus des portefeuilles de nos partenaires. Ces projets variaient en taille et en complexité, allant des applications de réservation d'événements aux solutions de maison intelligente personnalisées. Certaines technologies et solutions, telles que l'intelligence artificielle et la réalité augmentée/réalité virtuelle, sont délibérément absentes de la calculatrice car je crée rarement de telles applications. Ainsi, la calculatrice reflète l'expertise de base de mon entreprise et je peux garantir l'exactitude de ses estimations.


Voici les principaux facteurs de coût pris en compte par le calculateur :


  • Plates-formes cibles. Une application conçue pour une plate-forme particulière (iOS, Android, Web ou une solution multiplateforme basée sur Flutter ) possède un ensemble de fonctionnalités minimales viables, totalisant les efforts de développement logiciel à X heures-personnes. Si nous construisons une solution multiplateforme, nous devons multiplier les heures par le nombre de plateformes cibles.


  • Prix caractéristique. Chaque fonctionnalité de l'application - par exemple, les profils d'utilisateur final ou d'administrateur - a une étiquette de temps minimale de Y heures-personnes. Les efforts augmentent proportionnellement lorsque vous ajoutez des sous-fonctionnalités pour améliorer la fonctionnalité d'une application.


  • Modificateurs. Les industries et les fonctionnalités logicielles ont des multiplicateurs de difficulté. Par exemple, j'ai augmenté le nombre d'heures de 20 % pour les projets informatiques de santé afin de résoudre d'éventuels problèmes de développement, tels que les intégrations avec les systèmes médicaux existants, la conformité, etc. Pour calculer les modificateurs de complexité, j'ai divisé la somme des fonctionnalités logicielles par l'heure totale. compter. Un modificateur constant ajoute les numéros de gestion de projet et d'assurance qualité à l'estimation. Lorsque les fonctionnalités d'une application et les plates-formes prévues ont été évaluées, le nombre est multiplié par 1,3, ce qui augmente le nombre d'heures de 30 %. Enfin, il y a le modificateur d'étape de projet, qui évalue le coût du développement logiciel en fonction de l'état de préparation du produit. Si un utilisateur souhaite uniquement concevoir l'interface de l'application, le devis final est multiplié par 0,16. Pour les prototypes fonctionnels, le modificateur est de 0,25. La version du produit minimum viable (MVP) d'une solution logicielle contenant juste assez de fonctionnalités pour être commercialisée a un modificateur de 0,5 à 0,75. Enfin, les efforts de développement en heures-personnes sont multipliés par 1 pour les produits prêts à être commercialisés.


  • Tarifs horaires des développeurs. Le prix de la création d'une solution logicielle personnalisée dépend de qui la fabrique. Les taux horaires des ingénieurs logiciels varient considérablement en fonction de la spécialisation, de l'expérience et du pays de résidence d'une personne. Selon une enquête récente d'Accelerance , ces tarifs peuvent aller d'aussi peu que 25 $ par heure-personne pour les développeurs mobiles en Asie du Sud à 172 $/heure (et ce n'est pas fini !) Pour les ingénieurs logiciels expérimentés basés en Amérique du Nord. Lors du développement de mon calculateur de coût logiciel, je l'ai programmé pour multiplier le décompte de l'heure finale par le taux pondéré d'une équipe de projet logiciel basée en Europe de l'Est, où mon entreprise opère. Actuellement, il fluctue autour de 41,6 $ par heure-personne.


Vous trouverez ci-dessous une formule qui résume les facteurs mentionnés ci-dessus pour produire une estimation :

Pour calculer le coût du développement de logiciels personnalisés, le calculateur basé sur Flutter évalue plusieurs paramètres, notamment le nombre de plates-formes prises en charge, l'étape du projet et la complexité des fonctionnalités logicielles.



Laissez-moi vous écrire ceci :


  1. Si une fonctionnalité n'est pas liée au mobile et ne nécessite pas d'implémentation sur plusieurs plates-formes, elle sera marquée comme featurePrice.


  2. avgFeatureComplexityMult augmente l'estimation en fonction de la pile technologique d'un projet et de l'industrie cible.


  3. productStageMultiplier indique l'étape souhaitée du produit, c'est-à-dire les consentements de conception, un prototype, un MVP ou une solution prête pour le marché.


  4. Les heures PM/QA sont obligatoires pour tous les projets sauf si le client s'occupe de la partie gestion et assurance qualité. Dans ce cas, cependant, aucun développeur ne peut garantir que des bogues ne se manifesteront pas dans le code. Une petite précision ici : certaines entreprises s'attendent à ce que leur fournisseur produise du code sans bogue dès le premier essai et se demandent vraiment pourquoi elles ont besoin d'une assurance qualité.


    Les clients matures, au contraire, ont des attentes adéquates concernant la qualité du code de test et investissent tôt dans l'assurance qualité pour éviter de traiter les bogues après le lancement.


La question est de savoir quelle est la précision de ces estimations ?


Compte tenu de mon expérience en tant que CTO et développeur Android senior, le calculateur de coût logiciel fournit des estimations ponctuelles pour tous les projets simples et les projets de complexité moyenne.


Pour les projets plus ambitieux impliquant des technologies innovantes, telles que l'Internet des objets, le calculateur peut réduire l'estimation finale de 10 à 13 %. Dans de tels cas, nous révisons le prix après avoir décidé de la pile technologique et de l'ensemble de fonctionnalités de la solution. Des révisions sont également nécessaires si votre système informatique intègre des fonctionnalités et des technologies omises du calculateur, telles que l'intelligence artificielle et les intégrations avec des services tiers.

Comment estimer votre projet à l'aide de My Software Cost Calculator

Un visiteur du site Web est tenu de renseigner les informations sur les caractéristiques suivantes d'une application :


  1. Type de solution. Cette section permet aux utilisateurs de sélectionner l'une des six catégories : l'Internet des objets, le commerce électronique, l'éducation, les voyages, l'éducation ou autre.
  2. Stade de projet. Comme je vous l'ai dit plus tôt, le modificateur d'étape de projet augmente ou réduit le coût du développement logiciel en fonction de l'état de préparation d'un produit logiciel. La différence entre les estimations des différentes étapes du produit peut également donner au client une idée de ce qu'il pourrait lui en coûter pour aller encore plus loin dans son concept, en améliorant la solution après sa sortie.
  3. Plates-formes cibles. La version actuelle de la calculatrice permet aux utilisateurs de choisir entre la pile technologique de développement d'applications mobiles natives (iOS, Android), les applications multiplateformes créées avec Flutter et les applications Web et tablettes. J'ai distingué la version tablette des applications mobiles en tant que catégorie autonome en raison de la forte personnalisation des interfaces utilisateur.
  4. Conception UI/UX. En fonction de la complexité attendue des actifs de conception, le modificateur UI/UX ajoute un certain nombre d'heures-personnes à l'estimation. J'ai inclus la fonctionnalité Animations dans la liste pour les clients qui cherchent à créer des transitions de navigation fluides entre les écrans d'une application dans des prototypes fonctionnels. L'estimation sera réduite si l'utilisateur est disposé à fournir ses propres éléments de conception.
  5. Rôles d'utilisateur. Le calculateur de coût du logiciel contient une section répertoriant les rôles d'utilisateur anticipés de l'application. Celles-ci vont des utilisateurs finaux aux solutions logicielles à plusieurs niveaux répondant aux besoins du personnel, des gestionnaires d'applications et des clients d'une entreprise.
  6. Langues prises en charge. Le calculateur de coût de développement logiciel augmentera l'estimation pour les sites Web et applications multilingues.
  7. Options de connexion. Ici, j'ai opté pour les trois mécanismes de connexion les plus utilisés - c'est-à-dire via un compte de réseau social, une adresse e-mail ou un mot de passe à usage unique (OTP).
  8. Service client. Un prospect souhaitant rester en contact avec ses clients peut choisir une ou plusieurs des options de support client disponibles, dont la complexité varie d'un formulaire de contact à un système de billetterie intégré.
  9. Stratégie de monétisation. Dans ce bloc, les utilisateurs peuvent choisir entre des achats uniques et des abonnements, ou se retirer de tout mécanisme de monétisation.
  10. Types de contenu. J'ai répertorié le texte, les photos, les vidéos et les fichiers audio comme les types de contenu les plus courants disponibles dans les solutions logicielles tout en ajoutant des fonctionnalités de diffusion en continu en tant que fonctionnalité distincte. Il est possible d'ajouter plusieurs options au devis.
  11. Chat en direct et appels audio/vidéo pour le support client. Dans le cadre de la fonctionnalité de support client décrite précédemment, les chats en direct peuvent permettre à plusieurs utilisateurs de rejoindre la conversation et d'échanger des fichiers. Les fonctionnalités d'appels audio et vidéo sont facturées séparément.
  12. Géolocalisation. Lors de la création de la calculatrice logicielle, j'ai configuré des cartes avec des épingles et des cartes avec routage comme principales options de géolocalisation.
  13. Réservations d'événements. L'estimation augmentera selon que votre application prendra en charge la fonctionnalité de réservation d'événements et selon qui peut l'exécuter (par exemple, les administrateurs ou les utilisateurs finaux).
  14. L'engagement des clients. J'ai choisi les notifications push et les liens profonds comme principaux mécanismes pour maintenir l'engagement des utilisateurs.
  15. Gratification et gratification. La calculatrice permet uniquement aux utilisateurs de choisir entre les goûts et les notes. Les utilisateurs peuvent également ajouter des fonctionnalités de gamification telles que des barres de progression et des tableaux de bord.
  16. Analytique. La calculatrice propose d'inclure des fonctionnalités d'analyse de base ou avancées dans l'ensemble des fonctionnalités de l'application. N'oubliez pas que nous ne parlons pas ici d'analyses basées sur l'IA.
  17. Conformité. Si une application personnalisée doit se conformer à certaines réglementations, telles que HIPAA, GDPR ou PCI/DSS, notre estimation est appelée à augmenter.
  18. Gestion de contenu. Enfin, le calculateur de coût logiciel demande aux utilisateurs de clarifier leurs besoins en matière de gestion de contenu, des capacités de création de contenu de base à un CMS approprié et au combo CMS plus visualisation de données.

En résumé

Hourra, nous avons réussi !


Maintenant que l'utilisateur dispose d'une estimation approximative, il peut l'ajuster en supprimant ou en ajoutant manuellement des fonctionnalités logicielles, en spécifiant l'étape du produit, etc.


Lors de la rédaction de cet article, j'ai également rempli le formulaire, en sélectionnant les caractéristiques d'un produit IoT médical personnalisé conforme à la loi HIPAA prêt à être mis sur le marché. La calculatrice m'a donné une estimation de 3390,4 heures-personnes, ou 140 992 $ si multiplié par le taux de l'équipe mixte (41,6 $).


Augmentons l'estimation de 10 %, en tenant compte des éventuelles divergences enracinées dans le type de projet ( IdO ) et l'industrie cible (santé), et nous obtiendrons 150 000 $.


Est-ce un prix réaliste pour une solution Internet des objets personnalisée ?


La suite logicielle de chambre cryogénique à laquelle j'ai fait référence au tout début de l'article aide notre client à gérer les unités cryogéniques connectées installées dans des dizaines de centres de fitness et de salons de spa à travers les États-Unis. Bien que le projet soit encore en développement et coûte plus de 1 000 000 $ sous sa forme actuelle , il y a deux ans, lorsque la solution logicielle a dépassé la barre des 3 000 heures-personnes, elle possédait à peu près les mêmes fonctionnalités que le projet imaginaire que j'ai essayé d'estimer à l'aide de la calculatrice.


Dans l'ensemble, je suis satisfait du résultat : j'ai testé Flutter avec succès, me rassuré sur ses solides capacités de développement multiplateforme, minimisé le travail d'évaluation de la part de mon équipe et permis à nos prospects d'obtenir des estimations réalistes de leurs projets logiciels avant contact avec une société de génie logiciel.


Mais comme je peux avoir toutes sortes de préjugés — après tout, c'est moi qui ai écrit le code ! — Je vous encourage à essayer la calculatrice et à partager vos réflexions sur sa fonctionnalité et sa précision !


Alors, appuyez sur la section des commentaires ci-dessous! Vos commentaires sont très appréciés !