Softwarewartung

Grundlagen, Management und Wartungstechniken

Glossar

Adaptive Wartung
Die adaptive Wartung bezeichnet die Anpassung des Systems an ein verändertes Umfeld und wirkt so dem → lack of movement entgegen (s. auch [IEEE610]).
Änderungsantrag
Ein Änderungsantrag ist ein Überbegriff für Änderungsbegehren an einem Softwaresystem. Der Begriff lässt sich unterteilen in die beiden Gründe für ein solches Begehren: einerseits in eine Fehlermeldung und andererseits in einen Verbesserungsantrag. Muss ein System wegen eines Fehlers angepasst werden, stellt man eine Fehlermeldung aus. Möchte man das System hingegen um eine neue Funktion erweitern, erfasst man einen Verbesserungsantrag.
Auswirkungsanalyse
Ziel der Auswirkungsanalyse ist es, den Effekt, den eine Änderung oder Erweiterung eines Softwaresystems auf andere Module in diesem wie auch auf andere Systeme hat, zu identifizieren.
Blackbox-Test
Ein Blackbox-Test ist ein Testfall, der zur Erstellung keine Information über die innere Struktur des Systems (Testobjekts) benötigt. Man betrachtet das System lediglich von außen.
Design by Contract
Design by Contract (dt. Entwurf gemäß Vertrag) oder kurz DBC ist ein Konzept aus dem Bereich der Softwareentwicklung. Ziel ist das reibungslose Zusammenspiel einzelner Programmmodule durch die Definition formaler »Verträge«, die beispielsweise bei der Verwendung einer Methode einzuhalten sind. Solche Verträge bestehen aus Vorbedingungen (precondition) und Nachbedingungen (postcondition). Die Erfüllung der Vorbedingung durch den Methodennutzer erzwingt die Erfüllung der Nachbedingungen durch den Methodenanbieter.
Entropie
Die Entropie ist eine physikalische Grundgröße der Thermodynamik. In diesem Buch wurde der Begriff aber als Maß der Unordnung verwendet. Dabei bedeutet eine kleine Entropie eine hohe Ordnung und eine große Entropie eine große Unordnung.
Fehler
Das Wort Fehler dient einerseits als Oberbegriff für → Fehlhandlung, → Fehlerzustand und → Fehlerwirkung, bezeichnet aber auch die Nichterfüllung einer festgelegten Anforderung, also eine Abweichung zwischen dem Istverhalten und dem Sollverhalten (→ Mangel).
Fehlerwirkung (failure)
Die Wirkung eines → Fehlerzustands, die bei der Ausführung des Testobjekts nach außen in Erscheinung tritt, zum Beispiel durch einen falschen Ausgabewert oder einen Programmabsturz.
Fehlerzustand (fault)
Der Fehlerzustand ist die Ursache für eine → Fehlerwirkung und manifestiert sich als inkorrektes Teilprogramm, eine inkorrekte Anweisung oder Datendefinition.
Fehlhandlung (error)
  1. Die menschliche Handlung (des Entwicklers), die zu einem → Fehlerzustand in der Software führt.
  2. Eine menschliche Handlung (des Anwenders), die ein unerwünschtes Ergebnis zur Folge hat (Fehlbedienung).
