Solange jede Methode ihre Sprache spricht, ist die Benutzbarkeit in Frage gestellt, Teil II:

Reine Theorie führt ins Desaster

08.05.1981

Software wird von Menschen gemacht, Methoden tun dies (noch) nicht. Deshalb ist es wichtig, daß Menschen die Strategie, Objekte und Vorgehensweise, die Adaptierung neuer Entwicklungsmethoden verstehen, damit die Ziele erreichbar werden.

Es herrscht kein Mangel an Methoden, wie das Quest-Projekt (4) beweist. Die ursprüngliche Ausgangsmenge der Quest-Literatur-/Marktauswertung ergab rund 1370 Methoden, von denen schließlich 120 weiter untersucht wurden.

Erforderlich in Entwicklungsprozessen ist die Synthese bester Methoden und die Berücksichtigung der Tatsache, daß Menschen Software machen und Methoden Hilfe statt Hindernis hierbei sein sollen Solange jede zusätzliche Methode ihre eigene Sprache spricht, ist die Benutzbarkeit in Frage gestellt, weil auch im Software-Entwicklungsbereich tätige Menschen selten bereit sind, über die heute durchschnittlich geforderten sieben bis zehn Sprachen hinaus weitere zehn zu erlernen.

Basis-Set von Prinzipien

Die Prinzipien zur Erreichung gewünschter Qualität beinhalten die Notwendigkeit, einen Basis-Set von qualitätsorientierten Prinzipien bezogen auf den Softwareprodukt-Lebenszyklus zu definieren.

Die Prinzipien basieren nach heutigen Erkenntnissen auf relativ erprobten Software-Engineering-Konzepten und -Techniken. Es sind dies:

- Planung und Management des Gesamtprojekts bezogen auf einen phasenweisen sequentiellen Entwicklungsprozeß (Softwareprodukt-Lebenszyklus).

- Sorge für klare Zuständigkeiten und ein Maximum an Durchsichtigkeit des Projekts für das Management.

- Definiere und benutze einen Set von Techniken und Praktiken für beide, Management und technischen Bereich.

- Schreibe die Abnahme des Outputs jeder Phase des Entwicklungsprozesses vor, verbessere den Entwicklungsprozeß durch parallele Neuentwicklung von für dieses Projekt brauchbaren Techniken, Praktiken und Werkzeugen.

- Setze besser ausgebildete und weniger Mitarbeiter ein zur Realisierung eines gegebenen Arbeitsumfangs.

Angestrebte Resultate:

- Verbesserte Vorhersagbarkeit und Sicherheit von Plänen

- Verbesserte Vorhersagbarkeit von Kosten

- Reduzierte Supportkosten

- Vereinfachte Installation

- Verbesserte Anwenderbefriedigung

- Verbesserte Produktivität

- Erweiterte Produktverkaufbarkeit

Software-Engineering kann als Planung und Durchführung einer Strategie zur Erreichung der gewünschten Softwarequalität verstanden werden. Ziele im Sinne dieser Strategie können sein:

Planungsziele

Die Vorhersagbarkeit und Sicherheit von Plänen für die Entwicklung und Auslieferung von Software werden verbessert durch die Anwendung einer konsistenten, systematischen Software-Entwicklungsdisziplin. Auf einzeln geplantem Funktionslevel sollten nicht mehr als 10 Prozent genehmigter Funktionen hinsichtlich geplantem Fertigstellungsdatum Korrekturen benötigen.

Keine Funktion sollte einen größeren Zeitverzug haben, als der Zeitraum vom Zeitpunkt des Erkennens des Verzugs bis zum originär geplanten Freigabetermin beträgt.

Kostenziele

Die Vorhersagbarkeit von Kosten wird verbessert durch einer konsistenten, systematischen Ansatz der Softwareentwicklung. Verbesserte Einsichtigkeit in die Teilschritte des Entwicklungsprozesses durch das Management erlaubt größere Genauigkeit der Kostenvorhersage durch Benutzung kleinerer Elementgrößenordnungen.

Auf Funktionslevel sollten nicht mehr als 10 Prozent der Gesamtfunktionen Korrekturen am Kostenplan benötigen. Keine Einzelfunktionen sollte eine Kostenüberschreitung von mehr als 10 Prozent der Gesamtkosten vorweisen.

Unterstützungskostenziele

Unterstützungskosten liegen in Form von Wartung teils bei 80 Prozent der Gesamtproduktkosten vor. Anwendung der hier diskutierten Qualitäts-Software-Strategie sorgt für eine substantielle Reduktion in diesem Bereich.

Installationskostenziele

Installation von Software bedeutet heute oft die direkte Unterstützung des Softwareherstellers beim Anwender. Anwendung entsprechender Softwarequalitäts-Prinzipien sollte die Installation der Software durch den Anwender selbst ermöglichen.

Produktivitätsziele

