[Thomas Reil - Beruf]    [Thomas Reil - Private Homepage]

'Causal Analysis' in der Software-Entwicklung
Thomas Reil, September 1991

Diplomarbeit - Universität Ulm - Wirtschaftsmathematik


 
Online-Auszug aus der Diplomarbeit:
  • Vorwort
  • Notwendigkeit von 'Causal Analysis'
  • Verbesserungen durch 'Causal Analysis'
  • Fehlervermeidungs-Maßnahmen - Beispiele
  • Organisation von 'Causal Analysis' - Beispiel
  • Positive Erfahrungen mit 'Causal Analysis'
  • Ausblick: Fehlerauswirkungs-Analyse

  • zum SeitenbeginnVorwort
     
    Jeder Mensch macht Fehler, und meistens macht er sie ungern. Also überlegt er sich, woran der Fehler lag und was zu tun ist, um einen solchen Fehler in Zukunft zu vermeiden. Mit einem Wort: er unternimmt eine Fehlerursachen-Analyse (Causal Analysis).

    Hier wird betrachtet, wie Causal Analysis zur Fehlervermeidung in einem Software Entwicklungsprojekt eingesetzt werden kann. Dabei stehen nicht einzelne Programmiertechniken oder -tricks im Vordergrund, sondern es werden aus dem Blickwinkel der Qualitätssicherung Möglichkeiten aufgezeigt, wie Causal Analysis während des gesamten 'Software Life Cycles' (vom Pflichtenheft bis zur Wartung beim Kunden) organisatorisch umgesetzt werden kann.

    Die hier beschriebenen Techniken und Methoden sind vor allem für große Projekte wichtig, bei denen z.B. folgende Bedingungen erfüllt sind:

    • die Anforderungen an das Projekt sind nicht leicht zu definieren und sind umfangreich
    • die Entwicklungszeit beträgt mehrere Jahre
    • die Zahl der Kunden ist sehr groß
    • Fehler im Programm wirken sich für den Kunden drastisch aus
    • mehrere Programmierer und Tester arbeiten parallel in Teams
    • das Programm soll sehr lange auf dem Markt bleiben (etwa 10 Jahre) und soll im Laufe der Zeit weiterentwickelt werden


    zum SeitenbeginnZusammenfassung
     

    zum SeitenbeginnNotwendigkeit von 'Causal Analysis'

    Ohne einen qualitativ hochwertigen Entwicklungsprozeß können komplexe Softwareprojekte nicht durchgeführt werden, weil z.B.:

    • Die Kosten zur Fehlerbehebung nicht finanzierbar sind
    • Bei notwendigen Änderungen in den Anforderungen der Überblick verloren geht
    • Beim Kunden viele Fehler auftreten, die zur Unzufriedenheit führen
    • Die Betreuung der Kunden schlecht ist, wenn Probleme auftreten
    • Verschiedene Versionen des Projektes nicht verwaltet werden können
    • Das Projekt nicht konsequent weiterentwickelt werden kann
    Um einen hohen Qualitätsstandard zu erreichen, müssen Fehler möglichst vermieden werden. Dies kann durch eine systematische Fehlerursachen-Analyse geschehen, d.h. durch 'Causal Analysis'.


    zum SeitenbeginnVerbesserungen durch 'Causal Analysis'

    Bei konsequenter Einbettung von 'Causal Analysis' in den Entwicklungs-Prozeß erreicht man

    1. eine Verbesserung des Produktes
    2. eine Verbesserung des Entwicklungs-Prozesses und
    3. eine Verbesserung des Qualitätsdenkens der Mitarbeiter.
    'Causal Analysis' muß dabei in allen Phasen. des Entwicklungsprozesses eingesetzt werden:
    • Spezifikationsphase
    • Designphase
    • Implementationsphase
    • Operationsphase
    In jeder dieser Phasen treten spezielle Probleme auf, die durch 'Causal Analysis' auf gedeckt werden können. Die wichtigsten Maßnahmen, die normalerweise aus dem 'Causal Analysis'-Prozeß entstehen, sind auf alle Phasen anwendbar:
    • Standardisierung
    • Zurückführbarkeit auf die vorige Phase
    • Testbarkeit

    zum SeitenbeginnFehlervermeidungs-Maßnahmen - Beispiele

    Das Ziel von 'Causal Analysis' ist die Entwicklung konkreter Fehlenvermeidungs-Maßnahmen.
    R.G.Mays zeigt auf, daß die meisten Fehler trivialer Art sind, z.B. Schreibfehler in einem Wort oder Vergessen, eine Variable wieder auf Null zu setzen. Während solche Fehler zwar eine triviale Ursache haben, können ihre Konsequenzen enorm sein. Mit diesem Hintergrund sind die wichtigsten Maßnahmen zur Fehlervermeidung:

    1. Beachten von Kleinigkeiten
    2. Genaues Einhalten des Entwicklungsprozesses
    3. Automatisierung möglichst vieler Teilbereiche des Prozesses
    Der erste Schritt zur Fehleranalyse ist die Klassifizierung der aufgetretenen Fehler. Dazu gibt es viele Möglichkeiten, wobei sich folgende Klassifizierung bewährt hat:
     
    • Mangelnde Übersicht
    • Fehlende Ausbildung
    • Kommunikations-Probleme
    • Übertragungs-Probleme

    Typische Maßnahmen gegen mangelnde Übersicht
    Es müssen Aktionen und Vorgehensweisen etabliert werden, die den Entwickler automatisch an wichtige Dinge erinnern oder die einen Prozeß soweit automatisieren, daß kein Detail übersehen werden kann. Beispiele:

    • Fehlerprüflisten
    • Cross-Referenzen zur Programm- und Prozeß-Logik, die Online verfügbar sind
    • Hilfswerkzeuge, die Vollständigkeits-Prüfungen durchführen
    • Erinnerungen und Warnungen in der Produkt-Dokumentation oder Online
    • Regelmäßige Arbeitsgruppen, um seine Arbeit von Kollegen nachprüfen lassen zu können
    • Falls Zeitdruck die Ursache ist, muß das Management die Planungsdaten des Projekts überdenken
    Typische Maßnahmen gegen fehlende Ausbildung
    Hier muß zum richtigen Zeitpunkt des Projektes die jeweils angebrachte Art von Ausbildung gewährleistet werden. Beispiele:
    • Vorträge oder Kurse, die mit dem Produkt zusammenhängen
    • Informations- und Prüflisten für Mitarbeiter, die neu in das Projekt einsteigen
    • Sammeln von Artikeln in bereichsweiten Rundschreiben
    • Halten von Seminaren über neu einzuführende Funktionen
    Typische Maßnahmen gegen Kommunikations-Probleme
    Teile des Entwicklungsprozesses müssen geändert und vermehrt Hilfswerkzeuge eingesetzt werden. Beispiele:
    • Knüpfen von Kontakte zu anderen Abteilungen, wenn dort Abhängigkeiten oder Quer-Verbindungen zum Projekt bestehen.
    • Benutzen eines Tools, das alle von einer Produkt- oder Prozeßänderung betroffenen Parteien automatisch über die Konsequenzen informiert.
    Typische Maßnahmen gegen Übertragungs-Fehler
    Werkzeuge müssen entwickelt werden. um Bereiche, die zu Leichtsinnsfehlern führen können, zu automatisieren. Beispiele:
    • Ein Tool, das ein Modul analysiert und zusätzlich zum Compiler Informationen liefert (Module Checker Tool).
    • Ein Tool, das im gesamten Source-Code gewisse fehlerträchtige Konstellationen ausfindig macht und kennzeichnet. Die Konstellationen wurden vorher durch 'Causal Analysis' zusammengestellt (String Scanning Tool).
    • Ein benutzerfreundliches Tool zum Kopieren von großen Mengen von Dateien.
    • Arbeitsgruppen zur gegenseitigen Kontrolle der Mitarbeiter

    zum SeitenbeginnOrganisation von 'Causal Analysis' - Beispiel

    Die Effektivität von 'Causal Analysis' hängt entscheidend vom organisatorischen Umfeld ab, in dem sie umgesetzt werden soll. Das IBM Communication Programming Labratory at Research Triange Park, North Carolina hat einen 'Integrierten Prozeß zur Fehlervermeidung' entwicklelt, der vier Hauptelemente zur Fehlervermeidung in sich vereinigt:

    • Systematische 'Causal Analysis'
    • Unterstützung durch das Management
    • Regelmäßiges Treffen und Planen vor jeder Entwicklungsphase
    • Eine Datenbank mit Hilfswerkzeugen zum Sammeln und Suchen von Daten.


    zum SeitenbeginnPositive Erfahrungen mit 'Causal Analysis'

    Mit dem 'Integrierten Prozeß zur Fehlerverrneidung' konnten bereits in mehreren Projekten entscheidende Verbesserungen in Qualität und Produktivität erreicht werden. Eine Verringerung der gewohnten Fehlerzahl um 50% konnte bei einem Kostenaufwand von einen halben Prozent der Ressourcen des Entwicklungsbereiches erreicht werden.

    Als ebenso wichtig wie diese Verringerung der Fehlerzahl haben sich die positiven Änderungen im Entwicklungsbereich der Firma selbst herausgestellt:

    • Änderungen im Entwicklungsprozeß werden beschleunigt.
    • Der Entwicklungsprozeß verbessert sich iterativ selbst.
    • Die Kommunikation zwischen den Mitarbeitern wächst.
    • Das Qualitätsbewußtsein der Mitarbeiter wächst.
    Die wichtigste Auswirkung von Fehlervermeidung durch 'Causal Analysis' ist die höhere Qualität des Produktes beim Kunden. Erfahrungen zeigen, daß sich eine Fehlerreduktion während des Entwicklungsprozesses auf die Operationphase übertragen läßt. Das bedeutet: Weniger Fehler während der Entwicklung führt zu weniger Fehlern, die beim Kunden auftreten. Höhere Qualität zahlt sich aber durch größere Zufriedenheit des Kunden und geringeren Wartungsaufwand in der Zukunft aus.


    zum SeitenbeginnAusblick:  Fehlerauswirkungs-Analyse

    'Causal Analysis'  (Analyse von Fehlerursachen) stellt nicht die einzige Möglichkeit dar, Fehler zu vermeiden. Einen anderen Weg soll das abschließende Beispiel verdeutlichen:

    Richard H. Cobb und Harlan D.Mils untersuchten 1990 nicht die Ursache von Problemen, sondern deren Auswirkungen auf die Kunden. Dabei kommen sie zu dem bemerkenswerten Ergebnis, daß etwa 60% aller während der Entwicklungsphase behobenen Fehler mit großer Wahrscheinlichkeit nie jemals beim Kunden aufgetreten wären, wobei dieser Wert bei allen 9 untersuchten Projekten etwa übereinstimmt.

    Hier können Methoden und Maßnahmen entwickelt werden, die über das Zählen von Fehlern hinausgehen, indem z.B., der Testprozeß vom Kundenprofil abhängig gemacht wird. Das Thema 'Fehlerauswirkungs-Analyse' ist so umfangreich, daß es genügend Stoff für weitere Diplomarbeiten bieten würde.


    zum Seitenbeginn  [Thomas Reil - Beruf]    [Thomas Reil - Private Homepage]