Gewährleistung
Unter Gewährleistung versteht man die gesetzliche Verpflichtung des Verkäufers – nicht des Produktherstellers – gegenüber dem Käufer, eine Sache oder ein Werk im mangelfreien Zustand abzuliefern. Rechte, die der Käufer aus der Gewährleistung hat, sind Nacherfüllung, Rücktritt vom Vertrag oder Minderung und Schadensersatz. Die Gewährleistung ist im Zivilrecht geregelt.
Ignorant surgery
David Lorge Parnas bezeichnet mit ignorant surgery (dt. unachtsamer Eingriff) einen Grund, weshalb Softwarewartung nötig ist. Softwaresysteme basieren auf klaren Architekturgrundsätzen. Wenn bei späteren Codeanpassungen Änderungen am System von Leuten vorgenommen werden, die diese zugrunde liegenden Architektur- und Designprinzipen nicht kennen oder beachten, führt dies in der Regel zur Verwässerung dieser Konzepte und einer Verschlechterung der inneren Struktur.
Instandhaltung
Die Instandhaltung bezeichnet die Behebung schwerer → Mängel. Da schwere Mängel oft den Stillstand ganzer Systeme bedeuten, muss entsprechend schnell reagiert werden. Wenn beispielsweise sämtliche Bankomaten in einem Landesteil ausgefallen sind, muss möglichst schnell das System wieder instand gesetzt werden. Daher ist die Instandhaltung ereignisgetrieben und nicht planbar.
Kohäsion
Maß für den inneren Zusammenhalt einer Softwareeinheit.
Komplexität
Informatiksysteme weisen eine hohe Komplexität auf, wenn sie eine geringe → Kohäsion und eine hohe → Kopplung aufweisen. Die einzelnen Softwarekomponenten haben also einen geringen Zusammenhalt, sind aber untereinander zu stark vernetzt.
Kopplung
Maß für die Vernetztheit von Softwareeinheiten.
Korrektive Wartung
Die Aufgabe der korrektiven Wartung ist das Beheben von Softwarefehlern, die nach der Auslieferung aufgetreten sind (vgl. [IEEE610]). Hierbei handelt es sich um → Restfehler. Dabei wird in der korrektiven Wartung unterschieden zwischen:
  • Instandhaltung des Systems, also der Behebung schwerer Mängel (→ Instandhaltung) und
  • der Mängelkorrektur, also der Beseitigung mittelschwerer und leichter Mängel (→ Mängelkorrektur).
