Basis für Zuverlässigkeit und Sicherheit

Qualitätssicherung im Softwareentwicklungsprozess

30. November 2010, 16:19 Uhr | Joachim Terasa, Geschäftsführer der Coming GmbH
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Anzuwendende Qualitätskriterien

Die in der Spezifikation anzu­wendenden Qualitätskriterien sind überschaubar:

  • Korrektheit: Was in der Spezi­fikation steht, muss richtig sein. Widersprüche können aufgedeckt, Fehler nur vom wirklich kundigen Leser entlarvt werden.
  • Vollständigkeit: Eine Spezifika­tion wird nie wirklich vollständig sein. Triviales und ausgesucht Selbstverständliches sollte wegge­lassen oder ausgegliedert werden, denn sonst leidet die Verständlich­keit.
  • Verständlichkeit: Die Spezifika­tion ist das zentrale Kommunika­tionsmittel zwischen Kunde und Entwickler. Was nicht oder falsch rüberkommt, ist wie ein Fehler zu sehen.

Beispiele aus dem Entwick­leralltag zeigen, dass Spezifikatio­nen zu erstellen, nicht einfach ist:

  1. Eine zehnseitige Bedie­nungsanleitung eines Vorgänger­gerätes, mit einer Seite Ergänzun­gen und der sinngemäßen Anmer­kung »genau das, nur etwas an­ders« stellte sich im Laufe der Entwicklungstätigkeit als »ganz anders, stellenweise ähnlich« he­raus. Weitere, zum Teil wider­sprüchliche Dokumente folgten mit immer neuen Anforderungen. Das ist zwar verständlich, aber weder korrekt noch irgendwie vollständig.
  2. Ein mehrere 100 Seiten star­kes Tabellenwerk, das hauptsäch­lich Zustandsübergänge und Querverweise enthält. Das ist zwar möglicherweise vollständig, vielleicht auch korrekt, aber abso­lut unlesbar. Als Vorlage diente ein inoffizielles Modell, das wahr­scheinlich weder vollständig noch korrekt war, man konnte es aber verstehen.
  3. Ein etwa 100-seitiges Doku­ment, das aus Angst vor Mangel an Dicke per Copy/Paste aufge­blasen wurde. Das mündete dar­in, dass ein 40-zeiliger Passus et­wa 50 mal vervielfältigt wurde und an jeder Kopie zwei Details verändert wurden (sogar das wur­de an drei Stellen vergessen). Wahrscheinlich vollständig, leicht inkorrekt, aber abschreckend.

Unterschiedliche Branchen ha­ben dabei ihren ganz eigenen Wortschatz. Dem Softwareent­wickler kann in der Regel zuge­mutet werden, diesen zu erlernen. Ebenso sollte es umgekehrt mög­lich sein, schließlich hat der Kun­de ein ureigenes Interesse, sich verständlich mitzuteilen. UML ist hier ein Standard, und der rele­vante Wortschatz beschränkt sich auf die Verhaltensdiagramme, wo­bei von denen vor allem die Use- Case-Diagramme zum Einsatz kommen. Was zum Einsatz kom­men kann, wird auch durch das einzusetzende Werkzeug be­stimmt.

Das Design ist das Ergebnis unter anderem einer Analyse der Spezifikation und beschreibt, wie die Software aufgebaut ist. Begrif­fe, die in diesem Zusammenhang auftreten können, sind z.B. Klas­sen, Objekte, Prozesse, Daten und Tasks – das sind alles Begriffe, um Struktur in das Problem zu brin­gen.

So vielfältig wie diese Begriffe sind, so vielschichtig sind die Qualitätskriterien, die vielfach in Konkurrenz zueinander stehen: Korrektheit, Wartbarkeit, Testbar­keit, Zeitverhalten, Ergonomie, Zuverlässigkeit und Reproduzier­barkeit, Robustheit, Sicherheit, Wiederverwendbarkeit, Portier­barkeit, Skalierbarkeit, Arbeitspa­ketfähigkeit bzw. Arbeitsteilung sowie Verständlichkeit. Was auch hier alles falsch laufen kann zei­gen zwei Beispiele:

  1. Konzept Haupttask: Der Steuerrechner eines diagnosti­schen Gerätes war mit einem wirklich akzeptablen, multitas­kingfähigen Echtzeitbetriebssys­tem ausgestattet. Der Projektleiter, dem diese Welt nicht so vertraut war, rief deshalb einen Berater zu Hilfe. Dieser hatte zwar den glei­chen Praxishintergrund, konnte den aber besser verkaufen. Ergeb­nis war eine einzige riesige Task, die den kompletten Funktionsum­fang des durchaus komplexen Ge­rätes beinhaltete, dazu noch einen einfach struk­turierten kooperativen Scheduler, um die einzel­nen Funktionen abzurufen, und eine Menge Code, der die Nachteile dieser Konstruktion kom­pensieren sollte. Korrekt, was durch riesigen Testaufwand nachgewiesen wurde; nicht wart­bar; kaum testbar; das Zeitverhalten musste bei jeder kleinen Änderung neu justiert werden; nicht robust, weil das kooperative Tasking auf Daten-Bursts kritisch reagierte. Was in den ein­zelnen Arbeitspaketen entstand, war anerken­nenswert. Was in der beschriebenen Laufzeitum­gebung daraus wurde, war traurig.
  2. Konzept Global Database: Zu einer Zeit, als Objektorientierung bereits ein häufig benutztes Schlagwort war, wurde sich für ein Avionic-Steu­ergerät entschieden, das alle Daten global dekla­riert, weil es so viel einfacher sei, darauf zuzu­greifen. So war es dann auch. Es gab Variablen, die zu jeder Zeit einen rein zufälligen Inhalt hat­ten, und es war erst mit teurem Test-Equipment möglich zu analysieren, wann wer was wohin schrieb und warum das Gerät so nicht funktio­nierte, wie es nicht funktionierte. Gut, das ganze wurde in Assembler programmiert, aber gerade dann sollten Designprämissen sehr sorgfältig ge­wählt werden.

Das Design dient der Kommunikation zwi­schen Architekt und Programmierer, beide kön­nen beides in Personalunion sein, es kommt aber oft genug vor, dass es sich um getrennte Abtei­lungen oder gar Standorte handelt. In jedem Fall kann man aber davon ausgehen, dass beide Sei­ten die gleiche Sprache, nämlich UML-Struktur­diagramme, sprechen bzw. verstehen.


  1. Qualitätssicherung im Softwareentwicklungsprozess
  2. Definition von Softwarequalität
  3. Anzuwendende Qualitätskriterien
  4. Zwei Vorgehensweisen bei der Implementierung

Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!