Ein konsistenter, wiederholbarer Entwicklungsprozeß mit klar vereinbarten Verantwortlichkeiten und gut identifizierten Abhängigkeiten hat signifikant positiven Einfluß auf die individuelle und gesamtorganisatorische Produktivität.

Beseitigung von Doppelaufwand kombiniert mit verbesserter Effizienz durch Benutzung vereinheitlichter Methoden sollte 20 bis 30 Prozent Produktivitätsverbesserung ermöglichen.

Sichtbare Milestones

Qualität ist nicht ohne Kosten zu haben. Mittel werden benötigt für

- Entwicklung und Implementation von Techniken, Standards, Prozeduren und Regeln,

- Entwicklung und Einsatz von Werkzeugen,

- Training und

- Ausrüstung.

Der gesamte Software-Entwicklungsprozeß läßt sich so umreißen:

- Jeder Schritt, jede Phase des Software-Entwicklungsprozesses muß Standards, Prozeduren und Regeln besitzen.

- Es muß eine feste Managementabsicht und Anweisung für die Benutzung der Standards etc. vorliegen.

- Unterscheidung System- und Funktionslevel:

Bei Betrachtung auf Systemlevel sind größere Überschneidungen der einzelnen Phasen des Prozesses normal. So kann das Design der Funktion X zeitgleich zum Coding der Funktion laufen, deren Design vorher komplettiert wurde.

Auf Funktionslevel ist der Entwicklungsprozeß seriell, dies bezogen auf die Einzelfunktion.

- Anwendbarkeit auf neue und auf existierende Softwareteile bezogen auf niedrigste kompilierbare Einheit (Modul) bis zum gesamten Softwaresystem einschließlich beides, Neuentwicklung wie auch Wartung.

- Start und Ende einer jeden Phase repräsentiert sichtbare Milestones.

Es gibt viele im Detail unterschiedliche Aufteilungen von Software-Entwicklungsprozessen. Die folgende Aufteilung wird als sinnvoll angesehen:

Bedarfsanalyse

Durchführbarkeitsstudie

Definition

Design

Coding

Einzeltest

Integration

Funktionstest

Systemtest und Qualifikation

Freigabe

Produktunterstützung

Installation

Wartung

Nicht alle aufgeführten Phasen müssen in jedem Fall einzeln für jede Funktion durchgeführt werden. Es können auch Zusammenlegungen erfolgen. Zu jeder Entwicklungsprozeßphase müssen Festlegungen getroffen werden zu:

- Dokumentation,

- Prüfung und Abnahme,

- Werkzeugen,

- Standards, Prozeduren, Regeln.

Nummer eins hierbei ist, daß die Aufteilung des Gesamtentwicklungsprozesses in Phasen überhaupt erfolgt. Nummer zwei ist die Anwendung selbst: praktische Festlegung, welche Methoden durchgeführt werden, welche Werkzeuge eingesetzt werden; Einbeziehung sowohl erprobter Methoden wie auch neuerer Erkenntnisse aus dem Bereich der konstruktiven Wissenschaftstheorie.

Die sprachliche Konstruktion beispielsweise einer Designsprache auf Basis einer ausgewählten Designmethode setzt einen wissenschaftstheoretischen funktionalen Ansatz voraus. Angewandtes Software-Engineering auf rein theoretischer Basis führt jedoch ins Desaster.

Der Einsatz relativ praktisch erprobter Methoden und zugehöriger Werkzeuge sollte den höheren Anteil im Gesamtprozeß stellen. Die wachsende Zahl der einzelnen Projektphasen zugeordneten Sprachen wirft neue Fragen bezüglich der Zusammenhänge und Übergänge zwischen diesen sprachen auf.

Freiheit mit Arbeitsplatzrisiko

Gesucht ist jene heute nicht vorhandene VHDL (Very High Development Language), die über Bedarfsanalyse und Design bis hin zum Test mit jeweils sprachlicher Verfeinerung und entsprechenden Sprachelementen den Gesamtsoftware-Entwicklungsprozeß integriert und unterstützt.

Dies könnte eine der wichtigen Aufgaben des Software-Engineering des nächsten halben Jahrzehnts sein. Das Software-Engineering wendet sich frei von Routine jeweils Aufgaben zu, bei denen voraussichtlich mit geringerem Aufwand qualitativ bessere Softwareprodukte erzielt werden. Arbeitslosigkeit schlecht ausgebildeter und unerfahrener Programmierer kann leicht Resultat von Software-Engineering werden. Fortschritte im Bereich Software-Engineering können erwartet werden, wenn die verfügbaren Techniken in größerer Verbreitung benutzt und entsprechende Erfahrungsrückkopplung zum Aufbau verbesserter Strategien genutzt wird.

* Ing. (grad.) Helmut Meyer ist Abteilungsleiter Softwareentwicklung bei Sperry Univac Sulzbach/Taunus.

_AU:Helmut Meyer