Software-Optimierung/Wir machen alles - und das gleichzeitig

Change-Management könnte die Entwicklungsarbeiten steuern

23.01.1997

Meist laufen Software-Änderungen in Phasen ab, die sich trotz Überschneidungen und Wiederholungen unterscheiden lassen. Nach der Verteilung der Programme an die Kunden beginnt die Unterstützungsphase. Bei jeder Software tauchen Probleme auf: Anwender haben falsch installiert, Handbücher oder Schulungskurse wurden mißverstanden, Funktionalitäten arbeiten nicht wie gewünscht, das Programm stürzt ab etc.

Je komplexer die Anwendung und je größer ihre Verbreitung, desto eher bietet sich der Einsatz professioneller Hotlines an. Diese arbeiten im allgemeinen mit Call-tracking- oder Helpdesk-Systemen. Der Trend geht zu immer ausgefeilteren Unterstützungsmaßnahmen.

Helpdesk-Systeme dienen mehr zur Interaktion mit dem Kunden und seiner Betreuung als dem Software-Änderungs-Management. Allerdings ist es auch möglich, schwerwiegende Fehler ohne Umwege an die verantwortlichen Stellen weiterzuleiten.

Auf der Entwicklungsseite findet Änderungsverfolgung statt. Sie umfaßt sowohl die Definition der Maßnahmen als auch ihre Verfolgung im System. Unter Software-Änderung versteht man sowohl Änderungen aufgrund von Fehlermeldungen als auch Erweiterungen der Funktionalität, Portierung auf andere Plattformen etc. Die Neuentwicklung von Software ist im Grunde nur ein Spezialfall der Software-Änderung und fällt unter Funktionalitätserweiterung.

Änderungsanforderungen werden beurteilt, abgelehnt oder zur Bearbeitung freigegeben sowie getestet. Die Änderungsverfolgung versucht diesen Prozeß zu planen und zu steuern.

Alle entstehenden Dokumente, Quellen und Testergebnisse müssen gespeichert und verwaltet werden. Nur so ist es möglich, auf frühere Entwicklungsstände aufzusetzen, Revisionssicherheit zu gewährleisten oder auch nur Planungssicherheit für die Weiterentwicklung zu gewinnen.

In diesem typischen Änderungszyklus lassen sich sofort auch die Bereiche erkennen, in denen eine Optimierung des Prozesses aus der Sicht der Software-Entwicklung stattfinden kann. Die beginnt bei der Aufnahme der Meldungen der Kunden in Call-tracking-Systemen und reicht bis zur Verteilung der Software.

Die Entwicklung arbeitet an Problemen und Erweiterungswünschen der Kunden und an generellen Weiterentwicklungsstrategien des eigenen Unternehmens. Entwicklung bedeutet hier nicht nur reines Codieren von Software-Elementen, sondern auch Analyse und Design.

Unter dem Abschnitt Test sind ebenfalls verschiedene Stufen denkbar, darunter Entwickler-, Integrations- oder Systemtests. Über alle Phasen des Prozesses existieren Rückkopplungen. Ist der Test erfolglos, wird die Entwicklung wieder aktiv, muß eventuell die Änderung neu überdacht werden, was seinerseits zu neuen Anforderungen führen kann. Das Softwarekonfigurations-Management zum Abschluß der Entwicklungsphase sorgt für den korrekten Zugriff und Sicherung der Daten.

Immer wieder sind es dieselben Probleme

Dieser reguläre Software-Entwicklungsprozeß existiert in der gleichen oder modifizierten Form in vielen Softwarehäusern. Dabei treten jedoch vielfältige Probleme auf, und zwar immer wieder:

- Ein gelöstes Problem erscheint in einer späteren Softwareversion erneut.

- Die implementierte Funktionalität wird nicht ausgeliefert.

- Entwickler arbeiten an unterschiedlichen Softwareversionen.

- Es ist für das Projekt-Management nicht transparent oder nicht prüfbar, welcher Entwickler und Tester an welcher Änderung arbeitet.

- Der zeitliche oder finanzielle Aufwand für Änderungen läßt sich schwer abschätzen beziehungsweise ist abschließend nicht nachvollziehbar.

- Die Entwickler arbeiten mit den falschen Softwareversionen.

- Getestet wird die falsche oder eine nicht freigegebene Entwicklerversion.

- Freigabe und Verteilung der Software erfolgt nicht auf der getesteten Version.

Der Grund für die meisten Probleme liegt in der unzureichenden Kommunikation zwischen den verschiedenen Phasen. In jeder Phase werden verschiedene Werkzeuge eingesetzt, die nicht miteinander kompatibel sind.

Beispielsweise werden Fehlermeldungen von Kunden oft in proprietären Systemen gespeichert. Weiterentwicklungen aus der Projektplanung existieren dagegen häufig nur auf dem Papier. Überhaupt verwenden Projektplanung und -Management ihre eigenen Werkzeuge. In der Entwicklerwelt dagegen gibt es eine Vielzahl von verschiedenen Plattformen, Werkzeugen und Dokumentationssystemen. Und natürlich tauchen auch im Test wieder komplett andere Werkzeuge auf. Das Softwareverteilungswerkzeug hingegen hat - soweit vorhanden - ebenfalls einen anderen Aufbau und andere Schnittstellen.

Dies führt dazu, daß Kommunikation und Datenfluß zwischen den Phasen oft manuell, also nicht computergestützt stattfinden. Es ist also schwierig, sich einen Überblick über den momentanen Entwicklungsstand zu verschaffen, da sich die notwendigen Informationen nur auf manuelle Art suchen und verarbeiten lassen.

Änderungen sind schwer nachzuvollziehen. Die ausgelieferte Software enthält viele Modifikationen, und es ist sehr aufwendig oder unmöglich festzustellen, auf welche Weise welche Änderung bearbeitet wurde.

