Quantification du prix du code source et du produit logiciel


9

Je suis sur le point d'entreprendre un projet. Cela me nécessite d'écrire du code, et des tonnes de celui-ci. L'exigence du client est de remettre tout le code source à la fin du projet.

Ma question est: comment puis-je quantifier le prix du code source et du produit logiciel? Y a-t-il une mesure que l'on suit pour déterminer le prix? Comment pourrais-je quantifier le produit logiciel?

Informations supplémentaires: L'application doit s'exécuter n'importe où, dans n'importe quel système d'exploitation, y compris les tablettes (iPad, onglets Galaxy, etc.), les smartphones (iPhone, téléphones Android, etc.) et également sur le Web. (Maintenant, imaginez combien de code ce sera) .


2
Lorsque quelqu'un découvrira comment quantifier comme par magie le prix d'un produit logiciel en fonction d'exigences utilisateur en constante évolution, peu claires et souvent incomplètes, le monde s'améliorera. Mais toujours +1 à la question.
Arseni Mourzenko

La seule méthode fiable de tarification des logiciels: (1) écrire et tester le programme; (2) mesurer votre effort; (3) vendre le logiciel en fonction de l'effort que vous avez réellement déployé.
Doc Brown

Vous devriez vérifier Appcelerator , Air et Haxe (qui peuvent cibler les deux ou utiliser NME ).
back2dos

ce n'est pas spécifique à la programmation ou au logiciel, c'est une question générale sur les prix qui est déguisée en une question liée à la programmation.

I am about to undertake a project. This requires me to write code.... Programmeur + Projet = Code (généralement). Pourquoi énoncer l'évidence?
Dynamique

Réponses:


12

Vous ne pouvez jamais connaître un prix exact ou presque exact, car cela dépend de nombreux facteurs. Exemple:

Étude de cas

Vous avez reçu une demande pour un petit site Web basé sur WordPress. La seule chose que vous avez à faire: travaillez avec votre designer pour créer des graphismes attrayants, puis créez le site Web lui-même (rien de très technique, juste un ensemble de plugins à ajouter à WordPress), puis déployez-le. Le travail étant vraiment facile, vous l'avez cité 600 $.

Votre concepteur a créé le premier brouillon. Le client a expliqué qu'il ne le trouvait pas du tout attrayant. Il en va de même pour les deuxième, troisième et quatrième projets. Enfin, après deux semaines de travail acharné, le concepteur a finalement obtenu le projet qui a été accepté par le client.

Mais malheureusement, le concepteur a été heurté par un bus et la seule chose que vous avez obtenue, ce sont les fichiers JPEG qu'il vous a envoyés, mais pas les PSD d'origine, vous avez donc dû recommencer avec un nouveau concepteur. Enfin, vous avez obtenu les graphiques et commencé votre travail.

Surprise: vous avez découvert que le plugin A est incompatible avec le plugin B, que le plugin C ne fonctionne pas comme prévu, et que le plugin D ne peut pas être installé sur la dernière version de WordPress, alors que le plugin A ne peut être installé que sur cette nouvelle version. Maintenant, vous devez faire beaucoup de codage PHP à la main, et puisque vous êtes un développeur Python et que vous n'avez jamais écrit une seule ligne de code en PHP, ce n'est pas la tâche la plus simple.

Pendant ce temps, le client commence à vous envoyer des e-mails effrayants, vous demandant pourquoi le travail n'est pas déjà fait, alors que le délai était il y a une semaine. Vous avez enfin terminé le codage PHP, et tout fonctionne parfaitement bien sur votre machine. Le client est content.

Ensuite, vous commencez à déployer le site Web sur le serveur d'hébergement pour découvrir que non seulement le site Web échoue avec une erreur cryptique, mais que la société d'hébergement ne prend pas en charge une fonctionnalité de PHP que vous avez beaucoup utilisée dans votre code.

Enfin, après avoir dépensé plus de 3 000 $ pour ce projet, le site Web est opérationnel. Le client est en colère à cause des délais et parce que "rien ne fonctionne comme prévu avec vous". Souhaitez-vous demander 600 $? 3 000 $?

Pourquoi cela arrive-t-il?

Ce que j'ai illustré dans cet exemple se produit beaucoup plus souvent que vous ne le pensez. Pourquoi? Parce qu'il y a trop de variables que vous ne pouvez pas prévoir et qui augmentent le risque. Ici, le risque a été augmenté de:

  • Les spécifications peu claires liées à la conception visuelle,
  • La mort du créateur,
  • L'incompatibilité des plugins que vous avez sélectionnés,
  • Le mauvais support des plugins que vous avez sélectionnés,
  • Le fait que vous n'ayez jamais utilisé PHP auparavant,
  • La différence entre l'environnement de développement et l'environnement de production et l'absence de mise en scène.

