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.

passend zum Thema


  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!