IT-Projekte: Performance vertraglich absichern

Anwender erwarten von einer Software, dass sie funktioniert. Dazu gehören zum Beispiel gute Antwortzeiten, eine permanent und verlässlich verfügbare Anwendung, keine Programmabbrüche und pünktliche Reports. Das klingt einfach, ist aber keineswegs selbstverständlich. Beim Erwerb einer Software haben Anwender meist keine konkrete Vorstellung davon, in welcher Zeit bestimmte Ergebnisse zu erzielen sind. Erst im Laufe eines Einführungsprojekts stellen sie dann fest, dass die Anwendung hinter ihren Erwartungen zurückbleibt. Wenn diese Performancekriterien dann nicht schriftlich vereinbart sind, droht Ärger. Im schlimmsten Fall können sie sogar zum Scheitern eines Einführungsprojekts führen.

Woran lässt sich Performance messen?

In der Informatik wird der Begriff Performance verwendet, um die Fähigkeit einer Software zu beschreiben, eine definierte Funktionalität in bestimmter Weise - etwa schnell, ununterbrochen oder gleichzeitig - auszuführen.

Die Performance einer Softwareanwendung umfasst folgende Aspekte:

• Verfügbarkeit: Die Softwareanwendung muss aus Sicht des Nutzers ein Maximum an verfügbarer Betriebszeit bieten. Gute Verfügbarkeit resultiert aus einer erhöhten Zuverlässigkeit und Robustheit von Hardwarekomponenten und Software.
• Zuverlässigkeit: Die Softwareanwendung soll hinsichtlich ihrer Funktionalitäten korrekt und vorhersehbar reagieren.
• Antwortzeitverhalten: Die Softwareanwendung muss beim definierten Geschäftsvorfall unterhalb eines vereinbarten zeitlichen Schwellenwerts reagieren.
• Skalierbarkeit: Der Ressourcenbedarf der Softwareanwendung und der Systemkomponenten muss sich bei steigenden Eingabemengen linear verhalten. Es muss sichergestellt sein, dass das Antwortzeitverhalten gleichbleibend gut bleibt, wenn die Anfragen der Endnutzer variieren oder ansteigen.

Wie gebrauchstauglich ist die Software?

Es geht bei Performance im Wesentlichen um die Gebrauchstauglichkeit einer Softwareanwendung. Die Gebrauchstauglichkeit wird unter den Gesichtspunkten der Effektivität, Effizienz und Zufriedenstellung genauer spezifiziert:

• Effektivität bezeichnet die Genauigkeit und Vollständigkeit, mit der ein Nutzer ein bestimmtes Ziel erreicht.
• Effizienz erfasst den eingesetzten Aufwand, der zur effektiven Erreichung des Ziels erforderlich ist.
• Zufriedenstellung charakterisiert die positive Einstellung und Freiheit von Beeinträchtigungen bei der Nutzung einer Anwendung.

Dabei hängt Performance auch maßgeblich von der Zufriedenheit der Endanwender ab. Sind die Endanwender unzufrieden, sind erhebliche Schwierigkeiten und vielfältige Mängelrügen nach dem Go Life fast unumgänglich.

Welche Kriterien gibt es?

Doch wie lassen sich die Kriterien für eine gute Performance festlegen? Die Komplexität zeigt sich insbesondere dann, wenn sich die Performance aus Sicht des Anwenders zwar als offenkundig unzureichend erweist, sich allerdings nur mit hohem Aufwand feststellen lässt, was tatsächlich die Ursache für ein schlechtes Antwortzeitverhalten ist.

Wenn dann versucht wird, die mangelnde Performance einer Software mit verstärktem Hardwareeinsatz aufzufangen, kann das die Unzufriedenheit noch steigern. Für den Anwender entstehen möglicherweise weitere – ungeplante – Kosten. Mehrkosten für Hardware und/oder zusätzliche CPU-Ressourcen führen zu Diskussionen über Schadensersatzforderungen.
Vermeiden lässt sich dies nur dann, wenn die Vertragspartner von Anfang an zweierlei festlegen:
• Die Performancekriterien der einzuführenden Softwareanwendung
• Die Anforderungen an die einzusetzende Hardware sowie die sonstige IT-Infrastruktur zur Gewährleistung der vereinbarten Performancekriterien.

Gebrauchstauglichkeit beachten

Den Vertragspartnern hilft also nur eine konkrete vertragliche Vereinbarung, nämlich eine Spezifikation der Performancekriterien, die allerdings weit mehr erfassen kann oder soll als die reine Festlegung von Antwortzeiten für bestimmte Dialoge. Schließlich steht hinter der Performance einer Softwareanwendung auch ihre Gebrauchstauglichkeit und damit die Zufriedenheit der Endnutzer.

