|
Distinguer les types de maintenance logicielle est difficile pour plusieurs raisons :
* Activités qui se chevauchent : Les différentes catégories de maintenance (corrective, adaptative, perfective, préventive) se chevauchent souvent et se déroulent simultanément. Un seul changement peut résoudre un bug (correctif), améliorer les performances (parfait) et s'adapter à un nouveau système d'exploitation (adaptif) en même temps. Il est donc difficile de catégoriser clairement les efforts.
* Subjectivité dans la classification : La classification des activités de maintenance peut être subjective. Ce qu'un développeur considère comme une amélioration des performances, un autre pourrait le considérer comme une simple résolution d'un goulot d'étranglement. Il n’existe pas de définition unique et universellement acceptée pour chaque catégorie, ce qui entraîne des incohérences dans la classification.
* Manque de documentation claire : Les tâches de maintenance ne sont pas toujours méticuleusement documentées avec des raisons et des classifications claires. Cela rend difficile l’analyse rétrospective de la nature des efforts de maintenance passés. Une simple entrée « bug corrigé » dans un journal ne révèle pas si le correctif était un correctif rapide ou une analyse approfondie de l'architecture du système.
* Évolution du logiciel : À mesure que le logiciel évolue, l'objectif initial d'un composant ou d'un module peut changer au fil du temps. Ce qui était à l’origine considéré comme un correctif pourrait ensuite devenir la base d’une nouvelle fonctionnalité, brouillant ainsi la frontière entre maintenance corrective et perfective.
* Interdépendance des modules : Une modification dans une partie du logiciel peut avoir des conséquences inattendues dans d'autres parties, nécessitant d'autres modifications pouvant relever de différentes catégories de maintenance. Retrouver la raison initiale d’une tâche de maintenance devient de plus en plus complexe.
* Contraintes de temps et pression : Les développeurs sous pression pour fournir des correctifs rapidement pourraient ne pas prendre le temps de classer avec précision leur travail, privilégiant l'opportunité plutôt qu'une catégorisation méticuleuse.
Essentiellement, la maintenance logicielle est rarement un processus soigné et compartimenté. La fluidité du cycle de vie du développement logiciel et la complexité des grands systèmes font d'une catégorisation précise un défi de taille. Au lieu de classifications rigides, il est souvent plus pratique d'envisager un éventail d'activités de maintenance plutôt que des catégories distinctes.
|