J'ai essayé beaucoup de techniques formelles, mais ce que je reviens toujours à l'est: diviser le projet en une liste de modules que vous aurez en fait de l'écrire ou de le modifier. Regardez le nombre de différents écrans, le nombre de rapports, et tout particulièrement une logique complexe qui devra être développée. Puis deviner combien de temps il va prendre pour écrire chacune de ces pièces et de les additionner.
Oui, à bas niveau, il vous suffit de faire un certain nombre, mais si vous avez de l'expérience, vous devriez être en mesure de venir avec une assez bonne estimation pour "écrire un écran de saisie de nom et adresse du client type d'information et l'écrire dans la base de données". C'est quelque chose de gérable. Essayez d'estimer "écrire un système de paie" avec pas de rupture est beaucoup plus difficile.
C'est essentiellement l'idée de la fonction de point d'analyse. Si à l'aide des formules de la fonction d'analyse d'un point de vous aide à, aller de l'avant. Je le trouve plus facile à improviser quand j'arrive au niveau le plus bas.
Ne pas estimation basée sur l'hypothèse que le premier projet de code sera toujours parfaitement la première fois. Vous savez qui n'arrive jamais, sauf pour le plus trivial des programmes, mais les gens semblent toujours estimation basée sur cette hypothèse. Construire dans le temps pour la recherche et la correction de bugs. Prendre pour acquis qu'il y aura un certain nombre de particulier à de méchants bugs prendre un certain temps à comprendre.
Inclure le temps pour les tests. Et -- c'est ici où j'ai utilisé de tomber tout le temps -- inclure du temps pour corriger les bugs qui sont trouvés pendant le test, et puis pour une autre série de tests après les corrections. J'ai utilisé pour faire des estimations où j'ai dit que "2 semaines pour le test" ou que ce soit, en estimant combien de temps il faudrait que le groupe de test pour passer à travers le système, et puis à gauche au que les. Qui était muet. Bien sûr le groupe de test permettra de trouver des problèmes, et vous aurez à les corriger.
(Note: j'ai utilisé un chef testeur qui permettrait de fixer un objectif pour chaque nouvelle version de notre produit, qu'il serait de 100 bugs. Il voyait cela comme un défi personnel. Il devait parfois s'étirer à la définition d'un bug pour le faire, comme la prise en compte d'un mal orthographié étiquette sur un écran comme un "bug", mais il a presque toujours fait. C'est le meilleur type de testeur, vous pouvez avoir. J'ai souvent eu à expliquer à des testeurs que l'objectif de l'essai n'est pas à prouver qu'il n'y a pas de bugs, mais pour trouver les bugs qui sont sûrement là.)
En fonction de quelle partie du projet, vous êtes censé être de l'estimation et de la façon dont votre organisation, vous pouvez également besoin d'un plan pour la "clarification" pour les exigences et les plus de changements lorsque les utilisateurs considèrent que le programme est en cours de fonctionnement. Oui oui, on dit toujours que les exigences doivent être cloué vers le bas avant de commencer le codage et une fois que l'utilisateur se déconnecte aucun changement ne sera permis. Je n'ai jamais travaillé dans une entreprise où il s'est réellement passé de cette façon. Peu importe quelle est la politique qui est écrit sur un morceau de papier, dans la vraie vie, les utilisateurs de toujours trouver que même si vous avez mis en œuvre exactement ce qu'ils avaient demandé, quand ils le voient, dans la pratique, ça ne fonctionne pas vraiment, et donc il n'y aura plus de changements et de reprise.