SW stellt das Bindeglied zwischen den Anforderungen und der technischen Realisierung dar. Die Abbildung stellt diese Sicht dar. Aus dieser Perspektive leiten sich vier Typen von Wartungsaufgaben ab.
Corrective Maintenance ist die Suche und Beseitigung von Fehlern in der SW. In der Regel ist dies der kleinste Block der Wartungsaufwände.
Adaptive Maintenance umfasst Änderungen, die die SW an eine neue Umgebung anpassen. Dies kann Anpassungen an eine neue Laufzeitumgebung bedeuten (wie z.B. ein neuer Application Server oder eine neue Version der Datenbank), oder eine Migration in der Werkzeugkette.
Perfective Maintenance bezeichnet Aufgaben, die aufgrund geänderter Anforderungen notwendig werden. Hierbei kann es sich genauso um Verbesserungen
von nichtfunktionalen Anforderungen (z.B. Verbesserung der Antwortzeit oder Implementierung eines Sicherheitssystems) wie um die Erweiterung um neue
Funktionalität handeln.
Preventive Maintenance wird sowohl in der Praxis als auch in der Literatur häufig übersehen. Tätigkeiten, die ein System darauf vorbereiten, für zukünftig anfallende Änderungen besser strukturiert zu sein, dürfen aber auf keinen Fall vergessen werden. Die wichtigsten Aufgabengebiete in diesem Bereich umfassen eine Konsolidierung des Systems, das heißt ein "Aufräumen'' des Quellcodes, angefangen von der Entfernung nicht benutzten Codes über kleinere Änderungen durch Refactorings bis hin zur Einfügung neuer Schnittstellen für zukünftige Erweiterungen. Auch die nachträgliche Dokumentation fällt in diesen Bereich.
Es ist zu beachten, dass die hier gegebene Definition der vier Wartungstypen nicht überall einheitlich gehandhabt wird. Manche Quellen ignorieren die präventive Wartung; andere ordnen die Anpassung an neue Anforderungen der adaptiven Wartung zu, während sie die perfektive Wartung lediglich für den Feinschliff verwenden. Im Folgenden werden die vier Wartungstypen wie oben definiert und wie von der Abbildung suggeriert verwendet.
Nach Lientz und Swanson sind die Aufwände typischerweise etwa wie folgt verteilt: ca. 20% Bugfixes, 25% Adaptive, 55% Perfective. Präventive Wartung wird dort nicht separat erfasst.