ScholarGate
Assistant

Maintenance et évolution des logiciels

La maintenance et l'évolution des logiciels concernent la modification des logiciels après leur livraison et la dynamique à long terme par laquelle les systèmes doivent continuellement changer pour rester utiles.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

La maintenance logicielle est la modification d'un produit logiciel après sa livraison afin de corriger des défauts, d'améliorer ses performances ou de l'adapter à un environnement modifié. L'évolution logicielle est le processus plus large et continu par lequel un logiciel se transforme tout au long de son cycle de vie en réponse à l'évolution des exigences et des environnements.

Scope

Ce domaine couvre les catégories de maintenance (corrective, adaptative, perfective, préventive) ; les lois empiriques de l'évolution des logiciels ; la compréhension des programmes et l'analyse d'impact ; la réingénierie, l'ingénierie inverse et la migration des systèmes hérités ; l'accumulation et la gestion de la dette technique ; ainsi que les processus et normes régissant la maintenance, tels que la norme ISO/IEC 14764.

Sub-topics

Core questions

  • Quelles catégories de changements constituent la maintenance, et comment diffèrent-elles ?
  • Quelles lois empiriques régissent la manière dont les logiciels doivent évoluer au fil du temps ?
  • Comment les logiciels hérités sont-ils compris, restructurés et migrés ?
  • Comment la dette technique s'accumule-t-elle et comment est-elle gérée ?

Key theories

Catégories de maintenance logicielle
La maintenance est classée en corrective (correction de défauts), adaptative (réponse aux changements d'environnement), perfective (amélioration des fonctions ou des performances) et préventive (amélioration de la maintenabilité), les travaux adaptatifs et perfectifs dominant en pratique.
Lois de Lehman sur l'évolution des logiciels
Lehman a observé que les systèmes en usage actif doivent continuellement changer ou devenir progressivement moins satisfaisants, et qu'à mesure qu'ils évoluent, leur complexité augmente à moins qu'un travail ne soit effectué pour la réduire.

Clinical relevance

La maintenance consomme généralement la majeure partie du coût total de cycle de vie d'un système. Par conséquent, la compréhension des dynamiques d'évolution, le contrôle de la croissance de la complexité et la gestion de la dette technique sont décisifs pour la viabilité et l'économie à long terme des logiciels.

Evidence & guidelines

La norme ISO/IEC 14764 définit le processus de maintenance logicielle, et le domaine de connaissances sur la maintenance logicielle du SWEBOK fournit des orientations consensuelles sur les catégories, activités et techniques de maintenance.

History

La reconnaissance que la maintenance domine le coût des logiciels s'est développée dans les années 1970 ; Lehman et Belady ont formulé les lois de l'évolution logicielle à partir d'études empiriques de grands systèmes, et les techniques de réingénierie et de modernisation des systèmes hérités se sont développées à mesure que les systèmes à longue durée de vie vieillissaient et que la dette technique devenait une préoccupation reconnue.

Debates

Maintenir, réingénieriser ou remplacer les systèmes hérités
Décider de continuer à maintenir, de restructurer ou de remplacer entièrement un système vieillissant est un débat stratégique récurrent, qui met en balance le risque et le coût du remplacement avec le coût croissant et la fragilité d'une maintenance continue.

Key figures

  • Meir M. Lehman
  • Les Belady
  • Ian Sommerville

Related topics

Seminal works

  • lehman1980
  • iso14764
  • sommerville2015

Frequently asked questions

La maintenance se limite-t-elle à la correction de bogues ?
Non. La correction de bogues (maintenance corrective) n'est qu'une catégorie ; la majeure partie de l'effort de maintenance est adaptative et perfective — ajuster le logiciel à de nouveaux environnements et ajouter ou améliorer des fonctionnalités — ce qui, combiné, dépasse le travail correctif dans les systèmes typiques.
Pourquoi la complexité des logiciels tend-elle à augmenter avec le temps ?
Comme l'a observé Lehman, les changements continus pour satisfaire des besoins évolutifs ajoutent de la structure et des cas particuliers ; à moins qu'un effort délibéré ne soit consacré à la restructuration et à la réduction de la complexité, le système devient progressivement plus difficile à modifier.

Methods for this concept

Related concepts