Welche Performancekriterien die Vertragspartner festlegen müssen, hängt naturgemäß von der Softwareanwendung und vom konkreten Projekt ab. Entscheidend ist, dass die Absprachen sich nicht in vagen und unpräzisen Formulierungen erschöpfen, sondern dass die Kriterien messbar und kontrollierbar sind. Es muss dem Anwender im Zweifel gelingen, die Nichteinhaltung der vereinbarten Performancekriterien substantiiert darzulegen. Für die Vereinbarung von Performancekriterien lassen sich folgende Qualitätskriterien anwenden:

• Angemessener Umfang und Struktur
• Sortierbarkeit
• Vollständigkeit
• Verstehbarkeit, Eindeutigkeit und Konsistenz
• Verfolgbarkeit
• Realisierbarkeit und Prüfbarkeit
• Notwendigkeit

Unzulänglichkeiten bei der Beschreibung von Anforderungen werfen eine Vielzahl von Risiken im Projekt auf. Dies gilt auch für die Beschreibung der Performancekriterien. Im Idealfall werden diese Kriterien schon zu Beginn der Vertragsverhandlungen diskutiert.

Performance- und Lasttests vereinbaren

Mit Testszenarien lässt sich eine bei der produktiven Nutzung zu erwartende (ggf. extreme) Last erzeugen und das Verhalten der getesteten Softwareanwendung untersuchen. Damit lassen sich einerseits Fehler aufdecken, die im funktional orientierten System- oder Integrationstest nicht gefunden wurden, andererseits lässt sich die Erfüllung nicht-funktionaler Anforderungen (ein-schließlich vereinbarter Antwortzeiten) testen.

Solche Performance- und Lasttests sind den funktionalen Tests nachgelagert und umfassen zum Beispiel folgende Arbeitsschritte:

• Festlegen der Anforderungen an die auszuführenden Geschäftsvorfälle
• Entwurf von Testskripten
• Aufbau eines lasterzeugenden Systems
• Durchführen des/der Lasttests
• Überwachen der Systemkomponenten während des/der Lasttests
• Analyse der Ergebnisse des Lasttests und Festlegung daraus resultierender Maßnahmen zur Performanceoptimierung
• Reporting der Ergebnisse

Die Softwareanwendung muss schon in einem funktional stabilen Zustand sein, um überhaupt auf Lastbewältigung getestet werden zu können. Performance- und Lasttests werden daher erst gegen Ende des Projekts sinnvoll sein. Um nicht erst kurz vor dem Go Life vor der Erkenntnis zu stehen, dass die Anwendung nicht die vereinbarten Performancekriterien erfüllt, können die Vertragspartner auch während des Projektverlaufs die Durchführung von Performancemessungen vereinbaren. Sie wiederholen ausgewählte Testfälle und Einzelprozesse unter einer Grundlast. Damit werden einzelne Funktionen auf die Einhaltung der Performancekriterien geprüft. Performance- und Lasttests erfassen demgegenüber ganze Prozessketten und Geschäftsprozesse.

Fazit

Die Vertragspartner sollten sich am besten zu einem frühen Zeitpunkt der Vertragsverhandlungen Gedanken darüber machen, welche Anforderungen an die Performance als Teil der Gebrauchstauglichkeit gestellt werden. Wichtig ist es, die Kriterien und die für deren Einhaltung erforderlichen Voraussetzungen der IT-Infrastruktur festzuschreiben. Die vertraglich ohnehin erforderlichen Regelungen zu Tests und Abnahme sollten auch Ausführungen zu Performance- und Lasttests umfassen. Was zu tun ist, wenn IT-Projekte scheitern und welche Gestaltungsmöglichkeiten es im Worst Case gibt, habe ich meinen Artikel IT-Abnahme beschrieben.

Wie die Performancekriterien definiert werden, hängt meist von der Komplexität des Projekts und – leider – auch von der Zeit der Vertragspartner ab. Beide Vertragspartner sollten ihr Augenmerk auf eine gute Vorbereitung legen und dafür sorgen, dass ausreichend Zeit und genügend Ressourcen bereitstehen. Im Zweifel sollten sich Auftraggeber und IT-Dienstleister dabei externer Hilfe bedienen. Wir beraten Vertragspartner bei der Identifikation von Performancekriterien und helfen ihnen dabei, die relevanten Themen zu identifizieren und zu regeln. Außerdem unterstützen wir sie bei konkreten Fragen zur Umsetzung des Projekts.

Michaela Witzel, LL.M. (Fordham University School of Law), Fachanwältin für IT-Recht
witzel@web-partner.de