On pourrait résoudre ces problèmes avec des approches spécifiques:

  • Exigences fonctionnelles et non fonctionnelles claires et précises,
  • Gestion des scénarios hit-by-a-bus (c'est-à-dire que le concepteur devait partager chaque document avec vous afin qu'il puisse être mort à tout moment sans compromettre le projet),
  • Connaissance préalable des outils et langages que vous devez utiliser (ce qui demande beaucoup de travail),
  • Stadification, tests intensifs, etc.

Le seul problème est qu'avec cette approche, vous devez dire à votre client qu'il paierait au moins 5000 $ en premier lieu, car il s'agit en fait du prix des exigences, des spécifications, de la conception, des tests, etc. Chances pour ce client d'accepter votre devis est extrêmement bas.

Il n'y a donc rien à faire?

Si vous ne pouvez pas donner un prix très précis, vous pouvez toujours donner une approximation, qui prend en compte chaque partie du travail à faire séparément, avec un indice de risque affecté à chaque partie. Plus le risque est prévisible, plus le prix est élevé.

Vous avez deux façons de procéder:

1. Voie Watefally

Si vous travaillez sur des projets qui correspondent à Waterfall / V-Model, cela peut fonctionner:

  1. Énumérez les exigences fonctionnelles et non fonctionnelles d'un projet. Faites signer le document par le client, de la même manière qu'il signe le contrat.

  2. Une fois que vous avez obtenu ce document, vous avez déjà:

    • Le prix que vous avez déjà dépensé pour rassembler les exigences et créer ce document. Cela peut représenter une somme d'argent importante, car ces documents peuvent varier de vingt à cent pages pour un projet ordinaire, et être des centaines ou des milliers de pages pour les grands projets.

    • La compréhension claire, précise et complète du produit que l'on vous demande de faire.

  3. Accompagnez votre équipe pas à pas, analysez chaque exigence et évaluez:

    • Un prix moyen de cette partie du projet,

    • Un prix maximum sans prendre en compte le risque,

    • Un indice de risque.

    Tous les trois seront pris en compte pour déterminer le prix que vous donnerez au client.

  4. Assurer le risque qui ne dépend pas d'une exigence spécifique, mais plutôt de la compatibilité entre les exigences ou le système en général.

Avantages de l'approche Waterfally: le client obtient un prix assez précis, étant donné que vous avez une vision très claire du travail à faire et des risques qui peuvent en découler.

Inconvénients de l'approche Waterfally: vous devez rédiger un document de 200 pages avant de donner le prix. Que se passe-t-il si le client annule le projet entre-temps ou s'adresse à votre concurrent? L'ensemble du processus est également extrêmement lourd et les exigences ne peuvent pas changer plus tard.

2. Manière agile

Si vous travaillez sur des projets qui correspondent à Scrum ou à d'autres modèles agiles:

  • soit ne donne pas le prix global du projet, mais plutôt les prix de chaque composant,
  • ou vous pouvez indiquer un prix global très approximatif au début, puis donner le prix de plus en plus précis.

Dans les deux cas, vous devez avoir une forte confiance entre vous et le client, ou avoir d'excellentes personnes au service des ventes. Autrement,

  • dans le premier cas, la personne croirait que vous êtes en train de lui voler son argent en lui demandant encore et encore de petits montants, et cela ne finira jamais,

  • dans le second cas, la personne ne comprendrait pas pourquoi vous changez votre prix tout le temps, surtout si le prix augmente la plupart du temps.

Avantages de l'approche Agile: le client peut annuler à tout moment. De plus, si elle annule à un stade précoce, elle a toujours du code source qui fonctionne.

Inconvénients de l'approche Agile: le prix est trop imprécis ou même pas donné. La plupart des clients ne voudraient pas faire affaire avec vous si vous ne leur dites pas combien ils devront payer.


3

N'acceptez pas un projet lorsqu'il n'est pas clair à la fois le résultat et l'argent que le client doit payer. Je fais juste ce qui suit:

  • Trouvez les étapes et les paiements que le client doit faire.
  • Lorsque l'étape précédente est terminée et entièrement payée et que le client est heureux de passer à la suivante.

Pour le mode de paiement, choisissez le paiement en fonction des fonctionnalités. Donc, si le client a la possibilité de supprimer les fonctionnalités s'il ne peut pas payer l'intégralité du projet.

Être payé en fonction des lignes de code (LOC) est une chose stupide. Parce que LOC ne veut rien dire!. Soyez intelligent, écrivez un bon code et facturez en fonction de la fonctionnalité!.

Bonne chance,


1
+1 pour indiquer LOC est une métrique incorrecte. Et les jalons sont le moyen intelligent d'être payé
JQA

0

N'acceptez pas de prix fixe pour un engagement à durée indéterminée. Vous serez foutu à chaque fois si vous le faites.


+1 'développement des prix fixes' était la stratégie de nombreuses entreprises en faillite
jqa
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.