Softwareevolution - Wartung, Reengineering und Weiterentwicklung von Software

Software wird oftmals über Jahre hinweg einsatzbereit gehalten und funktional erweitert, unabhängig davon, ob es sich dabei um lokal verfügbare Software handelt ("on Premise") oder um cloudbasierte Software. Welche Vorgehensweisender Informatik werden angewendet, um Software zu warten und weiterzuentwickeln? Welche Standards gibt es hier? Kann ich Fehler überhaupt verhindern? Wie überarbeite ich Software ohne notwendigerweise die Funktionalität zu verändern? Das vorliegende Skript ist aus einer Vorlesung entstanden, die der Autor seit 2007 am Institut für Informatik der Universität Heidelberg hält.