Klarer Bauplan für Web-Anwendungen

Michael Deiß ist seit 2000 bei eggs unimedia, einem IT-Dienstleister im Bereich Adobe Experience Manager und Adobe LiveCycle, beschäftigt und seit 2005 Inhaber und Geschäftsführer. Er war Projektleiter bei zahlreichen Adobe LiveCycle-Projekten etwa für die Fraunhofer-Gesellschaft, BBV und Allianz.
Wer Internet-Applikationen programmiert, sollte einige Regeln beachten. Dabei hilft "Web-Engineering".

Viele kleine und mittelständische Unternehmen in Deutschland wollen E-Business-Anwendungen einführen. Gemessen am Bedarf, gibt es jedoch dafür nicht genug ausgebildete Programmierer. Mit Web-Engineering-Methoden können diese Engpässe wenigstens zum Teil ohne gravierende Qualitätseinbußen überbrückt werden.

Anders als in der klassischen Softwareentwicklung, für die zahlreiche DIN und EU-Normen sowie ISO-Standards verabschiedet wurden, gibt es für die Programmierung von Web-Anwendungen heute keine anerkannten Regeln. So fehlen definierte Qualitätsmerkmale sowie Anleitungen zur Softwareerstellung. Vielmehr wurden Web-Applikationen bisher häufig eher spontan ("Try and fix") entwickelt.

Da Web-Anwendungen jedoch unternehmenskritische Geschäftsprozesse abbilden, ist diese - immer noch weit verbreitete - Vorgehensweise ungeeignet. Besonders deutlich wird dies an der neuen Generation, den Rich-Internet-Applikationen (RIA). Zunehmend fordern die Anwender die Integration der RIAs in bestehende IT-Landschaften eines Unternehmens ein, um beispielsweise Geschäftsdaten zu visualisieren oder auch um Kundeninformationen mit einer CRM-Lösung auszutauschen.

Um dies problemlos gewährleisten zu können, sollten Web-Applikationen nach einem Schichtenmodell aufgebaut sein:

- Die oberste Schicht, der Presentation Layer, ist das User Interface - die Bedienoberfläche.

- Darunter liegt die Business Logic, die alle Abläufe und Prozesse verwaltet.

- Unter ihr wiederum der Data Access Layer - die Schicht, die den Zugriff auf Daten im Data Storage Layer ermöglicht.

- In der untersten Schicht, dem Data Storage Layer, werden Daten der Anwendung gespeichert (zum Beispiel Datenbank oder LDAP-Server).

Der Vorteil einer solchen Architektur liegt in der Unabhängigkeit der Funktionsschichten voneinander: Nur benachbarte Schichten kommunizieren miteinander, und zwar über definierte Schnittstellen. Offene, standardisierte Interfaces gewährleisten darüber hinaus, dass sich bestehende Komponenten anbinden lassen.

Durch das Schichtenmodell können Unternehmen flexibel auf neue Anforderungen an die Web-Applikation reagieren beziehungsweise diese erweitern. Wurde beispielsweise das User Interface zunächst auf HTML-Basis realisiert und soll nun durch ein mit Hilfe von "Macromedia Flex" realisiertes Flash-Frontend ersetzt werden, so betrifft dieser Eingriff lediglich den Presentation Layer.

Wissenschaftliche Erkenntnisse nutzen

Analog zum Software-Engineering aus der klassischen Anwendungsentwicklung wurde aufgrund der Besonderheiten von Web-Anwendungen die neue Disziplin des Web-Engineering etabliert. Sie überträgt bekannte, auf wissenschaftlichen Erkenntnissen beruhende Methoden der Softwareerstellung auf Internet-Anwendungen und berücksichtigt viele Maßnahmen zur Qualitätssicherung.

Im Einzelnen bedeutet das nicht nur systematisch die Anforderungen an eine Web-Anwendung genau zu spezifizieren. Vielmehr geht es auch darum, Konzepte, Methoden, Techniken und Werkzeuge einzusetzen, um Web-Applikationen zu entwerfen, zu implementieren, zu betreiben und zu pflegen.

Ein klar definiertes Vorgehen, das auch die fortlaufende Dokumentation der Entwicklung einschließt, soll dabei die Kosten und Risiken bei Neuentwicklung und Pflege deutlich reduzieren. Gleichzeitig lässt sich die Qualität der Anwendung erheblich verbessern. Im Wesentlichen besteht Web-Engineering aus den vier Phasen.

Phase 1: Anforderungen sammeln, strukturieren und bewerten

Ein Web-Engineering-Projekt beginnt mit dem Sammeln, Strukturieren und Bewerten von Anforderungen. Im Idealfall arbeiten hier Auftraggeber und Auftragnehmer Hand in Hand. Zum guten Gelingen beitragen können ferner weitere Experten, das Bauen von Prototypen sowie das Übernehmen von Anforderungen aus vergleichbaren Projekten. Darüber hinaus sollten die Nutzer die Möglichkeit bekommen, in dieser Phase mitzuwirken. Alle Betroffenen müssen am Ende dieses Projektabschnitts mit den erarbeite- ten Ergebnissen einverstanden sein.

Phase 2: Entwicklung des User Interfaces und des Softwaredesigns

In der zweiten Phase entwickeln die Softwarearchitekten auf Basis der Anforderungen die Architektur und das Softwaredesign. Parallel dazu entwerfen Usability-Spezialisten die Benutzerschnittstelle. Das Design der Applikation wird normalerweise nur dann mit dem Kunden abgestimmt, wenn sich besondere Fragen ergeben, die mit der IT-Abteilung zu erörtern sind. Wenn das Projektteam beispielsweise mehrere Server vorsieht, muss gewährleistet sein, dass diese im unternehmenseigenen Rechenzentrum auch tatsächlich aufgestellt werden können.

Das User Interface unterliegt in der Regel längeren Diskussionen, da die Anwender darüber das System wahrnehmen. Spätere Änderungen verursachen nach der Programmierung (Phase 3) oft sehr hohe Kosten.

Phase 3: Programmieren der

Anwendung

Im dritten Projektabschnitt wird die Anwendung technisch umgesetzt. Dazu stehen in der Regel mehrere Verfahren zur Auswahl. Auf der einen Seite zum Beispiel J2EE oder Microsoft .NET, die sich besonders für komplexe Applikationen eignen. Für kleinere Anwendungen bieten sich unter anderem "Cold Fusion" (Macromedia) oder PHP an. Flex etabliert sich insbesondere für die Entwicklung von Rich-Internet-Anwendungen.

Phase 4: Test der Funktion, Sicherheit, Performance und Usability

Eine Besonderheit bei Web-Applikationen sind die kurzen Entwicklungszyklen von zwei bis sechs Monaten. Um einen Überblick über die Vielzahl der dadurch entstehenden Versionen der Applikation zu behalten, sollte das Team unbedingt auf ein Versionsverwaltungssystem zurückgreifen. Zudem darf diese Phase keinesfalls unterbewertet werden, da sie besonders wichtig für die Qualitätssicherung ist. Existierende Testmethoden und -techniken müssen dabei für das Entwickeln von Web-Applikationen adaptiert werden. Neben den funktionalen Komponenten sind auch Sicherheit, Performance, Verfügbarkeit und Usability zu testen.

Zu überprüfen sind ferner die Browser-Kompatibilität, das Zusammenspiel der Systemkomponenten untereinander (Web-Server, Applikations-Server, Firewall etc.) sowie die Antwortzeiten bei schmalbandigen Internet-Verbindungen. (fn)