Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

16.07.2004 - 

Application-Lifecycle-Management

Wie Entwickler dem Produktivitätsdruck standhalten

Die Softwareentwicklung muss produktiver werden, aber die Möglichkeiten der einzelnen Tools sind weitgehend ausgeschöpft. Auf der Suche nach Alternativen werden unterschiedliche Ansätze diskutiert. Einer davon ist das Application-Lifecycle-Management, das die Verbesserung der gesamten Entwicklung in den Mittelpunkt stellt. Von Matthias Eissing*

Für die Softwareentwicklung ist das Leben in den letzten Jahren nicht leichter geworden. Zu der Anforderung, eine größere Menge Software mit höherer Qualität in kürzerer Zeit zu erstellen, hat sich eine weitere etabliert: Das Ganze soll möglichst wenig kosten, denn die IT-Budgets stehen weiterhin unter starkem Druck. In dieser Situation ist die Verbesserung der Produktivität mehr denn je gefragt.

Programmiersprachen und ihre Entwicklungssysteme haben mittlerweile ein sehr hohes Niveau erreicht, deshalb ist hier ein Durchbruch zu einem neuen Produktivitätsniveau, wie einst mit der Einführung der Objektorientierung, nicht absehbar. Die Softwareentwicklung bemüht sich derzeit an mehreren Fronten um die Lösung dieses Problems:

- Die Weiterentwicklung von Programmierverfahren und -methoden wie FBP (Feature-based Programming), GDP (Generative Development Process), OEP (Object Engineering Process) und XP (Extreme Programming);

- die Übernahme von Verfahren zur Qualitätssicherung, beispielsweise mit CMM, Spice, V-Modell, Bootstrap und ISO 9000;

- die Integration einzelner Verfahren unter Prozessaspekten, zum Beispiel Wasserfallmodell oder Application-Lifecycle-Management.

Die derzeit gängigen Programmierverfahren decken meist Einzelbereiche ab, in denen sie oft gute Ergebnisse erzielen, bleiben aber in der Regel codezentriert und auf bestimmte Aspekte beschränkt - der Name deutet es schon an: Es sind Programmierverfahren, die Erfassung von Anforderungen spielt beispielsweise in Extreme Programming keine Rolle. Demgegenüber sind die Modelle der Qualitätssicherung übergeordnet und umfassen, richtig eingesetzt, in einem Unternehmen mehr als nur den Bereich Softwareentwicklung.

Einen anderen Ansatz verfolgt Application-Lifecycle-Management, das den Gesamtprozess der Softwareentwicklung und seine verschiedenen Phasen in den Mittelpunkt stellt. Dass sich die Erstellung von anforderungsgerechten Applikationen nicht im Schreiben von Code erschöpft, ist zwar seit langem bekannt, bislang konnten allerdings nur Design und Modellierung einen Teil der Aufmerksamkeit abzweigen. Mittlerweile setzt sich jedoch allgemein die Erkenntnis durch, dass auch Bereiche wie Anforderungs- und Konfigurations-Management, Testing und Deployment für der Erfolg von Projekten entscheidend sind.

Dabei kann die angestrebte Integration jedoch nicht sequentiell organisiert sein. Mit zunehmender Komplexität der Anwendungen hat sich nämlich ein mitunter gravierendes Wartungsproblem ergeben: Häufig und kurzfristig wechselnde Business-Anforderungen machen laufende Eingriffe in die Programme erforderlich, so dass die einzelnen Phasen der Softwareentwicklung nicht mehr wie im klassischen Wasserfallmodell in Ruhe abgearbeitet werden können. Die moderne Entwicklung stellt sich vielmehr als Zyklus dar, dessen einzelne Phasen untereinander vielfach verknüpft sind: Beispielsweise müssen Testkriterien auf das Requirement aufbauen und schon im Design grundlegende Deployment-Fragen abgeklärt werden. Softwareentwicklung ist ein iterativer Prozess.

Produktivitätszuwachs kann in diesem Ansatz vor allem aus der Optimierung des Gesamtprozesses entstehen. Die Werkzeuge der einzelnen Phasen des Prozesses, die bisher mehr oder weniger nebeneinander eingesetzt wurden, allenfalls durch Schnittstellen rudimentär verbunden, aber nicht wirklich integriert, sollen nun als Einheit funktionieren. Von der Definition der Anforderung bis zur Implementierung im produktiven Betrieb erfolgen alle Schritte aus einem Guss - genau darum geht es beim Application-Lifecycle-Management (ALM).

Integration über das ganze Projekt

ALM unterscheidet zwischen verschiedenen, sich zum Teil überlappenden und integrierten Phasen bei der Softwarenentwicklung, von der ersten Idee bis hin zum Produktivbetrieb und zur Pflege. Der integrierte Entwicklungsprozess beginnt schon bei der Gedankenfindung zum Projekt: Requirement Development/Management (Anforderungsentwicklung und Verwaltung) sind nur die ersten, wenn auch entscheidenden Schritte innerhalb eines Softwareprojekts.