Aus den Problemen des Entwicklungsprozesses und der einzelnen Änderung resultiert der Ansatz zur Lösung: Es muß eine Plattform geschaffen werden, in der sich alle Arbeitsphasen wiederfinden können. Dieses System sollte offen sein, um verschiedene Programmiertätigkeiten zu unterstützen, und Schnittstellen zu anderen Systemen bieten. Es muß eine Komponente zur Verwaltung der Daten ebenso aufweisen wie eine "Prozeßmaschine", mit der sich die Entwicklungs- und Änderungsprozesse verwalten lassen.

Als Grundlage bietet sich ein System zum Konfigurations-Management (KM) an. Da alle Phasen der Entwicklung Daten erzeugen, sichern und auf Daten zugreifen, ist ein KM-System dafür optimal geeignet. Dieses muß eine offene Architektur aufweisen, damit unterschiedliche Plattformen und Werkzeugformate genutzt werden können.

Es muß weiterhin in der Lage sein, alle Anforderungen der Phasen abzudecken. So muß das KM-System eine Konfiguration und Arbeitsumgebung für Entwickler genauso erzeugen können wie eine Test- oder Freigabeumgebung. Es sorgt auch für den korrekten Datenfluß zwischen den verschiedenen Phasen. Die entwickelte Software muß zum Test und zum Verteilungswerkzeug durchgereicht werden.

Auch Änderungsmeldungen, Anforderungen etc. muß dieses System speichern können. Weiterhin sollten Kopplungen zu anderen Werkzeugen wie Helpdesk-Systemen oder Softwareverteilungswerkzeugen möglich sein.

Unterstützt durch das KM-System, sollte der Änderungsprozeß ablaufen. Er muß sich frei definieren und ändern lassen. Einige Merkmale des Prozesses sind:

- Rollen: Wer darf was im System tun? Wer darf Änderungen verifizieren, Qualitätssicherung durchführen?

- Zustände: Welche Zustände können Änderungsanforderungen einnehmen?

- Transitionen: Welche Wege darf eine Anforderung durchlaufen?

Eine der wichtigsten Forderungen für die Optimierung des Entwicklungsprozesses ist die Verknüpfung zwischen einer Änderungsanforderung und den Elementen, die sie betrifft. Beispielsweise führt eine Anforderung zu einer neuen Version eines Designdokuments, einige Softwaremodule werden geändert, Testergebnisprotokolle erzeugt etc. Diese Objekte werden mit der Anforderung verknüpft, und somit ist immer nachvollziehbar, aus welchen Gründen Änderungen im System stattgefunden haben.

Die enge Verknüpfung von Konfigurations-Management mit einem Änderungsprozeßansatz kann viele Vorteile bei der Software-Entwicklung bringen. So ist es jederzeit möglich nachzuvollziehen, welche Daten aus welchen Gründen modifiziert wurden. Helpdesk und Support können laufend den Entwicklungsstand ihrer Änderungsmeldungen feststellen.

Mehr Überblick und Planungssicherheit

Durch die Prozeßmaschine wird es möglich, Arbeitsaufträge zu terminieren und festzustellen, wieviel Aufwand eine Änderung verursacht. Das bringt Planungssicherheit und Überblick. Man kann immer überprüfen, ob sich die Entwicklung noch im Plan befindet.

Referenzierung auf Änderungsebene wird möglich. Es läßt sich zum Beispiel änderungsorientiert arbeiten. Entwickler denken nicht mehr in Dateien, sondern in Änderungen. Nicht einzelne Elemente werden bearbeitet, sondern Gruppen von Dateien ausgecheckt, eingecheckt, getestet etc. Dies beseitigt viele Integrationsprobleme.

Test- und Freigabe sehen, welche Modifikationen vorgenommen wurden, und können gezielt vorgehen. Sie müssen sich die Daten, die geprüft werden sollen, nicht mehr suchen, sondern können präzise auswählen.

Information wird einfacher zugänglich. Wenn die Prozeßmaschine und das KM die Daten verwalten, gibt es eine einheitliche Plattform, auf die Anwender Zugriff haben. Dennoch existieren für den Zugriff auf diese Daten natürlich Prozeßregeln.

Gutes Änderungs- und Konfigurations-Management umfaßt heute den gesamten Entwicklungsprozeß und muß ihm einen reproduzierbaren Rahmen bieten. KM wird zum Fließband der Softwareproduktion. Es garantiert, daß alle notwendigen Teile zum richtigen Zeitpunkt verfügbar sind. Ebenso integriert es alle Tools zur Bearbeitung und regelt den Zugriff.

Damit ist ein Unternehmen in der Lage, Standards zu integrieren, und erreicht gleichzeitig ein großes Vertrauen in seine Vorgehensweise. Das bringt eine bessere Softwarequalität und eine schnellere Reaktion auf die Anforderungen der Kunden.

Angeklickt

Software ist nie fertig. Kaum ist sie beim Anwender, kommen schon die ersten Erweiterungs- oder Änderungswünsche. Doch damit beginnt allzu häufig in den Entwicklungsabteilungen ein unheilvoller Prozeß. Jede Änderung durchläuft mehrere und zum Teil parallele Bearbeitungsphasen, die sich ihrerseits mit den Schritten anderer Arbeiten überschneiden. Und jede involvierte Institution arbeitet mit unterschiedlichen Werkzeugen. Im Ergebnis geht der Überblick verloren, Ressourcen werden verschwendet, und das Ziel wird verfehlt. Ein System für Konfigurations-Management kann nach Ansicht des Autors wieder Ordnung ins Chaos bringen.

*Bernd Volkmer ist Sales Engineer bei der Continuus Softare GmbH in München.