Lack of movement
Mit lack of movement (dt. fehlende Anpassung) nennt David Lorge Parnas einen weiteren Grund, weshalb Softwarewartung nötig ist. Ein Softwaresystem wird durch die technische und fachliche Umgebung beeinflusst. Ändern sich diese Umgebungen, muss die Software nachziehen, um aktuell zu bleiben. Unter lack of movement versteht man das Veralten eines Systems, das nicht mit der Zeit geht und es verpasst, immer wieder die neuesten Technologien einzusetzen und ein adäquates Abbild der Realität wiederzugeben. Das System veraltet also ohne eigenes Zutun gegenüber der sich fortschreitenden Umwelt.
Lebenszykluskosten
Softwarekosten entstehen nicht nur mit der Erstentwicklung, sondern auch laufend mit der Weiterentwicklung, Wartung und einer späteren möglichen Migration. Selbst bei der Ablösung, und somit bei der Entsorgung eines Systems, entstehen weitere Kosten. Die Lebenszykluskosten sind also die Gesamtkosten, die eine Software von der ersten Stunde bis zur Stilllegung seitens des Herstellers erzeugt. Darin sind die Betriebskosten nicht enthalten, denn diese entstehen beim Anwender.
Maintenance
→ Softwarewartung
Mangel
Ein Mangel liegt vor, wenn eine gestellte Anforderung oder eine berechtigte Erwartung nicht angemessen erfüllt wird.
Mängelkorrektur
Mit der Mängelkorrektur werden mittelschwere und leichte Fehler behoben. Es handelt sich hierbei um Restfehler. Im Gegensatz zur → Instandhaltung ist die Korrektur der Mängel planbar.
Migration
Bei einer Migration (von lat. migratio = Wanderung) wird die Software von der bestehenden in eine andere Umgebung versetzt. Auslöser für eine Migration sind meistens geänderte Anforderungen an das Softwaresystem, die in der bestehenden Umgebung nicht mehr oder nur mit großem Aufwand realisierbar sind (→ Adaptive Wartung).
Perfektionierende Wartung
Das Ziel der perfektionierenden Wartung ist die Verbesserung der Software. Dies kann gemäß Norm [IEEE610] die Performanz oder andere Attribute betreffen. Wobei die Performanz auf die Schnelligkeit des Systems, aber auch auf die Effizienz bei der Nutzung von Systemressourcen abzielt. Der Begriff andere Attribute öffnet ein weites Feld von Möglichkeiten, die z. B. die Wartbarkeit, die (Re-)Dokumentation oder andere Eigenschaften der Software betreffen. Hiermit sind auch Strukturverbesserungen im Rahmen von Restrukturierungen, Refactoringund Bereinigungen gemeint, um dem → »ignorant surgery«-Problem entgegenzuwirken.
Pflege
→ Softwarewartung
Portierung
Unter einer Portierung versteht man den Vorgang, ein Computerprogramm, das unter einem bestimmten Betriebssystem, einer Betriebssystemversion oder Hardware abläuft, auch auf anderen Betriebssystemen, anderen Versionen oder anderer Hardware lauffähig zu machen. Teilweise wird unter Portierung auch der Wechsel von einer Programmiersprache auf eine andere verstanden.
Präventive Wartung
In der präventiven Wartung geht es darum, latente Fehler nach der Auslieferung der Software zu beheben, bevor sie im Feld als effektive Fehler aufgetreten sind. Dies ist eine proaktive Maßnahme und daher planbar. Auch hierbei entfernen wir Restfehler, genau wie bei der → korrektiven Wartung. S. auch [IEEE610].
Reengineering
Im Software Engineering bezeichnet man mit Reengineering die Erstellung einer verbesserten Software auf Basis einer bereits vorhandenen, aber unzureichend dokumentierten Softwarevorlage. Bestandteile des Reengineering sind dabei das Reverse Engineering, um Informationen zu gewinnen, und die Restrukturierung als Basis für das anschließende Forward Engineering.
Refactoring
Refactoring ist ein Begriff des Software Engineering und eine Methode zur systematischen, entwicklungsbegleitenden Restrukturierung von Programmcode. Das Ziel der Restrukturierung ist es, die interne Softwarestruktur verständlicher und übersichtlicher zu machen, ohne dabei das Systemverhalten zu ändern.
Regressionstest
Der Regressionstest ist ein erneuter Test einer bereits getesteten Software oder einer Teilfunktion nach deren Änderung mit dem Ziel nachzuweisen, dass durch diese Anpassung keine Fehler eingebaut oder freigelegt wurden. Es geht also darum zu zeigen, dass alles, was bisher lief, auch nach einer Änderung immer noch läuft.
Release
Release bezeichnet in der Regel die Veröffentlichung einer neuen Softwareversion mit einem umfassenden neuen Leistungsumfang (Weiterentwicklung). Releases sind immer Vollauslieferungen und bestehen aus einer konsistenten Menge von Softwareelementen inklusive deren Dokumentation.
Restfehler
Während der Softwareentwicklung werden Fehler gemacht. Dank vielseitiger Tests werden diese zum größten Teil während der Entwicklung gefunden und behoben. Fehler, die nach der Auslieferung der Software an den Kunden im System immer noch vorhanden sind, bezeichnet man dann als Restfehler.
Reverse Engineering
Reverse Engineering ist ein Prozess, der das betrachtete System analysiert, um seine Komponenten und ihre Beziehungen zu identifizieren. Zweck dieses Prozesses ist es, für das analysierte System neue Abbildungen des Systems zu schaffen, meist in anderer Form und auf höherer Abstraktionsebene.
Review
Das Review ist ein strukturierter Analyse- und Bewertungsprozess, in dem Projektergebnisse einem Team von Gutachtern präsentiert und von diesem kommentiert oder genehmigt werden. Mit dem Review werden Arbeitsergebnisse der Softwareentwicklung, einschließlich Code, manuell geprüft. Es ist eine statische Testmethode und gehört in die Kategorie der analytischen Qualitätssicherungsmaßnahmen.
Sanierung
Der Begriff Sanierung bedeutet von seiner lateinischen Wurzel her »Heilung« und bezeichnet den Prozess, der eine Sache oder eine Struktur erneuert, vervollständigt und/oder wieder funktionstüchtig macht. Angewandt auf Softwaresysteme bedeutet dies, ein System zu modernisieren, umzugestalten oder zu renovieren mittels Reengineering-Methoden. Somit umfasst die Softwaresanierung die Konzepte und Verfahren, die ein Softwaresystem so verändern, dass es wieder wirtschaftlich und leistungsfähig wird.
Service Level Agreement
Der Begriff Service Level Agreement (dt. Dienstgütevereinbarung) bezeichnet eine Vereinbarung für Dienstleistungen zwischen Auftraggeber und Dienstleister. Darin werden zugesicherte Leistungseigenschaften wie etwa Reaktionszeit, Umfang und Schnelligkeit der Bearbeitung genau beschrieben. Wichtiger Bestandteil hierbei ist die Dienstgüte (Quality of Service).
Software
Die Norm [IEEE610] definiert den Begriff Software als Programme, Verfahren, zugehörige Dokumentation und Daten, die mit dem Betrieb eines Computersystems zu tun haben. Dementsprechend ist Software wesentlich mehr als einfach nur Code.
Softwareevolution
Als Softwareevolution bezeichnen wir den Prozess der Veränderung eines Softwaresystems von der Erstellung bis zur Außerbetriebnahme. Dieser Prozess umfasst somit die Erstellung, Wartung, Weiterentwicklung, Migration und Stilllegung.
Softwarewartung
Gemäß [IEEE610] ist die Softwarewartung die Veränderung eines Softwareprodukts nach dessen Auslieferung, um Fehler zu beheben, Performanz oder andere Attribute zu verbessern oder Anpassungen an die veränderte Umgebung vorzunehmen. Dabei wird zwischen den Wartungskategorien: → korrektive, → präventive, → adaptive und → perfektionierende Wartung unterschieden.
Testmethode
Testmethoden sind Verfahren, die eingesetzt werden, um Testfälle für Software zu bestimmen. Die verschiedenen Methoden lassen sich kategorisieren: funktionsorientierte, strukturorientierte oder diversifizierende Testmethoden.
Testobjekt
Das Testobjekt stellt den Prüfling dar, der je nach Teststufe dem Modul, dem integrierten Teilsystem oder dem gesamten System entspricht. Das Testobjekt wird dem Test unterzogen.
Teststufe
Die Teststufe entspricht einer Phase (im V-Modell), in der bestimmte Testaufgaben durchgeführt werden.
Testumgebung
Die Testumgebung beschreibt alle Hard- und Softwarekomponenten, die notwendig sind, um Testfälle wiederholbar durchführen zu können.
Testziel
Im Allgemeinen ist das Testziel das Aufdecken von Fehlern durch Testen. Jedem Test sollte aber ein spezifischeres Testziel zugeordnet werden, wie z. B. Lasttest.
Update
Ein Update ist eine Korrekturauslieferung (Behebung kritischer Mängel, Nachbesserung, Aktualisierung) für eine bestehende Softwareversion. Durch ein Update werden meist Sicherheitslücken geschlossen, Fehler behoben oder bestehende Funktionalität verbessert.
Upgrade
Ein Software-Upgrade bezeichnet eine neue Version einer Software, die Änderungen oder Verbesserungen enthält. Software-Upgrades beinhalten darüber hinaus alle → Mängelkorrekturen vorausgegangener Updates.
Validierung
Die Validierung ist die dokumentierte Beweisführung, dass ein System die Anforderungen in der Praxis erfüllt. Es wird damit die Frage beantwortet, ob man das Richtige entwickelt hat.
Wartbarkeit
Gemäß der Norm [IEEE610] ist Wartbarkeit die Einfachheit, mit der ein Softwaresystem oder eine Komponente modifiziert werden kann, um Fehler zu beheben, Performanz oder andere Attribute zu verbessern oder Anpassungen an die veränderte Umgebung vorzunehmen.
Whitebox-Test
Ein Whitebox-Test ist ein Testfall, der zur Erstellung Information über die innere Struktur des Systems (Testobjekts) benötigt. Man betrachtet das System von innen.