Die Grundlage für erfolgreiche Projekte ist die ausgewogene und korrekte Definition der Anforderungen und ihre zentrale, versionierte Verwaltung. Nach Studien der "Standish Group International" scheitern mehr als 40 Prozent aller untersuchten Projekte, weil man sich nicht im Klaren darüber war, was man eigentlich entwickeln wollte. Projekte werden mit den falschen oder mit fehlenden Funktionen in den Wirkbetrieb überführt, mit zum Teil verheerenden Folgen.

Requirement Development beschreibt den Teilprozess des ALM, bei dem es um die Entwicklung von Anforderungen geht: Fach- und IT-Abteilung des Unternehmens definieren gemeinsam und iterativ im Team die Anforderungen in einem Projekt. Dabei geht es im Bereich Requirement Development und Requirement Management zuerst nur um die textuelle Erfassung, die Bereitstellung und die Versionierung von Anforderungen an ein Projekt. In vielen Unternehmen wird ein recht unstrukturierter Ansatz gewählt: Man versucht mittels Textverarbeitung/Tabellenkalkulation zu einem Pflichten- und Lastenheft zu kommen und läuft dabei häufig Gefahr, die Kontrolle über diesen Prozess zu verlieren. Dazu bei tragen verschiedene Versionsstände der Dokumente, unterschiedliche Ansichten und Sprachbarrieren zwischen Fach- und IT-Abteilung, Medienbrüche bei der Kommunikation durch Benutzung von E-Mail, Austausch von Office-Dokumenten und Diskussionen, die nicht versioniert und zentral abgelegt werden. Je früher im Prozess Fehler erkannt werden, desto weniger kostete es, sie zu beseitigen. Neutrale Schätzungen haben ergeben, dass es bis zu tausendmal teurer ist, Fehler im Deployment zu beheben statt in der ersten Prozessphase.

Die Überführung von Requirements in die ersten modellgestützten Visualisierungen mit Hilfe von UML bildet den logisch nächsten Schritt beim Application-Lifecycle-Management. Aus den textuellen Anforderungen lassen sich erste Use-Case-Diagramme ableiten, das System wird beschrieben und in Form von Activity-Diagrammen näher spezifiziert. UML dient dabei mit seinen verschiedenen Diagrammtypen in erster Linie dazu, die Kommunikation im Projektteam und auch mit der Fachabteilung zu verbessern und ein Gerüst für "guten Code" zu entwerfen.

Die Generierung von Code aus dem UML-Modell wird heute von professionellen Werkzeugen nachhaltig unterstützt. Die Integration von Requirements in die Phase des Testens ermöglicht erst die Nachvollziehbarkeit und die Aktualität von Testergebnissen: Wenn man die Anwendung oder Teile davon auf ihre Funktion oder ihre Performance testet, kann dies nur funktionieren, falls man Zugriff auf die vollständigen und aktuellen Anforderungen des Projekts hat.

Kontrollinstanz für die Prozesse

Gerade in einem Modell, das wesentlich von den Wechselbeziehungen aller Phasen lebt und in dem jeder mit jedem kommunizieren soll, bedarf es einer Instanz, die die Übersicht behält. Das zentrale Change- und Konfigurations-Management wacht im ALM über die Änderungen im Entwicklungsprozess, wie auch bei Produktiveinsatz und bei nachträglichen Änderungen und Erweiterungen am Softwareprojekt. Neben der reinen Versionierung von Modellen und Code bietet ein zentrales Change- und Konfigurations-Management die Möglichkeit, an einer zentralen Stelle Informationen zu verschmelzen und Mitarbeiter entsprechend einzubinden.

Bleibt für den Anwender die Aufgabe, Werkzeuge auszuwählen, die einen solchen integrativen Ansatz unterstützen. Eine gute Integration der Tools wurde häufig mit einer geringeren Leistungsfähigkeit der einzelnen Produkte erkauft. Doch bei den Entwicklungswerkzeugen gibt es mittlerweile Lösungen, die die Ansätze "Best of Breed" und "Integration" perfekt verbinden. (ue)

*Matthias Eissing ist Technology Consultant bei Borland.

Phasen der Entwicklung

Define: Festlegung der Anforderungen an die Software, Definition des Soll-Zustandes;

Design: Entwurf der Programmstruktur entsprechend den Anforderungen;

Development: Umsetzen des Entwurfs in Sourcecode, Erstellen von GUI und Reports sowie von Schnittstellen zu anderen Systemen;

Test: Abstimmung von Soll- und Ist-Zustand der Software, Qualitätssicherung;

Deployment: Implementierung der Software auf einer bestimmten Hard- und Softwareplattform, plattformspezifisches Tuning;

Manage: Zusammenführung und Verwaltung aller erstellten Softwarebestandteile, Change- und Konfigurations-Management.

Abb: Je später, desto teurer

Quelle: Borland