Les premiers logiciels avaient souvent une liste d'insuffisances, de bogues et d'autres problèmes dus à une série de problèmes causés par l'inexpérience à la fois des développeurs et des utilisateurs potentiels. Au fil du temps, cinq domaines du processus de développement de logiciels ont été identifiés comme étant les principaux coupables des difficultés rencontrées.
Au début, les exigences n'étaient souvent pas clairement énoncées, ce qui obligeait à ajouter des fonctionnalités supplémentaires à des stades ultérieurs, causant souvent des problèmes majeurs lors de l'intégration des fonctionnalités supplémentaires dans la programmation existante. Aujourd'hui, les exigences sont clairement énoncées et consistent en des exigences testables convenues par toutes les parties concernées avant le début des travaux.
Les calendriers étaient souvent irréalistes, ce qui entraînait des procédures précipitées, causant souvent des bogues, etc. Aujourd'hui, un temps suffisant est accordé pour la planification, la conception et le développement.
Dans le passé, les installations d'essai n'étaient pas toujours adéquates, ce qui entraînait souvent des problèmes non résolus. De plus, les tests reposaient principalement sur des tests fonctionnels de base du produit final. Les installations de test d'aujourd'hui sont beaucoup plus sophistiquées et prennent en considération les logiciels d'utilisateurs. En d'autres termes, le logiciel est testé sur des utilisateurs réels à différents stades de développement avant d'être finalisé, afin de garantir une convivialité optimale.
- Faisabilité des changements
Lorsque des modifications tardives des exigences ont été présentées dans le passé, les développeurs ont souvent tenté à la hâte de les intégrer. Aujourd'hui, les changements sont discutés et si nécessaire, les horaires sont révisés afin de permettre une intégration transparente. Une fois intégré, le logiciel subira à nouveau le processus de test ci-dessus.
Les premiers développements de logiciels ont souvent été entravés par le manque de communication et de documentation. Aujourd'hui, de nombreux outils de communication, sources d'information et installations de documentation sont utilisés afin de garantir que l'équipe et l'utilisateur final restent informés de ce qui se passe, comment et quand à tout moment. De cette façon, les problèmes sont plus susceptibles d'être identifiés à un stade précoce.