Kapitel 6 Adaptierbare Benutzeroberfläche

Werbung
Adaptierbare Webapplikationen
Adaptierbarkeit der Hyperwave Information Server Applikation
"Support Tracking System"
Diplomarbeit
an der
Technischen Universität Graz
vorgelegt von
Christian Trummer
Institut für Informationssysteme und Computer Medien IICM
Technische Universität Graz
A-8010 Graz
Österreich
März 2004
 Copyright 2004, Christian Trummer
Begutachter:
o.Univ.-Prof. Dr. Dr.h.c.mult. Hermann Maurer
Betreuer:
Dipl.-Ing. Dr.techn. Christian Gütl
Dipl.-Ing. Helmut Leitner
Meinen Eltern Theresia und Anton und meiner Lebensgefährtin Evelyn.
Kurzfassung
Trouble Ticket Systeme dienen zur Dokumentation von Problemen und deren
Lösungen. Das Support Tracking System, welches zu den Trouble Ticket Systemen
gehört, ist spezialisiert auf den Kundendienstbereich. Kundenprobleme, deren
Dokumentation und Lösungen, werden mittels Trouble Tickets erfasst. Um das Support
Tracking System bei verschiedenen Kunden einsetzen zu können, war es notwendig
geworden Möglichkeiten zur Adaptierung des Systems und der Benutzeroberfläche zu
schaffen. Dies wurde im Rahmen von Wartungsarbeiten durchgeführt. Neben der
Wartung des Support Tracking Systems war ein weiteres Ziel dieser Arbeit, eine
Reduktion der anfallenden Wartungskosten. Arbeitstechniken aus dem Bereich der
agilen Softwareentwicklungsprozesse wurden angewandt, um diese Kostenreduktion zu
erreichen. Die Umwandlung in eine adaptierbare Webapplikation sollte den Umfang der
Wartungsarbeiten reduzieren und so ebenfalls zu einer Kostenverringerung führen. Weil
für die Anwendung der Arbeitstechniken (Refaktoring) die notwendigen
Rahmenbedingungen (vollständige Testabdeckung) fehlten, hatte dieser Ansatz nur
geringen Erfolg. Es gelang aber durch Einführung der Adaptierbarkeit, den Umfang der
Wartungsarbeiten deutlich zu reduzieren. Man sollte daher bei zukünftigen Projekten
von Anfang an für eine vollständige Testabdeckung sorgen. In diesem Fall sollte auch
der Ansatz mit den Arbeitstechniken aus den agilen Softwareentwicklungsprozessen zu
einer Reduktion der Wartungskosten führen.
Abstract
Trouble Ticket Systems are used for the documentation of occurring problems and their
solutions. The Support Tracking System, a component of the Trouble Ticket Systems is
specialized for customer support divisions. Problems reported by customers and the
documentations of the solutions are stored in trouble tickets. To assure that the Support
Tracking System useable for different customers, it was necessary to integrate
possibilities for adaptation of the system and the user interface. This was realized during
the maintenance phase. In addition to the maintenance of the Support Tracking System
the reduction of the maintenance costs was one of the aims of this thesis. Several
practices in the field of agile software development processes were used to reduce these
costs. The transformation to an adaptable web application should reduce the amount of
maintenance. Since not all conditions (test cases) necessary for practices (refactoring),
this approach had only marginal success. The introduction of adaptability reduced the
amount of maintenance significantly. For future projects test cases should be developed
from the beginning. In this way the approach to use practices from agile software
development processes would also lead to a reduction of maintenance costs.
Danksagung
An dieser Stelle möchte ich mich bei all jenen bedanken, die mir beim Erstellen dieser
Arbeit durch ihre Unterstützung zur Seite gestanden sind.
Allen voran o.Univ.-Prof. Dr. Dr.h.c.mult. Hermann Maurer, Leiter des Institutes für
Informationssysteme und Computer Medien (IICM) und Begutachter dieser Arbeit,
sowie bei meinen Betreuern Dipl.-Ing. Dr.techn. Christian Gütl und Dipl.-Ing. Helmut
Leitner, die mir durch ihre intensive Betreuung, zum einem im wissenschaftlichen
Bereich zum anderen im kommerziellen und technischen Bereich, sehr geholfen haben.
Weiters möchte ich mich an dieser Stelle bei allen Mitgliedern der Web Application
Group und allen anderen Mitarbeitern des Institutes für die schöne Zeit am Institut
bedanken.
Bedanken möchte ich mich auch bei meinem Freund Dipl.-Ing. Simon Zwölfer, der mir
half meine anfänglichen Schwierigkeiten mit dem Hyperwave Information Server zu
überwinden.
Die Firma Hyperwave München war ein angenehmer Kunde und mitverantwortlich
dafür, dass diese Arbeit für mich auch zu einem finanziellen Erfolg wurde.
Meiner Freundin Evelyn danke ich für Ausdauer und Geduld.
Ganz besonders bedanken möchte ich mich bei meinen Eltern Theresia und Anton, die
mein Studium erst ermöglicht haben, mich all die Jahre hinweg tatkräftig unterstützt
haben und meinen Plänen und Wünschen gegenüber immer offen waren.
Ich versichere hiermit, diese Arbeit selbständig verfasst, andere als die angegebenen
Quellen und Hilfsmittel nicht benutzt und mich auch sonst keiner unerlaubten
Hilfsmittel bedient habe.
Inhaltsverzeichnis
Kapitel 1 Einleitung ............................................................................................................. 1
1.1
1.2
1.3
Motivation .......................................................................................................................... 1
Problemumfeld ................................................................................................................... 2
Struktur der Arbeit .............................................................................................................. 3
Kapitel 2 Trouble Ticket Systeme ...................................................................................... 6
2.1
2.2
2.3
2.4
2.5
2.5.1
2.5.2
2.5.3
2.5.4
2.6
2.6.1
2.6.2
2.6.3
2.6.4
2.7
Anforderungen an Trouble Ticket Systeme ........................................................................ 6
Abgrenzungsversuch .......................................................................................................... 9
Support Tracking System ................................................................................................. 10
Übersicht verfügbarer Systeme......................................................................................... 12
Nichtkommerzielle Produkte ............................................................................................ 12
Bugzilla............................................................................................................................ 12
Debian Bug Tracking System (debbugs) ......................................................................... 13
GNATS ............................................................................................................................ 14
Double Choco Latte ......................................................................................................... 14
Kommerzielle Produkte .................................................................................................... 15
Rational ClearQuest ......................................................................................................... 15
Rational ClearDDTS........................................................................................................ 15
Aegis Defect Tracking ..................................................................................................... 16
OmniTracker .................................................................................................................... 17
Zusammenfassung ............................................................................................................ 18
Kapitel 3 Wartungsprozess ............................................................................................... 20
3.1
3.2
3.2.1
3.2.2
3.3
3.4
3.5
Softwarewartung ............................................................................................................... 20
Agile Software Prozesse ................................................................................................... 24
Meta Prozesse .................................................................................................................. 26
Konkrete Prozesse ........................................................................................................... 28
eXtreme Programming (XP) ............................................................................................. 30
Refaktoring ....................................................................................................................... 32
Zusammenfassung ............................................................................................................ 34
Kapitel 4 Systembeschreibung .......................................................................................... 36
4.1
4.2
4.3
4.3.1
4.3.2
4.3.3
4.4
Hyperwave Information Server ........................................................................................ 36
HWLIB ............................................................................................................................. 38
Support Tracking System im Überblick ........................................................................... 41
Hauptfunktionen aus Benutzersicht ................................................................................. 41
Architektur des Support Tracking Systems ..................................................................... 47
Funktionalität des Support Tracking Systems ................................................................. 49
Zusammenfassung ............................................................................................................ 52
Kapitel 5 Adaptierbare Systemeigenschaften ................................................................. 54
5.1
Allgemeines ...................................................................................................................... 54
Inhaltsverzeichnis
5.2
5.3
5.4
5.5
5.6
5.7
5.8
Werte für die Ticketattribute ............................................................................................ 55
Kundendatenbank ............................................................................................................. 58
Rollenabhängige Funktionalität ........................................................................................ 59
Eskalationszeiten .............................................................................................................. 64
Implementierung ............................................................................................................... 64
Kundenbenachrichtigung .................................................................................................. 66
Zusammenfassung ............................................................................................................ 67
Kapitel 6 Adaptierbare Benutzeroberfläche ................................................................... 68
6.1
6.2
6.3
6.3.1
6.3.2
6.3.3
6.4
6.4.1
6.4.2
6.4.3
6.4.4
6.4.5
6.4.6
6.4.7
6.5
6.6
Ausgabe unter STS V1.2 .................................................................................................. 68
Ausgabe unter STS V1.3 .................................................................................................. 70
STS Tags........................................................................................................................... 71
insert_data ........................................................................................................................ 71
insert_functionresult ........................................................................................................ 72
insert_actionlink und insert_href ..................................................................................... 75
HTML Vorlagen ............................................................................................................... 75
sts_base ............................................................................................................................ 76
sts_ticketobject_object ..................................................................................................... 79
sts_ticketobject_content ................................................................................................... 81
sts_noteentry .................................................................................................................... 82
sts_phonenoteentry .......................................................................................................... 84
sts_schedulenoteentry ...................................................................................................... 85
sts_emailentry .................................................................................................................. 85
Implementierung ............................................................................................................... 87
Zusammenfassung ............................................................................................................ 90
Kapitel 7 Erkenntnisse ...................................................................................................... 91
7.1
7.2
7.3
Trouble Ticket Systeme .................................................................................................... 91
Wartung und agile Softwareprozesse ............................................................................... 91
Adaptierbare Webapplikation ........................................................................................... 93
Kapitel 8 Zusammenfassung ............................................................................................. 95
Kapitel 1
Einleitung
In diesem einleitenden Kapitel wird die Ausgangssituation dargestellt, d.h. es wird die
Situation rund um das im Rahmen der Arbeit zu verbessernde Support Tracking System
wiedergegeben. Es wird eine kurze Darstellung gegeben, welche Bedürfnisse welchen
Änderungsmotiven zu Grunde lagen. Es folgt eine Beschreibung des Problemumfeldes,
in dem das Support Tracking System eingesetzt wird. Abschließend findet sich eine
Beschreibung der Struktur der Arbeit.
1.1 Motivation
Heutzutage versuchen zahlreiche Unternehmen ihre Kunden immer enger an sich zu
binden, deshalb begnügen sie sich nicht mit dem reinen Verkauf ihrer Produkte, sondern
verbinden diese, zum Wohle der Kunden, mit zahlreichen zusätzlichen Dienstleistungen
zu den Produkten selbst. Vielfach richten Unternehmen Supportabteilungen oder
Callcenters ein, die den Kunden bei auftretenden Problemen unterstützen und beraten
sollen. Diese Maßnahme verbessert die Beziehung zum Kunden und erhöht somit die
Kundenbindung.
Trouble Ticket Systeme sind Applikationen zur Verwaltung von Problemen. Der
Supportbereich ist ein mögliches Einsatzgebiet für diese Systeme. Die Kommunikation
zwischen Supportmitarbeitern und den Kunden kann mit Trouble Ticket Systemen
dokumentiert werden. Diese Systeme helfen den Supportmitarbeitern den Überblick so
zu waren, dass auf kein Problem irgendeines Kunden vergessen wird. Außerdem
ermöglichen sie offene Kundenprobleme mit bereits gelösten Fällen zu vergleichen.
Am Institut für Informationssysteme und Computer Medien (IICM)1 der Technischen
Universität Graz2 wurde ein solches System mit dem Namen Support Tracking System
(STS) für Hyperwave3 entwickelt. Das Support Tracking System ist eine Hyperwave
Information Server basierende Intranet Webapplikation. Hyperwave erkannte die
1
http://www.iicm.edu
http://www.tugraz.at
3
http://www.hyperwave.com
2
Kapitel 1 Einleitung
2
Notwendigkeit das Support Tracking System an die Bedürfnisse unterschiedlicher
Kunden anpassen zu können. Hyperwave erteilte dem IICM den Auftrag das System
anpassbar zu machen und mit einer anpassbaren Benutzeroberfläche auszustatten. Dies
wurde im Rahmen dieser Arbeit neben sonstigen Wartungsarbeiten umgesetzt. Daneben
wurde nach Wegen gesucht die Wartungskosten zu senken. Mit der Entwicklung einer
adaptierbaren Benutzeroberfläche und durch die Umwandlung in einen adaptierbaren
Systemkern war auch das Ziel eine Kostenreduktion bei der Wartung zu erreichen
verbunden.
Anforderungen an Software Anwendungen sind einer stetigen Veränderung
unterworfen, dies gilt besonders für Systeme im Dienstleistungssektor, wo es gilt die
eigene Serviceleistung schneller als
die Konkurrenz
zu verbessern.
Softwareanwendungen müssen durch fortlaufende Wartung immer wieder an die
geänderten Anforderungen angepasst werden. Die Wartung von Software verursacht
große Kosten, deren Ursache vielfältig sein können. Zwei mögliche Ursachen können
sein, dass zu aufwendige Softwareentwicklungsprozesse in der Wartungsphase
eingesetzt werden und dass Programm, Design und Architektur nur schwer zu ändern
sind.
Softwareentwicklungsprozesse nehmen kaum Rücksicht auf die Phase nach der
Auslieferung der Software, sondern konzentrieren sich hauptsächlich auf die Phasen
Analyse, Design, Implementierung und Test. Schwergewichtige Entwicklungsprozesse
stellen eine große Belastung für die kleinen Wartungsmannschaften dar, sodass agile
Software Entwicklungsprozesse für die Wartungsphase als die geeignetere Wahl
erscheinen.
Gelingt es Architektur und Design von Software so zu gestalten, dass nicht jede
Änderung in den Anforderungen den Eingriff eines Softwareentwicklers nach sich zieht,
könnten Wartungskosten stark reduziert werden. Durch die Umwandlung vom Support
Tracking System in eine adaptierbare Webapplikation ist es den Anwendern nun nicht
nur möglich zahlreiche Änderungen an der Anwendung selbst vorzunehmen, sondern
auch das komplette Erscheinungsbild zu gestalten. Heute, nach Abschluss dieser Arbeit,
kann dieses System an die Anforderungen verschiedener Kunden (Support Abteilungen)
ohne großen Aufwand angepasst werden.
1.2 Problemumfeld
Die Anwendungsgebiete von Trouble Ticket Systemen sind vielfältig, das Grundprinzip
solcher Systeme ist aber ähnlich. Unabhängig davon ob es sich um Problem Tracking
Systeme, Bug Tracking Systeme, Feature Request Systeme oder um das Support
Tracking System handelt, stets wird zu einem Problemfall ein Ticket angelegt. Diese
Tickets enthalten eine Grundbeschreibung der aufgetretenen Situation. Rund um diese
Grundbeschreibung werden, mit der Zeit, weitere Informationen hinzugefügt. Beim
vorliegenden Support Tracking System handelt es sich um eine auf Internettechnologien
basierende Anwendung, die im Intranetbereich von Supportabteilungen zum Einsatz
kommt. Der serverseitige Teil basiert auf dem Hyperwave Information Server. Im
clientseitigen Teil kommen gewöhnliche Webbrowser zur Anwendung.
Kapitel 1 Einleitung
3
Supportabteilungen sind für Kunden die erste Anlaufstelle beim Auftreten von
Problemen mit einem Produkt. Die Mitarbeiter im Supportbereich erfassen das Problem
des Kunden mit einem Supportticket und fügen im Laufe der Zeit immer mehr
Information zum Ticket hinzu. Dieses Hinzufügen erfolgt in Form sogenannter
Ticketeinträge. Diese Einträge können Telefongespräche, E-Mails oder ganz einfache
Notizen darstellen. In erster Linie soll das Support Tracking System verhindern, dass
Supportmitarbeiter auf einzelne Kundenanfragen oder auf einzelne Probleme vergessen.
Supporttickets erfahren eine ausführliche Beschreibung durch Metadaten. Mit Hilfe
dieser Metadatenbeschreibung ist es möglich, nach ähnlichen Problemfällen im System
zu suchen.
1.3 Struktur der Arbeit
Die vorliegende Arbeit gliedert sich in einen Untersuchungsbereich und in einen daran
anschließenden Gestaltungsbereich. Die der Einleitung folgenden drei Kapitel gehören
zum Untersuchungsbereich.
Kapitel 2 geht folgenden Fragen nach: Wozu werden Trouble Ticket Systeme
verwendet? Wie funktionieren Trouble Ticket Systeme? Welche ähnlichen
Softwaresysteme werden noch im Support eingesetzt? Welche kommerziellen Produkte
sind verfügbar bzw. welche Produkte sind frei erhältlich?
Wie für jedes andere Softwaresystem, ändern sich auch für Softwaresysteme im
Dienstleistungsbereich immer wieder die Anforderungen oder Fehler im Programm
werden offenkundig. Das Beheben von Softwarefehlern und das Anpassen von Software
an neue Anforderungen erfolgt in der sogenannten Wartungsphase. Die Kosten dieser
Phase werden vielfach unterschätzt. Ein Großteil der durchgeführten Arbeiten am
Support Tracking System kann als Wartungsarbeiten betrachtet werden.
Im Kapitel 3 werden die wesentlichen Kategorien der Softwarewartung definiert. Es
wird die Möglichkeit untersucht, Wartungskosten zu senken, indem man
Arbeitstechniken aus dem Bereich der agilen Softwareentwicklungsprozesse einsetzt.
Softwaresysteme sind heutzutage zumeist keine vollständigen Neuentwicklungen,
sondern
greifen
in
verschiedensten
Formen
auf
bereits
bestehende
Softwarekomponenten zurück. Diese Formen können vielfältig sein. Einige Stichworte
dafür sind Komponentenmodelle, Middelware und Infrastruktursoftware,
Wiederverwendung von Quellcode und Vererbung über Klassenhierarchien. Beim
vorliegenden Support Tracking System verhält es sich nicht anders. Die wesentliche
Basis vom Support Tracking System ist der Hyperwave Information Server der Firma
Hyperwave und eine Bibliothek vom Institut für Informationssysteme und Computer
Medien.
Kapitel 4 gibt eine kurze Einführung zum Hyperwave Information Server. Es wird die
Architektur und das Application Programming Interface (API) des Servers vorgestellt.
In weiteren Unterkapiteln wird die Hyperwave Library HWLIB 4 und die Architektur
4
Hyperwave Library (HWLIB) erstellt von der Web Application Group (WAG) am
IICM
Kapitel 1 Einleitung
4
des Support Tracking Systems beschrieben. Das Kapitel beinhaltet eine Beschreibung
der Funktionalität des Support Tracking Systems aus Benutzersicht.
Kapitel 5 und Kapitel 6 gehören zum Gestaltungsteil. Diese Kapitel beschreiben, wie
die Adaptierbarkeit beim Support Tracking System realisiert wurde.
Im Kapitel 5 wird beschrieben, wie aus dem Support Tracking System eine adaptierbare
Webapplikation gemacht wurde. Durch die Möglichkeit das System adaptieren zu
können, werden viel weniger Änderungswünsche an die Softwareentwickler
herangetragen und die Kosten sinken.
Kapitel 6 zeigt, wie der Kunde unter Verwendung von HTML Vorlagen in die Lage
versetzt wird die Benutzeroberfläche zu verändern. Adaptierbare Systemeigenschaften
und adaptierbare Benutzeroberfläche ergeben zusammen eine adaptierbare
Webapplikation mit hohem Kundennutzen.
Kapitel 7 umfasst die gewonnenen Erkenntnisse, sowohl aus dem Versuch auf
Arbeitstechniken der agilen Softwareentwicklungsprozesse umzusteigen, als auch aus
dem Versuch den Wartungsaufwand zu reduzieren, indem man das System in eine
adaptierbare Anwendung umwandelt
Kapitel 8 schließt diese Arbeit mit einer Zusammenfassung ab.
I. Untersuchungsbereich
Kapitel 2
Trouble Ticket Systeme
Dieses Kapitel beginnt mit einer Definition und Aufgabenbeschreibung für Trouble
Ticket Systeme. Im folgenden Teil werden Gemeinsamkeiten und Unterschiede zu
ähnlichen Systemen herausgearbeitet. Im dritten Teil wird eine kurze Einführung in das
vom Institut für Informationssysteme und Computer Medien (IICM) der Technischen
Universität Graz entwickelte Support Tracking System gegeben. Einer kurzen Übersicht
verfügbarer Konkurrenzprodukte folgt die ausführliche Beschreibung von jeweils vier
kommerziellen bzw. nicht kommerziellen Produkten.
2.1 Anforderungen an Trouble Ticket
Systeme
Entdecken, Eingrenzen und Beheben von Fehlern und Störungen gehören zu einem
effizienten Fehlermanagement. Anwender von Programmen und Diensten sind nicht für
die Fehlerbehebung zuständig, sondern haben andere Aufgaben professionell zu
erledigen. Fehlermanagement ist Aufgabe des Benutzerservice (engl. User Help Desk)
und hat Verfügbarkeit und Zuverlässigkeit von Systemen und Diensten hoch zu halten.
Die vom Benutzerservice verwendeten Fehlerdokumentationssysteme oder
Störverfolgungssysteme bezeichnet man als Trouble Ticket Systeme. Ein Trouble
Ticket ist ein Datensatz für genau eine Störung, der zumindest Störungsmelder,
betroffene Komponente, Störsymptome und Lösung enthält. [Kruse 2001]
Eine Untergruppe der Systeme im Helpdesk Bereich sind die Trouble Ticket Systeme.
Sie systematisieren den Supportvorgang. Diese Systeme ordnen Anfragen und Hilferufe
("Calls"), die über verschiedene Frontends einlangen, in Kategorien ein und versehen
sie mit eindeutigen Identifikationen. Die Kategorie bestimmt den Bearbeiter des
Problems. Bearbeiter und Störungsmelder werden von Zuweisungen, Änderungen,
Arbeitsschritten und Lösungsvorschlägen mittels E-Mails informiert. Die meisten
Systeme unterstützen eine automatische Wiedervorlage unbearbeiteter Anfragen. Die
Koordination von mehreren Mitarbeitern verbessert sich und die Servicequalität steigt.
[Schade 1999]
Kapitel 2 Trouble Ticket Systeme
7
Trouble Ticket Systeme helfen die Stehzeiten zu verringern und dadurch verbessert sich
die Kundenzufriedenheit. Durch die enge Rückkopplung zwischen Kunden und
Herstellern steigert sich deren Produktivität. Leicht zugängliche Trouble Ticket
Systeme bewirken, das die Hersteller mit den Wiederverkäufern und den Kunden in
Verbindung bleiben. Die Systeme helfen eine effektive Kommunikation über die
Probleme zu führen. Diese Systeme führen allmählich zu einem Wissensaufbau in den
Supportabteilungen und bewirken dadurch eine Kostenreduktion. [Mozilla Organisation
2003]
Fehlermanagement teilt sich in die drei Phasen: Fehlererkennung, Fehlerdiagnose und
Fehlerbehebung (siehe Abbildung 2-1). In der ersten Phase geht es darum, das erkannte
Problem ausführlich zu erfassen und hinreichend genug zu klassifizieren, damit es
schließlich dem richtigen Mitarbeiter zur Bearbeitung zugewiesen werden kann. In der
zweiten Phase der Fehlerdiagnose wird das bestehende Problem analysiert. Kann es
vom Mitarbeiter, der es zur Bearbeitung zugeteilt bekommen hat, nicht gelöst werden,
so wird das Problem an einen anderen Mitarbeiter weitergeleitet. Muss das Problem an
einen Mitarbeiter mit tiefergehendem Spezialwissen weitergegeben werden, dann
spricht man von Eskalation. Die Fehlerbehebung ist die abschließende Phase im
Fehlermanagement. In dieser Phase wird das Problem behoben und es kommt zum
Schließen der Störmeldung. Dabei bekommt der Störmelder eine Rückmeldung, die ihm
mitteilt, dass das Problem behoben ist. Wesentlich ist, dass über alle drei Phasen hinweg
eine lückenlose Dokumentation geführt wird. Dies ist notwendig, damit verschiedene
Personen in den unterschiedlichen Schritten und Phasen am Problem arbeiten können.
Die Dokumentation hilft ähnliche Probleme rascher lösen zu können. [Kruse 2001]
Fehlermanagement
Fehlererkennung
Fehlerdiagnose
Fehlerbehebung
- Erfassung
- Diagnosemaßnahmen
- Behebungsmaßnahme
- Klassifizierung
- Weiterleitung
- Schließen der Störmeldung
- Zuweisung
- Eskalation
- Rückmeldung
Dokumentation
Abbildung 2-1: Phasen des Fehlermanagements nach[Kruse 2001]
Die Aufgaben eines Trouble Ticket Systems gliedern sich grundsätzlich in die vier
Bereiche: Trouble Ticket Management, Statistiken und Berichte, Zugriff auf
Problemlösungswissen und schließlich Trouble Ticket Korrelation. Den Kern stellt
allerdings das Trouble Ticket Management dar. Dieser Bereich hat die Aufgabe
Störungsmeldungen, inklusive aller Aktivitäten rund um die Störbehebung in einer
Datenbank zu speichern und zu verwalten. Der Datensatz rund um eine
Kapitel 2 Trouble Ticket Systeme
8
Störungsmeldung wird als Trouble Ticket bezeichnet. Trouble Ticket Management
unterstützt alle Phasen des Fehlermanagements. Die erste Aufgabe ist das Erfassen einer
Störmeldung. Diese Meldung kann telefonisch, per E-Mail oder über ein Webformular
erfolgen. Nimmt das Benutzerservice die Daten auf, so ist dies meist zuverlässiger und
exakter, als bei Direkteingaben vom Störungsmelder. Die Effizienz eines Trouble
Ticket Systems hängt primär von der Exaktheit und Vollständigkeit der Daten ab.
Identität, Status, Benutzerdaten, Komponenten- und Dienstdaten, Zeitstempel,
Fehlerdaten und Organisationsdaten gehören meist zu den vorgegebenen Feldern eines
Trouble Tickets. Die Identifikationsnummer ist wesentlich für Nachfragen des
Störungsmelders. Typische Werte für den Status sind "offen", "weitergeleitet", "in
Bearbeitung", "wartend" oder "abgeschlossen". Komponenten- und Dienstdaten
beschreiben von der Störung betroffenen Einheiten. Fehlerdaten beschreiben die
aufgetretene Störung. Alle Einträge eines Trouble Tickets werden mit Zeitstempel
versehen, dies ermöglicht es zeitliche Abläufe später nachvollziehen zu können.
Benutzerdaten halten fest, wer die Störung gemeldet hat. Organisationsdaten enthalten
zum Beispiel Angaben über Dringlichkeit oder Priorität und legen somit fest, in
welchen Zeiträumen auf eine Störung zu reagieren ist. Je nachdem, in welchem Bereich
ein Trouble Ticket System eingesetzt wird, gibt ein bestimmtes Domänenvokabular,
welches sich in den Auswahllisten für die einzelnen Einträge wiederfindet. Allerdings
sollte es immer die Möglichkeit für Freitexteingaben geben. Personendatenbanken im
Hintergrund und Verfahren wie CTI (Computer Telefon Integration) erhöhen die
Benutzbarkeit des Systems. Die eingetragenen Daten dienen zunächst zum
Klassifizieren, zum Prioritäten setzen und zum Zuweisen. [Kruse 2001]
Zunächst versuchen Mitarbeiter des 1st Level Supports die Störung zu beheben. Gelingt
dies nicht, dann leiten die Generalisten des 1st Level Supports das Trouble Ticket an die
Spezialisten im 2nd Level Support weiter. Je länger eine Störung besteht und umso mehr
Personen mit der Behebung einer Störung betraut sind, umso höher sind die Kosten.
Daher wird angestrebt, dass die auftretenden Probleme vom 1st Level Support gelöst
werden. Wird ein Trouble Ticket weitergeleitet, dann kommt es zu einer
Benachrichtigung (Notifikation). Oft besteht zwischen Benutzern eines Systems und
Supportabteilung eine Dienstleistungsvereinbarung (DLV) oder ein Service Level
Agreement (SLA). Werden beim Versuch Lösungen zu finden bestimmte Zeiten
überschritten, dann wird die nächst höherer Supportebene informiert. Diesen Vorgang
bezeichnet man auch als Eskalation. Um Eskalationen automatisiert ablaufen lassen zu
können, bedarf es der bereits erwähnten Zeitstempel. [Kruse 2001]
Ein weiterer wichtiger Bereich ist die Erstellung von Statistiken und Berichten. Diese
zeigen ein Abbild des vom Benutzerservice betreuten Systems. Grundsätzlich gibt es
zwei Betrachtungen. Zum einem gibt es eine Betrachtung des aktuellen Zustandes und
zum anderen gibt es eine Betrachtung von langfristigen Trends. Statistiken und Berichte
unterstützen den Betrieb eines Trouble Ticket Systems. Diese Statistiken liefern
Hinweise zur Verbesserung des Fehlermanagements und versorgen das Management
mit Daten. Bei der Betrachtung des aktuellen Zustandes sind vor allem die Zustände
von Interesse, d.h. wie viele Tickets sind offen, gelöst oder in einem anderen Zustand.
Man kann auch Aussagen über den Zustand des betreuten Systems machen. Wie lange
läuft ein System fehlerfrei? Wie lange dauert die Behebung einer Störung im
Durchschnitt? Man kann auch feststellen, wo in einem System latente Probleme liegen.
[Kruse 2001]
Kapitel 2 Trouble Ticket Systeme
9
Während der Bearbeitung eines Trouble Tickets werden diesem laufend Informationen
über die Problembehebung hinzugefügt. Im Laufe der Zeit baut sich so ein enormes
Problemlösungswissen auf, auf welches die Mitarbeiter zurückgreifen können. Durch
ein Trouble Ticket System kommt es zum erwünschten Transfer von Know-how von
erfahrenen Mitarbeitern zu weniger erfahrenen Mitarbeitern. Das in den Trouble Tickets
angehäufte Wissen hilft bei der Fehlerdiagnose und Fehlerbehebung ähnlicher
Störungen. [Kruse 2001]
Ein letzter wichtiger Punkt für Trouble Ticket Systeme ist es, die Korrelationen
zwischen Trouble Tickets herauszufinden. Möglicherweise beschreiben verschiedene
Trouble Tickets die gleiche Störung oder verschiedene Benutzer verschiedener
Installationen haben die gleiche Störung gemeldet. Wird ein Trouble Ticket
geschlossen, weil eine Lösung für die Störung gefunden wurde, ist es wesentlich zu
wissen, welche Trouble Tickets mit geschlossen werden können. [Kruse 2001]
2.2 Abgrenzungsversuch
Das Support Tracking System gehört zur Klasse der Trouble Ticket Systeme. Bei diesen
Systemen wird zu jedem Fall ein Ticket angelegt, welches im Laufe der Zeit immer
mehr Daten sammelt oder zumindest seinen Status ändert. Support Tracking Systeme
sammeln Informationen, die zwischen den Kunden und den Supportmitarbeitern
ausgetauscht werden. Ähnliche Systeme sind Problem Tracking Systeme (PTS),
Bugtracking Systeme (BTS), Feature Request Systeme (FRS) und Knowledge Data
Base Systeme (KDB), welche alle sehr häufig in der Softwarebranche Verwendung
finden. Es findet sich fast jede Kombination der Marketingschlagworte Trouble,
Problem, Bug, Request, Feature, Ticket, Tracking und System.
Kann ein Kundenproblem vom Support nicht gelöst werden, so geht das Problem in ein
Problem Tracking System ein. Probleme mit Softwareprodukten können viele Ursachen
haben, wie etwa schlechte oder fehlerhafte Beschreibung in Handbüchern, oder falsche
Bedienung durch den Benutzer. Nicht selten handelt es sich aber auch um Fehler im
Programm selbst. Diese Fehler, meist als Bugs bezeichnet, werden dann in Bug
Tracking Systeme gesammelt und in der Wartung behoben. Um die zahlreichen Ideen
zur Verbesserung einer Software verwalten zu können, kommen sogenannte Feature
Request Systeme zum Einsatz. Hier werden Ideen gesammelt, abgelehnt oder
Releasezyklen zugeordnet. Für viele Probleme werden Lösungen oder Workarounds
gefunden, die zusammen mit anderen Tipps und Tricks in einer Knowledge Data Base
gesammelt werden können.
Die verschiedenen hier beschrieben Systeme arbeiten oft Hand in Hand. Dabei kann es
sein, das ein System mehrere Aufgaben übernimmt oder das für jede Aufgabe ein
spezialisiertes System Verwendung findet. Gemeinsam haben diese Systeme, dass sie
mit Tickets (Datensätzen) arbeiten und die im Laufe der Zeit gemachten Veränderungen
speichern (Tracking). Kommen mehrere Systeme zum Einsatz, dann halten die Tickets
eines Systems oft Referenzen auf Tickets eines anderen Systems. Dafür ist die Angabe
von System und Ticketidentität ausreichend. Support, Problem, Bugtracking und
Feature Request Systeme werden gerne, sowohl thematisch als auch in der Praxis,
zusammengefasst.
Kapitel 2 Trouble Ticket Systeme
10
Eine weitere Betrachtung von Trouble Ticket Systemen besteht im Versuch sie mit
anderen Anwendungen in Relation zu setzen.
Helpdesk Anwendungen stellen den Mitarbeitern des Benutzerservices jene Information
zur Verfügung, die sie zur Betreuung der Benutzer der IT Systeme eines Unternehmens
brauchen. Trouble Ticket Systeme sind ein Teil einer Helpdesk Anwendung, aber
Helpdesk Systeme haben noch darüber hinausgehende Funktionen. Nach ähnlichen
Problemfällen suche zu können, ist für Mitarbeiter des Benutzerservices sehr hilfreich.
Eine der größten Stärken vom Support Tracking System ist die Vielfalt an mächtigen
Suchmöglichkeiten.
Groupware Anwendung verteilen und organisieren die Arbeit innerhalb einer Gruppe.
Beim Support Tracking System wird jedem Supportticket ein Mitarbeiter zugeordnet,
werden E-Mails für Benachrichtigungen verwendet und Schedule Notes alarmieren die
Mitarbeiter rechtzeitig, bevor Fristen ablaufen. Trouble Ticket Systeme können
zumindest für den 1st Level Support Groupware Funktionen teilweise abdecken.
Cased Based Reasoning Systeme (CBR) versuchen mit Hilfe einer Fallbasis auf die
Lösung für neue Probleme zu schließen. Zum einen könnte man ein Trouble Ticket
System zu einem CBR System ausbauen und zum anderen müssen für ein CBR System
eine ausreichende Zahl an Fällen gesammelt werden, wofür ein Trouble Ticket System
wiederum gut geeignet ist.
Knowledge Management Systeme sammeln und verteilen Wissen. Das Support Tracking
System sammelt mit seinen Tickets eine Menge an Probleminformationen. In den
gelösten Fällen sind auch die Lösungen erfasst. Die Suche des Support Tracking
Systems erweißt sich als mächtiges Werkzeug. Die Suchstärke stammt vom zu Grunde
liegenden Hyperwave Information Server.
Customer Relationship Management (CRM) ist ein Feld, in welches viele Hersteller von
Trouble Ticket Systemen mit ihren Produkten versuchen einzudringen. Zahlreiche
Trouble Ticket Systeme sind an der Schnittstelle zwischen Unternehmen und Kunden
im Einsatz.
Der Versuch eine Abgrenzung für Trouble Ticket Systeme zu finden ist in zweierlei
Hinsicht mit Schwierigkeiten verbunden. Zum einem verwenden die verschiedenen
Hersteller unterschiedliche Bezeichnungen für ihre Systeme. Dies erschwert die
Einordnung der verfügbaren Systeme. Zum anderem werden Trouble Ticket Systeme
nicht nur im Helpdesk Bereich verwendet. Über den Kernbereich von Trouble Ticket
Systemen hinausgehende Funktionalität eröffnet den Einsatz in anderen Bereichen.
Diese Bereiche können Groupware, Cased Based Reasoning, Knowledge Management
oder Customer Relationship Management sein.
2.3 Support Tracking System
Am Institut für Informationssysteme und Computer Medien (IICM), ein Institut der
Technischen Universität Graz, wurde ein Trouble Ticket System mit dem Namen
Support Tracking System (STS) entwickelt. Das Support Tracking System ist bei der
Firma Hyperwave in München im Bereich Kundensupport in Verwendung. Mit dieser
Arbeit wurde die Version STS V1.3 erreicht, dabei handelt es sich um eine Version, die
vom Administrator einer STS V1.3 Installation in mehreren Breichen selbstständig
Kapitel 2 Trouble Ticket Systeme
11
veränderbar ist. Wartungsarbeiten konnten damit vom Entwickler der Software zum
Anwender verlagert werden. Diese neuen Möglichkeiten zur Adaptierung werden im
Kapitel 5 und Kapitel 6 im beschrieben.
Dieser Abschnitt beschreibt überblicksartig die Eigenschaften und Funktionsbereiche
von STS V1.3 und seinen Vorgängern. Eine detaillierte Beschreibung der Funktionen
vom Support Tracking System findet sich im Abschnitt 4.3.3. Die Verwaltung von
Benutzern, Kunden, Tickets und Einträgen in Tickets bilden die großen funktionalen
Einheiten des Systems. Die große Stärke vom Support Tracking System ist die Suche.
Automatische E-Mailbenachrichtigungen und Verwendung von Webtechnologien als
Basistechnologie sind weitere Stärken. Unter dem Begriff Benutzerverwaltung
summieren sich all die Aufgaben, die anfallen, wenn es gilt Personen und deren
Zugriffsrechte zu bearbeiten. Mitarbeiter können angelegt und deren Daten geändert
werden. Jedem Mitarbeiter der Zugriff auf das Support Tracking System erhält, wird
eine bestimmte Rolle (Administrator, Dispatcher oder Support) zugeteilt.
Die Ticketverwaltung ist die Hauptaufgabe eines jeden Trouble Ticket Systems und
somit auch vom Support Tracking System. Es können Supporttickets angelegt,
verändert und gelöscht werden. Jedes Ticket sammelt eine Reihe von Daten über den
betroffenen Kunden, seine eingesetzte Software und sein Problem. Ein Ticket entspricht
immer genau einem Support Fall und es bildet den Rahmen für die Ticketeinträge.
Ticketeinträge bilden den Kommunikationsprozess des Supportmitarbeiters mit dem
Kunden im System ab. Die Ticketeinträge können E-Mails, Telefongesprächsnotizen
oder Notizen sein. Letztere unterteilen sich auch noch in gewöhnliche Notizen,
Aufgabenlisten, Frage-Antwort und Zusammenfassungen. Ein vierter Typ von
Ticketeinträgen erlaubt es auch zeitliche Abläufe ins System einzubringen. Dieser vierte
Typ erinnert den Supportmitarbeiter an Termine. Ticketeinträge können angelegt,
geändert und gelöscht werden und gehören explizit zu einem Trouble Ticket.
Eine sehr starke Eigenschaft vom Support Tracking System ist, dass der gesamte
E-Mailverkehr zwischen Kunden und Supportmitarbeiter innerhalb des Systems erfolgt.
Der gesamte Kommunikationsverlauf mit dem Kunden wird protokolliert. Das Support
Tracking System ist in der Lage selbstständig E-Mails vom Kunden den entsprechenden
Tickets zuzuordnen. Dabei wird lediglich vorausgesetzt, dass der Kunde bestimmte
Teile der E-Mailüberschrift nicht verändert. Die zweite nicht unwesentliche Eigenschaft
vom Support Tracking System ist, dass das System vollständig mit Webclients
(Microsoft Internet Explorer oder Netscape Navigator) bedienbar ist. Deshalb ist
clientseitig keine Softwareinstallation notwendig. Da die meisten Benutzer mit dem
Umgang von Webbrowsers vertraut sind, ist der Aufwand für die Einarbeitung gering.
Die größte Stärke von Support Tracking System ist sicherlich die umfangreiche Suche.
Das Support Tracking System profitiert von der Stärke des zugrundeliegenden
Hyperwave Information Servers (HWIS) auf diesem Gebiet. Es stehen sowohl
Queryobjekte, eine Besonderheit des Hyperwave Information Servers, als auch ein
umfangreiches Suchformular zu Verfügung. Mit Hilfe der Queryobjekte lassen sich zum
Beispiel alle Fälle eines Kunden finden. Mit der Suchfunktion ist es möglich ähnliche
Problemfälle aufzufinden.
Kapitel 2 Trouble Ticket Systeme
12
2.4 Übersicht verfügbarer Systeme
Eine sehr gute Möglichkeit sich über Trouble Ticket Systeme zu informieren ist die
Newsgroup comp.software.config-mgm. Diese Gruppe hat Configuration Management
in der Softwareentwicklung zum Ziel. Dies mag im ersten Augenblick verwundern,
bedenkt man aber, dass aus Supportfällen Problemfälle werden und diese
möglicherweise Bugs sind, dann wird sehr rasch klar, dass oft Software verändert
werden muss um ein Problem zu lösen. Insofern scheint Software Configuration
Management den richtigen Kontext darzustellen. Tatsache ist das zum Thema Trouble
Ticket Systeme in dieser Newsgroup geschrieben wird. Weiters gibt es zu dieser
Newsgroups sehr gute FAQ Seiten, die monatlich ein Update erfahren. [Eaten 2002]
In den Anhängen A und B dieser Arbeit findet man je eine Liste über freie und
kommerzielle Systeme. Keine der beiden Listen erhebt den Anspruch der
Vollständigkeit. Dies ist schon aus dem Grund nicht möglich, da der Begriff Trouble
Ticket System sich nicht hinreichend genau beschreibbar ist. In den beiden
nachfolgenden Kapiteln werden jeweils vier Vertreter kurz beschrieben.
2.5 Nichtkommerzielle Produkte
Es gibt einige wenige freiverfügbare Trouble Ticket Systeme. Im Gegensatz zu den
kommerziell vertriebenen Systemen ist sowohl die Anzahl der Systeme, als auch der
Funktionsumfang der einzelnen Systeme kleiner. Die hier vorgestellten Systeme sind
Bugzilla, Debian Bug Tracking System (debbugs), GNATS und Double Choco Latte.
Die ersten drei Systeme sind auf den Einsatz im Bereich Bugtracking bei Opensource
Projekten zugeschnitten. Double Choco Latte geht über das reine Bugtracking hinaus
und enthält Ansätze einer Groupware Software. Freie Trouble Ticket Systeme, die auf
die Aufgaben im Supportbereich spezialisiert sind, konnten nicht gefunden werden.
Beim Support Tracking System bestand die Überlegung, das System soweit anzupassen,
dass es für das Institut für Informationssysteme und Computer Medien als Bug Tracking
System einsetzbar ist. Bei Opensource Projekten gibt es meist keine
Supportabteilungen, die Störmeldungen entgegennehmen. Dies ist ein Grund, warum in
diesem Bereich die Bug Tracking Systeme öffentlich zugänglich sind und so auch
Funktionen eines Trouble Tracking Systems übernehmen.
2.5.1
Bugzilla
Bugzilla5 ist eines der bekanntesten Bug Tracking Systeme und ist unter der Mozilla
Public License verfügbar. Es hilft Entwicklern noch offene Fehler eines Systems zu
verwalten. Bugzilla wurde ursprünglich mit TCL entwickelt und später erfolgte ein
Wechsel von TCL zu Perl. Bugzilla ist ein Open Source Projekt und gilt als Standard
unter den Bug Tracking Systemen. Bugzilla erlaubt eine Produkt- oder
Projektorientierung. Abhängigkeiten von Bugs untereinander können graphisch
dargestellt werden. Das System verfügt über fortgeschrittene Möglichkeiten zur
5
http://www.bugzilla.org
Kapitel 2 Trouble Ticket Systeme
13
Reporterstellung. Umfangreiche Möglichkeiten zur Konfiguration des Programms sind
vorhanden. Ein gut durchdachtes und leicht verständliches "bug resolution protocol"
wurde umgesetzt. Bugzilla unterstützt E-Mail Formate und XML Formate zur
Fehlerberichterstattung. Weiter Zugriffsmöglichkeiten sind über Konsole oder
Webbrowser gegeben. Für die Anbindung zu Konfigurationswerkszeugen wie
Perforce6, Bonsai7 oder CVS8 ist gesorgt. Robustheit und Popularität sind die großen
Vorteile von Bugzilla. Bugzilla ist allerdings auf eine bestimmte Datenbank (mySQL 9)
angewiesen. Für die Benutzeroberfläche und für die Programmlogik gibt es keine
Abstraktionsebene. E-Mails werden für Benachrichtigungen verwendet. Die
Abfragemechanismen sind mächtig aber gewöhnungsbedürftig. Die Reporterstellung
lässt sich nur geringfügig konfigurieren. Mechanismen zur Internationalisierung sind
nur geringfügig vorhanden. Die Abhängigkeit von nicht standardisierten Bibliotheken
ist eine weiter Schwäche von Bugzilla. Dennoch ist Bugzilla sowohl in der Hardwareals auch in der Software-Entwicklung beliebt. Bugzilla wird in zahlreichen Open
Software Projekten (Mozilla, Linux Kernel, Gnome, KDE, Apache, Open Office), bei
Linuxdistributoren (Red Hat, Mandrake, Gentoo, Turbo Linux) und bei vielen Firmen
(Ximian, NASA, Id Software, IBM) eingesetzt. [Mozilla Organisation 2003]
2.5.2
Debian Bug Tracking System (debbugs)
Debian Bug Tracking System (debbugs)10 wurde für das Debian Projekt 1994
entwickelt. Es ist unter GNU General Public License (GPL) Bedingungen verfügbar.
GPL wurde von der Free Software Foundation (FSF)11 veröffentlicht. Das System
debbugs besteht aus Perl Skripts, die Problemreporte in einer Datenbank verwalten.
Anstatt der Begriffe Bug, Problem oder Ticket spricht man bei debbugs von einem
Report. Das System benötigt ein UNIX Betriebssystem und einen eigenen Maildomain.
Verschiedene E-Mailsysteme sind verwendbar. Anlegen eines Reports als auch alle
anderen Manipulationen an Reports erfolgen mittels E-Mails. Somit sind für die
Benutzer weder Zugang zum Hostsystem noch Webzugang notwendig. Listen
bestehend aus Reports, die den gleichen Status haben, können sowohl über Webbrowser
als auch über E-Mails gespiegelt werden. Jeder Report bekommt als Identität eine
eigene E-Mailadresse. Mit Hilfe von E-Mails können einfach zusätzliche Informationen
zu einem Report abgelegt werden. Beim Debian Projekt stellte das System seine
Leistungsfähigkeit unter Beweis. Im Laufe von sechs Jahren wurden über 16000
Reporte verwaltet. Im Jahr 1999 waren gleichzeitig 5000 Reporte im System und
benötigen rund 300 MB Speicherplatz in der Datenbank. Seit 1997 ist debbugs durch
Parametrisierung anpassungsfähig. Zu debbugs Kernfunktionalität zählen Anpassung an
Projektbedürfnisse und die E-Mailmechanismen. Verwendung fand debbugs bisher bei
den Projekten Debian GNU/Linux, GNOME, KDE und bei der Firma nCipher.
[Benham 1999][Jackson 1994]
6
http://www.perforce.com/
http://www.mozilla.org/projects/bonsai/
8
http://www.cvshome.org/
9
http://www.mysql.com/
10
http://www.benham.net/debbugs
11
http://www.gnu.org/
7
Kapitel 2 Trouble Ticket Systeme
2.5.3
14
GNATS
GNU GNATS12 ist ein weiteres Bug Tracking System unter GPL. GNATS ist eine
Sammlung von Werkzeugen zur zentralen Verwaltung von Problemberichten.
Problemberichte werden über Kategorien zu Gruppen zusammengefasst. Kernaufgaben
sind die Verwaltung der Problemberichte und die Kommunikation über diese auf
vielfältige weise. Der E-Mailverkehr wird archiviert und für die Suche indiziert. Alle
Berichte werden in einer Datenbank gespeichert und Abfrage-, Editier- und
Wartungswerkzeuge greifen auf diese Datenbank zu. GNATS bietet
Zugriffsmöglichkeiten über Befehle für die Kommandozeile, E-Mail, Emacs, Tcl/Tk
und einem Webinterface (CGI, Perl, Python) an. Sowohl die Datenbankeinträge als
auch die Konfigurationen des Systems werden in Textdateien abgelegt. Dies führt zu
einer einfachen Benutzbarkeit und einer hohen Flexibilität. Die Möglichkeiten Felder
anpassen können, verschiedene Datenbanken zu verwenden und umfassende Web- und
Tcl-Benutzerschnittstellen kamen mit GNATS V4.0 im August 2003 dazu. Die
Entwicklung an der Webbenutzerschnittstelle Gnatsweb ist abgeschlossen. GNATS
zählt zu den robustesten Systemen. Es wird unter anderem auch für das GNU Projekt
selbst verwendet. [Free Software Foundation 2003][Free Software Foundation
2000][Free Software Foundation 2000b]
2.5.4
Double Choco Latte
Ein weiteres unter GPL verfügbares System ist Double Choco Latte13. Kernkonzept sind
sogenannte "Work Orders", die für die zeitliche Verfolgung von Fehlern, Anfragen,
Wartungsaufgaben und Projektaufgaben verwendet werden. Projekte werden in einer
hierarchischen Struktur verwaltet und Projektstatistiken schließen die Unterprojekte mit
ein. Sogenannte "Call Tickets" repräsentieren den Kontakt mit Kunden. Aktionen,
Prioritäten und Status sind als Attribute vorhanden, aber jedes Projekt kann einen
eigenen Satz an Attributen für "Work Orders" und "Call Tickets" verwenden.
"Severities" legen fest wie schwerwiegend ein Ticket ist, "Priorities" mit welcher
Priorität ein Ticket bearbeitet wird und "Statuses" gibt den aktuellen Status eines
Tickets bekannt. Projektmitarbeiter können über "Departments" hierarchisch verwaltet
werden. Zusammengehörende Aufgaben bekommen ansteigende Aufgabennummern.
Die dadurch entstehende Reihenfolge kann für Projekte verwendet werden. Bei Double
Choco Latte besonders ausgeprägt ist die Möglichkeit mit E-Mail Benachrichtigungen
zu arbeiten. Benachrichtigungen erfolgen bei Statuswechsel (Open, Close, Changed)
und werden für die Überwachung von Aktivitäten, Produkten und Projekten verwendet.
Weiters werden sie für die Beobachtung von Arbeitsreihenfolgen, Tickets und
Abweichungen in Projekten angewandt. Ein Reportgenerator kann auch statische
Berichte erstellen. Double Choco Latte kann sowohl als alleinstehendes System
betrieben werden oder als Bestandteil von phpGroupWare14. [Free Software Foundation
2004]
12
http://www.gnu.org/software/gnats
http://dcl.sourceforge.net/index.php
14
http://phpgroupware.org
13
Kapitel 2 Trouble Ticket Systeme
15
2.6 Kommerzielle Produkte
Im Vergleich zu den frei verfügbaren Trouble Ticket Systemen ist die Anzahl der
kommerziell verfügbaren Systeme sehr groß. Eine Liste, ohne Anspruch auf
Vollständigkeit, findet sich im Anhang B unter Kommerzielle Produkte. Ein
wesentlicher Unterschied zu den frei verfügbaren Systemen besteht im viel größeren
Funktionsumfang. Vorgestellt werden ClearQuest und ClearDTTS. Beide sind Trouble
Ticket Systeme vom Hersteller Rational. Danach folgen Aegis Defect Tracking und
OmniTracker, die beide umfangreiche Systeme zur Kundenbetreuung darstellen.
2.6.1
Rational ClearQuest
Ein Vertreter aus der großen Anzahl von kommerziellen Trouble Ticket Systemen
kommt von der IBM15 Tochter Rational16. ClearQuest17 ist ein flexibles System zur
Verfolgung von Defekten und Änderungswünschen. Primär soll es Herstellern von
Software beim Entwicklungsprozess unterstützen. Die Benutzeroberflächen für
Windows, UNIX und Webbrowser sind vollständig vom Kunden an die jeweiligen
Bedürfnisse anpassbar. Weiters sind Eintragsfelder und der Workflow an jeden
Entwicklungsprozess anpassbar. Es handelt sich um ein "out-of-the-box" System. EMails werden sowohl zur Benachrichtigung als auch für die Eingabe von neuen Fällen
verwendet. Abfragen, Berichte und Charts werden unterstützt. Rational ClearQuest baut
auf Industriestandarddatenbanken auf und skaliert für alle Projektgrößen sehr gut. Für
geographisch verteilte Entwicklungsteams gibt es einen Replizierungs- und
Synchronisationsmechanismus. Für Entwickler von Software ist es sehr angenehm, dass
Rational ClearQuest sich in die integrierten Entwicklungsumgebungen WebSphere
Studio18, Eclipse19 und Visual Studio .NET20 einfügt. Rational ClearQuest arbeitet
natürlich mit der Rational Suite zusammen und unterstützt Rational's Unified Change
Management Ansatz. Zusammen mit Rational ClearCase bildet ClearQuest ein
vollständiges Software Configuration Management Werkzeug. [IBM 2004]
2.6.2
Rational ClearDDTS
Neben ClearQuest vertreibt Rational auch noch das Produkt ClearDDTS 21. Auch dieses
Produkt dient zur Verfolgung und Verwaltung von Fehlerberichten und
15
http://www.ibm.com/
http://www.ibm.com/software/rational/
17
http://www.ibm.com/software/awdtools/clearquest/
18
http://www.ibm.com/software/webservers/studio/
19
http://www.eclipse.org/
20
http://msdn.microsoft.com/vstudio/using/default.aspx
21
http://www-306.ibm.com/software/awdtools/clearddts/
16
Kapitel 2 Trouble Ticket Systeme
16
Verbesserungsanfragen. ClearDDTS beschränkt sich aber auf die Kommunikation
zwischen Testern und Entwicklern und ist auf die Entwicklung im UNIX Umfeld
spezialisiert. Die Möglichkeit zur Anbindung an Rational ClearCase erlaubt effektives
Management von Veränderungen innerhalb des Software Entwicklung Prozesses. Durch
die Verwendung eines Webzuganges ist es für verschiedene Plattformen verwendbar
und erlaubt auch geografisch verteilten Entwicklern den Zugang zum System. Auch bei
ClearDDTS ist es möglich mittels E-Mails neue Einträge zu machen und umgekehrt
verwendet das System E-Mails zur Benachrichtigung bei Veränderungen. Oracle wird
als Datenbanksystem unterstützt, aber es wird auch eine eigene SQL-fähige Datenbank
mitgeliefert. Über 40 verschiedene Managementberichte sind die große Stärke dieses
Systems. Es ist zu erwaten, dass Rational ClearDDTS hinter ClearQuest zurückstellen
wird. [IBM 2004b]
2.6.3
Aegis Defect Tracking
Abacus Systems22 bietet mit Aegis Help Desk, Aegis Defect Tracking23, Aegis Client
Management und Web Front End eine ganze Programmfamilie rund um die
Kundenbetreuung an. Da dies über das Feld Trouble Ticket Systeme weit hinaus geht,
soll hier nur Aegis Defekt Tracking näher betrachtet werden. Die Aegis Programme von
Abacus Systems sind nicht zu verwechseln mit dem Sourceforge Projekt Aegis24,
welches sich mit Konfigurationsmanagement in der Softwareentwicklung beschäftigt.
Die automatische Benachrichtigung durch E-Mails erfolgt sowohl, wenn ein Ereignis
den gesamten Datensatz betrifft als auch, wenn sich nur ein einzelne Feldeintrage
ändern. Die Benachrichtigungen sind vollständig anpassbar und personalisierbar. Die
Möglichkeit alle Kunden oder Kundengruppen zu verständigen ist eine weitere
bemerkenswerte Eigenschaft des Benachrichtigungssystems. Sind genügend Einträge
mit Lösungen vorhanden, dann kann Aegis Defect Tracking automatisch eine
durchsuchbare Wissensbasis aufbauen. Dabei wird für jeden Fall automatisch ein
beschreibender Artikel erstellt. Die Kundenverwaltung wird sehr ernst genommen. Zu
jedem Kunden können beliebig viele Kontakte verwaltet werden. Telefonnummerlisten,
E-Mailadresslisten und Kontaktadressenlisten sind herstellbar. Außerdem werden alle
von einem Kunden gekauften Produkte gespeichert. Der Berichtgenerator kann
zusammenfassende Berichte oder graphische Darstellungen erstellen. Dabei werden
Größen betrachtet wie "Wie lange dauerte die Lösung?", "Wie alt ist ein Fall?" oder
"Wie groß war der geschätzte Aufwand und wie groß ist der tatsächliche Aufwand?".
Die Sortierreihenfolge ist benutzerdefiniert und es gibt verschiedene Ansichten. Sehr
mächtig sind die eingebauten Möglichkeiten zur Filterung. So kann man zum Beispiel
Filter verwenden um herauszufinden, mit welchen Problemen welche Entwickler
beschäftigt sind oder um bestimmten Kunden als Gruppe E-Mails zu schicken. Aegis
Defect Tracking ist vollständig adaptierbar. Zum Beispiel gibt es Werkzeuge um
Formulare oder Eintragsfelder zu bearbeiten. Für verschiedene Benutzer sind
verschiedene Formulare herstellbar. [Abacus 1998]
22
http://www.abacus-systems.com/
http://www.abacus-systems.com/AegisDT.htm
24
http://aegis.sourceforge.net/
23
Kapitel 2 Trouble Ticket Systeme
2.6.4
17
OmniTracker
OmniTracker25 ist ein kommerzielles Produkt aus Deutschland. Auffallend bei diesem
System ist der sehr große Funktionsumfang. Helpdesk, Callcenter, Customer
Relationship Management (CRM), Qualitätsmanagement, Aktivitätsmanagement,
Problemmanagement, Änderungsmanagement, Kundenservice, Vertriebsunterstützung
und Kontaktmanagement sind die Bereiche, die vom Hersteller als Einsatzbereiche
genannt werden. Dies zeigt zum einen die Mächtigkeit der Trouble Ticket Systeme,
aber zum anderen auch wie der Begriff Trouble Ticket System etwas zu kurz greift. Das
System baut auf Microsoft Windows Systemen auf und verwendet für das Webinterface
den Internet Explorer. Neue Tickets können über Telefon, E-Mail, Telefax oder
Webzugang ins System eingebracht werden. Das System ist einfach zu konfigurieren,
zu administrieren und handhabbar. Eine Anpassung an einen Kunden ist in 5-8 Tagen
machbar. Zu den wichtigen Kernfunktionen zählen Konfigurierbarkeit, Volltextsuche,
regelgesteuerte
Filter,
Statistiken
und
eine
Schnittstelle
für
eigene
Programmerweiterungen. Konfiguration erfolgt nicht mittels Skripts, sondern über
Dialoge. Konfiguration erfolgt auf Ordnerebene und wird an Unterordner vererbt.
Workflow, Datenmodell, Benachrichtigung, Eskalationsmodell, Benutzerrechte und
Statistiken sind weitere konfigurierbare Elemente. Der Workflow regelt Übergänge
zwischen Zuständen auf Ordnerebene. Durch den Workflow wird der Prozess zwischen
Kunden, Qualitätssicherung, Vertrieb und Marketing einerseits und Produktherstellern
andererseits gesteuert. Bei der benutzerdefinierten Datenmodellierung stehen gängige
Datentypen, Nummerierungsschemata und Dropdownlisten zur Verfügung. Weitere
Möglichkeiten bei der Datenmodellierung sind Referenzen, Referenzlisten und
Relationen (1:1, 1:n, m:n). Für die Bereiche ITIL konformes Servicemanagement,
Inventarisierung (SW, HW), Vertragsdaten (Service Level Agreement),
Kundenverwaltung (CRM) und Versions- und Konfigurationsmanagement gibt es
vordefinierte Datenmodelle. Benachrichtigungen erfolgen regelbasierend, wobei
zwischen Benutzer und Benutzergruppen unterschieden werden kann. Auslösende
Ereignisse können ein neuer Eintrag oder das Verändern eines Feldes eines Eintrages
sein. Benachrichtigung erfolgt entweder über SMTP, MAPI, Telefax oder in Briefform.
Die Eskalationssteuerung kann sowohl durch zeitliche Abläufe als auch durch logische
Zusammenhänge gesteuert werden. Die Regeln werden mit dem Regeleditor erstellt und
können dazu führen, dass Inhalte modifiziert werden, E-Mails versand werden,
Betriebssystemkommandos oder Skripte ausgeführt werden. Benutzerrechte werden, mit
Hilfe eines Editors für Zugriffsrechte, für den einzelnen Benutzer oder für Gruppen auf
Ordnerebene vergeben. Diese Rechte schließen verschiedene Sichten mit ein und
können auch auf Feldebene ausgedehnt werden. Benutzerverwaltung umfasst die
Vergabe von Rechten, E-Mailadressen und Passwörtern. Ein eigener Formulareditor
erlaubt das Erstellen von Dialogen, wobei über sogenannte Controls Zeichensätze,
Farben, Schriftgrößen, Positionen bestimmt werden. Der Formulareditor beherrscht
auch die Zuordnung von Attributen zum Datenmodell und ermöglicht auch das
Einbinden von Skripten zur clientseitigen Formularprüfung. Für jeden Ordner können
beliebig viele Formularansichten erstellt werden. Eine integrierte Volltextsuchmaschine
erlaubt auch das Durchsuchen von Dateianhängen (MS Word, MS Excel) und
unterstützt logische Verknüpfungen. Im Gegensatz zu den nichtkommerziellen
25
http://www.omninet.de/
Kapitel 2 Trouble Ticket Systeme
18
Produkten gibt es hier auch eine fehlertolerante Suche. Filterregeln operieren auf
Ordnerebene und sind Benutzer bzw. Benutzergruppen abhängig. Filterregeln können
gespeichert werden und können mit Objektreferenzen (1:1, 1:n, m:n) umgehen.
Statistiken sind wiederum auf Ordner, Benutzer oder Benutzergruppen zugeschnitten.
Es gibt drei Arten von Statistiken. Schnappschussstatistiken zeigen den aktuellen Stand
des Datenbestandes, Verlaufsstatistiken zeigen die Veränderungen über die Zeit und
schließlich die Durchsatzstatistiken. Zur Darstellung der Statistiken können Tabellen,
2D/3D Balkendiagramme, 2D/3D Tortendiagramme und 2D/3D "gestapelte"
Balkendiagramme verwendet werden. Durch Benutzung von ActiveX- bzw. OLE
Objekten ist es Visual Basics, C++, VBScript und JavaScript Programmieren möglich
das Produkt zu erweitern und weiter anzupassen. Eine spezielle DLL wird vom
Hersteller zur Verfügung gestellt. [OmniNet 2001]
2.7 Zusammenfassung
Trouble Ticket Systeme werden zur Verfolgung von Fehlern, Störungen oder
Problemen verwendet. Das zentrale Element dieser Systeme sind die Trouble Tickets,
wovon jedes genau einen Störfall beschreibt. Aufgabe eines Trouble Tickets ist es den
Lebenszyklus einer Störung von der Entdeckung über die Eingrenzung bis hin zur
Lösung zu dokumentieren. Für den Supportbereich bedeutet dies, das der gesamte
Kommunikationsverlauf zwischen Störungsmelder und Bearbeiter dokumentiert wird.
Kernaufgabe der Trouble Ticket Systeme ist das Fehlermanagement bestehend aus
Fehlererhebung, Fehlerdiagnose und Fehlerbehebung. Weitere Aufgaben sind die
Erstellung von Statistiken und Berichten und das Auffinden von korrelierenden Trouble
Tickets. Das Support Tracking System ist ein auf den Kundensupport spezialisiertes
Trouble Ticket System. Trouble Ticket Systeme werden gewöhnlich den Helpdesk
Anwendungen zugeordnet, weißen aber auch Merkmale von Groupware Systemen,
Cased Based Reasoning Systemen, Knowledge Management Systemen oder von
Customer Relationship Management Systemen auf. Trouble Ticket Systeme treten unter
den verschiedensten Bezeichnungen auf und haben verschiedenste Einsatzgebiete.
Adaptierbare Systeme können mehrere Gebiete abdecken. Alle untersuchten Systeme
entstammen dem Fehlermanagement für Softwareprojekte. Die nicht kommerziellen
Systeme decken nach wie vor nur den Fehlermanagementbereich für
Softwareentwicklung ab. Den kommerziellen Systemen ist es gelungen, durch starke
Erweiterung der Funktionalität weitere Anwendungsfelder zu erschließen. Es gibt mehr
kommerzielle als nichtkommerzielle Systeme und der Funktionsumfang ist bei den
kommerziellen Systemen deutlich höher. Alle untersuchten Systeme betrachten
Kommunikation als das zentrale Element. Unter den untersuchten Systemen ist keines,
dass die Kommunikation über E-Mails nicht unterstützen würde. Fast alle Systeme
haben eins webbasierendes Benutzerschnittstelle. Die meisten Systeme bieten
Möglichkeiten zur Adaptierung der Ticketfelder, des Workflows und der
Benutzerschnittstelle an. Ein Zeichen dafür, das auch das Support Tracking System
diese Möglichkeiten besitzen sollte.
Auch das Support Tracking System ist Veränderungen und Anpassungen unterworfen.
Kapitel 3 beschreibt die verschiedenen Wartungsarten und untersucht ob agile
Softwareentwicklungsprozesse für die Wartungsphase einen Vorteil darstellen. Die
Kapitel 2 Trouble Ticket Systeme
19
Kapitel 5 und Kapitel 6 zeigen, dass die Adaptierbarkeit eines Programms die
Änderungs- und Anpassungsarbeiten reduzieren kann.
Kapitel 3
Wartungsprozess
Dieses Kapitel beschäftigt sich mit jener Phase im Software Lebenszyklus, die mit der
Auslieferung der Software beginnt. Ist die Software installiert und beim Anwender in
Produktion, werden nun früher oder später die Schwächen der Anwendung sichtbar.
Diese Schwächen können Fehler in der Software, geänderte Anforderungen oder
Erweiterungswünsche sein. Das Support Tracking System befand sich bereits in dieser
Phase und im Rahmen dieser Arbeit wurden auch Fehlerbehebungen und
Funktionserweiterungen durchgeführt. Probleme die mit dem Support Tracking System
erfasst werden, lösen oft eine Wartungsaktivität aus. Gründe genug sich mit dem Thema
Wartung ausführlicher zu beschäftigen. Um die Quellcodebasis vom Support Tracking
System zu verbessern und um neue Funktionalität implementieren zu können, war es
notwendig den Entwurf des Systems zu ändern. Die dazu verwendete Technik
bezeichnet man als Refaktoring und stammt aus dem Bereich eXtreme Programming.
Aus diesem Grund beschäftigt sich dieses Kapitel neben der Softwarewartung mit den
agilen Software Entwicklungsprozessen und mit Refaktoring.
3.1 Softwarewartung
Schwergewichtige Software Entwicklungsprozesse, wie das Wasserfall-Modell, das
V-Modell oder das Spiralmodell, konzentrieren sich sehr stark auf den einmaligen
Durchlauf der Phasen Analyse, Design, Implementierung, Test und Auslieferung. Dies
deutet darauf hin, dass die softwareerstellende Industrie in ihrem Denken mehr den
Projektgedanken als den Produktgedanken behaftet ist. Erst die agilen
Softwareentwicklungsprozesse, auch als evolutionäre, iterative, inkrementelle oder
leichte Prozesse bezeichnet, berücksichtigen die sich ändernden Anforderungen an die
erstellte Software. Selbst so umfangreiche Werke, wie das Lehrbuch der Software
Technik von Helmut Balzert, beinhaltet nur einen verhältnismäßig kleinen Teil für das
Thema Softwarewartung. [Balzert 1996][Balzert 1998]
Befindet sich eine Softwareapplikation in Produktion, dann treten die folgenden drei
Ereignisgruppen auf, die meist zu einer Änderung der Software führen. In die erste
Gruppe fallen Programmierfehler, die während der Erstellung der Software gemacht
wurden. Sie können mehr oder weniger stark die Benutzung der Software behindern. In
Kapitel 3 Wartungsprozess
21
die zweite Gruppe fallen sich ändernde Rahmen- und Umweltbedingungen. Dazu zählen
Änderungen im Hardwaresetup, Veränderungen im Systemsoftwarebereich oder die
sich ändernde organisatorische Einbettung. Je vertrauter die Benutzer eines Systems mit
den Funktionen und Möglichkeiten sind, desto mehr Änderungswünsche stellen sie.
Diese Änderungswünsche der Benutzer bilden die dritte Ereignisgruppe in der
Wartungsphase. [Balzert 1998]
Stabilisierungen, Optimierungen, Anpassungen und Erweiterungen sind die Antworten
auf diese drei Problemgruppen. Ein Nichtreagieren hätte zur Folge, dass die Software
veraltet und an Wert und Benutzbarkeit verliert. Die oben genannten Punkte fasst
[Balzert 1998] wie folgt zusammen:

Stabilisierung und Korrektur: Verborgene Fehler werden durch Tests während der
Entwicklung nicht entdeckt und treten erst im Betrieb zu Tage. Die Korrektur
versucht die Fehler zu beseitigen. Sogenannte "second level defects" sind neue
Fehler, die bei der Fehlerbeseitigung gemacht werden. Leider nehmen diese durch
Wartung verursachten Fehler im Laufe der Zeit zu. Auf zehn während der Tests
entdeckten Fehler, kommt nur ein Fehler, der im Betrieb entdeckt wird. Allerdings
sind die Kosten der Beseitigung eines Fehlers, bei in Produktion stehender Software,
viermal so hoch als bei Entdeckung und Beseitigung während der Entwicklung.

Optimierung und Leistungsverbesserung: Neue Software ist beim Verbrauch der
Ressourcen Rechenzeit, Hauptspeicher und Platz in der Datenbank oft noch nicht
optimal. Oft wird Software nach dem Erreichen der Funktionalität ohne
durchgeführte Ressourcenoptimierung sofort freigeben. Dadurch ist Software bei
der ersten Freigabe selten optimal. Die Optimierung verschiebt sich in die
Wartungsphase, obwohl diese eigentlich Teil der Entwicklung sein sollte.

Anpassung und Änderung: Ändern sich Gesetze und betriebliche Regeln, werden
neue Formulare benötigt oder kommt es zum Einsatz neuer Betriebsysteme, wird
eine Anpassung der Funktionen, der Benutzeroberfläche oder der technischen
Einbindung notwendig.

Erweiterung: Funktionen konnten im ersten Produktionszyklus nicht realisiert
werden oder Benutzer erkennen den Bedarf neuer Funktionen. Wenn diese
Funktionen während der Wartungsphase realisiert werden, dann spricht man von
Erweiterung.
Stabilisierung und Optimierung fasst man auch unter korrektive Tätigkeiten oder
Wartung zusammen. Hingegen zählen Anpassung und Erweiterung zu den progressiven
Tätigkeiten oder Pflege. 60%-80% der Tätigkeiten fallen in den progressiven Bereich.
Tabelle 3-1 stellt die unterschiedlichen Eigenschaften von Wartung und Pflege
gegenüber. Im alltäglichen Sprachgebrauch wird der Begriff Wartung für beides
verwendet. [Balzert 1998]
Wartung
Pflege
Ziel
Lokalisierung und
Behebung von Fehlern
Lokalisierung und
Durchführung von Änderungen
Ausgangsbasis
fehlerhaftes,
inkonsistentes Produkt
konsistentes Produkt
Kapitel 3 Wartungsprozess
22
Wartung
Pflege
Größe - Bandbreite geringe Auswirkung auf
Gesamtsystem
kleine bis
große Änderungen
betroffene Teile
Implementierung
Analyse, Design,
Implementierung, Test,
Dokumentation
Planung
ereignisgesteuert, nicht
vorhersehbar, nicht planbar
planbar
Tabelle 3-1: Gegenüberstellung von Wartung und Pflege nach [Balzert 1998]
Rund 80% der Softwareentwickler sind mit der Pflege von Software beschäftigt. Nur
der geringe Anteil von 20% entwickelt neue Software. Eine Trennung von Wartung und
Pflege erweist sich als Vorteil, weil Pflegeaufgaben den Softwareentwicklungsprozess
komplett durchlaufen. Wird Software zyklisch weiterentwickelt, so spricht man auch
von evolutionärer oder inkrementeller Entwicklung (siehe auch Unterkapitel 3.2). Der
Wartungs- und Pflegeaufwand nimmt mit dem Alter der Software zu, da der Umfang
der Software langsam anwächst und immer häufiger Fehler der Kategorie "second level
defects" gemacht werden. Je älter die Software, umso schwieriger und teurer wird die
Wartung. Werden die Probleme zu groß, geht man von der Wartung zur Sanierung und
schließlich zur Neuimplementierung über. Die zu erwartende Resteinsatzdauer
bestimmt die Wirtschaftlichkeit dieser drei Stufen. [Balzert 1998]
Die Größen Änderbarkeit und Übertragbarkeit wirken auf Wartung und Pflege ein.
Änderbarkeit ist der Aufwand, der zur Durchführung vorgegebener Änderungen
notwendig ist. Dabei setzt sich Änderbarkeit aus den Größen Analysierbarkeit,
Modifizierbarkeit, Stabilität und Prüfbarkeit zusammen. Analysierbarkeit ist der
Aufwand, um Mängel oder Ursachen des Versagens zu diagnostizieren und
änderungsbedürftige Teile zu bestimmen. Modifizierbarkeit ist der notwendige
Aufwand zur Ausführung von Verbesserungen, zur Fehlerbeseitigung oder zur
Anpassung an Umgebungsänderungen. Stabilität ist die Wahrscheinlichkeit des
Auftretens unerwarteter Wirkungen von Änderungen. Prüfbarkeit schließlich ist der
Aufwand, der zur Prüfung der geänderten Software notwendig ist. Übertragbarkeit ist
die Eignung der Software von einer organisatorischen, Software- oder Hardware
Umgebung in eine andere Umgebung übertragen werden zu können. Übertragbarkeit
setzt sich aus Anpassbarkeit, Installierbarkeit, Konformität und Anwendbarkeit
zusammen. Anpassbarkeit ist die Möglichkeit, die Software an verschiedene, festgelegte
Umgebungen anpassen zu können. Installierbarkeit ist der Aufwand, der zur
Installierung der Software in einer festgelegten Umgebung notwendig ist. Konformität
ist der Grad, in dem die Software Normen oder Vereinbarungen zur Übertragbarkeit
erfüllt ist. Anwendbarkeit ist die Möglichkeit, diese Software anstelle einer
spezifizierten anderen in der Umgebung jener Software zu verwenden, sowie den dafür
notwendigen Aufwand. [Balzert 1998]
Wartung und Pflege beeinflussen ihrerseits die Zuverlässigkeit und die Effizienz eines
Programms. Zuverlässigkeit ist die Fähigkeit der Software, ihr Leistungsniveau unter
festgelegten Bedingungen über einen festgelegten Zeitraum zu bewahren.
Zuverlässigkeit setzt sich aus Reife, Fehlertoleranz und Wiederherstellbarkeit
zusammen. Reife ist die Versagenshäufigkeit durch Fallumstände. Fehlertoleranz ist die
Kapitel 3 Wartungsprozess
23
Fähigkeit, ein spezifiziertes Leistungsniveau bei Softwarefehlern oder Nichteinhaltung
ihrer spezifizierten Schnittstelle zu bewahren. Wiederherstellbarkeit ist die Fähigkeit,
bei Versagen das Leistungsniveau wieder herzustellen und direkt betroffene Daten
wiederzugewinnen. Zu berücksichtigen sind die dafür benötigte Zeit und der benötigte
Aufwand. Die zweite beeinflusste Größe ist die Effizienz, sie ist das Verhältnis
zwischen dem Leistungsniveau der Software und dem Umfang der eingesetzten
Betriebsmittel unter festgelegten Bedingungen. Zur Effizienz gehören Zeitverhalten und
Verbrauchsverhalten. Zeitverhalten betrifft Antwort- und Verarbeitungszeiten, sowie
den Durchsatz bei der Ausführung von Funktionen. Das Verbrauchsverhalten betrifft
Anzahl und Dauer der benötigten Betriebsmittel für die Erfüllung der Funktion. [Balzert
1998]
Die Organisationsform hat großen Einfluss auf die Effektivität der Wartung.
Konfigurationsmanagementsysteme und Systeme zur Erfassung, Verwaltung und
Verfolgung von Fehlern, Problemen und Änderungswünschen können bei der Wartung
unterstützend wirken. Im Kapitel 2 werden Trouble Ticket Systeme, zu denen auch das
Support Tracking System gehört, genauer erläutert. Der letzte Punkt der Betrachtung
zur Softwarewartung beschäftigt sich damit, ob Wartung und Pflege von eigenständigen
Wartungsabteilungen oder durch Entwicklungsabteilungen ausgeführt werden sollen.
Tabelle 3-2 stellt die Vor- und Nachteile einer Trennung gegenüber. [Balzert 1998]
Vorteile

klare Zuordnung der Kosten zu
Wartung oder Entwicklung




Nachteile

Entlastung der Entwickler von
parallelen Tätigkeiten
schlechtes Image von
Wartungsarbeiten senkt die
Motivation der Wartungsmitarbeiter

einstellen spezialisierter
Mitarbeiter und gezieltere
Ausbildung
Informationsverlust beim Übergang
vom Entwicklungs- zum
Wartungsteam

effizientere Kommunikation im
Wartungsteam
Koordinationsproblem zwischen
Wartung und Entwicklung

höhere Produktivität durch
Spezialisierung
aufwendiges Einarbeiten der
Wartungsmitarbeiter

ungleichmäßige Auslastung der
Wartungsmannschaft
Tabelle 3-2: Eigenständiger Wartungsabteilungen nach [Balzert 1998]
Bei der Fehlerkorrektur ist es von großem Vorteil, wenn Anwender und Programmierer
eng zusammenarbeiten. Dabei soll der Anwender dem Programmierer ein schnelles
Feedback liefern, ob der Fehler tatsächlich behoben wurde. Ein durch Fehlerbehebung
hervorgerufenes Problem ist, dass Implementierung und Dokumentation
auseinanderdriften und das Fachkonzept langsam zerfällt. Ein Problem welches bei STS
V1.2 schon recht stark auftrat und mit Hilfe von Refaktoring gemindert werden sollte
(siehe Unterkapitel 3.4).
Kapitel 3 Wartungsprozess
24
3.2 Agile Software Prozesse
In den letzen Jahren ist eine Entwicklung in Gang gekommen, die die
phasenorientierten Entwicklungsprozesse, wie Wasserfallmodell, Spiralmodell und
V-Modell mit ihren zahlreichen, zumeist inkonsistenten Dokumenten langsam etwas
unter Druck geraten lässt. Dabei handelt es sich um inkrementelle, iterative Prozesse,
die sich gut in die Objektorientierte Programmierung einfügen. Ihr wohl bekanntester
Vertreter ist eXtreme Programming (XP). Anfangs fasste man diese Prozesse unter den
Sammelbegriff "leichte Softwareentwicklungsprozesse" zusammen. In letzter Zeit
kristallisiert sich immer mehr die Bezeichnung Agile Software Prozesse heraus.
Kernhypothese dieser Prozesse ist, dass Software änderbar ist und nicht alles von
Anfang an festlegt werden muss. Daraus leitet sich dann das inkrementelle, iterative
Vorgehen ab. Mit jeder Iteration kommen neue Funktionen dazu. Einen Überblick über
Agile Software Prozesse gibt Jens Coldewey in [Coldewey 2002].
Agile Software Entwicklungsverfahren teilt Coldewey in Meta Prozesse und in
Konkrete Prozesse auf. Meta Prozesse treffen keine konkrete Festlegung einzelner
Prozessschritte. Hier wird auf die Erfahrung und Professionalität des Teams vertraut.
Meta Prozesse geben nur Rahmenbedingungen vor. Adaptive Software Development
(ASD) von Jim Highsmith, Crystal Prozesse von Alistair Cockburn sowie Scrum von
Ken Schaber und Jeff Sutherland sind die Vertreter der Meta Prozesse und sind im
Unterkapitel 3.2.1 näher beschrieben. Konkrete Prozesse machen dagegen auch
Vorschläge für einzelne Prozessschritte. Gestehen aber erfahrenen Teams zu diese
Vorschläge abzuändern. Vertreter sind Feature Driven Development (FDD) von Jeff De
Luca, Dynamic Systems Development Method (DSDM) und eXtreme Programming
(XP) von Kent Beck, Ward Cunningham und Ron Jeffries. Die beiden erstgenannten
Vertreter der Konkreten Prozesse sind im Unterkapitel 3.2.2 beschrieben. eXtreme
Programming wird, auf Grund der Bedeutung für diese Arbeit, das Unterkapitel 3.3
gewidmet. [Coldewey 2002]
Das Wort "agil" bedeutet soviel wie beweglich, flink oder gewandt. Um auf schnell
ändernde Märkte reagieren zu können, setzen agile Prozesse beim Team, bei der
Software und beim Prozess selbst an. Ziel ist es sich nicht gegen Änderungen bei den
Anforderungen zu wehren. Am Projektanfang definierte Anforderungen stimmen zum
Projektende nicht mehr. Dadurch entsteht ein "Moving Target", das es gilt so gut wie
möglich zu treffen. [Beck 2001]
Das Manifest26 der agilen Softwareentwicklung gibt folgende Leitmotive für die
Bereiche Team, Software und Prozesse:
Einzelpersonen und Interaktionen sind wichtiger als Prozesse und Werkzeuge
Die Stärken des Teams müssen Kompetenz und Zusammenarbeit sein, denn Software
kann ohne einen Prozess und ohne Werkzeuge erstellt werden, aber nie ohne ein
qualifiziertes Team. Der beste Prozess wiegt einen chaotischen Haufen von Anfängern,
die kein professionelles Team bilden, nicht auf. Da professionelle Teams einen hohen
Grad an Selbstorganisation haben ist eine kleine Zahl an Methoden ausreichend. Zwölf
26
http://agilemanifesto.org/
Kapitel 3 Wartungsprozess
25
auf einer Seite definierte Methoden bringen mehr als tausend Seiten Richtlinien der
Prozessdinosaurier der beiden vorangegangen Jahrzehnten. Die nur von wenigen
Experten überblickt und verstanden wurden. Man verabschiedet sich immer mehr von
der Vorstellung, dass einheitliche wiederholbare Prozesse und detailliert planbare
Projekte möglich sind. Auch die Vorstellung durch klare Anweisungen und Kontrolle
ein Projekt steuern zu können schwindet, da die Erfahrung zeigt, dass kreative Prozesse
sich nur schlecht befehlen und kontrollieren lassen. Wichtig ist es ein Team mit
kompetenten Mitgliedern zu haben! Wo dies nicht der Fall ist, stellt sich die Frage, ob
professionelle Softwareentwicklung überhaupt möglich ist. [Beck 2001]
Laufende Systeme sind wichtiger als umfangreiche Dokumentation
Agile Prozesse versuchen umfangreiche Dokumentation, welche nur zu oft inkonsistent
ist, durch Kollaboration und Kommunikation im Team zu ersetzen. Dokumentation
stellt meist nur einen statischen Schnappschuss in einer dynamischen Welt dar und
fehlinformiert oft statt zu informieren. Dokumentation für den sicheren Betrieb ist zu
erstellen, allerdings nachträglich für bereits stabile Systemteile. Dokumentation darf
nicht zum Selbstzweck verkommen, sondern sollte dann verwendet werden, wenn es
keine bessere Möglichkeit zur Kommunikation gibt. [Beck 2001]
Zusammenarbeit mit dem Kunden ist wichtiger als Vertragsverhandlungen
Kunden und Auftragnehmer verwenden sehr viel Zeit und Energie für die
Vertragsgestaltung, statt gemeinsam an der Lösung der Probleme zu arbeiten. Ein
Vertrag setzt eindeutige Spezifikationen voraus, die zu Projektbeginn noch nicht
feststehen und sich erst im Projektverlauf herauskristallisieren. Eine vollständige
Spezifikation ist schwierig und nur teuer (unrentabel) zu erstellen. Aufwände wie sie in
der Raumfahrt betrieben werden, sind für die meisten anderen Projekte nicht
finanzierbar. Ariane 5 und Marssondenausfälle zeigen, dass auch dann Fehler nicht
auszuschließen sind. Agile Prozesse versuchen deshalb Kunden so ins Projekt
einzubeziehen, dass ein fachlicher Entscheidungsträger kurzfristig immer zur
Verfügung steht. [Beck 2001]
Reagieren können auf Veränderung ist wichtiger als Pläne zu verfolgen
Es ist zu beobachten, dass kein Projekt nach Plan verläuft, was im übrigen nicht die
Schuld der Ausführenden, sondern ein Problem des Planerstellers ist. Je feiner ein
Projektplan strukturiert ist, umso schneller treten Abweichungen auf. Die Erfüllung von
Plänen bewirkt außerdem, dass die Notwendigkeiten zu Projektbeginn erfüllt werden
und nicht die vorliegenden Notwendigkeiten am Ende des Projektes. Böse Zungen
behaupten Pläne ersetzen Zufall durch Irrtum. Agile Verfahren erstellen nur so viele
Pläne, wie Team und Auftraggeber brauchen. Es wird immer nur die nächste Iteration
geplant, dabei verzichtet man auf Vorhersagbarkeit zu Gunsten der schnelleren
Reaktionsfähigkeit. [Beck 2001]
Die vier Schwerpunkte agiler Softwareprozesse sind, Konzentration auf Individuen und
Zusammenarbeit, frühzeitig lauffähige Software, Einbindung des Kunden und
Kapitel 3 Wartungsprozess
26
Änderungsfreudigkeit statt Planungsverfolgung. Diese Schwerpunkte sind sowohl den
Meta Prozessen als auch den Konkreten Prozessen gemein. Konkrete Prozesse
beschreiben den Prozess zur Softwareentwicklung allerdings tiefergehender (siehe die
Unterkapitel 3.2.1, 3.2.2 und 3.3). [Coldewey 2002]
3.2.1
Meta Prozesse
Meta Prozesse lassen dem Team völlig freie Hand bei der Gestaltung der
Softwareentwicklung, dabei könnte ein Team sich theoretisch auch einen rigiden
Prozess auferlegen. Die Freiheit in Metaprozessen setzt allerdings ein professionelles
und erfahrenes Team sowie rigide Praktiken voraus, um die Prozesse unter Kontrolle zu
halten. Nachfolgend werden drei Vertreter dieser Klasse umrissen. Die beschriebenen
Metaprozesse haben einige Gemeinsamkeiten. Am Anfang steht eine Art Workshop um
den Umfang des Projektes, die Arbeitsweise und einen Plan festzulegen. Der zweite
gemeinsame Punkt ist die Verwendung kurzer Arbeitsphasen. Dabei wird
Kommunikation und Kollaboration im Team großgeschrieben. Die dritte
Gemeinsamkeit von Metaprozessen sind Feedbackworkshops. Dabei wird das Vorgehen
der letzten Iteration besprochen und über Verbesserungen für die nächste Iteration
nachgedacht. Ein minimaler Satz an Regeln führt zum gewünschten Verhalten
(Emergent Behaviour), dabei wird auf die Kompetenz der Entwickler vertraut. Wichtig
ist aber auch das bewusste und disziplinierte Reflektieren über den Prozess. Im
folgenden werden die drei untersuchten Metaprozesse im Detail dargestellt.
Adaptive Software Development (ASD)
Jim Highsmith hat sich für seinen Prozess Anregungen aus dem Bereich der Biologie
bei komplexen adaptiven Systemen geholt. Unter komplexen Systemen versteht man ein
Zusammenspiel von Agenten, die mittels Regeln kommunizieren. Das dabei
entstehende Verhalten (Emergent Behaviour) zeigt folgende Eigenschaft. Einfache
Regeln gepaart mit reichen Beziehungen führen zu erfolgreichem Verhalten und
komplexe Regeln gepaart mit wenigen Beziehungen führen zu erfolglosem Verhalten.
Bei der Entwicklung von Software betrachtet man nun Teammitglieder, Auftraggeber
und Organisationen als Agenten. Die Regeln für die Zusammenarbeit bilden dabei das
Entwicklungsverfahren. Somit entspricht ein Projekt einem komplexen System. Jim
Highsmith hat folgendes Regelwerk erstellt [Coldewey 2002]:

Entwicklungsteam und Kunde starten gemeinsam mit dem Entwurf einer Vision

Team versucht innerhalb von vier Wochen so viele Features, von einer
Prioritätenliste des Kunden, wie nur möglich zu erfüllen. Am Ende der
vierwöchigen Iteration erhält das Team Feedback vom Kunden.

während der Iteration wird dem Team vertraut und wenn der Plan nicht erfüllt
werden konnte, geht man von einer Fehlplanung aus

am Iterationsende überprüft das Team seine Leistung und verbessert seinen Prozess

Team plant nächste Iterationsrunde auf Grund vorangegangener Erfahrungen

Management unterstützt das Team auf allen Ebenen

man überlässt dem Team einzelne Arbeitstechniken anzupassen
Kapitel 3 Wartungsprozess
27
Diese kleine Anzahl von Regeln führt zu flexiblen Projekten. Der ASD Lebenszyklus ist
eine kurze Abfolge aus Spekulieren, Kollaborieren und Lernen. [Coldewey 2002]
Crystal Methoden Familie
Alistair Cockburn war als Berater in zahlreichen Projekten in verschiedenen
Kulturkreisen tätig. Diese Erfahrungen flossen in die Entwicklungsprozesse der Crystal
Familie ein. Schlussfolgerung seiner Erfahrungen ist, dass nicht jede Methode für jedes
Projekt geeignet ist und Anpassung an die Projekte notwendig ist. Dabei sind
Organisationskultur, Projektgröße und Kritikalität (Menschenleben, Konkurs, etc.) von
Bedeutung. Ziel bei diesen Verfahren ist nicht einzelne Zwischenprodukte zu erstellen,
sondern die Festlegung wie zusammengearbeitet werden soll. Die Crystal Methoden
Familie kennt vier Abstufungen (Clear, Yellow, Orange, Red), dabei werden
Teamgröße und Kritikalität als Einteilungsmerkmale verwendet. Crystal Clear ist
geeignet für kleine Teams mit bis zu sechs Mitgliedern und Projekten mit geringer
Kritikalität. Folgende Richtlinien gelten für alle Crystal Prozessvarianten [Coldewey
2002]:

direkte, interaktive Kommunikation zwischen zwei anwesenden Personen ist die
preisgünstigste und schnellste Art Information auszutauschen

mit steigender Anzahl Teammitglieder
Kommunikationsregeln steigen

überflüssige Regeln kosten überproportional viel Geld

je höher die Kritikalität umso höher muss der Anteil von außen nachvollziehbarer
Interaktionen sein

Formalismus bedeutet nicht Disziplin, Prozess alleine bedeutet nicht Fähigkeit und
Dokumentation bedeutet nicht Verständnis

Feedback und Kommunikation vermindert Notwendigkeit an Zwischenprodukten

Abseits vom kritischen Pfad sind möglichst stabile Ergebnisse wichtiger als
möglichst schnelle Ergebnisse
muss
auch
die
Anzahl
der
Die drei wichtigsten Punkte für Alistair Cockburn sind Kommunikation, zweimaliges
Feedback pro Iteration und maximale Iterationszyklen von vier Monaten. Alistair
Cockburn stellt außerdem noch eine interessante These auf, dass nämlich die
Informationsdichte mit der Distanz mit der dritten Potenz abnimmt und leitet daraus ab,
dass E-Mailverkehr und Videokonferenzen nur ein schlechter Ersatz für den direkten
Kontakt sind. Alistair Cockburn beschränkt sich nicht nur auf den Metaprozess, sondern
gibt auch eine Reihe von Arbeitsergebnissen inklusive einer Sinnangabe an. [Coldewey
2002]
Scrum
Ken Schwaber und Jeff Sutherland holten sich für ihren Prozess Anregungen aus dem
Bereich Verfahrenstechnik (Process Engineering). Bei den Verfahren zur
Stoffumwandlung unterscheidet man zwischen chemischer Reaktionstechnik,
mechanischen und thermischen Verfahren. Der wesentliche Punkt ist aber, dass man
Kapitel 3 Wartungsprozess
28
zwischen wiederholbaren und empirischen Prozessen unterscheidet. Wiederholbare
Prozesse sind solche, die vollständig verstanden sind und deren Anwendung immer zu
akzeptablen Ergebnissen führen. Wohingegen empirische Prozesse chaotisch und sehr
komplex sind. Daraus folgt aber auch, dass sie nicht oder nur schwer steuerbar
(Sensoren und Regelkreise) sind. Schwaber und Sutherland behaupten,
Softwareentwicklung ist kein streng wiederholbarer Prozess, da die Endprodukte immer
verschieden sind. Empirische Prozesse müssen fortlaufend überwacht und angepasst
werden, um ein erwünschtes Verhalten (Emergent Behaviour) zu erzielen. Zur
Steuerung ihres Prozesses verwenden sie den Produktrückstand, damit sind die offenen
Punkte der Prioritätenliste gemeint. Alle 30 Tage setzen sich Auftraggeber und Team
zusammen und beschließen, was in den nächsten 30 Tagen von der Prioritätenliste
gemacht werden soll. Das Team versucht in diesen 30 Tagen, die als Sprint bezeichnet
werden, die Aufgaben zu erfüllen. Aufgaben die nicht erfüllt werden können bilden den
Sprint Rückstand. Während des Sprints kann das Team ohne Einflüsse von außen
arbeiten. Am Ende kommt es zu einem Sprint Review und die nicht erfüllten Aufgaben
wandern wieder auf den Produktrückstand. Nach einem Feedback und
Erfahrungsaustausch beginnt wieder alles von vorne. Das Team hält täglich, immer zur
gleichen Zeit, ein sogenanntes Scrum Meeting ab. Richtlinien für Scrum Meeting sind
[Coldewey 2002]:

kurze Dauer von 15-30 Minuten

was hat jeder seit dem letzten Meeting getan

was wird man bis zum nächsten Meeting tun

was hat bei der Arbeit behindert

Lösungen werden nicht während eines Scrum Meeting gesucht oder diskutiert

zu offenen Fragen werden kleine Teams gebildet, diese arbeiten nach Abschluss des
Scrum Meetings weiter

Scrum Meetings sind der Pulsschlag des Projektes
30 Tage hat der Auftraggeber die Möglichkeit sich neue Anforderungen zu überlegen,
die dann Teil des neuen Produktrückstandes werden. Der Vorteil dieses Prozesses ist,
dass das Team 30 Tage ungestört arbeiten kann. Die Durchführung der Aufgaben ist
Teamsache, somit ist Scrum ein reiner Metaprozess. Scrum enthält keine Richtlinien zur
Programmierung. [Coldewey 2002]
3.2.2
Konkrete Prozesse
Konkrete Prozesse regeln den Softwareentwicklungsprozess tiefgehender als die
Metaprozesse. Die Prozesse Dynamic System Development Method (DSDM) und
Feature Driven Development werden nur kurz besprochen. Der Klassiker unter den
agilen Prozessen, eXtreme Programming (XP) kommt etwas ausführlicher zur
Diskussion. Grund ist, dass im Laufe dieser Arbeit versucht wurde einige eXtreme
Programming Techniken anzuwenden. Vor allem wurde versucht die Qualität des
Quellcodes vom Support Tracking System durch Refaktoring zu erhöhen.
Kapitel 3 Wartungsprozess
29
Dynamic System Development Method (DSDM)
Dieser aus Großbritannien stammte Prozess wird von einem Industriekonsortium
unterstützt und ist eine Weiterentwicklung des Rapid Application Development
Ansatzes. Das Verfahren baut auf die vier Grundprinzipien aktive Beteiligung der
Anwender, Team muss Entscheidungen treffen können und dürfen, häufige
Auslieferung des Produktes und Abnahme und Eignung für den Geschäftsprozess als
Hauptkriterium auf. Weitere Prinzipien bilden das Manifest der agilen
Softwareentwicklung ab. Dazu zählen iterative und inkrementelle Entwicklungsschritte
zur Lösung des Geschäftsproblems. Man ist sich bewusst, dass Änderungen umkehrbar
sind. Die Anforderungen werden nur grob definiert und Details werden später abgeklärt.
Tests werden im kompletten Lebenszyklus verwendet und Tests stellen keine
gesonderten Aktivitäten dar. Kollaborative und kommunikative Zusammenarbeit wird
gefördert. Das Verfahren gliedert sich in fünf aufeinander folgende Phasen. Die erste
Phase prüft die technische Machbarkeit und dauert maximal einen Monat. Ein weiterer
Monat wird für die fachliche Machbarkeitsstudie verwendet. Danach folgen die Phasen
Analyse (Functional Model Iteration), Design (Design and Build Iteration) und
Implementierung. Das Vorgehen ist auch hier wieder iterativ und die einzelnen
Iterationszyklen sollten 4-6 Wochen dauern und die Anforderungen, nach Prioritäten
geordnet, abarbeiten. Dokumentation soll auch in diesem Prozess durch
Kommunikation zurückgedrängt werden. DSDM kennt 15 Artefakte, gibt aber weder
Gliederung noch den genauen Inhalt vor. Jedes Artefakt hat aber vier beschreibende
Faktoren. Dazu zählen in welcher Phase wird es abgeschlossen, wer es abnehmen soll,
welchem Zweck es dient und welche Qualitätskriterien es erfüllen muss. [Coldewey
2002]
Feature Driven Development (FDD)
Feature Driven Development stammt von Jeff De Luca. Der Prozess gliedert sich in
fünf Phasen, wobei die Beschreibung jeder Phase auf einer Seite Platz findet und
jeweils folgende Punkte klärt [Coldewey 2002]:

Eintrittskriterien

Aktivitäten

Maßnahmen zur Verifikation

Abschlusskriterien
In der Startphase wird ein übergreifendes Modell entwickelt, diese Phase benötigt in
etwa 10% der gesamten Zeit. In der Startphase wird das gesamte System einmal grob
durchlaufen. Anforderungen werden in zwei Klassen, in "unbedingt notwendig" und in
"nice to have", eingeteilt. Für die einzelnen Teile werden Modelle erstellt und am Ende
dieser Phase zu einem Gesamtmodell zusammengeführt. In der zweiten Phase wird aus
dem Gesamtmodell eine Featureliste erstellt, wobei jedes Feature einzeln implementiert
werden kann und wirtschaftlichen Nutzen bringt. Ein einzelnes Feature sollte in weniger
als zwei Wochen implementierbar und testbar sein. In der dritten Phase wird ein
Featureplan erstellt, dabei wird gemeinsam der Aufwand geschätzt und Jeff De Luca rät
dringend von zu feinstrukturierten Plänen ab. Die einzelnen Features werden Teams
zugeordnet. Die vierte und fünfte Phase verlaufen ähnlich wie bei Scrum. In der vierten
Phase, wird für jedes Feature ein Design entworfen, dabei werden Features, die gleiche
Kapitel 3 Wartungsprozess
30
Klassen betreffen, gebündelt. In dieser Phase ist die Einbindung des
Anwendungsexperten sehr stark. In der fünften und letzen Phase wird das Design der
vierten Phase implementiert und getestet. Vor einer Codefreigabe erfolgt eine
Codeinspektion. [Coldewey 2002]
3.3 eXtreme Programming (XP)
Der Softwareentwicklungsprozess eXtreme Programming (XP) von Kent Beck, Ward
Cunningham und Ron Jeffries gehört zur Gruppe der konkreten Prozesse. Der Prozess
eXtreme Programming ist der Klassiker unter den agilen Prozessen. XP ist auch deshalb
von besonderem Interesse, weil während der Arbeit am Support Tracking System
versucht wurde einige Techniken von XP anzuwenden. Deshalb wird XP hier getrennt
von den anderen konkreten Prozessen vorgestellt. Der Arbeitstechnik Refaktoring wird
im Anschluss ein eigenes Unterkapitel gewidmet. Kent Beck führt in seinem Buch die
fünf nachfolgenden Grundprinzipien an. Aus diesen leitet er dann zwölf Praktiken ab.
Beck betont, dass die Prinzipien wichtiger sind als die Praktiken. [Beck 2000]
Die fünf Grundprinzipien nach [Beck 2000] sind:

unmittelbares Feedback bedeutet möglichst rasch nach einer Tätigkeit irgendeine
Rückmeldung über Richtigkeit zu erlangen

streben nach Einfachheit soll verhindern, dass Dinge zu einem Zeitpunkt
verkompliziert werden, wo man mit einfachen Lösungen noch das Auslangen findet

inkrementelle Weiterentwicklung heißt, dass in Zyklen am Werk weitergearbeitet
wird und beachtet wird in kurzen Abständen lauffähige Versionen zu haben

Änderungen willkommen heißen ist eine Einstellung, die ermuntert einmal
getroffene Entscheidungen zu revidieren

Qualitätsarbeit leisten bedeutet Qualität als zentrales Element neben der
Funktionalität zu betrachten
Diese fünf Prinzipien folgen aus den Werten Kommunikation, Einfachheit, Feedback
und Mut. Nebenprinzipien sind Lernen lehren, kleine Anfangsinvestition, Spielen um zu
gewinnen, gezielte Experimente, offene ehrliche Kommunikation, Mitarbeiterinstinkte
nutzen, Verantwortung übernehmen, an örtliche Gegebenheiten anpassen, mit leichtem
Gebäck reisen und ehrliches Messen. Aus den obigen Grundprinzipien wurden die
dreizehn Praktiken von eXtreme Programming entwickelt: [Beck 2000]
1. Kunde vor Ort, bedeutet das ein Vertreter des Auftraggebers Mitglied des
Entwicklungsteams ist und dem Team jederzeit auftretende Fragen beantwortet und
Feedback gibt.
2. Kurze Inkremente heißt, dass von Release zu Release maximal 1-2 Monate
vergehen sollen. Dabei ist zu beachten dass jede Release dem Kunden ausgeliefert
wird und wirtschaftlichen Mehrwert bringt, aber nicht in Produktion gehen muss.
3. Planungsspiel wird am Anfang jedes Inkrementes durchgeführt. Dabei werden
zusammen mit den Anwendern User Stories erstellt, Prioritäten nach
wirtschaftlichen Kriterien gesetzt, Aufwände geschätzt und Liefertermine festgelegt.
Kapitel 3 Wartungsprozess
31
4. Abnahmetests werden vom Anwender definiert und erstellt.
5. Einfaches Design wählen heißt, dass nur soviel Komplexität verwendet wird, wie
unbedingt erforderlich ist um die Funktionalität der laufenden Iteration zu
implementieren. Das Design trifft keine Vorbereitung für Funktionalität, die
vielleicht irgendwann einmal eingebaut werden könnte.
6. Das Programmieren in Paaren soll Reviews und Inspektionen ersetzen und sorgt für
die Wissensverteilung im Team.
7. Entwicklertest heißt, dass nach dem Test-Frist-Ansatz implementiert wird und
zuerst die Testfälle geschrieben werden und erst anschließend die Funktionen selbst
implementiert werden.
8. Refaktoring ist die Möglichkeit bei bestehendem Quellcode, dass Design zu
verbessern und notwendige Umstrukturierungen machen zu können, falls das
implementierte Design für neue Funktionalität nicht ausreicht (siehe Unterkapitel
3.4)
9. Gemeinsame Verantwortung heißt, dass der Quellcode in der Verantwortung des
gesamten Teams liegt. Einzelpersonen haben nicht die alleinige Änderungsbefugnis
über Codeteile.
10. Programmierstandards helfen mit, dass sich das gesamte Team in allen Codeteilen
zurecht findet.
11. Fortlaufende Integration ist notwendig, damit in jeder Nacht auf das Neue alle
Testfälle neu ausgeführt werden können.
12. Metapher gibt dem Team eine Vision und ein Richtung vor.
13. Nachhaltiges Tempo und 40 Stunden Woche bedeutet, dass kontinuierlich am
Projekt gearbeitet wird ohne an der Substanz der Teammitglieder zu nagen.
Die Punkte 1. – 4. zählen zum Produktzyklus, Punkte 5. – 8. zum Entwicklerzyklus und
die Punkte 9.- 13. stellen unterstützende Praktiken dar. [Beck 2000]
eXtreme Programming versucht auch einen Paradigmenwechsel herbeizuführen. Je
später ein Fehler im Phasenverlauf Analyse, Design, Implementierung, Test und
Wartung entdeckt wird und je früher der Fehler im Phasenverlauf gemacht wurde, umso
höher sind die Fehlerbeseitigungskosten. Das ist die Annahme der Vertreter der
Phasenmodelle. Vertreter der Phasenmodelle Wasserfall, V-Modell oder Spiralmodell
versuchten deshalb, Entscheidungen möglichst früh zu treffen und Analyse und Design
möglichst ausführlich und detailliert zu machen. Das Festhalten der Entscheidungen
führte zu umfangreicher Dokumentation der einzelnen Phasen, die selten mit dem
tatsächlichen Quellcode konsistent war. XP Vertreter versuchen die Kosten der
Fehlerbeseitigung durch ein Bündel an Maßnahmen in den Griff zu bekommen. Dazu
zählen die Praktiken einfaches Design, automatisierte Testfälle und Refaktoring. Diese
drei Praktiken zusammen nutzen den Umstand, dass Software im Vergleich zu
Hardware leicht zu ändern ist und sorgen dafür, dass Änderungen auch kostengünstig
erfolgen können. XP Vertreter wehren sich nicht gegen Veränderung, sondern nehmen
diese offen an. XP Vertreter sehen den Quellcode als zentrales Produkt und halten die
Dokumentation aus den verschiedenen Phasen gering. Dies reduziert auch das Problem
mit inkonsistenter Dokumentation. XP Vertreter behaupten, dass durch das
Kapitel 3 Wartungsprozess
32
Maßnahmenbündel die Kosten für Änderungen und Fehlerbeseitigung beschränkt ist
und Entscheidungen aufgeschoben werden können. [Beck 2000]
Konkrete Prozesse, wie Dynamic System Development, Feature Driven Development
und eXtreme Programming geben nicht nur allgemeine Verhaltensrichtlinien wieder,
wie die Metaprozesse Adaptive Software Development, Crystal Methode oder SCRUM,
sondern stellen den Entwicklern konkrete Praktiken und Schritte zur Seite.
Die Designstrategie beinhaltet einfaches Design, umgehend die Qualität von
Ergebnissen zu prüfen, Erfahrungen ins Design einfliesen zu lassen, sowie die
Minimierung der Zeitdauer für diese Prozesse. Einfaches Design ist gegeben, wenn das
System (Quellcode und Testfälle) alles vermittelt, was man aussagen will, kein
redundanter Code vorhanden ist und Klassenzahl und Methodenzahl minimal sind.
Allerdings soll das Design nicht nur am Anfang einfach sein, sondern soll es auch später
bleiben. Refaktoring ist die Praktik um dies zu erreichen. Diese Praktik wird im
Unterkapitel 3.4 ausführlich beschrieben.
3.4 Refaktoring
Einfaches Design, der Test-First Ansatz mit automatisierter Testumgebung und
Refaktoring bilden eine zusammengehörende Gruppe von Praktiken des agilen
Prozesses eXtreme Programming. Da diese Praktiken so wichtig sind, werden sie nicht
nur von Kent Beck in [Beck 2000] beschrieben, sondern haben Martin Fowler
veranlasst ein eigenes Buch über Refaktoring zu schreiben [Fowler 2000]. Während der
Wartung und Pflege des Support Tracking Systems wurde das Ziel verfolgt, mit Hilfe
von Refaktoring Designschwächen zu entfernen und das Design wieder zu
vereinfachen. Bei der Umwandlung vom Support Tracking System in eine adaptive
Webapplikation, wurde um die notwendigen Designänderungen vorzunehmen einige
Techniken des Refaktoring verwendet. Martin Fowler gibt folgende Definitionen an:
Refaktorisierung (Substantiv): "Eine Änderung an der internen Struktur einer Software,
um sie leichter verständlich zu machen und einfacher zu verändern, ohne ihr
beobachtbares Verhalten zu ändern." [Fowler 2000]
Refaktorisieren (Verb): "Eine Software umstrukturieren, ohne ihr beobachtbares
Verhalten zu ändern, indem man eine Reihe von Refaktoringschritten anwendet."
[Fowler 2000]
Refaktoring wird verwendet um das Design einer Software zu verbessern, um Fehler
leichter zu lokalisieren und weil es hilft schneller zu Programmieren. Die Praktik
Refaktoring soll verwendet werden bei Code Reviews, beim Beheben von Fehlern, beim
Hinzufügen von Funktionen und beim Auftreten der 3'er Regel. Die 3'er Regel besagt,
dass man, wenn man zweimal auf eine Situation stößt diese noch ausprogrammiert,
stößt man allerdings dreimal auf die gleiche Situation, dann ist es Zeit Refaktoring
anzuwenden. Refaktoring soll nicht verwendet werden bei Datenbankschemas, wenn
Neuimplementierung günstiger ist und bei schwer durchführbaren Designänderungen.
Auch das Verändern von bereits veröffentlichten Schnittstellen ist nicht angebracht.
Beide aus dem eXtreme Programming Ansatz stammenden Praktiken Refaktoring und
einfaches Design gehören zusammen. Refaktoring sorgt dafür, dass, obwohl immer
mehr Funktionalität zu einem Programm dazukommt, das Design einfach bleibt.
Kapitel 3 Wartungsprozess
33
Refaktoring dient zwar in erster Linie dazu das Design einfach zu halten, aber es kann
auch für die Performanceverbesserung verwendet werden. [Fowler 2000]
Martin Fowler nennt 22 Situationen, die im Quellcode vorkommen können, wo es sich
lohnt genauer hinzusehen und eventuell zu refaktorisieren. Er bezeichnet solche Stellen
als "übel riechenden Codestücke". Folgende 22 Arten werden in [Fowler 2000]
identifiziert:
1. Duplizierter Code ist an Quellcodefragmente erkennbar, die gleiche oder ähnliche
Aufgaben erfüllen und oft durch einfaches Copy&Paste entstanden sind.
2. Lange Methoden sind Methoden, die auf einer Bildschirmseite nicht mehr Platz
finden. Bei gutem objektorientierten Entwurf sind Methoden nur wenige Codezeilen
lang.
3. Große Klassen erkennt man an einer unübersichtlichen Anzahl von Methoden.
4. Lange Parameterlisten bei Methoden erschweren das Codieren, sind fehleranfällig
und können vermieden werden.
5. Divergierende Änderungen entstehen, wenn eine Klasse häufig auf verschiedene
Weise aus verschiedenen Gründen geändert wird
6. Schrottkugeln herausoperieren wird notwendig, wenn für eine Änderung in einer
einzelnen Programmfunktionen es notwendig ist, Änderungen in vielen Klassen
vorzunehmen.
7. Neid tritt bei Methoden auf, die mehr an anderen Klassen interessiert sind als an der
eigenen Klasse.
8. Datenklumpen sind daran zu erkennen, dass immer wieder die gleichen
Datenelemente gemeinsam an verschiedenen Codestellen auftreten.
9. Neigung zu elementaren Datentypen tritt zum Beispiel auf, wenn man ein einfaches
Datenelement statt einer Klasse verwendet um Währungen oder ähnliches
auszudrücken.
10. Switch Befehle treten oft dupliziert auf, können aber elegant durch Polymorphismus
umgangen werden.
11. Parallele Vererbungshierarchien erkennt man, wenn man einer Hierarchie eine
Unterklasse hinzufügt, dass auch an der anderen Hierarchie eine Unterklasse
notwendig wird.
12. Faule Klasse ist eine Klasse, die wenig tut außer Kosten verursachen.
13. Spekulative Allgemeinheit tritt oft auf, wenn für die Zukunft mal irgendeine
Funktionalität erwartet wird.
14. Temporäre Felder sind Objekte die nur kurzfristig erzeugt werden und gleich wieder
zerstört werden.
15. Nachrichtenketten, treten dort auf, wo scheinbar unendlich oft delegiert wird.
16. Vermittler, tritt dann auf, wenn eine Klasse hauptsächlich mit delegieren beschäftigt
ist.
17. Unangebrachte Intimität, dies ist der Fall, wenn sich Klassen mit privaten
Angelegenheiten anderer Klassen befassen.
Kapitel 3 Wartungsprozess
34
18. Alternative Klassen haben verschiedene Schnittstellen.
19. Unvollständige Bibliotheksklasse, hierbei handelt es sich um oft fremde
Bibliotheksklassen, die nicht genug Methoden anbieten.
20. Datenklassen bestehen oft nur aus set- und get- Methoden und tun sonst wenig.
21. Ausgeschlagenes Erbe, dabei erben Unterklassen mehr als sie selber brauchen.
22. Kommentare sollen, dort wo Kommentare nötig sind um etwas zu Beschreiben,
verwendet werden. Wenn etwas aus dem Code nicht hervorgeht, ist aber auch oft ein
Punkt um mit Refaktoring anzusetzen.
Um an diesen "übelriechenden Stellen" aktiv werden zu können, ist eine Voraussetzung
unbedingt notwendig. Es müssen ausreichend Testfälle vorhanden sein und das
Ausführen der Tests muss schnell und effizient gehen. Automatisch ablaufende Tests,
die ihre Zwischen- und Endergebnisse selbst vergleichen können sind von größtem
Nutzen. Diese Tests sollten laufend verwendet werden, während man Refaktoring
anwendet, aber zumindest einmal täglich. [Fowler 2000]
Martin Fowler hat in seinem Buch über siebzig Methoden zum Refaktoring
zusammengetragen, die eingesetzt werden können, wenn man auf übelriechende
Codestücke stößt. Alle Methoden sind ausführlich beschrieben, beginnend mit einem
Namen, einer Zusammenfassung, einer Motivation, einer Beschreibung der
Vorgehensweise und schließlich mit einem Beispiel. Hier sollen diese Methoden nicht
aufgeführt werden, es wird nur eine Liste angeführt, die die Gruppen darstellt in welche
die siebzig Methoden zusammengefasst werden. [Fowler 2000]

Methoden zusammenstellen

Eigenschaften zwischen Objekten verschieben

Daten organisieren

Bedingte Ausdrücke vereinfachen

Methodenaufrufe vereinfachen

Umgang mit der Generalisierung

Große Refaktoringschritte
Im Anhang C findet sich noch eine Liste von Zitaten aus dem Buch von Martin Fowler,
die ihm besonders wichtig erscheinen. [Fowler 2000]
3.5 Zusammenfassung
Fehler, Änderungen bei den Rahmenbedingungen und Änderungen bei den
Anforderungen sind die Ereignisse, auf die in der Wartungsphase reagiert werden muss.
Reaktionen sind Stabilisierung, Optimierung, Anpassung und Erweiterung. Die ersten
beiden Reaktionen fast man als korrektive Tätigkeiten oder Wartung zusammen und die
letzten beiden Reaktionen fast man als progressive Tätigkeiten oder Pflege zusammen.
Ungefähr 80% der Tätigkeiten in der Wartungsphase sind unter Pflege einzuordnen. Für
die Wartungsphase von großer Bedeutung ist, dass zuerst die Wartung durchgeführt
wird und Pflege immer erst auf einem konsolidierten Produkt durchgeführt wird.
Kapitel 3 Wartungsprozess
35
Änderbarkeit und Übertragbarkeit sind die Eigenschaften die auf den Aufwand bei
Wartung und Pflege einen Einfluss haben. Wartung und Pflege ihrerseits beeinflussen
die Zuverlässigkeit und Effizienz eines Produktes. Beim Support Tracking System war
das Verhältnis von Pflege- zu Wartungsarbeiten in einem ähnlichen Verhältnis (80:20)
und die Erstellung neuer Versionen begann immer mit der Konsolidierung der
Vorgängerversion.
Agile Software Prozesse verlangen ein inkrementelles iteratives Vorgehen. Diese
Prozesse stützen sich auf die Annahme, dass unter Einhaltung bestimmter Ansätze,
Software leicht änderbar ist und damit auf Änderungen in den Anforderungen reagiert
werden kann. Es wird zwischen Konkreten und Meta Prozessen unterschieden. Meta
Prozesse beschränken sich auf die Aufstellung von Regeln, wie auf Prozessebene vor zu
gehen ist. Konkrete Prozesse sind detaillierter und geben auch an welche Artefakte zu
erstellen sind oder welche Praktiken die Softwareentwickler anwenden sollen. Das
Manifest der agilen Softwareentwicklung streicht heraus, dass Personen und
Interaktionen, laufende Systeme, Zusammenarbeit mit den Kunden und auf
Veränderungen reagieren zu können wichtiger ist, als Prozesse und Werkzeuge,
umfangreiche Dokumentation, Verträge und Pläne. Der Prozess eXtreme Programming
leitet aus den Eigenschaften Kommunikation, Einfachheit, Feedback und Mut die
Grundprinzipien schnelles Feedback, Einfachheit anstreben und erhalten, inkrementelle
Schritte, Änderungen begrüßen und Qualitätsarbeit anstreben ab. Zusammen mit
weiteren Nebenprinzipien führt dies schließlich zu zwölf Praktiken für die
Softwareentwickler.
Unter diesen zwölf Praktiken gibt es die Gruppe bestehend aus einfachem Design,
Refaktoring und Testen. Im Rahmen dieser Arbeit wurde versucht, diese Praktiken
anzuwenden. Refaktoring ist ein Satz von Umstrukturierungstechniken, die es einem
Softwareentwickler erlauben den Entwurf eines Systems zu verändern ohne die
Funktionalität des Systems zu zerstören. In Summe gibt es über 70 Ansätze auf über 20
verschiedene Schwächen im Entwurf zu reagieren. Bei der Wartung und Pflege vom
Support Tracking System, wurde Refaktoring aber nicht nur eingesetzt um den Entwurf
des Systems zu verbessern, sondern auch für Wartungs- und Pflegeaufgaben und um das
System in ein adaptierbares System umzuwandeln.
Im Kapitel 7 werden die Erfahrungen mit diesen Arbeitsweisen geschildert. Im
nachfolgenden Kapitel 4 wird der interne Aufbau des Support Tracking Systems
dargestellt.
Kapitel 4
Systembeschreibung
In diesem Kapitel wird der Aufbau vom Support Tracking Systems beschrieben. Diese
Beschreibung beginnt mit dem Hyperwave Information Server, welcher als Plattform
für Support Tracking System dient. Die am Institut für Informationssysteme und
Computer Medien entwickelte Hyperwave Library (HWLIB) führt eine
Abstraktionsebene über dem API des Hyperwave Information Server ein. Die
Architektur vom Support Tracking System basiert auf dieser Bibliothek. Ein
abschließender Abschnitt beschreibt die Funktionalität des Support Tracking Systems
aus der Sicht der Benutzer.
4.1 Hyperwave Information Server
Der Hyperwave Information Server bildet serverseitig die Grundlage für das Support
Tracking System. Die in dieser Arbeit beschriebene Version STS V1.3 des Support
Tracking Systems verwendet die Version HWIS V5.1.1. Da für den Hyperwave
Information Server umfangreiche Dokumentation vorhanden ist, wird in diesem
Abschnitt nur ein kurzer Einblick in die Architektur und das für die Entwicklung
benötigte Application Interface (API) des Hyperwave Information Servers gegeben.
[Hyperwave 1999] [Hyperwave 1999a] [Hyperwave 1999b]
Der Hyperwave Information Server ist modular aufgebaut. Die einzelnen Module sind
in drei Ebenen angeordnet. "database layer" bildet die unterste Ebene. Sie besteht aus
"object server", "full text server" und "document cache server". Die mittlere Ebene wird
als "session layer" bezeichnet und enthält das Modul "hgserver". Die oberste Ebene
wird als "protocol conversion layer" bezeichnet und besteht aus dem Modul
"wavemaster". [Hyperwave 1999]
Das Modul "object server" wird entweder von "wavestore" oder von "waveoracle"
realisiert. "wavestore" sorgt für die Anbindung an die native Datenbank. Das Modul
"waveoracle" übernimmt die Datenhaltung, falls eine Oracle Datenbank zur dauerhaften
Objektspeicherung verwendet wird. Das "object server" Modul realisiert eine SchreibLese-Datenbank für mehrere Benutzer und verwaltet alle Objekte und alle
Objektbeziehungen. Dazu zählen Dokumente, Collections, bidirektionale Hyperlinks,
Kapitel 4 Systembeschreibung
37
Benutzerbeschreibungen und Serverbeschreibungen. Objektbeziehungen beschreiben
Mitgliedschaft in einer Collection und Links. [Hyperwave 1999]
Das Modul "full text server" bildet einen Volltextserver. Es verwaltet Indizes und
Wortlisten und übernimmt Suchanfragen. Als Ergebnis einer Suchanfrage liefert es eine
geordnete Liste von Objektidentitäten. Wie schon beim "object server" gibt es auch hier
die Möglichkeit, das Hyperwave Modul durch ein Modul eines Fremdherstellers zu
ersetzen. [Hyperwave 1999]
Das Modul "document cache server" hält die aktuellen Dokumente und bedient die
Clients mit lokalen Dokumenten. Er erhält Dokumente von den Clients und von fernen
Servern und gibt diese auch an die Clients weiter. Dieses Modul ist auch für die
Ausführung von CGI Skripts zuständig. Alle drei hier beschriebenen Module der
untersten Schicht verwenden HG-CSP27 als Protokoll zur nächsten Schicht. [Hyperwave
1999]
Die mittlere Schicht hat die Bezeichnung "session layer" und wird vom Modul
"hgserver" realisiert. Der "hgserver" teilt größere Operationen auf und leitet diese
elementare Operationen seriell an die Datenhaltungsebene weiter. Dadurch wird
verhindert, dass größere Requests sich gegenseitig blockieren. Dieses Modul führt ein
Caching der häufig verwendeten Objekte durch und überprüft die Zugangsberechtigung
der Benutzer. "hgserver" stellt außerdem die Verbindung zu entfernten Hyperwave
Information Servern her. Für jeden zu bedienenden Client wird ein "hgserver" gestartet.
Das Modul "wavemaster" stellt einen möglichen Client dar. Die Lebensdauer des
"hgserver" ist auf die Lebensdauer einer Verbindung zu einem Client beschränkt bzw.
endet nach Ablauf eines Timeouts. Für alle Verbindungen wird HG-CSP verwendet
HG-CSP ist ein verbindungsorientiertes und zustandbehaftetes Protokoll. [Hyperwave
1999]
Das Modul "wavemaster" übernimmt im "protocol conversion layer" die Aufgabe den
Hyperwave Information Server an das World Wide Web (WWW) anzubinden. Es
gehört zur Hauptaufgabe dieses Moduls, die Verbindung zwischen dem
verbindungslosen
und
zustandslosen
Protokoll
HTTP28
und
dem
verbindungsorientierten und zustandbehafteten Protokoll HG-CSP herzustellen. Es führt
eine Transformation der separaten Hyperwave Information Server Links zu den
engebettenden Links von HTML29 durch. Erst durch den "wavemaster" wird der
Hyperwave Information Server durch Webclients wie Netscape Navigator oder
Microsoft Internet Explorer bedienbar. Das Modul "wavemaster" sorgt auch für die
Darstellung der Serverinhalte (Collections, Suchformulare, Dokumente usw.) in einem
sogenannten Standardinterface. Das Standardinterface ermöglicht Dokumentensuche
und Authoring von Dokumenten. Das Erscheinungsbild kann mit Hilfe von PLACE
verändert werden. In diesem Modul ist außerdem die JavaScript Engine untergebracht
und in dieser Engine läuft der serverseitige Teil vom Support Tracking System ab.
[Hyperwave 1999]
Das Hyperwave Application Programming Interface (HW-API) definiert eine
sprachunabhängige, abstrakte Schnittstelle. Sie erlaubt es Programmierern die
27
HyperG - Client Server Protocol (HG-CSP)
HyperText Transfer Protocol (HTTP)
29
HyperText Markup Language (HTML)
28
Kapitel 4 Systembeschreibung
38
Funktionalität des Servers zu erweitern. Das HW-API erlaubt den Zugriff auf
Serverobjekte mit Funktionen auf einer hohen Abstraktionsebene. Im HW-API spiegeln
sich die Serverobjekte als Datentypen wieder. Diese sind im Sinne einer
Objektorientierung mit Zugriffsmethoden ausgestattet. Die grundlegenden Strukturen
umfassen ein Zugriffsmodul, Datentypen und Operatoren. Das Zugriffsmodul verfügt
über Methoden zum Öffnen von Sitzungen, zum Identifizieren, zum Beziehen von
Objekten mittels einer eindeutigen Identifikation, zum Beziehen des Inhaltes einer
Collection oder zum Einfügen eines Dokumentes. Die Datentypen umfassen sowohl
einfache Typen, wie "string" oder "name-value-pairs", aber auch abstraktere Konzepte
zur Dokumentrepräsentation. Mit Hilfe der Operatoren lassen sich Sortierparameter
oder Selektoren für Attribute festlegen. Eine konkrete Realisierung dieser abstrakten
Schnittstelle ist die Implementierung für die Skriptsprache JavaScript im "wavemaster".
HW_API_Attribute, HW_API_Object, HW_API_ObjectArray, HW_API_Reason,
HW_API_Error, HW_API_Content, HW_API_Server, KeyValue, KeyValueField,
OptionParser, HTMLJavaScriptParser, SendMail, File und Directory sind die Klassen
die dem Programmierer zur Verfügung stehen. JavaScript Prototypen ermöglichen eine
Spezialisierung dieser Objekte durch Vererbungsmechanismen. Die Instanzen server,
request, response, wavemaster, client und einige globale Funktionen stehen in der
Wavemasterumgebung immer zur Verfügung. [Hyperwave 1999a]
4.2 HWLIB
Es wurden zahlreiche Anwendungen entwickelt, die auf dem Hyperwave Information
Server basieren. Diese Anwendungen wurden entweder von Hyperwave oder von
Partnerunternehmen implementiert. Die Web Application Group am Institut für
Informationssysteme und Computer Medien ist solch ein Entwicklungspartner für
Hyperwave. Die Web Application Group entwickelte die Hyperwave Library (HWLIB)
mit den Zielen die Softwareentwicklung zu verbessern und zu beschleunigen. Vorteile
der Bibliothek HWLIB sind Wiederverwendbarkeit, Modularität, Stabilität,
Erweiterbarkeit, Einfachheit, verbesserte Qualitätssicherung und Unterstützung von
OOP30 unter JavaScript31. [Wurzenberger 1999]
Die Kernelemente der Bibliothek HWLIB sind die Generatoren für HTML-Formulare
und für JavaScript Objekte für am Hyperwave Information Server abgelegt Objekte. Für
die Dateneingabe oder Datenänderung werden bei Webapplikationen HTML-Formulare
verwendet. Der Formulargenerator sorgt für ein gleichmäßiges Erscheinungsbild aller
HTML-Formulare einer Webapplikation. Die vom Formulargenerator zur Verfügung
gestellten Methoden entbinden die Programmierer davon eine Menge HTML Code
selber erstellen zu müssen. So ist auch sichergestellt, dass alle Formulare einer
Applikation ein einheitliches Erscheinungsbild haben. Alle Formulare haben einen
einheitlichen Aufbau. Zuoberst wird eine Überschrift mit Subüberschrift platziert und
danach folgt die obere Umrahmung. Zumindest ein Formular muss explizit angelegt
werden, aber es ist auch möglich mehrere Formulare innerhalb einer Seite zu
30
31
Objekt Orientierte Programmierung (OOP)
http://devedge.netscape.com/library/manuals/2000/javascript/1.5/guide/
Kapitel 4 Systembeschreibung
39
verwenden. Innerhalb eines Formulars können dann beliebige viele Formularfelder
positioniert werden.
Abbildung 4-1: Formulargenerator
Die untere Umrahmung schließt das Formular optisch ab. Die OK/Reset/Chancel
Buttons werden gewöhnlich außerhalb der Umrahmung platziert. Wie schon der Anfang
des Formulars, so wird auch das Ende des Formulars explizit deklariert.
hw_FormEntry_Header, hw_FormEntry_TopBorder, hw_FormEntry_BottomBorder,
hw_FormEntry_StartForm,
hw_FormEntry_EndForm,
hw_FormEntry_InputText,
Kapitel 4 Systembeschreibung
40
hw_FormEntry_TextArea,
hw_FormEntry_DropDownList,
hw_FormEntry_RadioButtons, hw_FormEntry_CheckBoxes, hw_FormEntry_Button,
hw_FormEntry_FileSelect,
hw_FormEntry_OkResetChancel,
hw_FormEntry_HorizontalElement und hw_FormEntry_startBrowserButton sind die
Methoden, die den Entwicklern zur Verfügung stehen. Abbildung 4-1 zeigt das Support
Tracking System Formular zum Anlegen einer neuen zeitablaufgesteuerten Notiz, dass
mit Hilfe des Formulargenerators der HWLIB erstellt wird. [Wurzenberger 1999]
hw_Object
hw_DocumentObject
hw_TextObject
hw_TextObjectHTML
hw_ImageObject
hw_GenericObject
hw_CollectionObject
hw_ClusterObject
hw_SequenceObject
hw_MultiClusterObject
hw_AlternativeClusterObject
hw_QueryObject
hw_UserManagementObject
hw_GroupObject
hw_UserObject
Abbildung 4-2: Prototypeobjekthierarchie (HWLIB) nach [Wurzenberger 1999]
Die Bibliothek HWLIB ist eine Schnittstelle zwischen dem Hyperwave API und der
JavaScript Ebene. Die HWLIB bildet die Hyperwave Information Server Objekte, wie
zum Beispiel "Collection" oder "Sequence", auf JavaScript Objekte ab. Der
Objektgenerator erzeugt zu Hyperwave Information Server Objekten, die
entsprechenden JavaScript Objekte. Der Prototype hw_Object stellt die Basismethoden
zur Verfügung. Diese Methoden werden allen anderen Prototypeobjekten der HWLIB
vererbt. Abbildung 4-2 zeigt die Vererbungshierarchie in der HWLIB. Bereits der
Basisprototype hw_Object stellt 14 Attribute und 82 Methoden zur Verfügung. Die
Kapitel 4 Systembeschreibung
41
Methoden lassen sich thematisch in die Gruppen generelle Methoden, Methoden zur
Objektmanipulation, Methoden für den Zugriff auf die Attribute, Methoden für die
Anzeige des Objektes, Methoden um auf die Objekteltern zu zugreifen, Methoden für
den Zugriff auf Dateien, Suchmethoden, Methoden um das Objekt am Server
einzufügen, Methoden für Formulare und eine Gruppe mit verschiedensten Methoden
teilen. Für eine genaue Beschreibung der Attribute und Methoden aller HWLIB
Prototypen sei auf [Wurzenberger 1999] verwiesen.
4.3 Support Tracking System im Überblick
Das Support Tracking System ist eine Webapplikation, die auf dem Hyperwave
Information Server und der HWLIB aufbaut. Die Funktionalität, die vom Support
Tracking System zur Verfügung gestellt wird, ist rollenabhängig. Die Benutzer des
Systems teilen sich in die drei Rollen Administrator, Dispatcher und Support ein. Dieses
Unterkapitel gibt eine kurze Übersicht der wesentlichen Funktionen für die
verschiedenen Rollen, beschreibt die Architektur vom Support Tracking System und
gibt schließlich eine vollständige Übersicht der gesamten Funktionalität.
4.3.1
Hauptfunktionen aus Benutzersicht
Dieses Unterkapitel stellt die Funktionalität des Support Tracking Systems aus der Sicht
der verschiedenen Benutzergruppen dar. Mitarbeiter, die mit dem Support Tracking
System arbeiten, können in drei verschiedene Rollen eingeteilt werden. Es kann nicht
ausgeschlossen werden, dass ein und derselbe Mitarbeiter mehr als eine Rolle ausfüllt.
Folgende Rollen werden vom Support Tracking System verwendet:

Administrator: Für die Verwaltung vom Support Tracking System sind
Administratoren zuständig. Zur Verwaltung zählt zum Beispiel das Anlegen,
Ändern oder Löschen von Supportmitarbeitern.

Dispatcher: Mitarbeiter in dieser Rolle verteilen die verschiedenen Supportfälle auf
die verschiedenen Supportmitarbeiter. Sie berücksichtigen die fachliche
Qualifikation und streben eine gleichmäßige Auslastung an.

Support: Mitarbeiter dieser Gruppe bearbeiten die einzelnen Supportfälle, welche
ihnen vom Dispatcher zur weiteren Bearbeitung zugeteilt wurden.
Die Rollen im Support Tracking System sind hierarchisch angeordnet. In der
Standardkonfiguration von STS V1.3 sind die Einstellungen so getroffen, dass
Funktionalität, die den Mitarbeitern der Gruppe Support zur Verfügung steht, auch den
Mitarbeitern der Gruppe Dispatcher zur Verfügung steht. Genauso verhält es sich für
die Rollen Dispatcher und Administrator. Somit sind die Support Tracking System
Benutzer in der Rolle Administrator jene, denen die volle Funktionalität zu Teil wird.
Aufgabe der Administratoren ist es nicht die Supportfälle abzuwickeln, sondern das
System zu verwalten. Administratoren sind für die Adaptierung installierter Support
Tracking Systeme verantwortlich. Wie Einstellungen und Benutzeroberfläche verändert
werden können, findet sich in Kapitel 5 und Kapitel 6. In der Standardkonfiguration von
STS V1.3 dürfen nur Administratoren Objekte permanent löschen. Alle anderen
Kapitel 4 Systembeschreibung
42
Benutzer können Objekte nur in einen Papierkorb verschieben. Die Verwaltung von
Benutzern des Support Tracking Systems liegt in den Händen der Administratoren.
Dazu zählen das Anlegen, Verändern und Entfernen von Benutzern. Abbildung 4-3
zeigt zum Beispiel das Formular, welches verwendet wird um Daten eines
Supportmitarbeiters zu verändern. Diese Formulare werden vom Formulargenerator der
HWLIB erstellt (siehe Unterkapitel 4.2). Ähnliche Formulare werden für das Anlegen
und Löschen eines Supportmitarbeiters verwendet.
Abbildung 4-3: Verändern von Mitarbeiterdaten
Für Mitarbeiter der Rolle Dispatcher sind einige Funktion, die zur Verwaltung des
Systems dienen, nicht zugänglich. Ihre Hauptaufgabe ist es für eine gleichmäßige
Auslastung der Mitarbeiter zu sorgen. Bei Bedarf können sie Supporttickets von einem
Mitarbeiter zu einem anderen Mitarbeiter umschichten (siehe Abbildung 4-4). Dieses
Verschieben von Supporttickets ist nicht nur notwendig, wenn eine ungleiche
Auslastung der Mitarbeiter vorliegt, sondern auch um einen Spezialisten ein
Supportticket zur Bearbeitung zu übertragen. Krankheit oder Urlaub eines Mitarbeiters
sind weitere Gründe, warum ein Dispatcher Supporttickets einem anderen Mitarbeiter
zuteilen will.
Kapitel 4 Systembeschreibung
Abbildung 4-4: Supportticket einen neuen Mitarbeiter zuweisen
Abbildung 4-5: Formular für das Erzeugen eines Notizeintrages
43
Kapitel 4 Systembeschreibung
44
Die dritte Gruppe der Benutzer vom Support Tracking System fallen in die Rolle
Support. In der Standardkonfiguration von STS V1.3 stehen Benutzern, die zu dieser
Rolle gehören, am wenigsten Funktionen zur Verfügung. Meldet ein Kunde ein
Problem, so ist die erste Aufgabe des Supportmitarbeiters ein Supportticket anzulegen.
Dazu verwendet er das vom Formulargenerator der HWLIB erzeugte Formular aus
Abbildung 4-6. Am Anfang des Formulars werden Daten zum Kunden und zur
Kontaktperson, die das Problem gemeldet hat, erhoben. Danach folgen Angaben zum
Supportticket und wie mit dem Supportticket zu verfahren ist. Ein Block aus
domänenspezifischen Attributen beschreibt das Setup in welchem das Problem
aufgetreten ist. Das Supportticket erhält einen Titel und eine Prosabeschreibung des
Problems. Mit dem Supportticket kann bereits eine erste Notiz gemacht werden. Die
Notiz wird nicht für die Kundenbenachrichtigung verwendet. Die Prosabeschreibung
wird dem Kunden mittels E-Mail mitgeteilt, falls die Benachrichtigung im letzten
Abschnitt des Formulars eingeschaltet wird. Ein ähnliches Formular wird verwendet um
die Einträge eines Supporttickets zu ändern.
Ist ein Supportticket angelegt, dann ist es in der Ticketsammlung des
Supportmitarbeiters sichtbar. Abbildung 6-9 zeigt wie eine Ticketsammlung aussehen
kann. Wird ein Supportfall bearbeitet, dann machen die Supportmitarbeiter Notizen,
protokollieren Telefongespräche mit den Kunden oder versenden E-Mails an Kunden
oder Experten, die sie um Rat bitten. Abbildung 4-5 zeigt das Formular zum Erstellen
einer Notiz. In Abbildung 4-1 ist das Formular zum Erstellen einer ablaufgesteuerten
Notiz zu sehen.
Supportmitarbeiter versuchen Supportfälle mit den Daten aus bereits gelösten
Supportfällen zu lösen. Mit der Suche des Support Tracking Systems versuchen sie
ähnliche Fälle zu finden. Das Suchformular (Abbildung 4-7) ermöglicht eine zeitliche
Einschränkung der Suche im Bezug auf Erstellung, Änderung und Abschluss der
Supporttickets. Für die Suche im Domänenbereich, im welchem das Support Tracking
System eingesetzt wird, dienen die Supportticket Attribute. Bei den Supportticket
Attributen kann man aus den Listen auswählen oder Eingaben in den Freitextfeldern
machen. Die Suche beim Support Tracking System erlaubt auch eine Volltextsuche. Die
Attributsuche und die Volltextsuche sind kombinierbar. Der Suchbereich kann auf den
gesamten Server, auf das Support Tracking System oder auf die dem Mitarbeiter
zugewiesene Supporttickets beschränkt werden. Abbildung 4-8 zeigt ein mögliches
Suchergebnis. Wenn die Fundstelle nicht ein Supportticket ist, wird die gesamte
Hierarchie aufwärts bis zum Supportticket, welches die Fundstelle enthält, dargestellt.
Sieht sich der Supportmitarbeiter ein Supportticket näher an, dann erhält er eine
Darstellung ähnlich wie in Abbildung 6-10.
Kapitel 4 Systembeschreibung
Abbildung 4-6: Anlegen eines neuen Supporttickets
45
Kapitel 4 Systembeschreibung
Abbildung 4-7: Neue Suchabfrage erstellen
46
Kapitel 4 Systembeschreibung
47
Abbildung 4-8: Suchergebnis
4.3.2
Architektur des Support Tracking Systems
Die Software Architektur vom Support Tracking System baut auf der Architektur der
Bibliothek HWLIB auf. Die Support Tracking System Prototypeobjekte leiten sich von
den HWLIB Prototypeobjekten hw_Object, hw_CollectionObject, hw_QueryObject und
hw_ClusterObject ab. Diese vier Prototypeobjekte finden sich in der linken Hälfte der
Abbildung 4-9. Auf der rechten Seite finden sich die Prototypeobjekte des Support
Tracking Systems. [Gössler 1999]
Nachfolgend werden die Objekte des Support Tracking Systems, die am Hyperwave
Server abgelegt werden und im laufenden Programm in JavaScript Objekte
umgewandelt werden, kurz beschrieben. Die meisten dieser Prototypeobjekte waren
schon Bestandteil früherer Versionen des Support Tracking Systems. Eine
Beschreibung für STS V1.0 findet sich in [Gössler 1999].

sts_Object stellt globale Funktionen und Definitionen zur Verfügung. Es wird bei
jedem Request erzeugt.

sts_TicketContainerObject ist eine Hyperwave Collection, die beliebig viele
Supporttickets beinhalten kann. Diese Ticketsammlung ist nötig, da nicht alle
Kapitel 4 Systembeschreibung
48
Supporttickets Mitarbeitern zugeteilt sein müssen und stellt außerdem Abstraktion
der Ticketsammlungen, die zu Supportmitarbeitern gehören, dar

sts_StaffMemberObject ist eine Erweiterung von sts_TicketContainerObject.
Objektinstanzen von diesem Prototypeobjekt beinhalten Werte, die einen
spezifischen Supportmitarbeiter beschreiben. Supporttickets die sich in solch einer
Collection befinden, sind dem zugehörigen Supportmitarbeiter zur Erledigung
zugeteilt.
hw_Object
sts_CustomerObject
hw_CollectionObject
sts_Object
sts_TicketContainerObject
sts_StaffMemberObject
sts_TicketObject
hw_QueryObject
sts_QueryObject
hw_ClusterObject
sts_TicketEntryObject
sts_TicketEntryEmailObject
sts_TicketEntryPhoneNoteObject
sts_TicketEntryScheduleObject
sts_TicketEntryNoteObject
Abbildung 4-9: Prototypeobjekthierarchie (STS) nach [Gössler 1999]

sts_TicketObject ist die Repräsentation von Supportfällen. Ein Supportticket besteht
aus einer Reihe den Supportfall beschreibender Attribute, einen beschreibenden
Textblock und einer Sammlung von Ticketeinträgen.
Kapitel 4 Systembeschreibung
49

sts_CustomerObject ist die Repräsentation eines Kunden. Supportfälle werden von
Kunden berichtet. Wird für einen Supportfall ein Supportticket angelegt, werden
auch die Kundendaten hinzugefügt.

sts_QueryObject leitet sich vom hw_QueryObject ab. Dieser Queryobjekte sind eine
Besonderheit des Hyperwave Information Servers. Queryobjekte werden beim
Support Tracking System für das Erstellen von Berichten verwendet.

sts_TicketEntryObject ist eine Abstraktion für alle Arten von Ticketeinträgen.
Dieses Prototypeobjekt stellt alle gemeinsam benötigten Methoden zur Verfügung.

sts_TicketEntryNoteObject,
sts_TicketEntryEmailObject,
sts_TicketEntryPhoneNoteObject
und
sts_TicketEntryScheduleObject
sind
Spezialisierungen von sts_TicketEntryObject und stellen die spezifischen Methoden
der Subtypen zur Verfügung.
4.3.3
Funktionalität des Support Tracking Systems
Mit der Version STS V1.3 ist die Zuordnung der Funktionalität zu den Rollen nicht
mehr starr. Die Zuordnung kann vom Betreiber der Software verändert werden. Eine
Beschreibung der Zuordnung von Rollen und Funktionen findet sich in 5.4. Die
nachfolgende Liste der Funktionen berücksichtigt die Rollenzugehörigkeit nicht.
Kernelement vom Support Tracking System ist das Supportticket. Funktionen die sich
auf Tickets operieren sind:

new_ticket: Diese Funktion ermöglicht es über ein umfangreiches Formular ein
neues Supportticket anzulegen. Es werden zahlreiche beschreibende Daten und eine
Beschreibung des Problems in Textform erfasst. Kundendaten gehören genauso zu
den erfassten Daten, wie eine Beschreibung der Softwarekonstellation, die das
Problem hervorrief.

create_ticket_email, create_ticket_note, create_ticket_phonenote: Supporttickets
erhalten mit der Zeit immer mehr Einträge in Form von E-Mails, Notizen und
Telefonprotokollen. Diese Einträge können in eigenständige Tickets umgewandelt
werden. Erfolgt dies werden die gleichen Daten erhoben, wie beim Erstellen eines
neuen Tickets. Mit dem Unterschied, dass für die Beschreibung des Problems der
bestehende Eintrag herangezogen wird.

assign_ticket_to_staff: Mit dieser Funktion wird ein Supportticket in die
Ticketsammlung eines Supportmitarbeiters gestellt und diesem somit zur
Bearbeitung zugeteilt.

modify_ticket: Fallweise kann es vorkommen, dass sich die Daten eines Tickets
ändern bzw. falsch eingeben wurden. Mit dieser Funktion sind Änderungen und
Korrekturen möglich.

change_status: Supporttickets kennen verschiedene Stati von neu bis erledigt. Diese
Funktionalität erlaubt es den Status eines Tickets zu ändern.

close_ticket: Ist ein Supportfall abgeschlossen, so kann das Supportticket mit all
seinen Einträgen archiviert werden, um für zukünftige, ähnliche Probleme wichtige
Informationen zu liefern.
Kapitel 4 Systembeschreibung

50
remove_ticket: Sollte man einmal wirklich der Meinung sein, dass ein Ticket nicht
mehr benötigt wird, dann kann man es auch in den Papierkorb verschieben.
Tickets sind im Support Tracking System das zentrale Element, aber nicht minder
wichtig sind die Einträge in Form von Notizen und E-Mails bei den Tickets.

add_note, add_phonenote, add_schedulenote und add_email: Mit Hilfe dieser
Funktionen werden Ticketeinträge gemacht. Die vier Grundtypen für Ticketeinträge
sind Notizen, Telefongesprächsprotokolle, ablaufgesteuerte Notizen und E-Mails.
Bei Notizen gibt es einfache Notiz, Frage/Antwort, Arbeitsliste und
Zusammenfassung als Untertypen.

remove_note, remove_phonenote, remove_schedulenote und remove_email: Wie
schon für Tickets angeführt, gibt es auch für die Ticketeinträge die Möglichkeit,
diese in den Papierkorb zu verschieben.

modify_schedulenote: Die ablaufgesteuerten Notizen sind die einzigen Einträge für
die eine Funktion zum Ändern des Inhaltes vorhanden ist. Geändert werden kann
hier aber nur der Ablaufzeitpunkt, nicht aber der Inhalt der Notiz. Verwendung
findet diese Art von Notizen von Supportmitarbeitern um sich damit an vereinbarte
Fristen zu erinnern.

reply_email, forward_email: Die oben beschriebene Funktion add_email macht
natürlich nicht nur einen Ticketeintrag, sondern verschickt auch eine E-Mail an den
Adressaten. Achtet der Kunde beim Beantworten von E-Mails darauf, dass er die
Ticketidentifikation nicht aus der E-Mailtitelzeile löscht, so kann das Support
Tracking System selbstständig E-Mails vom E-Mailserver hohlen und sie als
Ticketeinträge beim richtigen Ticket ablegen. Der Supportmitarbeiter erkennt an
einer speziellen Kennzeichnung der Tickets, dass ein E-Mail zum Supportticket
eingegangen ist. Der Mitarbeiter kann auf E-Mails antworten oder diese an
gewünschte Stellen, vom Support Tracking System aus, weiterleiten. Diese E-Mails
werden natürlich wiederum zu Ticketeintragen gemacht.

assign_email: E-Maileinträge können von einem Ticket zu einem anderen Ticket
verschoben werden.
Eine weitere wichtige Komponente vom Support Tracking System ist die Abbildung der
Supportmitarbeiter im System. Jeder Supportmitarbeiter hat eine eigene Sammlung von
Tickets, die er zu bearbeiten hat.

new_staffmember: Im Regelfall sollte das Support Tracking System so konfiguriert
sein, dass zumindest Mitarbeiter mit der Rolle Administrator neue Mitarbeiter ins
System einfügen können. Dabei werden Daten wie Name, Telefonnummer und
E-Mailadresse erfasst und eine eigene Collection angelegt. In der Collection werden
Tickets abgelegt, die dem Mitarbeiter zugeteilt sind.

modify_staffmember: Daten eines Supportmitarbeiters müssen aktualisierbar sein,
falls sich zum Beispiel E-Mailadresse oder Telefonnummer ändern.

remove_staffmember: Von Fall zu Fall scheiden Mitarbeiter aus einem Unternehmen
aus. Diese Funktion sollte aber erst dann Verwendung finden, wenn alle Tickets
neuen Mitarbeitern zugeordnet wurden. Beim Löschen des Mitarbeiters wird der
Inhalt der Collection, das sind die offenen Supportfälle ebenfalls in den Papierkorb
verschoben.
Kapitel 4 Systembeschreibung
51
Das Support Tracking System bietet für die Suche mächtige Werkzeuge an.

new_search: Stellt ein umfangreiches Formular zur Verfügung um eine Suchabfrage
zu erstellen. Es kann nach Tickets mit bestimmten Attributen (Metadaten) gesucht
werden. Auch eine Volltextsuche kann initiiert werden. Beide Suchtypen sind
kombinierbar. Suchabfragen müssen nicht immer neu eingeben werden, sondern es
besteht auch die Möglichkeit die vorangegangene Suche zu modifizieren.

new_query, modify_query, remove_query: Für sehr erfahrene Hyperwave
Information Server Anwender gibt es auch noch die Möglichkeit, sogenannte
Queryobjekte zu erzeugen, zu verändern und in den Papierkorb zu verschieben.
Diese Queryobjekte haben allerdings eine schwierige Syntax und werden deshalb
leider nur wenig verwendet. Im Prinzip stellen sie permanente Suchabfragen dar, die
ihr Ergebnis ständig in einer Kollektion bereithalten. Queryobjekte können für die
laufende Berichterstattung verwendet werden.
Weniger wichtig sind die beiden folgenden Funktionen.

attribute: Listet alle Attribute eines Tickets in einer speziellen Ansicht auf, die sich
am Erscheinungsbild der Standardoberfläche des Hyperwave Information Server der
Version 5.1.1 orientiert.

history: Zu jedem Ticket wird eine Art Logbuch geführt, welches bei Bedarf
eingesehen werden kann. Alle Aktivitäten rund um ein Ticket, werden mit
Zeitstempel und Kurzbeschreibung im Logbuch erfasst.
Funktionen fürs tägliche Leben der Supportmitarbeiter sollen auch noch kurz
Erwähnung finden:

identify: Mit Namen und Passwort meldet man sich beim System an. Ohne
Identifikation hat man keinen Zugriff auf Daten und Funktionen des Support
Tracking Systems.

changepasswd: Von Zeit zu Zeit sollte man das Passwort ändern

home: Dient als Navigationshilfe und bringt den Benutzer immer in seine
Ticketsammlung zurück.
Folgende Funktionen haben große Auswirkung auf das Support Tracking System und
sollten mit entsprechender Umsicht Rollen zugeordnet bzw. verwendet werden. Beide
Funktionen sind der ausgelieferten Benutzeroberfläche nicht erreichbar, könnten aber
durch Adaptierung, wieder zugänglich gemacht werden.

remove_container: STS ist in seiner Datenhaltung hierarchisch organisiert, dazu
werden sogenannte Collections verwendet. Diese können in einem Stück in den
Papierkorb verschoben werden. Durch die hierarchische Anordnung werden auch
Subcollections mitgelöscht.

remove_sts: Diese Funktion entfernt alle Daten
unwiederbringlich vom Hyperwave Information Server.
einer
STS
Installation
Da alle Löschfunktionen nur in den Papierkorb verschieben, gibt es noch eine letzte
Funktion.

empty_trashcan: Mit dieser Funktion kann der komplette Papierkorb entleert
werden, dieses Entleeren ist allerdings unwiederbringlich.
Kapitel 4 Systembeschreibung
52
4.4 Zusammenfassung
Der Hyperwave Information Server bildet die Basis für das Support Tracking System.
Für die Implementierung wurde aber nicht nur das Hyperwave Application
Programming Interface verwendet. Das Support Tracking System nutzt auch die
Möglichkeiten der Hyperwave Library (HWLIB). Die Bibliothek HWLIB führt eine
weitere Abstraktionsebene ein und erlaubt die Generierung von JavaScript Objekten zu
den im Support Tracking System vorhandenen Objekten. Für die Generierung der
notwendigen HTML Formulare stellt die HWLIB einen eigenen Formulargenerator zur
Verfügung.
Das Support Tracking System kennt drei Gruppen von Benutzern. Die Rollen
Administrator, Dispatcher und Support haben unterschiedliche Aufgaben und
Funktionen. Administratoren sollen die Mitarbeiter im Support Tracking System
verwalten. Dispatcher sorgen für die gleichmäßige Verteilung der Supportfälle. Die
Mitarbeiter in der Rolle Support betreuen die Kunden bei ihren Problemen.
Wie Funktionen des Support Tracking Systems einzelnen Rollen zugeordnet werden ist
Teil vom Kapitel 5. Kapitel 5 beschreibt die Möglichkeit zur Adaptierbarkeit auf
Systemebene. Kapitel 6 zeigt, wie diese Möglichkeit sich in die Benutzeroberfläche
eingliedern. Diese Möglichkeiten zur Adaptierung des Support Tracking Systems stehen
den Administratoren zur Verfügung.
II. Gestaltungsteil
Kapitel 5
Adaptierbare Systemeigenschaften
Im Verlauf dieser Arbeit entstanden vom Support Tracking System die Version STS
V1.1, STS V1.2 und STS V1.3. Bei allen Versionen wurden Wartungsarbeiten in Form
von Fehlerbehebung und Pflegearbeiten in Form von neuer Funktionalität durchgeführt.
Mit der Version STS V1.3 wurde das Softwaredesign durch Refaktoring deutlich
verbessert. Die Zugänglichkeit zu den Systemeigenschaften für den Benutzer und die
durch den Benutzer veränderbare Benutzeroberfläche sind die großen Änderungen der
Version STS V1.3. Die adaptierbaren Systemeigenschaften werden in diesem Kapitel
beschrieben. Die adaptierbare Benutzeroberfläche wird in Kapitel 6 beschrieben.
5.1 Allgemeines
Ein System, welches dem Benutzer erlaubt bestimmte Parameter und Verhalten des
Systems zu verändern, wird als adaptierbares System bezeichnet. Systeme die sich
selbständig auf Grund von Annahmen über den Benutzer verändern werden adaptive
Systeme genannt. [Fink et. al. 1997]
Im Rahmen dieser Arbeit wurden Wartungs- und Pflegearbeiten am Support Tracking
System durchgeführt. Eine Unterscheidung der Begriffe Wartung und Pflege gibt
Kapitel 3. Bei diesen Arbeiten zeigte sich, dass einige Arbeiten immer wieder Daten
betrafen die leider Teil des Quellcodes waren. Um die Wartungskosten zu senken
wurden diese Daten aus dem Quellcode durch Refaktoring (siehe Unterkapitel 3.4)
extrahiert. Diese Daten beschreiben und steuern das Systemverhalten des Support
Tracking Systems. Dieses Kapitel beschäftigt sich eingehend mit den adaptierbaren
Systemeigenschaften. Wartungskosten zu senken war nur ein Grund für diese
Maßnahme. Ein weiterer Grund war das Support Tracking System verschiedenen
Kunden zur Verfügung stellen zu können. Hyperwave stellte auch die Forderung nach
einer neuen Benutzeroberfläche für das Support Tracking System auf. Sowohl die
adaptierbaren Systemeigenschaften als auch die Anforderung die Benutzeroberfläche
für Kunden adaptieren zu können, führten zu einer adaptierbaren Benutzeroberfläche
(siehe Kapitel 6). Mit STS V1.3 kam es zu einer Trennung von Eigenschaftsdaten und
Quellcode. Erst diese Trennung ermöglicht adaptierbare Systemeigenschaften.
Kapitel 5 Adaptierbare Systemeigenschaften
55
Unterkapitel 5.2 beschreibt, wie Werte für die Attribute der Supporttickets über Dateien
zur Verfügung gestellt werden können. In früheren Versionen waren diese Werte
Bestandteil des Quellcodes. Die Kundendatenbank wurde aus dem Quellcode entfernt
und in eigene Dateien ausgelagert. Unterkapitel 5.3 beschäftigt sich eingehender mit der
Kundendatenbank. Administrator, Dispatcher und Support sind die möglichen Rollen
der Support Tracking System Benutzer. Unterkapitel 5.4 zeigt, wie man die
verschiedenen Funktionen des Support Tracking Systems für die verschiednen Rollen
ein- und ausschaltet. Das Support Tracking System unterstützt ein Eskalationsmodell.
Wie Zeitspannen für dieses Eskalationsmodell gesetzt werden können, findet sich im
Unterkapitel 5.5. Die Implementierung erfolgte im wesentlichen durch die Klasse
"sts_AttributeInterfaceObject" und wird im Unterkapitel 5.6 beschrieben.
Diese Klasse kapselt die Konfigurationsdateien und besitzt eine festgelegte Schnittselle.
Sollten in den nächsten Entwicklungsschritten die Dateien mit den Kundendaten durch
eine vollwertige Kundendatenbank ersetzt werden, so muss nur noch diese Klasse
angepasst werden. Der Rest des Systems wäre durch eine solche Änderung nicht
betroffen. Unterkapitel 5.7 zeigt die Möglichkeit auf verschiedensprachige Texte für die
automatischen Kundenbenachrichtigungen zu verwenden. Unterkapitel 5.8 fasst das
gesamte Kapitel zusammen.
In der Datei "..\wavemaster-sts-5.1\sts\config.js" wird eine Variable
"CUSTOMIZEPATH" wie folgt gesetzt:
var CUSTOMIZEPATH = "wavemaster-sts-5.1/sts/customize";
Dieses Verzeichnis enthält alle Dateien, die zur Konfiguration von STS V1.3 notwendig
sind. Durch die Verwendung einer Variablen für den Verzeichnispfad, ist es leicht mit
verschiedenen Konfigurationsvarianten von STS V1.3 zu arbeiten. Allerdings werden
Änderungen an der JavaScript Datei "config.js" erst nach einem Neustart des
sogenannten Waveslaves aktiv. Änderungen an den Konfigurationsdateien werden
hingegen unmittelbar wirksam. Sobald ein Benutzer des Support Tracking Systems eine
Funktion aufruft oder weitere Information, wie zum Beispiel ein anderes Supportticket,
abruft, sind die geänderten Konfigurationsdaten wirksam.
5.2 Werte für die Ticketattribute
Supporttickets sind nicht nur eine Sammlung von Einträgen wie Notizen oder E-Mails,
sondern enthalten auch Attribute, die den Supportfall näher beschreiben. Diese
Ticketattribute werden beim Erzeugen eines Tickets gesetzt und fallweise geändert. Für
viele Ticketattribute sind Wertetabellen vorgegeben und für die folgenden
Ticketattribute wurden die Werte in Dateien abgelegt. Der vollständige Name der
Dateien besteht aus dem Namen des Ticketattributes und der angefügten Extension
".dat".

sts_ticketStatuscs ist eine Tabelle, die die möglichen Ticketstatuswerte für die
Ticketoperationen "ticket close" und "ticket suspend" enthält. Im neuen
Userinterface wurden diese beiden Operationen durch "finish request" ersetzt.
Kapitel 5 Adaptierbare Systemeigenschaften
56

sts_ticketStatus beinhaltet alle möglichen Ticketstatuswerte für verschiedene
Ticketoperationen mit Ausnahme für die Operationen "ticket close" und "ticket
suspend".

sts_source Werte geben die mögliche Quelle eines Supportfalles bekannt, diese
können zum Beispiel E-Mails oder Telefonate sein.

sts_product ist eine Tabelle der von der Supportabteilung betreuten Produkte.

sts_release beinhaltet die Versions- und Releasenummern der betreuten Produkte.
Diese Tabelle besteht aus mehreren Untertabellen, wobei die Reihenfolge den
Einträgen in sts_product entspricht. Dadurch kann eine Abhängigkeit zum
gewählten sts_product Wert realisiert werden.

sts_platform ist eine Tabelle die Einträge zu verschiedenen Plattformen und
Betriebssystemen enthält.

sts_hwModule ist eine Tabelle verschiedener Komponenten des Hyperwave
Information Server. Die Grundkonfiguration des Support Tracking Systems ist für
die Hyperwave Support Abteilung zugeschnitten. Diese Abteilung betreut Kunden,
die den Hyperwave Information Server einsetzen.

sts_client beinhaltet Werte, die den verschiedenen Clientprogrammen des
Hyperwave Information Server entsprechen, wie zum Beispiel verschiedene
Webbrowser oder Virtual Folders.

sts_category beinhaltet Werte, die eine grobe Klassifizierung des Problems
vornehmen, d.h. handelt es sich um ein Problem mit der Suche, mit der
Dokumentation, mit der Performance und vieles mehr.

sts_escalation beinhaltet Werte, die beschreiben unter welches Supportmodell der
betroffene Kunde fällt und wird zur Berechnung von Reaktionszeiten verwendet.
Eine Besonderheit des Ticketattributes "sts_ticketStatus" ist, dass gleich zwei Dateien
existieren. Zum einem die Datei sts_ticketStatuscs.dat und zum anderem die
Datei sts_ticketStatus.dat. Der Status eines Tickets kann beim Anlegen bzw.
beim Modifizieren des Tickets bestimmt werden. Dabei stehen alle Stati aus der Datei
sts_ticketStatus.dat zur Verfügung. Außerdem besteht die Möglichkeit, auf ein
Ticket die Operation "Finish Request" anzuwenden, wobei das Ticket erneut sein
Attribut "sts_ticketStatus" verändert. Diesmal sind aber nur die Werte aus
sts_ticketStatuscs.dat möglich.
Alle Datenfiles die Ticketattributdaten enthalten sind nach dem gleichen Schema
aufgebaut. Im Prinzip handelt es sich dabei um einfache Listen. Jede Zeile entspricht
einem Attributwert und wird mit einem Strichpunkt abgeschlossen. Die nachfolgende
Zeile ist ein Beispiel für eine Datenzeile und ist der Konfigurationsdatei
sts_escalation.dat entnommen.
InputValue:"Standard",
DisplayStoreValue:"Standard";
Dabei kann man erkennen, dass diese Dateien zwei Spalten enthalten. In der ersten
Spalte stehen die InputValue Einträge und in der zweiten die DisplayStoreValue
Kapitel 5 Adaptierbare Systemeigenschaften
57
Einträge. Die Ursache, warum jedes Listenelement aus zwei Werten besteht, ist in STS
V1.2 zu suchen. Die InputValue Werte sind jene Werte, die bei den entsprechenden
Ticketattributen in den Formularen "Ticket anlegen", "Ticket modifizieren" und
"Suchformular" zur Auswahl stehen. Der Wert unter DisplayStoreValue ist der
korrespondierende Wert, der dann als Wert beim entsprechenden Ticketattribut
gespeichert wird und beim Anzeigen eines Tickets dann auch ausgegeben wird. Wie an
den Hochkommata zu erkennen ist, können diese Werte auch Leerzeichen enthalten.
Beim Ändern oder Erweitern der Konfigurationsdateien, sollte darauf geachtet werden
Werte ohne Leerzeichen zu verwenden. Das Entfernen eines Eintrages hat zur Folge,
dass dieser in den Formularen für Ticketanlegen, Ticketmodifizieren, sowie im
Suchformular fehlt
Damit die Daten für die Ticketattribute ins System gelangen, müssen bestimmte
Einträge in der Konfigurationsdatei sts_ticketAttributes.dat vorhanden sein.
Diese Datei ist analog zu jenen Dateien aufgebaut, in denen die Werte der einzelnen
Ticketattribute gespeichert werden. Jede Zeile enthält einen Datensatz und wird von
einem Strichpunkt abgeschlossen. Die einzelnen Spaltenelemente werden durch
Beistriche getrennt. Jedes Spaltenelement besitzt eine Bezeichnung und mit einem
Doppelpunkt davon getrennt den eigentlichen Wert. In der ersten Spalte stehen die
Werte mit der Bezeichnung "Name", welche die Namen der einzelnen Ticketattribute
beinhaltet. Man sollte die Datei sts_ticketAttributes.dat nicht als reine
Konfigurationsdatei verstehen, sondern auch ein wenig als Informationseinheit. In
dieser Datei werden alle Ticketattribute, die in STS V1.3 Tickets Verwendung finden,
aufgelistet und nicht nur jene die vom Benutzter gesetzt werden. In der zweiten Spalte
finden sich die Werte mit der Bezeichnung "Generation". Diese Werte geben zum
entsprechenden Attributnamen an, wie die Ticketattribute erstellt werden. Drei Arten
sind hier zu unterscheiden:

HWIS_automatic Ticketattribute werden vom Hyperwave Information Server für
jedes Ticket gesetzt und verwaltet.

STS_automatic Ticketattribute werden vom Support Tracking System für jedes
Ticket gesetzt und verwaltet.

Input Ticketattribute sind jene Ticketattribute, die zur Anpassung an die
Produktionsbedingungen dienen. Durch diese Anpassung wird das Support Tracking
System für verschiedene Support Abteilungen nutzbar.
Bezeichnungen für Ticketattribute, die in die Gruppen "HWIS_automatic" und
"STS_automatic" angegeben werden, stehen für die Konfiguration durch den Benutzer
nicht zur Verfügung. Zeilen, die in der Spalte mit der Bezeichnung "Generation" den
Wert "Input" eingetragen haben, enthalten eine weiter Spalte mit der Bezeichnung
"Formular". Für die Spalte mit der Bezeichnung "Formular" werden folgende Werte
vom System unterstützt.

Textline zeigt an, dass der Wert für das Ticketattribut nicht aus einer Werteliste
ausgewählt wird. Der Benutzer gibt den Wert über eine Textzeile ein.

Textarea zeigt an, dass der Wert für das Ticketattribut nicht aus einer Werteliste
ausgewählt wird, sondern durch Eingabe eines größeren Textblockes erfolgt.
Kapitel 5 Adaptierbare Systemeigenschaften
58

List zeigt an, dass für dieses Ticketattribut eine Liste von Werten zur Auswahl steht.
Die Werte für dieses Ticketattribut werden der entsprechenden Konfigurationsdatei
entnommen.

-List zeigt an, dass für dieses Ticketattribut noch die Funktionen von STS V1.2
verwendet werden. Spätere Versionen sollten eventuell auf den Typ "List"
umstellen. Davon betroffen sind die Ticketattribute "sts_customerNotified" und
"sts_priority".

OverList wird zusammen mit dem Typ "SubList" verwendet. Dabei handelt es sich
um eine spezielle Liste, die eine Unterliste verwendet, die in einer eigenen
Konfigurationsdatei gespeichert ist.

SubList stellt die Unterliste zu Verfügung. "OverList" und "SubList" werden im
Bereich der Kundendatenbank verwendet. Es ist geplant diese auf Dateien
basierende Kundendatenbank durch eine "echte" Datenbank zu ersetzen.

CombineList ist der Kombination "OverList" und "SubList" ähnlich. In diesem Fall
wird die Unterliste allerdings nicht in einer getrennten Konfigurationsdatei abgelegt.

SystemList ist eine Liste, die nicht konfigurierbar ist. Diese Listen sind von den
Laufzeitdaten des Systems abhängig. In der Beispielkonfiguration betrifft dies die
Liste der Supportmitarbeiter für das Ticketattribut "sts_staff".
Bei STS V1.3 werden alle Listentypen aus Konfigurationsdateien eingelesen.
Zukünftige Versionen des Support Tracking Systems könnten diese Information mit der
Bezeichnung "Formular" auch dafür nützen, adaptierbare Formulare für das Anlegen
und Verändern von Tickets zu verwenden. Eine weitere Spalte mit der Bezeichnung
"Searchable" könnte dazu verwendet werden, festzulegen welches Ticketattribut im
Suchformular vorhanden sein soll und welches nicht. Die Ticketattribute sts_customer
und sts_CustomerContactPerson werden der Kundendatenbank entnommen. Da die
Listen der Kundendatenbank ein wenig von anderen Listen abweichen, findet sich unter
5.3 eine ausführliche Beschreibung dieser Kundendatenbank.
5.3 Kundendatenbank
Unter STS V1.2 waren die Kundendaten im Quellcode integriert. Mit STS V1.3 wurden
diese Daten in eigene Dateien ausgegliedert. Die Dateien custom_db.dat und
customer.csv bilden zusammen die Kundendatenbank. Die Datei custom_db.dat
enthält eine Beschreibung, wie die Datei customer.csv aufgebaut ist, welche die
eigentlichen Kundendaten enthält. Der Aufbau der Datei custom_db.dat folgt dem
gleichen Schema, welches auch bei den Ticketattributen verwendet wurde. Das Schema
ist spaltenorientiert und jeder Spalteneintrag enthält eine Bezeichnung und einen mittels
Doppelpunkt getrennten Wert. Spaltenelemente werden durch Beistriche getrennt und
Zeilen werden mit einem Strichpunkt abgeschlossen. In der Datei custom_db.dat
finden sich neben der Bezeichnung "entry" folgende Werte:

identityNumber ist eine eindeutige Nummer. Jedem Kunden ist eine solche
eindeutige Nummer zugeordnet.

customer enthält eine Bezeichnung für den Kunden, dies ist meist der Firmenname.
Kapitel 5 Adaptierbare Systemeigenschaften
59

cpFirstName enthält den Vornamen einer Kontaktperson beim Kunden. Zu einem
Kunden können mehr als eine Kontaktperson gehören.

cpSurname enthält den Nachnamen der Kontaktperson beim Kunden.

cpEmail enthält die E-Mailadresse der Kontaktperson beim Kunden.

cpPhone enthält die Telefonnummer der Kontaktperson beim Kunden.

cpLanguage enthält eine Angabe über die Muttersprache der Kontaktperson beim
Kunden.

cpEscalationModel enthält eine Angabe in welches Supportmodell die betreffende
Kontaktperson fällt.
Die zweite Spalte enthält Einträge mit der Bezeichnung "column". Diese beziehen sich
auf die Position in der Datei customer.csv, an welcher die Werte für
"identityNumber", "customer", "cpFirstName", "cpSurname", "cpEmail", "cpLanguage"
und "cpEscalationModel" zu finden sind. Die Datei customer.csv ist vom Typ
"comma separated values". Eine Zeile dieser Datei entspricht genau einer
Kontaktperson. Darauf ist zu achten, sollte diese Datei aus einer Excel Tabelle erstellt
werden. Kopfzeilen, die Spaltennamen enthalten, sind gegebenenfalls zu entfernen. In
jeder Zeile müssen mindestens so viele durch Beistriche getrennte Felder vorkommen,
dass Vorname und Nachname der Kontaktperson vorhanden sein können. Leerzeilen
und Zeilen mit zu wenig Feldern werden nicht berücksichtigt. Dies bedeutet aber nicht,
das Vorname und Nachname angegeben werden müssen, sondern nur, dass die Felder
vorhanden sein müssen. Gibt es zu einem Kunden mehr als eine einzige Kontaktperson,
so müssen diese in aufeinanderfolgenden Zeilen eingetragen werden. Dabei ist
wesentlich, dass alle die gleiche Kundennummer haben. Einträge mit unterschiedlichen
Kundennummern werden vom Support Tracking System als unterschiedliche Kunden
interpretiert. Ab der zweiten Kontaktperson eines Kunden, kann die Kundennummer
auch entfallen. Als Eskalationsmodell wird für alle Kontaktpersonen der Wert der ersten
Kontaktperson des Kunden verwendet. Wird bei der ersten Kontaktperson kein Wert
angegeben, so ist der Wert für das Eskalationsmodell für alle Kontaktpersonen
"Standard". Unterschiedliche Einträge in den nachfolgenden Kontaktpersonen werden
ignoriert.
5.4 Rollenabhängige Funktionalität
STS V1.3 kennt drei Benutzergruppen. Diese Gruppen werden auch als Rollen
bezeichnet. Die Zugehörigkeit eines Benutzers zu einer Rolle, wird durch die
Zugehörigkeit zu Benutzergruppen im Hyperwave Information Server System
bestimmt. Folgende Rollen sind vorhanden:

administrator ist eine Rolle, welcher die Verwaltung des Support Tracking
Systems obliegt. Aufgaben sind zum Beispiel das Neuanlegen oder Verwalten der
Supportmitarbeiter.

dispatcher ist eine Rolle, die primär die Aufgabe hat vorhandene Supportfälle bzw.
Supporttickets auf die verschiedenen Supportmitarbeiter zu verteilen.
Kapitel 5 Adaptierbare Systemeigenschaften

60
support ist jene Gruppe von Mitarbeitern, die ihnen zugeteilte Supportfälle
bearbeiten. Zum Beispiel können Angehörige dieser Gruppe Ticketeinträge machen
und Ticketbeschreibungen verändern.
Hat ein Benutzer des Support Tracking Systems mehr als eine Rolle, so wird der
Benutzer immer der in der Hierarchie höheren Rolle zugeteilt. Damit keine Probleme
auftreten sollte Funktionalität, die der Rolle Support zugerordnet wird, auch immer den
Rollen Dispatcher und Administrator zugeordnet werden. Analog sollten Möglichkeiten
der Dispatcher immer auch Administratoren eingeräumt werden.
Die Konfigurierung der rollenabhängigen Funktionen erfolgt mit den
Konfigurationsdateien action_role.dat und move_to.dat. Die Konfigurationsdatei
action_role.dat legt in STS V1.3 fest, welche Funktionen für welche Rollen
verfügbar sind. Auf der neuen Benutzeroberfläche von STS V1.3 werden nur jene
Funktionen dem Benutzer zu Verfügung gestellt, welche für seine Rolle vorgesehen
sind. Wie Funktionen in die Benutzeroberfläche eingebunden werden, wird detaillierter
in Kapitel 6 beschrieben.
Die Konfigurationsdateien action_role.dat und move_to.dat haben den üblichen
Aufbau. Jede Zeile enthält einen Datensatz und wird mit einem Strichpunkt
abgeschlossen. Die Elemente innerhalb der Zeile werden durch Beistriche getrennt und
besitzen eine Bezeichnung vor dem eigentlichen Wert, der durch einen Doppelpunkt
von der Bezeichnung getrennt ist. In der ersten Spalte werden die Funktionen angeführt.
Diese Spalte hat die Bezeichnung "action". Es folgen vier weitere Spalten mit den
Bezeichnungen "no_role", "support", "dispatcher" und "administrator". Die Werte unter
dem Label "no_role" werden für nicht identifizierte Benutzer und für Benutzer, die
keiner STS V1.3 Rolle zugeordnet werden können, verwendet. Die restlichen drei
Spalten sind für die entsprechenden Rollen Support, Dispatcher und Administrator.
Folgende Funktionen des Support Tracking Systems werden in diesen beiden Dateien
aufgezählt:

identify ist eine Funktion um sich beim Support Tracking System anzumelden.
Diese Funktion sollte für alle Rollen verfügbar sein, damit sich bereits angemeldete
Benutzer mit einer anderen Identität neu anmelden können.

change_passwd ist eine Funktion mit der man das Passwort neu setzen kann. Dies
sollte jeder Benutzer regelmäßig tun.

new_search ist eine Funktion, die über ein umfangreiches Formular eine
Detailsuche über alle Supporttickets ermöglicht.

home ist eine Funktion, die zum Hauptverzeichnis des aktuell angemeldeten
Benutzers führt. Jeder Benutzer des Support Tracking Systems besitzt ein eigenes
Hauptverzeichnis, welches alle ihm zugeordneten Supportfälle enthält.

new_staffmember ist eine Funktion zum Anlegen eines neuen Benutzers. Dabei
wird die Rolle des neuen Benutzers bestimmt und ein Hauptverzeichnis eingerichtet.

new_query ist eine Funktion, die mit Hilfe eines Formulars spezielle Hyperwave
Information Server Queryobjekte erzeugt. Diese Queryobjekte stellen ihre
Abfrageergebnisse in eigenen Verzeichnissen dar.
Kapitel 5 Adaptierbare Systemeigenschaften
61

new_ticket mit dieser Funktion kann der Supportmitarbeiter ein Supportticket zu
einem Supportfall erstellen. Dabei werden verschiedene Daten zum Kunden und
zum Problem erfasst.

assign_ticket_to_staff mit dieser Funktion werden Supportfälle verschiedenen
Supportmitarbeitern zugeteilt. Dabei wird das Supportticket in das Verzeichnis des
entsprechenden Mitarbeiters verschoben.

add_email mit dieser Funktion kann ein E-Mail zum konkreten Supportfall erstellt
und verschickt werden. Anschließend wird das E-Mail als Ticketeintrag zum Ticket
hinzugefügt.

add_phonenote mit dieser Funktion kann ein Telefongespräch, welches den
konkreten Supportfall betrifft, protokolliert werden. Die Phonenote wird als
Ticketeintrag zum Ticket hinzugefügt.

add_note mit dieser Funktion können zu einem Supportfall Anmerkungen gemacht
werden. Wiederum werden die Eingaben als Ticketeintrag dem Ticket hinzugefügt.

add_schedulenote mit dieser Funktion können Supporttickets mit Erinnerungen
versehen werden. Diese Erinnerungen machen sich nach Ablauf einer Zeitmarke bei
jenem Supportmitarbeiter bemerkbar, dem dieser Supportfall zugeordnet ist.

change_status diese Funktion wird im graphischen User Interface von STS V1.3
mit "Finish Request" bezeichnet. Dabei wird der Status des Supporttickets entweder
auf "suspended" oder "closed" gesetzt und in ein entsprechendes Verzeichnis
verschoben.

close_ticket ist ein Eintrag, der unter STS V1.3 noch nicht aktiv ist. Dieser Eintrag
sollte den Eintrag "change_status" ablösen, da dieser für seine Funktion eine
irreführende Bezeichnung darstellt.

modify_ticket mit dieser Funktion kann der Supportmitarbeiter die Daten zum
Kunden und zum Supportfall eines Supporttickets verändern.

modify_staffmember mit dieser
Supportmitarbeiters verändert werden.

modify_query ist ein Eintrag, der unter STS V1.3 noch nicht aktiv ist. Mit dieser
Funktion kann der Supportmitarbeiter ein vorhandenes Hyperwave Information
Server Queryobjekt verändern. Diese Funktion wird im graphischen User Interface
an der gleichen Stelle wie "modify_staffmember" angeboten. Diese Funktion wird
unter STS V1.3 durch "modify_staffmember" gesteuert und erscheint nur, wenn das
aktuell angezeigte Objekt ein Queryobjekt ist.

remove_ticket ist eine Funktion, die unter STS V1.2 ein Supportticket vollständig
aus dem System gelöscht hat. Mit dieser Funktion kann ein Supportmitarbeiter unter
STS V1.3 ein Supportticket in den Papierkorb verschieben.

remove_staffmember war unter STS V1.2 eine Funktion, die alle Einträge eines
Supportmitarbeiters aus dem Support Tracking System gelöscht hat. Weil bei dieser
Funktion alle zugeordneten Supporttickets mitgelöscht wurden, wird diese Funktion
unter STS V1.3 nicht mehr unterstützt. Dieser Eintrag ist unter STS V1.3 inaktiv.
Funktion
können
die
Daten
eines
Kapitel 5 Adaptierbare Systemeigenschaften
62

remove_query ist eine Funktion, die es ermöglichte unter STS V1.2 ein Hyperwave
Information Server Queryobjekt zu löschen. Diese Funktion ist unter STS V1.3
inaktiv.

remove_container ist eine Funktion, die ein Verzeichnis vollständig vom System
entfernt. Mit dieser Funktion konnte man unter STS V1.2 alle Einträge aller
Supportmitarbeiter vom System entfernen. Diese Funktion ist unter STS V1.3
inaktiv.

remove_sts ist eine Funktion, die alle Daten einer Support Tracking System
Installation vom Hyperwave Information Server in einem Schritt entfernt. Diese
Funktion ist unter STS V1.3 inaktiv.

header_body_footer ist eine Funktion, die unter STS V1.2 Teile der Hyperwave
Information Server Standardoberfläche ein- und ausblendet. Weil mit der neuen
Benutzeroberfläche von STS V1.3 diese Teile der Standardoberfläche nicht mehr
verwendet werden, ist diese Funktion unter STS V1.3 inaktiv.

modify_schedulenote ist eine Funktion
Erinnerungszeitpunkt zu verändern.

remove_email ist eine Funktion, die vom Supportmitarbeiter dazu benutzt wird EMails in den Papierkorb zu verschieben.

remove_phonenote ist eine Funktion, die vom Supportmitarbeiter dazu benutzt
wird Telefonprotokolle in den Papierkorb zu verschieben.

remove_note ist eine Funktion, die vom Supportmitarbeiter dazu benutzt wird,
Ticketnotizen in den Papierkorb zu verschieben.

remove_schedulenote ist eine Funktion, die vom Supportmitarbeiter dazu benutzt
wird, Erinnerungen in den Papierkorb zu verschieben.

trash_email, trash_phonenote, trash_note, trash_schedulenote, trash_ticket
sind unter STS V1.3 noch nicht aktiv. In Zukunft sollten diese Einträge die
entsprechenden "remove" Einträge ersetzen, weil die Namensgebung intuitiver ist.

empty_trash ist eine Funktion, die unter STS V1.3 noch nicht implementiert ist.
Der Papierkorb kann unter STS V1.3 zum Beispiel mit Hilfe der Virtual Folders
oder der Java Virtual Folders geleert werden. Dieser Eintrag ist unter STS V1.3
inaktiv.

create_ticket_email ist eine Funktion, die es ermöglicht ein im Support Tracking
System erfasstes E-Mail in ein eigenes Supportticket umzuwandeln.

create_ticket_phonenote ist eine Funktion, die es ermöglicht aus einem
Telefonprotokoll ein eigenständiges Supportticket zu machen.

create_ticket_note ist eine Funktion, die es dem Supportmitarbeiter erlaubt aus
einer Notiz eines Supporttickets ein neues Supportticket zu generieren.

reply_email ist eine Funktion um ein im Support Tracking System bestehendes EMail zu beantworten. Die Antwort wird als E-Maileintrag beim Supportticket
abgelegt.

forward_email ist eine Funktion um ein im Support Tracking bestehendes E-Mail
an einen beliebigen Empfänger weiterzuleiten. Da dabei der Inhalt der E-Mail
um
den
Erinnerungstext
oder
Kapitel 5 Adaptierbare Systemeigenschaften
63
verändert werden kann, wird auch das weitergeleitete E-Mail als E-Maileintrag beim
Supportticket abgelegt.

assign_email ist eine Funktion, die es ermöglicht E-Mails innerhalb des Support
Tracking Systems zu verschieben. Primär wird diese Funktion verwendet um vom
System nicht eingeordnete E-Mails an das richtige Supportticket anzuhängen. Mit
dieser Funktion kann man auch E-Mails von einem Supportticket zu einem anderen
Supportticket verschieben.

move_email ist eine Funktion, die unter STS V1.3 nicht aktiv ist.
Alle inaktiven Einträge könnten aus der Datei entfernt werden. Diese Einträge geben
Hinweise in welche Richtung die Konfigurierbarkeit des Systems weiterentwickelt
werden könnte.
In der Konfigurationsdatei action_role.dat finden sich in den vier Spalten mit den
Bezeichnungen "no_role", "support", "dispatcher" und "administrator" die Werte "yes"
und "no". Der Wert "yes" bedeutet, dass die Funktion dieser Zeile der entsprechenden
Rolle zur Verfügung steht. Funktionen für die der Wert "no" eingetragen ist, werden
Benutzern der entsprechenden Rolle vom System nicht angeboten.
Die Datei move_to.dat ist unter STS V1.3 nicht aktiv. Diese Möglichkeit zur
Konfiguration des Systems konnte aus Zeitgründen nicht realisiert werden. Sie deutet
an, wie man das Problem der sogenannten Ticketverfolgung lösen könnte. Benutzer
möchten abhängig von ihrer Rolle vom System unterschiedlich geführt werden.
Benutzer in verschiedenen Rollen möchten nach Abschluss einer Funktion
unterschiedliche Informationen vom System präsentiert bekommen. An den Stellen, wo
in der Konfigurationsdatei action_role.dat die Werte "yes" und "no" stehen, stehen
in der Konfigurationsdatei move_to.dat folgende Werte:

sts_root ist das Basisverzeichnis einer Support Tracking System Installation. Nach
Abschluss einer Funktion, zeigt das Support Tracking System dem Benutzer das
Basisverzeichnis.

root nach Beendigung der entsprechenden Funktion zeigt das Support Tracking
System das Basisverzeichnis des Hyperwave Information Server.

home nach Beendigung der Funktion wird dem identifizierten Benutzer sein eigenes
Basisverzeichnis gezeigt.

this nach Beendigung der Funktion wird das gleiche Element dem Benutzer gezeigt.
Verschiebt ein Benutzer zum Beispiel ein Supportticket, so wird nach Abschluss der
Funktion wiederum dieses Supportticket dargestellt. In diesem Fall hat sich
allerdings der Kontext geändert, d.h. ein Verzeichniswechsel hat stattgefunden.

ticket nach Beendigung der Funktion wird wieder das gleiche Supportticket
angezeigt. Dies ist zum Beispiel nützlich beim Verschieben einer E-Mail.

new findet dort Verwendung wo ein neues Element erstellt wird. Wird zum Beispiel
ein Supportticket, eine E-Mail oder eine Notiz erstellt, so wird nach der
Fertigstellung genau dieses Element dem Benutzer angezeigt.

parent bedeutet, dass man sich nach Abschluss einer Funktion genau eine
Hierarchieebene höher befindet. Supporttickets und Verzeichnisse bilden im
Support Tracking System ein hierarchisches Gebilde.
Kapitel 5 Adaptierbare Systemeigenschaften
64
Die Konfigurationsdatei move_to.dat gibt für jede Funktion in Abhängigkeit von der
Rolle an, welches gespeicherte Objekt aus dem Support Tracking System angezeigt
werden soll. Im Unterkapitel 5.6 wird die Implementierung der bisher beschriebenen
Konfigurationsmöglichkeiten dargestellt.
5.5 Eskalationszeiten
Eine weitere Datei, die zur Konfiguration vom Support Tracking System eingelesen
wird, ist escalationTime.dat. Da diese Datei keine Werteliste für ein Ticketattribut
ist, muss diese Datei auch nicht in der Datei sts_ticketAttributes.dat eingetragen
werden. Diese Datei enthält die vorgeschriebenen Antwortzeiten in Abhängigkeit von
Priorität und Supportmodell. Jede Zeile enthält die Werte für ein Modell und jede Zeile
endet wieder mit einem Strichpunkt. Die Spalteneinträge sind wiederum mit
Bezeichnungen versehen. In der ersten Spalte ist die Bezeichnung "escalation" zu
finden, gefolgt von einem Modell-Namen nach dem Doppelpunkt. Bei den
Modellnamen handelt es sich um:

Standard entspricht dem Normalfall. Dies ist jenes Supportmodell, das die meisten
Kunden erwerben.

Premium entspricht jenem Supportmodell, das von jenen Kunden gekauft wird, die
eine bevorzugte Behandlung wünschen oder benötigen.

Eval entspricht jenem Supportmodell, das für jene Kunden gedacht ist, die ein
Produkt nur zur Evaluierung einsetzen und nicht zu Produktionszwecken.
In jeder Zeile finden sich dann noch durch Beistriche getrennt die Bezeichnungen, die
zugleich die Prioritäten von STS V1.3 sind:

High der Supportfall hat höchste Priorität. Das aufgetretene Problem hindert den
Kunden daran seinem Geschäft nachzugehen.

Medium der Supportfall hat mittlere Priorität. Das aufgetretene Problem beschränkt
die Tätigkeit des Kunden.

Low, L1-Low, L2-Low sind für Supportfälle mit niedriger Priorität. Das
aufgetretene Problem beschränkt die Tätigkeit des Kunden nicht oder nur in sehr
geringem Umfang.
Die Werte, die hinter den Prioritätsbezeichnungen angeben werden, sind die Anzahl der
Stunden, innerhalb derer die Supportmannschaft zu reagieren hat.
5.6 Implementierung
Die Klasse sts_AttributeInterfaceObject wird einmal im globalen
Variablenscope als Objekt stsCustomize instanziert. Dieses Objekt bildet dann die
Schnittstelle zu den Konfigurationsdaten. Eine Ausnahme bilden die Daten für die
adaptierbare Benutzeroberfläche. Diese werden durch eine eigene Schnittstelle
eingelesen (siehe Kapitel 6). Tabelle 5-1 enthält eine Übersicht und kurze Beschreibung
Kapitel 5 Adaptierbare Systemeigenschaften
65
Methoden der Klasse sts_AttributeInterfaceObject. Die Klasse
sts_AttributeInterfaceObject sorgt für die notwendige Schnittstelle zwischen
aller
dem Support Tracking System und den Daten zur Konfiguration. Werte für
Ticketattribute, Kundendatenbank, rollenabhängige Funktionalität und verschiedene
Eskalationszeiten werden dadurch möglich. E-Mails zur Kundenbenachrichtigung sind
auch konfigurierbar, verwenden aber nicht diese Schnittstelle. Eine genauere
Beschreibung findet sich im nachfolgenden Unterkapitel 5.7.
Name der Methode
Beschreibung
readData
Das Schnittstellenobjekt stsCustomize liest mit dieser
Methode alle Konfigurationsdaten ein. Diese Methode wird
aufgerufen, wenn das Support Tracking System vom
Schnittstellenobjekt zum erstenmal Daten benötigt.
readTicketAttributList
Die readData delegiert an readTicketAttributList
das Einlesen der Konfigurationsdatei mit allen
Ticketattributen.
readAttributeValues
Sind dem Schnittstellenobjekt stsCustomize die
Ticketattribute bekannt, dann werden die möglichen
Ticketattributwerte mit Hilfe von readAttributeValues
eingelesen. Dies wird für alle Ticketattribute durchgeführt,
die unter der Bezeichnung "Formular" den Wert "List"
eingetragen haben.
makeListElement
Diese Methode wandelt die einzelnen Datenzeilen der
Ticketattributwertedateien in ein internes Format um.
getOptions
Diese Methode des Schnittstellenobjektes stsCustomize
liefert dem Support Tracking System Werte für ein
bestimmtes Ticketattribut. Die Werte sind so aufbereitet,
dass sie direkt für die Pulldownauswahlen der Formulare
verwendbar sind.
readActionsAndRoles
Diese Methode liest jene Datei ein, die als Information
enthält, welche Funktionen für welche Rolle zugänglich
sind.
testActionAllowed
Mit dieser Methode überprüft das Support Tracking
System, ob es eine bestimmte Funktion für die Rolle des
aktuellen Benutzers verwenden darf.
readCutomerDataBase
Das Schnittstellenobjekt stsCustomize delegiert an diese
Methode das Einlesen der Kundendatenbank.
getCustomerDataBase
Diese Methode liefert die Kundendatenbank in einer Form
an das Support Tracking System, sodass sie in den
clientseitigen Skripts der entsprechenden Formulare
verwendbar ist.
Kapitel 5 Adaptierbare Systemeigenschaften
Name der Methode
66
Beschreibung
testInEscalationModels
Überprüft beim Einlesen der Kundendatenbank, ob der
angegebene Wert für das Eskalationsmodell einer
Kontaktperson gültig ist.
getEscalationTime
Liefert die Eskalationszeit in Abhängigkeit von der
Priorität an das Support Tracking System.
readEscalationTimes
Diese Methode liest die Reaktionszeiten
verschiedenen Eskalationsmodelle ein.
für
die
Tabelle 5-1: Methoden der Klasse sts_AttributeInterfaceObject
5.7 Kundenbenachrichtigung
Auf Wunsch wird beim Anlegen eines neuen Supporttickets vom Support Tracking
System automatisch E-Mails an den Kundenkontakt versendet. Auf diese Weise wird
dem Kunden mitgeteilt, dass sein Anliegen erfasst wurde. Im File
sts_notifyemail.js ist es möglich, einige Einstellungen dafür zu treffen.
Mit der Variable DEFAULT_NOTIFY_LANGUAGE ist es möglich eine Sprache
einzustellen, die für die Verständigung mittels E-Mail verwendet werden soll, wenn für
den Kundenkontakt die Muttersprache nicht bekannt ist.
Weiters kann man für beliebig viele Sprachen einen Text für die E-Mailüberschrift und
für den E-Mailtext einfügen. Dafür gibt es zwei JavaScript Arrays, eines mit dem
Namen NOTIFY_SUBJECT und eines mit dem Namen NOTIFY_TEXT. Die Sprache
gibt man, wie unten im Beispiel zu sehen ist, an (hier für Englisch):
NOTIFY_SUBJECT["en"] = "…";
NOTIFY_TEXT["en"] = "…";
NOTIFY_SUBJECT wird für den Titel des E-Mails verwendet. Dabei gibt es den
Unterschied, ob ein Ticket aus einem E-Mail erstellt wird oder nicht. Wird ein Ticket
aus einer E-Mail erstellt, so wird nicht der hier gespeicherte Text verwendet, sondern
der Titel der E-Mail aus der das neue Ticket erstellt wird. Vorangestellt wird "Re:" und
am Ende wird die Ticketnummer in runden Klammern angefügt. Dadurch kann das
Support Tracking System E-Mails, die der Kunde als Antwort schickt, diesem Ticket
zuordnen und automatisch einfügen. Bei nicht aus E-Mails erstellten Tickets, wird der
Titel aus dem Text von NOTIFY_SUBJECT in Abhängigkeit von der Sprache gebildet,
gefolgt vom Titel des neuen Tickets und wiederum in runde Klammern die
Ticketnummer angehängt.
NOTIFY_TEXT wird für den Textkörper der E-Mails verwendet. Dabei werden
zunächst entweder die ersten zehn Zeilen jener E-Mail verwendet aus der das neue
Ticket erstellt wurde oder die ersten zehn Zeilen der Beschreibung des neuen Tickets.
Daran anschließend wird der Text von NOTIFY_TEXT, in Abhängigkeit von der
Sprache des Kunden, angehängt.
Kapitel 5 Adaptierbare Systemeigenschaften
67
5.8 Zusammenfassung
Die Einführung von Möglichkeiten zur Adaptierung beim Übergang von STS V1.2 zu
STS V1.3 stellen einen gelungenen Schritt zum Refaktoring der Implementierung vom
Support Tracking System dar. Unter STS V1.2 konnten Änderungen nur direkt im
Quellcode vorgenommen werden. Das System konnte von der einsetzenden Abteilung
nicht konfiguriert werden. Mit STS V1.3 ist es nun möglich das Support Tracking
System mit Hilfe einfacher Textdateien zu konfigurieren. Unter STS V1.3 kann der
Administrator, der Zugriff auf die Systemdateien hat, das System adaptieren. Er kann
festlegen, welche Attribute zu einem Support Ticket gehören. Für jedes dieser Attribute
können Werte vorgegeben werden. Die Funktionen des Support Tracking Systems
können für Rollen freigegeben werden. Für die verschiedenen Eskalationsmodelle
können Fristen festgelegt werden. Die Kundendaten wurden extrahiert und in eigenen
Dateien abgelegt. Der Zugriff auf die Adaptierungsdaten erfolgt über eine abstrakte
Schnittstelle. Wird die dateibasierende Kundendatenbank durch eine echte
Datenbankanbindung ersetzt, muss nur noch die Implementierung dieser Schnittstelle
geändert werden. Die hier beschriebenen Änderungen sind nur ein erster Schritt das
Support Tracking System adaptierbar zu machen. Die adaptierbare Benutzerführung
wurde nur angedacht, aber noch nicht vollständig umgesetzt. Der Teil für die
Kundenbenachrichtigung ist noch aus dem Quellcode zu entfernen. Es gäbe auch noch
die Verbesserungsmöglichkeit XML für die Strukturierung der Textfiles zu verwenden.
Im nachfolgenden Kapitel 6 wird gezeigt, wie diese Konfigurationsmöglichkeiten im
graphischen Benutzer Interface eingearbeitet werden können und wie das
Erscheinungsbild von STS V1.3 verändert werden kann.
Kapitel 6
Adaptierbare Benutzeroberfläche
Dieses Kapitel widmet sich ausschließlich der neuen Benutzeroberfläche von STS V1.3.
Bei der Version STS V1.0 lag der Fokus auf der Implementierung der Funktionalität.
Die Versionen STS V1.1 und STS V1.2 dienten zur Fehlerbehebung und zur
Erweiterung der Funktionalität. Mit der Version STS V1.3 wurde mit der
Implementierung der Benutzeroberfläche, der zweite große Entwicklungsschritt des
Support Tracking Systems gesetzt. Die adaptierbare Ausführung der Benutzeroberfläche
ermöglicht zwei wesentliche Eigenschaften. Zum einem kann die Benutzeroberfläche an
geänderte Systemeigenschaften, wie zum Beispiel neue Ticketattribute angepasst
werden. Zum anderen ist es mit dieser Ausführung möglich verschiedene Oberflächen
zu entwickeln. Möglichkeiten die Systemeigenschaften von STS V1.3 zu adaptieren
werden im Kapitel 5getrennt behandelt. Dieses Kapitel beschreibt zunächst die
Ausgangssituation, d.h. die Erzeugung der Benutzeroberfläche unter STS V1.2.
Anschließend folgt eine kurze Beschreibung der Änderungen unter STS V1.3. Die
Details zu STS Tags, HTML Vorlagen und Implementierung finden sich in den
Unterkapiteln.
6.1 Ausgabe unter STS V1.2
Alle JavaScript Objekte, die vom HWLIB Objektgenerator zu Hyperwave Server
Objekten generiert werden, haben zwei Methoden zur Darstellung. Dabei handelt es
sich um die Methoden displayContent und displayObject der HWLIB Basisklasse
hw_Object. Eine Beschreibung des Objektgenerators findet sich im Unterkapitel 4.2.
Tabelle 6-1 zeigt, welche Klassen diese Methoden überschreiben und welche Klasse
diese Methoden erben.
Klasse
displayContent
displayObject
sts_Object
überschreiben
erben
sts_QueryObject
überschreiben
überschreiben
sts_StaffmemberObject
überschreiben
erben
sts_TicketObject
überschreiben
überschreiben
Kapitel 6 Adaptierbare Benutzeroberfläche
sts_CustomerObject
69
erben
erben
überschreiben
überschreiben
erben
erben
sts_TicketEntryEmailObject
überschreiben
überschreiben
sts_TicketEntryNoteObject
überschreiben
überschreiben
sts_TicketEntryPhoneNoteObject
überschreiben
überschreiben
sts_TicketEntryScheduleNoteObject
überschreiben
überschreiben
sts_TicketContainerObject
sts_TicketEntryObject
Tabelle 6-1: Ausgabemethoden
Abbildung 6-1: Sicht auf die Ticketdarstellung unter STS V1.2
Vererbung erfolgt über die Prototypenhierarchie von HWLIB und STS (siehe Abschnitt
4.3.2).
Zusammen
mit
den
Methoden
displayActionInterface,
displayActualUser und STSdisplayNavigation der STS V1.2 Klasse
Kapitel 6 Adaptierbare Benutzeroberfläche
70
sts_Object generierte STS V1.2 eine Benutzeroberfläche, wie unter Abbildung 6-1 zu
sehen ist. Im ersten Abschnitt vor der ersten horizontalen Linie, wird der Hyperwave
Header aus dem Standardtemplatesatz des HWIS 5.1.1 dargestellt. Im zweiten
Abschnitt, zwischen der ersten und zweiten horizontalen Linie, findet man den Namen
des aktuellen Benutzers. Danach folgt eine Navigationshilfe von STS V1.2, die es
erlaubt, in der Verzeichnishierarchie rasch nach oben zu navigieren. Darunter befindet
sich ein großer Block, der in Gruppen unterteilt, alle möglichen Funktionen von STS
V1.2 enthält.
Im dritten Abschnitt werden entweder die Tickets mit ihren Ticketeinträgen, oder eine
Auflistung aller Tickets eines Supportmitarbeiters, wie in Abbildung 6-1 ersichtlich,
dargestellt. Im vierten und letzten Abschnitt folgt der Verzeichnisbaum gefolgt von
einer Fußzeile. Beides wird vom Standardtemplatesatz des HWIS 5.1.1 erstellt. Die
Abschnitte am Anfang und am Ende, die vom Standardtemplatesatz des HWIS 5.1.1
erstellt werden, können ein- und ausgeblendet werden.
Da all diese Methoden HTML Code direkt durch "write" Befehle schrieben, waren
Änderungen nur möglich, wenn man HTML Kenntnisse hatte und JavaScript
Programmiererfahrung besaß, sodass man wusste, in welcher Methode welche
Anweisung zu ändern war. Ziel war es somit ab STS V1.3 die Entwicklung der
Funktionalität von der Entwicklung der Benutzeroberfläche zu trennen.
6.2 Ausgabe unter STS V1.3
Mit STS V1.3 ist es nun erstmals möglich, dass Erscheinungsbild des Support Tracking
Systems zu ändern, ohne in den Quellcode eingreifen zu müssen. Dazu wurden
sogenannte HTML Vorlagen für die einzelnen Objekte des Support Tracking Systems
angelegt. Diese HTML Vorlagen sind mit speziellen Platzhaltern, den sogenannten STS
Tags, versehen. Diese STS Tags sind in HTML Kommentaren eingebettet, sodass die
HTML Vorlagen mit jedem beliebigen HTML Editor bearbeitet werden können.
Anstelle der STS Tags werden zur Laufzeit Objektattribute, Berechnungsergebnisse und
Bearbeitungsfunktionen eingefügt.
Die unter 6.1 beschriebenen Methoden erzeugen den HTML Code nicht mehr selbst,
sondern delegieren diese Aufgabe an die Methode interfaceBuilder des GUI
Objektes. Das GUI Objekt gehört zum STS V1.3 Prototypen sts_GUIObject und wird
einmal im globalen Variablenscope instanziert. Die Generierung der Benutzeroberfläche
wird vollständig von displayObject und displayContent übernommen. Beim
Aufruf der Methode interfaceBuilder wird der Name der HTML Vorlage
übergeben. Weitere Übergabeparameter sind eine Referenz auf das aufrufende Objekt
und eine Liste von sogenannten Actionlinks. Die Referenz auf das aufrufende Objekt
wird benötigt um Berechnungsergebnisse von Methoden dieses Objektes im Layout
einfügen zu können. Die Liste von Actionlinks wird benötigt um
Bearbeitungsfunktionen in die Oberfläche einbauen zu können. Im Unterkapitel 6.3
werden die in den HTML Vorlagen möglichen Platzhalter beschrieben. Unterkapitel 6.4
beschreibt die HTML Vorlagen und die jeweils verfügbaren Actionlinks. Unterkapitel
6.5 stellt die Implementierungsdetails des GUI Objektes dar.
Kapitel 6 Adaptierbare Benutzeroberfläche
71
6.3 STS Tags
STS Tags sind in HTML Kommentaren untergebracht, um die HTML Vorlagen mit
jedem beliebigen HTML Editor bearbeiten zu können. Ein STS Tag sieht zum Beispiel
wie folgt aus:
<!--<STS>insert_actionlink:identify</STS>-->
Die äußere Umklammerung der STS Tags wird von <!-- und --> gebildet, was einem
HTML Kommentar entspricht. Die innere Klammerung wird von <STS> und </STS>
gebildet. Beide Umklammerungen zusammen bilden ein STS Tag. Zwischen dem
öffnenden Teil <!--<STS> und dem schließenden Teil </STS>--> finden sich durch
einen Doppelpunkt getrennt der Typ des STS Tags und die dazugehörigen Parameter.
Es ist darauf zu achten, dass das gesamte Konstrukt leerzeichenfrei ist. Es gibt vier
verschiedene Arten von STS Tags, die sich durch die Angabe des Typs unterscheiden.
Diese sind:

insert_data fügt an der betreffenden Stelle den Attributwert eines Objektes ein.

insert_functionresult fügt das Ergebnis einer Methode eines Objektes ein.

insert_actionlink fügt eine Bearbeitungsfunktion an der betreffenden Stelle ein.

insert_href fügt ebenfalls eine Bearbeitungsfunktion an der betreffenden Stelle ein.
Die Angabe des STS Tag Typs erfolgt in Kleinbuchstaben. In den nachfolgenden
Abschnitten werden alle vier STS Tag Typen ausführlich beschrieben.
6.3.1
insert_data
Mit dem STS Tag insert_data werden Attributwerte des aufrufenden Objektes an der
betreffenden Stelle platziert. Der erste Parameter ist der Name des Objektattributes.
<!--<STS>insert_data:sts_staff:1:,</STS>
Das oben angeführte Beispiel zeigt, wie das Objektattribut sts_staff platziert werden
kann. Beim STS Tag insert_data können optional noch weitere Parameter angegeben
werden. Diese beiden Parameter kommen bei zusammengesetzten Objektattributen zum
Einsatz. Der zweite Parameter gibt an, welcher Teil des zusammengesetzten
Objektattributes verwendet werden soll. Der dritte Parameter gibt an, welches Zeichen
die zusammengesetzten Teile trennt. Wird der dritte Parameter weggelassen, so wird der
Doppelpunkt als Trennzeichen verwendet. Beim oben angeführten Beispiel wird der
erste Teil des Objektattributes sts_staff eingefügt. Das zusammengesetzte Objektattribut
sts_staff verwendet Beistriche zur Trennung der einzelnen Teile.
Kapitel 6 Adaptierbare Benutzeroberfläche
6.3.2
72
insert_functionresult
Leider ist die Möglichkeit, an bestimmten Stellen der Benutzeroberfläche Attributwerte
einzufügen, nicht ausreichend. Aus diesem Grund wurden weitere STS Tags
implementiert. Das STS Tag insert_functionresult ruft Methoden der Objekte
auf. Diese liefern HTML formatierte Ergebnisse. Diese Ergebnisse werden an Stelle der
STS Tags eingefügt. Ein Nachteil dieses Konzeptes ist es, dass die Trennung
Geschäftslogik und Benutzeroberfläche teilweise aufgehoben wird. Die verfügbaren
Methoden werden in der Tabelle 6-2 aufgezählt. Die Tabelle 6-2 zeigt auch für welche
HTML Vorlage eine Methode verfügbar ist. Im Anschluss werden die Methoden kurz
beschrieben.
Methode
HTMLVorlage
actualUserToHTML
sts_base.html
assignedLinksToHTML
sts_base.html
bodyToHTML
sts_noteentry.hmtl,
sts_phonenoteentry.html,
sts_schedulenoteentry.html,
sts_emailentry.html
displayRefClosedTicket
sts_emailentry.html
getAttachments
sts_emailentry.html
getLastTimeModified
sts_ticketobject_object.html
identifyDisplayContent
sts_base.html
modifyObjectToHTML
sts_base.html
noteIcon_to_HTML
sts_noteentry.hmtl
priority_to_HTML
sts_ticketobject_object.html,
sts_ticketobject_content.html
sortOrderSelectToHTML
sts_base.html
sts_customerContactPerson_to_HTML
sts_ticketobject_content.html
sts_escalationModel_to_HTML
sts_ticketobject_content.html
sts_remainder_to_HTML
sts_ticketobject_object.html,
sts_ticketobject_content.html
STSdisplayNavigation
sts_base.html
subject
sts_noteentry.hmtl,
sts_phonenoteentry.html,
sts_schedulenoteentry.html,
sts_emailentry.html
Kapitel 6 Adaptierbare Benutzeroberfläche
Methode
timeCreated_to_HTML
73
HTMLVorlage
sts_ticketobject_content.html,
sts_noteentry.hmtl,
sts_phonenoteentry.html,
sts_schedulenoteentry.html,
sts_emailentry.html
timeExpire_to_HTML
sts_schedulenoteentry.html
updated_to_HTML
sts_ticketobject_object.html,
sts_ticketobject_content.html
Tabelle 6-2: Methoden für insert_functionresult und deren Vorkommen

actualUserToHTML ermöglicht es, dass der Name des aktuellen Benutzers
angezeigt wird. Ist kein Benutzer identifiziert, so wird “anonymous“ ausgegeben.

assignedLinksToHTML fügt einen Block von Hyperlinks auf die Verzeichnisse
der "Assigned Ticket Collection" ein. Dies sind die Verzeichnisse der
Supportmitarbeiter mit nicht abgeschlossenen Supporttickets.

bodyToHTML ersetzt die Zeichen "Newline" und "Carriage Return" durch
"<BR>". Diese Zeichen können im Textkörper der Ticketeinträge enthalten sein. In
HTML werden beide Zeichen ignoriert und müssen durch "<BR>" ersetzt werden.

displayRefClosedTicket zeigt an, dass eine E-Mail bei einem abgeschlossenen
Supportticket abgelegt wurde. Das Support Tracking System versucht
neuangekommene E-Mails automatisch beim entsprechenden Supportticket
abzulegen. Ist das Supportticket geschlossen, wird beim E-Maileintrag ein spezieller
Vermerk gemacht, der von dieser Methode dargestellt wird.

getAttachments fügt Hyperlinks auf Dateien ein, die bei E-Mails als Anhänge
vorhanden sind. Fallweise enthalten E-Mails von Kunden Dateianhänge.

getLastTimeModified wird verwendet, um beim Auflisten der Tickets eines
Verzeichnisses anzuzeigen, wie lange die Tickets nicht mehr bearbeitet wurden.
Diese Methode ist auch in der Ticketansicht verwendbar.

identifyDisplayContent wird in der HTML Vorlage sts_base.html verwendet um
das aktuelle Objekt im Layout zu platzieren. Die HTML Vorlage sts_base.html bildet
den Rahmen mit den möglichen Funktionen.. Der Inhalt sollte ursprünglich nur
identifizierten Benutzern gezeigt werden. Daher rührt der Name dieser Methode.

modifyObjectToHTML fügt einen Link zum Modifizieren bestimmter Objekte ein.
Im Kopfteil der Benutzeroberfläche von STS V1.3 sind allgemeine Funktionen, wie
Identifizieren, Passwort ändern und Suche, verfügbar. Darunter können neue
Objekte, wie Ticket, Query und Staffmember, erzeugt werden. Daneben fügt diese
Methode einen Link zum Verändern von Ticketverzeichnissen, Staffmember und
Query ein, da diese Objekte in ihrer eigenen Darstellung keine Möglichkeit zum
Verändern anbieten. Das aktuelle Objekt muss vom Typ Ticketverzeichnis,
Staffmember oder Query sein.
Kapitel 6 Adaptierbare Benutzeroberfläche
74

noteIcon_to_HTML platziert für die verschiedenen Untertypen eines
Ticketeintrages vom Typ Notiz ein entsprechendes Icon. Untertypen sind Notiz,
Zusammenfassung, Frage-Antwort und Arbeitsliste.

priority_to_HTML wechselt in Abhängigkeit von der Priorität des Supporttickets
die Schriftfarbe. Diese Methode findet sowohl bei der Anzeige eines Supporttickets,
als auch bei der Auflistung aller Tickets eines Verzeichnisses Verwendung.

sortOrderSelectToHTML platziert eine Pull-Down Auswahl für die Sortierung der
Supporttickets. Die Auswahl eines Wertes bewirkt eine Neusortierung der Anzeige
einer Supportticketliste. Title, Status, Priority, Time Modified, Created, Customer
und Default sind mögliche Sortierreihenfolgen. Bei Default wird nach Priorität und
Status gereiht. Diese Auswahl steht nur bei Ticketverzeichnissen zur Verfügung.

sts_customerContactPerson_to_HTML fügt das Ticketattribut "Customer Contact
Person" ins Layout ein. Bevor das Attribut eingefügt wird, wird vor jedem Beistrich
ein Leerzeichen eingefügt. Bei der Darstellung ist es Webbrowsern nun möglich den
Text umzubrechen. Ohne diese Maßnahme wird das Layout der Benutzeroberfläche
von STS V1.3 zerstört. Man kann den Aufruf dieser Methode vermeiden, indem
man die Trennfunktionalität des STS Tags insert_data verwendet.

sts_escalationModel_to_HTML fügt das Eskalationsmodell und die für den
Supportmitarbeiter verfügbare Reaktionszeit ein. Die Reaktionszeit leitet sich aus
dem Eskalationsmodell des jeweiligen Kunden und aus der Priorität des Tickets ab.

sts_remainder_to_HTML fügt eine auffällige Zeile mit dem Erinnerungszeitpunkt
und mit der Anzahl der verbleibenden Tage ein. Supporttickets können
Ticketeinträge enthalten die Erinnerungsnotizen sind. Diese Erinnerungsnotizen
enthalten einen Erinnerungszeitpunkt. Falls mehr als eine Erinnerungsnotiz im
Supportticket vorhanden ist, zeigt diese Methode den zeitlich nächsten
Erinnerungszeitpunkt. Diese Methode wird für Supporttickets und für Auflistungen
von Supporttickets verwendet.

STSdisplayNavigation fügt eine Navigationsleiste ein, die es erlaubt, alle dem
aktuell angezeigten Element übergeordneten Hierarchieebenen rasch zu erreichen.

subject wird in den HTML Vorlagen von STS V1.3 verwendet, um den Titel der
Ticketeinträge anzuzeigen. Dies kann auch mit Hilfe des STS Tags insert_data
erledigt werden.

timeCreated_to_HTML zeigt den Wert des Attributes TimeCreated an, wobei
allerdings eine Umrechnung hin zur lokalen Ortszeit durchgeführt und ein spezielles
Anzeigenformat gebildet wird.

timeExpire_to_HTML fügt, wie sts_remainder_to_HTML für Supporttickets,
eine auffällige Zeile mit dem Erinnerungszeitpunkt und mit der Anzahl der
verbleibenden Tage ein. Da die Klasse sts_TicketEntryScheduleNoteObject
diese Methode enthält, erfolgt dies für die Erinnerungsnotizen.

updated_to_HTML kennzeichnet Tickets mit dem Schriftzug "Update", wenn eine
neue E-Mail eines Kunden beim Supportticket eingefügt wurde. Enthalten die EMails der Kunden im Titel die Supportnummer, so werden sie vom Support
Tracking System automatisch dem entsprechenden Supportticket zugeordnet.
Kapitel 6 Adaptierbare Benutzeroberfläche
75
Wenn möglich sollte insert_data statt insert_functionresult verwendet werden.
Dadurch ist die Entkoppelung von Business Logik und Benutzeroberfläche besser.
6.3.3
insert_actionlink und insert_href
Alle Bearbeitungsfunktionen des Support Tracking Systems werden als Hyperlinks in
die Benutzeroberfläche eingebunden. Diese Hyperlinks verbergen sich hinter kurzen
Texten oder kleinen Bildern. Die Auswahl eines Hyperlinks durch einen
Supportmitarbeiter stößt die entsprechende Bearbeitungsfunktion an. Alle möglichen
Bearbeitungsfunktionen des aktuellen Objektes werden dem Interfacebuilder als
Actionlinks übergeben. Die STS Tags insert_actionlink und insert_href
platzieren diese in der Benutzeroberfläche.
insert_actionlink fügt dabei den vollständigen Hyperlink ein, wie er als Actionlink
dem Interfacebuilder vom aufrufenden Objekt übergeben wurde. Wie im nachfolgenden
Beispiel ersichtlich, muss nur noch ein schließende HTML Tag </a> gesetzt werden.
<td>
<!--<STS>insert_actionlink:home</STS>-->
HOME
</a>
</td>
insert_href funktioniert ähnlich wie insert_actionlink. Dieses STS Tag fügt
nicht den gesamten übergebenen Actionlink ein, sondern nur den HREF Teil. Der
Anfangsteil <a und der Schlussteil > werden nicht mehr durch das STS Tag eingefügt.
Dadurch können aber innerhalb vom HTML Tag <a> weitere Angaben gemacht
werden. Wie beim STS Tag insert_actionlink, muss man auch hier ein
schließendes HTML Tag </a> setzen. Zum Beispiel ist diese Art Actionlinks
einzufügen notwendig, um mit Cascading Style Sheets das gewünschte Ergebnis zu
erhalten.
<a class="tl1" <!--<STS>insert_href:ticketopen</STS>-->>
<!--<STS>insert_data:Name</STS>-->
</a>
Das nachfolgende Unterkapitel 6.4 zeigt wie HTML Vorlagen diese STS Tags
verwenden.
6.4 HTML Vorlagen
Die für STS V1.3 erstellten Standard HTML Vorlagen sind im Verzeichnis
../wavemaster-sts-5.1/sts/gui2 zu finden. HTML Vorlagen können in einem
Kapitel 6 Adaptierbare Benutzeroberfläche
76
anderen Verzeichnis abgelegt werden. In der Konfigurationsdatei config.js wird das
Verzeichnis mit den HTML Vorlagen, wie folgt angegeben:
var GUIPATH = "wavemaster-sts-5.1/sts/gui2";
Einer neuer Wert in der Variable GUIPATH, wird erst nach einem Neustart des
Waveslaves wirksam. STS V1.3 benötigt für das angegebene Verzeichnis Leserechte.
Dazu ist in der Konfigurationsdatei .db.contr.rc folgender Eintrag nötig:
WAVEMASTER-STS-51::
JAVASCRIPT_FILE_READ_ACCESS = d:/sts/wavemaster-sts-5.1
Wird in den HTML Vorlagen auf Dateien, die im Verzeichnisbaum der Anwendung
vorkommen, verwiesen, so ist die Endung ";internal&inline=true" zu verwenden.
Im folgenden Beispiel wird die Bilddatei "identify.gif" aus dem Verzeichnis
"../wavemaster-sts-5.1/sts/gui2/icons" verwendet:
<img src="/sts/gui2/icons/identify.gif;internal&inline=true"
width="102" height="27" border="0">
HTML Vorlagen sind eine Art von Layout Templates. Die verschiedenen STS Tags
werden zur Laufzeit durch aktuellen Inhalt ersetzt. Somit sind STS Tags, so etwas wie
Platzhalter für alternativen Inhalt. Zu den verschiedenen Objekten des Support Tracking
Systems existieren HTML Vorlagen. Die Beschreibung der HTML Vorlagen beginnt
mit der HTML Vorlage sts_base.html, welche einen Art Rahmen für die restlichen
HTML Vorlagen in der Benutzeroberfläche bildet.
6.4.1
sts_base
Die wichtigste HTML Vorlage ist sts_base.html. Sie erzeugt jenen Rahmen, der die
grundlegenden Bearbeitungsfunktionen des Support Tracking Systems zur Verfügung
stellt. Das gerade aktuelle Objekt wird innerhalb dieses Rahmens dargestellt. Der erste
Aufruf des Interfacebuilders im Rahmen eines Requests erfolgt immer von der Methode
displaySTS aus. Dabei wird dem Interfacebuilder als Vorlage sts_base.hmtl
übergeben. Weiters bekommt der Interfacebuilder eine umfangreiche Liste an
Actionlinks mitübergeben, die in der Vorlage verwendet werden und den
Bearbeitungsfunktionen entsprechen. Nachfolgend eine kurze Beschreibung der
Bearbeitungsfunktionen bzw. Actionlinks:

identify ermöglicht Benutzern sich am Support Tracking System anzumelden. Nur
nach erfolgter Anmeldung steht die Funktionalität von STS V1.3 zur Verfügung.

passwd ermöglicht den Benutzern vom Support Tracking System ihr Passwort zu
ändern.
Kapitel 6 Adaptierbare Benutzeroberfläche
77

newsearch öffnet ein Formular, mit welchem eine neue Suchanfrage an das System
gestellt werden kann.

createticket öffnet ein Formular, mit welchem ein neuer Supportfall im System
angelegt werden kann.

newquery führt zu einem Formular, welches das Anlegen eines Queryobjektes
erlaubt. Mit neuen Queryobjekten ist es möglich neue Reports mit dem Support
Tracking System zu erstellen. Queryobjekte sind eine Besonderheit des Hyperwave
Information Servers.

newstaffmember führt zu einem Formular, das alle Daten für einen neuen
Supportmitarbeiter erfasst. Nach Abschluss des Formulars wird ein entsprechender
Benutzer angelegt.

modifystaffmember eröffnet die Möglichkeit die Dateneinträge eines Benutzers
des Support Tracking Systems zu ändern.

home ruft jenes Verzeichnis auf, welches die noch offenen Supporttickets des
gerade angemeldeten Benutzers enthält.

unassigned führt zu einer Liste von E-Mails, die vom System keinem bestimmten
Supportfall zugeordnet werden konnten.

new führt zu einer Liste von Supporttickets, welche neu angelegt und noch keinem
Supportmitarbeiter zur Bearbeitung zugeteilt wurden.

assigned führt zu einem Verzeichnis, das alle Mitarbeiterverzeichnisse enthält.

suspended listet alle Supporttickets mit dem Status "suspended" auf.

closed listet alle Supporttickets auf, die bereits abgeschlossen sind.

system führt zu einem Verzeichnis, das Systeminformation enthält. Dieses
Verzeichnis wird in der Version STS V1.3 nicht verwendet und ist somit leer.
Actionlinks werden vom Interfacebuilder in Form von Hyperlinks in die
Benutzerschnittstelle eingebaut. Mit der HTML Vorlage bekommt der Interfacebuilder
auch eine Reihe von Referenzen auf Funktionen übergeben. Der Interfacebuilder ist so
in der Lage Berechnungsergebnisse in die Benutzerschnittstelle einzubauen. Diese
Berechnungsfunktionen müssen jedoch Methoden des aufrufenden Objektes sein.
Folgende Methoden stehen der Vorlage sts_base zur Verfügung:

modifyObjectToHTML diese Methode entscheidet ob das aktuelle Objekt
modifiziert werden kann. Falls dies der Fall ist wird ein weiterer Button für diese
Funktion in die Benutzeroberfläche eingebaut. Diese Methode wurde der
hw_Object Klasse der HWLIB hinzugefügt. Somit steht sie jedem Objekt zur
Verfügung.

assignedLinksToHTML mit dieser Methode ist es möglich
Arbeitsverzeichnisse
der
Supportmitarbeiter
als
Hyperlinks
in
Benutzeroberfläche darzustellen.

STSdisplayNavigation blendet eine Reihe von Hyperlinks in der
Benutzeroberfläche ein, die ein navigieren in der Hierarchie erlauben. Beim Support
Tracking System sind Supporttickets, Arbeitsverzeichnisse und so weiter
hierarchisch angeordnet.
alle
der
Kapitel 6 Adaptierbare Benutzeroberfläche
78

actualUserToHTML ermöglicht die Anzeige des Benutzernamens des aktuell
identifizierten Mitarbeiters in der Benutzeroberfläche.

sortOrderSelectToHTML wird ein Verzeichnis mit Supporttickets dargestellt. So
wird mit dieser Methode eine Möglichkeit in die Benutzeroberfläche eingebaut um
verschiedene Sortierreihenfolgen der Supporttickets auswählen zu können.

identifyDisplayContent mit dieser Methode wird das aktuelle Objekt in der
Benutzeroberfläche platziert. Das aktuelle Objekt wird aber nur dargestellt, wenn
sich zuvor der Benutzer am System identifiziert hat.
Die HTML Vorlage sts_base.html verwendet keine STS Tags vom Typ
insert_data. Abbildung 6-2 zeigt was STS V1.3 mit Hilfe dieser Vorlage generiert.
Will man Cascading Style Sheets für die Gestaltung der Benutzeroberfläche verwenden,
so sollten diese am Anfang dieser HTML Vorlage eingefügt werden. Sie stehen dann
allen anderen verwendeten HTML Vorlagen zur Verfügung.
Abbildung 6-2: Mit der HTML Vorlage sts_base generiert
Im obersten Bildabschnitt findet man die Möglichkeiten, sich zu identifizieren, das
Passwort zu ändern oder ein Suchformular anzufordern. Darunter finden sich jene STS
V1.3 Funktionen, die sich nicht auf ein Ticket oder einen Ticketeintrag beziehen. Dazu
zählen die Möglichkeiten ein neues Ticket anzulegen, eine neue Query anzulegen oder
einen neuen Staffmember ins System einzufügen. Wenn die Ticketcollection eines
Supportmitarbeiters angezeigt wird, wird zusätzlich die Möglichkeit angeboten, die
Daten dieses Mitarbeiters zu bearbeiten. Unter diesen STS V1.3 Funktionen finden sich,
durch STSdisplayNavigation eingefügt, die Navigationshilfe, die es erlaubt in der
Kapitel 6 Adaptierbare Benutzeroberfläche
79
Hierarchie der Collection rasch nach oben zu steigen. Unter der Navigationszeile wird
der Loginname des aktuellen Benutzers eingefügt.
Auf der linken Seite befinden sich vertikal angeordnet zahlreiche Navigationenhilfen,
die es ermöglichen in eine spezielle Ticketcollection zu wechseln. Home wechselt in die
Collection des aktuellen Benutzers, Unassigned E-Mails in die Sammlung der nicht
eingeordneten E-Mails, New Tickets zu den neuen Tickets, die keinem
Supportmitarbeiter zugewiesen wurden und Assigned Tickets führt in jene
Collection, wo sich die Collections, Queryobjekte und der sogenannte Trashcan der
Supportmitarbeiter befinden. Die einzeln Collections sind durch die function_result
Methode assignedLinksToHTML unterhalb eingefügt. In der vertikalen Anordnung
finden sich noch Suspended und Closed Tickets sowie STS System Staff.
Unter dem bereits erwähnten Usernamen wird jetzt mittels function_result und der
Methode identifyDisplayContent das eigentlich Objekt dargestellt. Ursprünglich
überprüfte diese Methode, ob es sich beim aktuellen Benutzer um einen identifizierten
Benutzer oder um einen anonymen Benutzer handelte und zeigte nur identifizierten
Benutzern die Objekte an. Da dies jetzt nicht mehr der Fall ist, könnte man hier auch
displayObject mittels function_result in die HTML Vorlage einfügen, denn nichts
anderes macht die Methode identifyDisplayContent. Die displayObject Methode des
aktuellen Objekts, ist eine überschriebene Methode, die je nachdem zu welcher Klasse
das aktuelle Objekt gehört, nun erneut den Interfacebuilder mit sinnvollen Parametern
aufruft. Dadurch werden nun nachfolgend beschriebene HTML Vorlagen fallweise
ausgeführt.
6.4.2
sts_ticketobject_object
Folgende Elemente werden beim Aufruf der HTML Vorlage sts_ticketobject_object,
dem Interfacebuilder als Actionlinks übergeben und stehen somit innerhalb dieser
HTML Vorlage für insert_actionlink und insert_href zu Verfügung:

attributes setzt einen Button mit zugehörigen Hyperlink in der Benutzeroberfläche.
Damit sind die Attribute des Objektes in der Standarddarstellung des Hyperwave
Information Server erreichbar.

ticketopen erzeugt einen Hyperlink auf die Volldarstellung des Supporttickets. Eine
Kombination der Attribute Name und Titel wird für die Anzeige des Hyperlinks
verwendet.

resetupdate erzeugt einen Hyperlink zum Löschen der Veränderungsanzeige.
Dieser Hyperlink wird zusammen mit der Methode updated_to_HTML verwendet.
Von den Methoden der Klasse sts_ticketObject werden folgende mittels STS Tag
insert_functionresult verwendet:

updated_to_HTML prüft ob das System am vorliegenden Supportticket
Veränderungen durchgeführt hat. Ist dies der Fall, wird dies dem Benutzer
angezeigt.

sts_remainder_to_HTML prüft ob für dieses Supportticket ein Erinnerungsdatum
gesetzt ist. Falls dies der Fall ist werden Tage und Stunden bis zum Eintritt des
Datums angezeigt.
Kapitel 6 Adaptierbare Benutzeroberfläche
80

priority_to_HTML wandelt die interne Darstellung der Priorität in Texte um. Dies
wurde notwendig als sich Hyperwave mehr und aussagekräftigere Prioritäten
wünschte.

getLastTimeModified zeigt die Anzahl der Tage an, die seit der letzten
Bearbeitung durch einen Supportmitarbeiter vergangen sind.
Um Cascading Style Sheets verwenden zu können ist es notwendig insert_href statt
insert_actionlink zu verwenden. Das nachfolgende Codestück zeigt außerdem, wie man
nur einen Teil des zusammengesetzten Attributes "Title" verwendet.
<a class="tl1"
<!--<STS>insert_href:ticketopen</STS>-->> 
<!--<STS>insert_data:Name</STS>-->
<!--<STS>insert_data:Title:3</STS>-->
</a>
Ein weiteres kleines Codebeispiel illustriert, wie man einen Actionlink mit dem
Ergebnis der Methode updated_to_HTML verbinden kann. Durch diese Anordnung und
dadurch, dass die Methode updated_to_HTML einen Leerstring zurückliefert, falls das
entsprechende Flag beim Ticket nicht gesetzt ist, wird bewirkt, dass nur bei einem
Ticket mit einem vom System eingefügten E-Mail ein roter Schriftzug mit dem Wort
Update erscheint und klickbar ist.
<a <!--<STS>insert_href:resetupdate</STS>-->>
<!--<STS>insert_functionresult:updated_to_HTML</STS>-->
</a>
Abbildung 6-3 zeigt die befüllte HTML Vorlage sts_ticketobject_object. Alle
drei Actionlinks werden für die erste Zeile verwendet. Ganz links kann man die
Attribute des Tickets aufrufen, in der Mitte kann man das Ticket öffnen und ganz rechts
kann man das Update Flag zurücksetzen. Für den Actionlink zum Öffnen des Tickets
werden Name und Teile des Titels verwendet. In der zweiten Zeile sieht man das
Ergebnis der Methode sts_remainder_to_HTML, welches natürlich nur vorhanden ist,
wenn das Ticket zumindest eine Schedulenote enthält. Darunter werden Ticketattribute
und Teile von Ticketattributen in mehreren Zeilen dargestellt. Nach dem Ticketstatus
befinden sich die Ergebnisse der Methoden priority_to_HTML und
getLastTimeModified der Klasse sts_ticketObject.
Abbildung 6-3: Mit der HTML Vorlage sts_ticketobject_object generiert
Kapitel 6 Adaptierbare Benutzeroberfläche
6.4.3
81
sts_ticketobject_content
Die HTML Vorlage sts_ticketobject_content stellt eine andere Sicht auf das
Ticket zur Verfügung als sts_ticketobject_object. Die HTML Vorlage
sts_ticketobject_object zeigt eine Zusammenfassung des Tickets, die für
Ticketlisten benötigt wird. Mit sts_ticketobject_content erhält man eine
Volldarstellung des Inhaltes eines Tickets.
Dem Interfacebuilder werden für die HTML Vorlage sts_ticketobject_content
folgende Elemente als verfügbare Actionlinks übergeben:

resetupdate erzeugt einen Hyperlink zum Löschen der Veränderungsanzeige.
Dieser Hyperlink wird zusammen mit der Methode updated_to_HTML verwendet.

history führt bei Betätigung zu einer Auflistung, der am Ticket durchgeführten
Änderungen mit Zeitangaben.

addnote öffnet ein Formularfenster, mit welchem eine neue Notiz zum Ticket
hinzugefügt werden kann.

addschedulenote öffnet ein Formularfenster, mit welchem eine neue Ablaufnotiz
zum Ticket hinzugefügt werden kann.

addphonenote öffnet ein Formularfenster, mit welchem eine Telefongesprächsnotiz
verfasst werden kann.

addemail öffnet ein Formularfenster, mit welchem dem zum Ticket gehörigen
Kunden eine E-Mail geschickt werden kann. Diese E-Mail wird als Ticketeintrag
zum Ticket hinzugefügt.

assignticket führt zu einem Formularfenster, mit welchem das Ticket einem
anderen Mitarbeiter übertragen werden kann.

modifyticket führt zu einem Formularfenster mit allen Ticketdaten. Mit Hilfe dieses
Formulars ist es möglich die Ticketdaten zu verändern.

removeticket führt über eine Sicherheitsabfrage zum Löschen des Tickets mit all
seinen Einträgen.

changestatus ermöglicht den Status des Tickets auf "closed" oder "suspended" zu
stellen. In beiden Fällen wird das Ticket in entsprechende Verzeichnisse
verschoben.
Instanzen der STS V1.3 Klasse sts_ticketObject stellen folgende Methoden für das STS
Tag insert_functionresult zur Verfügung:

updated_to_HTML prüft ob das System am vorliegenden Supportticket
Veränderungen durchgeführt hat. Ist dies der Fall, wird dies dem Benutzer
angezeigt.

sts_remainder_to_HTML prüft ob für dieses Supportticket ein Erinnerungsdatum
gesetzt ist. Falls dies der Fall ist werden Tage und Stunden bis zum Eintritt des
Datums angezeigt.

sts_customerContactPerson_to_HTML
bereitet
die
Supporttickets für die Anzeige in der Benutzeroberfläche vor.
Kundendaten
des
Kapitel 6 Adaptierbare Benutzeroberfläche
82

timeCreated_to_HTML wandelt das interne Datumsformat in ein externes Format
für die Anzeige um.

priority_to_HTML wandelt die interne Darstellung der Priorität in Texte um.

sts_escalationModel_to_HTML berechnet aus dem Supportmodell des Kunden,
die Anzahl an Stunden die der Supportgruppe zur Verfügung stehen um zu
reagieren.
Abbildung 6-4 zeigt das Ergebnis, das Interfacebuilder mit der HMTL Vorlage
sts_ticketobject_content erzeugt.
In der ersten Zeile kommen gleich zwei Actionlinks zum Zug. Der Actionlink history
wird am Zeilenanfang über ein Icon gelegt und ermöglicht es dem Benutzer, ein Fenster
zu öffnen und die Logfileeinträge zu betrachten. In der Mitte der Zeile wird mit
insert_data der Titel des Tickets dargestellt. Am Zeilenende kommt es wieder zum
Zusammenspiel vom Actionlink update und dem Methodenaufruf updated_to_HTML.
In der zweiten Zeile kommen weitere vier Actionlinks zur Anwendung. In dieser Zeile
kann man der Reihe nach die Formulare zum Erzeugen einer Note, Schedulenote,
Phonenote und E-Mail öffnen – alle zusammen sind sogenannte Ticketeinträge. Hierfür
werden die Actionlinks addnote, addschedulenote, addphonenote und addemail
verwendet. Darunter in der dritten Zeile befindet sich die Anzeige, dass eine
Schedulenote abläuft. Diese Ausgabe wird von der Methode sts_remainder_to_HTML
generiert. Danach kommt ein großer Block an Ticketattributdaten, die entweder über
das STS Tag insert_data oder über das STS Tag insert_functionresult eingefügt werden.
Mit dem STS Tag insert_data werden folgende Daten eingefügt sts_staff:1,
sts_ticket_Status,
sts_customer,
sts_category,
sts_platform,
sts_release,
sts_customerNotified, sts_product, sts_workTimeTotal, sts_client, sts_prTicketURL,
sts_prTicketNumber und Description. Dazwischen sorgen noch die Methoden
sts_customerContactPerson_to_HTML, timeCreated_to_HTML, priority_to_HTML und
sts_escalationModel_to_HTML für notwendige Ergänzungen über das STS Tag
insert_functionresult. Abschließend folgt noch eine Zeile mit Kommandos, die sich auf
das Ticket selbst beziehen. Dazu werden der Reihe nach die Actionlinks assignticket,
modifyticket, removeticket und changestatus angewendet. Mit Assign bekommt man ein
Formular, um das Ticket einem anderen Supportmitarbeiter zuzuweisen. Mit Modify
gelangt man zu einem Formular mit dem man Ticketattribute verändern kann. Mit
Remove verschiebt man das gesamte Ticket inklusive der Ticketeinträge in einen
sogenannten Trashcan. Schließlich kann man mit Finish Request den Ticketstatus auf
Suspended oder Closed setzen, was dazu führt, dass das Ticket in entsprechende
Collections verschoben wird.
6.4.4
sts_noteentry
Wird ein Supportticket mit der HTML Vorlage sts_ticketobject_content umfassend
angezeigt, dann sollte es auch eine Möglichkeit geben die Einträge, die laufend zu
einem Supportticket gemacht werden, darzustellen. Dies wird von den HTML Vorlagen
sts_noteentry, sts_phonenoteentry, sts_schedulenoteentry und sts_emailentry
ausgeführt.
Für die HTML Vorlage sts_noteentry erhält der Interfacebuilder folgende Actionlinks:
Kapitel 6 Adaptierbare Benutzeroberfläche
83

nextentry ermöglicht das Weiterblättern zum nächsten Ticketeintrag.

previuousentry ermöglicht es zurück zum vorigen Ticketeintrag zu blättern.

topentry ermöglicht das Zurückspringen zum ersten Ticketeintrag.

lastentry ermöglicht es zum letzten Ticketeintrag zu springen.

remove führt zum Löschen eines Ticketeintrages.

create führt zu einem Formularfenster, welches den Notizeintrag in ein neues
Supportticket umwandelt.
Abbildung 6-4: Mit der HTML Vorlage sts_ticketobject_content generiert
Instanzen der Klasse sts_TicketEntryNoteObject stellen Interfacebuilder über das STS
Tag insert_functionresult folgenden Methoden bereit:

timecreated_to_HTML wandelt das interne Datumsformat in ein externes Format
(Wochentag, Monat Tag, Jahr, hh:mm:ss) um.

noteIcon_to_HTML wählt ein Icon aus, welches den Typ der Notiz (einfache
Notiz, Zusammenfassung, Arbeitsliste, Frage-Antwort) symbolisiert.
Kapitel 6 Adaptierbare Benutzeroberfläche
84

subject liefert vom Attribut sts_subject einen bestimmten Teil für die Anzeige
zurück.

bodyToHTML nimmt am Text der Notiz Formatierung vor, damit das Layout der
HTML Seite nicht zerstört wird.
Abbildung 6-5 zeigt die HTML Vorlage sts_noteentry, nachdem Befüllen durch den
Interfacebuilder. In der ersten Zeile ganz rechts befinden sich die Actionlinks, die dafür
sorgen, dass man zwischen den Ticketeinträgen blättern kann (zum ersten Eintrag, zum
vorhergehenden Eintrag, zum nachfolgenden Eintrag und zum letzten Eintrag). Darunter
werden mit dem STS Tag insert_functionresult, die Ergebnisse von
timeCreated_to_HTML, noteIcon_To_HTML, subject und bodyToHTML eingefügt.
Dazwischen befinden sich noch die Daten der Noteentryattribute sts_worktime und
sts_to. In der abschließenden Zeile finden dann die beiden letzten Actionlinks Platz.
Remove verschiebt die Noteentry in den Trashcan und create öffnet das Formular, mit
dem man aus der Noteentry ein Ticket machen kann.
Abbildung 6-5: Mit der HTML Vorlage sts_noteentry generiert
6.4.5
sts_phonenoteentry
sts_phonenoteentry ist im wesentlichen gleich Handzuhaben, wie die in 6.4.4
sts_noteentry beschriebene HTML Vorlage für die Noteentries. Zusätzlich wird das
Phonenoteattribut sts_to mit dem STS Tag insert_data platziert. Außerdem findet die
Methode noteIcon_to_HTML hier keine Anwendung, zumal es weder Untertypen bei
Phonenotes gibt, noch eine entsprechende Methode in der STS V1.3 Klasse
sts_TicketEntryPhoneNoteObject existiert.
Kapitel 6 Adaptierbare Benutzeroberfläche
85
Abbildung 6-6: Mit der HTML Vorlage sts_phonenoteentry generiert
6.4.6
sts_schedulenoteentry
Auch hier sind die Änderungen gegenüber einer Ticketnoteentry minimal. Erneut gibt
es hier keine Untertypen, sodass wiederum keine Methode noteIcon_to_HTML mittels
insert_functionresult verwendet werden kann. In der zweiten Zeile wird das
Ablaufdatum der Schedulenote mit Hilfe des STS Tags insert_functionresult und der
Methode timeExpire_to_HTML der Klasse sts_TicketEntryScheduleNoteObject
angezeigt (siehe Abbildung 6-7).
Abbildung 6-7: Mit der HTML Vorlage sts_schedulenoteentry generiert
6.4.7
sts_emailentry
E-Mails sind Ticketeinträge, die sich von den zuvor beschriebenen Ticketeinträgen
etwas unterscheiden und deshalb etwas ausführlicher beschrieben werden. Mit der
HTML Vorlage sts_emailentry bekommt der Interfacebuilder folgende Actionlinks
übergeben:

nextentry ermöglicht das Weiterblättern zum nächsten Ticketeintrag.
Kapitel 6 Adaptierbare Benutzeroberfläche
86

previousentry ermöglicht es zum vorigen Ticketeintrag zurück zu blättern.

topentry ermöglicht das Zurückspringen zum ersten Ticketeintrag.

lastentry ermöglicht es zum letzten Ticketeintrag zu springen.

assign ermöglicht das Verschieben der E-Mail zu einem Supportticket.

reply liefert die Möglichkeit das E-Mail zu beantworten.

forward liefert die Möglichkeit das E-Mail weiterzuleiten.

remove führt zum Löschen eines Eintrags.

create führt zu einem Formularfenster, welches den Notizeintrag in ein neues
Supportticket umwandelt.
Folgende Methoden der Klasse sts_ticketEntryEmailObject werden durch das STS Tag
insert_functionresult verwendet:

displayRefClosedTicket zeigt an, dass das E-Mail zu einem Supportticket gehört,
welches bereits geschlossen ist. STS konnte dieses E-Mail nicht automatisch
zuordnen, weil es dann von keinem Mitarbeiter bearbeitet werden würde.

timeCreated_to_HTML wandelt das interne Datumsformat in ein externes Format
(Wochentag, Monat Tag, Jahr, hh:mm:ss) um.

subject liefert vom Attribut sts_subject einen bestimmten Teil für die Anzeige
zurück.

bodyToHTML nimmt am Text der E-Mail Formatierung vor, damit das Layout der
HTML Seite nicht zerstört wird.

getAttachments fügt einen Hyperlink ein, der E-Mailanhänge zur Anzeige bringt.
Die Ausgabe ist wiederum sehr ähnlich der erzeugten Ausgabe bei sts_noteentry.
Wiederum findet die Methode noteIcon_to_HTML keine Anwendung, da auch E-Mails
keine Subtypen besitzen. Dafür können mit den beiden zusätzlichen Methoden, im
Zusammenspiel mit dem STS Tag insert_functionresult, wichtige Informationen
platziert werden. Die Methode displayRefClosedTicket stellt in der Mitte der ersten
Zeile einen Hyperlink auf ein bereits geschlossenes Ticket dar. Dies ist dann der Fall,
wenn das System eine E-Mail zu einem Ticket empfängt, welches bereits im Zustand
closed oder suspended ist. Dadurch erkennt man beim Betrachten der Collection der
Unassigned E-Mails, dass eine E-Mail zu einem solchen Ticket eingelangt ist. Mit der
Methode getAttachments können Beilagen von E-Mails angezeigt werden. Beide
Methoden sind in der Abbildung 6-8 nicht eingesetzt worden und daher dort nicht
sichtbar.
Zusätzlich zu den Attributwerten bei Notetypen werden die E-Mailattribute sts_from
und sts_cc mittels insert_data eingefügt. Die drei zusätzlichen Actionlinks machen sich
in der letzten Zeile bemerkbar, wo für E-Mails die Funktionen Reply, Forward und
Assign dazukommen. Mit Reply bekommt man ein Formular um eine E-Mail zu
beantworten, mit Forward ein Formular um eine E-Mail weiterzuleiten und Assign
öffnet schließlich ein Formular, mit dem es möglich ist, aus einer E-Mail ein Ticket zu
generieren.
Kapitel 6 Adaptierbare Benutzeroberfläche
87
6.5 Implementierung
Der wesentliche Teil der Implementierung der neuen adaptiven Benutzeroberfläche von
STS V1.3 erfolgt durch die Klasse sts_GUIObject. Diese Klasse wird einmal als
globales Objekt mit dem Namen GUI instanziert. Folgende Methoden bilden den Kern
dieser Klasse:

interfaceBuilder bildet die Schnittstelle der Klasse nach außen. An diese Methode
delegieren die Methoden displayObject und displayContent die Erstellung der
Benutzeroberfläche. Beim Aufruf der Methode werden drei Parameter übergeben.
Diese drei Parameter setzen sich aus einem Namen für die HTML Vorlage, aus
einer Referenz auf das aufrufende Objekt und aus einer Liste der sogenannten
Actionlinks zusammen. Die Methode interfaceBuilder liefert als Ergebnis ein
HTML Format.

HTMLFileReader ist jene Methode, die der Methode interfaceBuilder die
HTML Vorlage zur Verfügung stellt. Ist die HTML Vorlage noch nicht vorhanden,
wird sie vom Dateisystem eingelesen. Das Einlesen der HTML Vorlagen vom
Dateisystem ist leider langsam. Das GUI Objekt hält die HTML Vorlagen im
Speicher. Werden HTML Vorlagen mehrmals benötigt, kann dadurch Rechenzeit
gespart werden.

replaceSTSTags wird von der Methode interfaceBuilder aufgerufen, sobald die
HTML Vorlage verfügbar ist. Diese Methode sucht in der HTML Vorlage nach den
STS Tags. Die Suche nach den STS Tags ist sehr rechenintensiv.

transformSTSTag liefert an replaceSTSTags jene Zeichenketten, mit denen die
STS Tags ersetzt werden. Diese Methode wird von replaceSTSTags für jedes
gefundene STS Tag aufgerufen.
Wenn die Methoden displayObject oder displyContent eines beliebigen Objektes
interfaceBuilder aufrufen, ist das Ergebnis eine Darstellung genau dieses Objektes.
Um eine benutzbare Oberfläche zu erhalten ist dies allerdings zu wenig. Es fehlen
allgemeine Bearbeitungsfunktionen und Navigationsmöglichkeiten. Die HWLIB
Basisklasse hw_Object wurde um die Methode displaySTS erweitert. Auf Grund der
Vererbung besitzen alle HWLIB und STS Klassen in der Vererbungshierarchie diese
Methode. Diese Methode wandelt die allgemeinen Bearbeitungsfunktionen in eine
Actionlinkliste um und ruft die Methode interfaceBuilder mit der HTML Vorlage
sts_base.html auf. Irgendwo in dieser HTML Vorlage wird mit dem STS Tag
insert_functionresult die Methode identifyDisplayContent aufgerufen. Über
den Umweg displayObject oder displayContent wird interfaceBuilder mit der
HTML Vorlage für das aktuelle Objekt aufgerufen. Die Darstellung des aktuellen
Objektes wird so in den Basisrahmen der Benutzeroberfläche von STS V1.3 eingefügt.
Kapitel 6 Adaptierbare Benutzeroberfläche
Abbildung 6-8: Mit der HTML Vorlage sts_emailentry generiert
Abbildung 6-9: Sicht auf ein Supportticketverzeichnis
88
Kapitel 6 Adaptierbare Benutzeroberfläche
Abbildung 6-10: Ansicht eines Supporttickets mit einer Telefonnotiz als Eintrag
89
Kapitel 6 Adaptierbare Benutzeroberfläche
90
6.6 Zusammenfassung
Mit STS V1.3 wurde erstmals beim Support Tracking System eine Trennung der
Benutzeroberfläche und der Geschäftslogik erreicht. Dieses Ziel wurde mit der Hilfe
von sogenannten HTML Vorlagen erreicht. HTML Vorlagen bestehen für alle
wesentlichen Objekte des Support Tracking Systems. Eine HTML Vorlage bildet den
Rahmen für die Darstellung aller Objekte und beinhaltet generelle Funktionalität. Für
das Supportticket gibt es zwei HTML Vorlagen. Eine HTML Vorlage ermöglicht eine
Kurzdarstellung für Supportticketlisten, während eine weiterer HTML Vorlage die
Volldarstellung eines Supporttickets liefert. Auch für Notizen, Telfonprotokolle,
E-Mails und zeitgesteuerte Notizen gibt es HTML Vorlagen. In diesen HTML Vorlagen
bilden sogenannte STS Tags Platzhalter für Objektdaten, Berechnungsergebnisse und
Funktionen. Letztere werden auf Hyperlinks gelegt.
Bei jedem Request müssen die HTML Vorlagen eingelesen werden und mit den
Attributen des aktuellen Objektes bzw. mit den Berechnungsergebnissen der Methoden
des aktuellen Objektes befüllt werden. Der Vorgang die STS Tags mit Inhalt zu ersetzen
ist leider sehr rechenintensiv. Eine Vorverarbeitung könnte Rechenzeit einsparen.
Leider konnte keine vollständige Trennung von Benutzeroberfläche und Geschäftslogik
erreicht werden.
Abbildung 6-10 und Abbildung 6-9 zeigen die neue Benutzeroberfläche von STS V1.3.
Sie zeigen beispielhaft das Ergebnis der HTML Vorlagen, die im Rahmen dieser Arbeit
entwickelt wurden. Abbildung 6-10 zeigt ein Supportticket, welches eine
Telefongesprächsnotiz als einzigen Eintrag enthält. Abbildung 6-9 zeigt ein Verzeichnis
mit Supporttickets.
Kapitel 7
Erkenntnisse
Dieses Kapitel versucht die bei dieser Arbeit gemachten Erfahrungen aufzuzählen.
Diese Erfahrungen fallen im wesentlichen in drei unterschiedliche Bereiche. Der erste
Bereich umfasst die Einordnung des Support Tracking Systems und den Vergleich mit
anderen
Systemen.
Erfahrungen
aus
dem
Bereich
Wartung,
agile
Softwareentwicklungsprozesse und Refaktoring bilden den zweiten Bereich. Der dritte
Bereich fasst die Erfahrungen bei der Einführung der Adaptierbarkeit zusammen.
7.1 Trouble Ticket Systeme
Sieht man das Support Tracking System als ein Trouble Ticket System, welches für die
Beziehung zwischen Kunden und Supportabteilung spezialisiert ist, dann ist die
Zuordnung des Support Tracking Systems zu den Trouble Ticket System ein leichter
Schritt. Aus der Sicht des Support Tracking Systems ist auch noch einsichtig, warum
Trouble Ticket Systeme zu den Helpdesksystemen gehören. Bedenkt man aber, dass es
zahlreiche Systeme gibt, die zu einem Ereignis ein Ticket anlegen und im Verlauf der
Zeit das Ticket mit Einträgen ergänzen, beginnt es schwierig zu werden. Problem
Tracking Systeme, Bug Tracking Systeme, Support Tracking Systeme, Feature Request
Tracking oder Knowledge Base Systeme können Ticket basierend sein. Diese Systeme
gehören somit zur Klasse der Trouble Ticket Systeme, aber nicht notwendigerweise zu
den Helpdesksystemen. Kommerzielle Systeme haben eine stark erweiterte
Funktionalität und können fallweise auch Aufgaben aus den Bereichen Groupware,
Case Based Reasoning, Knowledge Management Systeme oder Customer Relationship
Management abdecken. Die wenigen nicht kommerziellen Systeme haben kleinere
Funktionsumfänge und konzentrieren sich alle auf den Bereich Bug Tracking.
7.2 Wartung und agile Softwareprozesse
Es hat sich auch bei der Wartung vom Support Tracking System gezeigt, dass ungefähr
80% des Aufwandes in der Wartungsphase für progressive Pflegetätigkeiten verwendet
werden und nur 20% des Aufwandes auf korrektive Wartungsarbeiten entfallen. Das
Support Tracking wurde in drei Schritten erweitert (STS V1.1, STS V1.2 und STS
Kapitel 7 Erkenntnisse
92
V1.3). Es hat sich gezeigt, dass eine Trennung der Wartungsarbeiten und der
Pflegearbeiten von Vorteil ist. Progressive Pflegearbeiten sollten immer nur auf
konsolidierten Quellcode durchgeführt werden. Leider bestätigte sich auch die
Behauptung der Vertreter der agilen Softwareprozesse, dass Dokumentation und
Quellcode sich auseinander entwickeln. Zu Begin dieser Arbeit lag schon ein laufendes
System vor, dies ist ein Kriterium das in der agilen Softwareentwicklung raschest erfüllt
werden soll. Folgende Erfahrungen wurden mit den 12 Praktiken von eXtreme
Programming gemacht
Kunde vor Ort
Dies war leider nicht der Fall, aber die Auswirkungen waren gering, wenn es darum
ging offene Fragen bezüglich neuer Funktionalität abzuklären. Groß hingegen waren die
Auswirkungen, wenn es darum ging Feedback zu erhalten, dies blieb entweder aus oder
kam nur mit einiger Verspätung.
Kurze Inkrementzyklen
Das Vorgehen war inkrementell und iterativ, aber die Zyklen waren länger als die
geforderten 4-8 Wochen. Dies blieb ohne Folgen, da die drei Erweiterungsstufen gut
ausdiskutiert waren und so nicht der Fall eintrat völlig an den Kundenwünschen vorbei
zu arbeiten.
Planungsspiel
Ein Planungsspiel wurde explizit nicht unter diesem Namen durchgeführt, allerdings
kam es zu einigen Meetings mit Vertretern der Kundenseite und natürlich zu laufenden
Besprechungen mit den Betreuern dieser Arbeit. Bei diesen Besprechungen wurden
kurzfristige Ziele erörtert und Prioritäten gesetzt. Größere Meetings fanden vor allem zu
Anfang der drei großen Erweiterungsschritte statt.
Abnahmetest
Wie weit die Kundenseite Abnahmetests im Sinne von XP zur Funktionalitätsprüfung
durchführte, ist leider nicht bekannt. Feedback langte aber ein, woraus man schließen
kann, dass irgendetwas in diese Richtung gemacht wurde.
Einfaches Design
Da am Support Tracking System verschiedene Personen gearbeitet hatten, hat sich mit
der Zeit das Design verkompliziert. Einige augenscheinlich gewordene
Designschwächen wurden mit Hilfe von Refaktoring beseitigt.
Programmieren in Paaren
Konnte nicht praktiziert werden, da das Projektteam meistens nur aus einem Entwickler
bestand. Die Phase mit zwei Entwicklern war leider zu kurz, um dieses Konzept
umfangreich auszuprobieren. Zu bemerken war allerdings, dass unerfahrenere Partner,
dies nicht als Chance begreifen von einander zu lernen.
Entwicklertest
Eine vollständige Testabdeckung lag nicht vor und außerdem fehlte eine automatisierte
Testumgebung. Der sogenannte Test-First-Ansatz kam nicht zur Anwendung. Dieser
Umstand erschwerte vor allem das Refaktoring.
Kapitel 7 Erkenntnisse
93
Refaktoring
Trotz Empfehlung Refaktoring laufend anzuwenden, wurde versucht durch Refaktoring
das Design in einem großen Schritt zu vereinfachen. Dies gelang nur teilweise und war
auf Grund der fehlenden Testfälle bzw. nicht vorhandener Testumgebung äußerst
mühsam und frustrierend. Vorhandene Testfälle verschieben die Neuimplementierung
auf einen späteren Zeitpunkt, während nicht vorhandene Testfälle eine
Neuimplementierung früher notwendig machen.
Gemeinsame Verantwortung
Hier gilt das Gleiche, wie unter Programmieren in Paaren.
Programmierstandards
Da ungefähr fünf bis sieben Programmierer ohne entsprechende Codierstandards an
dieser Software gearbeitet haben, sind entsprechende Stiele im Code auszumachen. Ein
wenig davon wurde während des Versuches Refaktoring zu betreiben vereinheitlicht.
Niedergeschriebene Standards existieren weiterhin nicht für dieses Produkt.
Fortlaufende Integration
Support Tracking System wurde sukzessive mit neuer Funktionalität ausgestattet. Dies
wäre allerdings wesentlich einfacher gewesen, hätte es eine automatisch ablaufende
Testabdeckung gegeben.
Metapher
Metapher wurde keine gefunden, da aber mit STS V1.0 schon ein Produkt vorhanden
war, welches in Produktion stand, war der Verwendungszweck klar.
Nachhaltiges Tempo
Sieht man von etwas mehr Zeitaufwand vor Terminen ab, so wurde diese XP Praktik
eingehalten.
Von einem vollständigen XP Prozess war man also ein gutes Stück entfernt. Die
Annahme, dass agile Prozesse für die Wartungsphase besser geeignet sind, konnte nicht
bestätigt werden. Ausreichende Testfälle, eine automatisierte Testumgebung und
fortlaufendes Refaktoring sollten aber die Wartungskosten senken. Es stellt sich die
Frage, ob eine komplette Neuimplementierung nicht günstiger gewesen wäre.
7.3 Adaptierbare Webapplikation
Die Einführung adaptierbarer Systemeigenschaften funktionierte sehr gut. Mit STS
V1.3 können Ticketattribute in Wertetabellen angegeben werden. Dadurch ist eine
Domänenabbildung des Einsatzbereiches möglich. Die Standardkonfiguration deckt die
Bedürfnisse von Hyperwave ab. Kundendatenbank ist aus dem Quellcode entfernt
worden. Die Schnittstelle zu den Kundendaten ist soweit vorbereitet, dass die
Anbindung an eine richtige Datenbank jederzeit möglich wäre. Funktionalität ist für die
verschiedenen
Rollen
aktivierbar.
Das
Eskalationsmodell
und
E-Mail
Benachrichtigungen sind adaptierbar. Die Einführung der Adaptierbarkeit im Bereich
der Systemeigenschaften ist abgeschlossen. Eine mögliche Verbesserung wäre, dass die
Anpassungen nicht durch Editieren von Dateien erfolgt, sondern mittels Formularen.
Kapitel 7 Erkenntnisse
94
Die adaptierbare Benutzeroberfläche funktioniert sehr gut. Die HTML Vorlagen auch
Templates genannt, funktionieren nach anfänglichen Schwierigkeiten mit dem Netscape
Communicator mittlerweile sehr gut. Die entworfenen STS Tags, die sich in HTML
Kommentaren verstecken, sind für die Designer der Benutzeroberfläche nicht ganz
optimal. Leider war es nicht möglich auf das Ergebnis von Berechnungen gänzlich zu
verzichten, dadurch ist es die Trennung der Benutzeroberfläche von der Business Logik
nicht vollständig gelungen. Ein letzter noch nicht durchgeführter Schritt, wäre die
Ausweitung des Konzeptes auf die zur Dateneingabe verwendeten Webformulare.
Kapitel 8
Zusammenfassung
Trouble Ticket Systeme sind für die Verwaltung von Problemen, Fehlern und Störungen
zuständig. Das Support Tracking System ist ein Trouble Ticket System, das an der
Schnittstelle zwischen Kunden und Support zum Einsatz kommt. Zu jeder Störmeldung
von Kunden wird ein Supportticket angelegt. Die gesamte Kommunikation zwischen
Kunden und Supportmitarbeitern wird in Ticketeinträgen festgehalten. Trouble Ticket
Systeme systematisieren das Fehlermanagement bestehend aus Fehlererkennung,
Fehlerdiagnose und Fehlerlösung.
Für das Support Tracking System bestand die Anforderung weitere Funktionalität,
Adaptierbarkeit des Systemkerns und eine neue adaptierbare Benutzeroberfläche zu
implementieren. Diese Erweiterungen wurden notwendig, damit das Support Tracking
System bei verschiedenen Kunden mit unterschiedlichen Anforderungen eingesetzt
werden kann. Diese progressive Pflegetätigkeiten wurden parallel zu korrektiven
Wartungsarbeiten durchgeführt. Obwohl davon auszugehen war, dass durch die
Adaptierbarkeit der Wartungsaufwand sinken würde, wurde nach weiteren
Möglichkeiten gesucht die Wartungskosten zu senken.
Die Auseinandersetzung mit dem Thema Wartung ergab, dass man zwischen
korrektiven Wartungsarbeiten und progressiven Pflegearbeiten unterscheiden sollte.
Sowohl für die Fehlerbehebung als auch für die Erweiterung eines Programms erwies
sich Refaktoring als eine nützliche Arbeitstechnik. Diese aus dem Bereich der agilen
Softwareentwicklungsprozesse stammende Arbeitstechnik, erlaubt es das Design von
Software zu verändern unter Sicherstellung, dass die Funktionalität erhalten bleibt. Weil
für das Support Tracking System keine automatisierte Testumgebung vorlag, erwiesen
sich die Refaktoringschritte als sehr mühsam und zeitintensiv. Sie wurden aber trotzdem
gesetzt, um das Design der Software zu verbessern und um Erweiterungen wie die
Adaptierbarkeit realisieren zu können. Die Arbeitstechniken der agilen
Softwareentwicklungsprozesse können die Wartungskosten nur senken, wenn sie in
Kombination eingesetzt werden, d.h. das Refaktoring nur dann Kosten senkt, wenn es
schnell und effizient eingesetzt werden kann, weil ausreichend Testfälle in einer
automatisierten Testumgebung vorhanden sind.
Das Support Tracking System konnte erfolgreich in eine adaptierbare Webapplikation
umgewandelt werden. Das Support Tracking System kann in kurzer Zeit an
verschiedene Kundenbedürfnisse angepasst werden, ohne dass hohe Wartungskosten
entstehen würden. Zum einem wurden adaptierbare Systemeigenschaften eingeführt.
Dazu zählen Ticketattribute, Werte für Ticketattribute, Kundendatenbank,
Kapitel 8 Zusammenfassung
96
rollenabhängige Funktionen, konfigurierbarer Workflow und personalisierbare
Benachrichtigungen. Zu den adaptierbaren Systemeigenschaften gehört auch eine
adaptierbare Benutzeroberfläche. Eine nicht veränderbare Benutzeroberfläche würde
verhindern, dass die Adaptierungen der Systemeigenschaften sichtbar werden. Die
adaptierbare Benutzeroberfläche erlaubt es außerdem das Support Tracking System an
das "Look and Feel" anderer beim Kunden im Einsatz befindlicher Software
anzupassen. Die beiden Ebenen der Adaptierbarkeit haben zu einem starken Rückgang
der Wartungsarbeiten am Support Tracking System geführt.
Literaturverzeichnis
[Abacus 1998]
Abacus; Aegis Defect Tracking; Stand: Februar 2004
URL: http://www.abacus-systems.com/AegisDT.htm
[Balzert 1996]
Balzert, H.; Lehrbuch der Software-Technik: Software-Entwicklung; Heidelberg,
Berlin, Oxford; Spektrum, Akad. Verl, 1996
[Balzert 1998]
Balzert, H.; Lehrbuch der Software-Technik: Software-Management, SoftwareQualitätssicherung, Unternehmensmodellierung; Heidelberg, Berlin; Spektrum, Akad.
Verl., 1998
[Beck 2000]
Beck, K.: Extreme Programming: Die revolutionäre Methode für Softwareentwicklung
in kleinen Teams; München; Addison-Wesley Verlag, 2000
[Beck 2001]
Beck, K.: Manifesto for Agile Software Development; Stand: Februar 2004
URL: http://www.agilemanifesto.org/
[Benham 1999]
Benham, D.: Debian Bug Tracking System; Stand: Februar 2004
URL: http://www.benham.net/debbugs
[Coldewey 2002]
Coldewey, J.: Multi-Kulti: Ein Überblick über die Agile Entwicklung;
OBJEKTspektrum: Die Zeitschrift für Web- und Objekttechnologie; Troisdorf; SIGSDATACOM GmbH; S.: 69-77; 01/2002
[Eaten 2002]
Eaten, D.: Configuration Management Frequently Asked Questions; Stand: Mai 2002
URL: http://www.daveeaton.com/scm/
[Fink et. al. 1997]
Fink, J.; Kobsa, A.; Schreck, J.: Personilzed Hypermedia Information Provision
Through adaptive and adaptable system features: User modeling, privacy and security
issues; Proceedings of the Fourth International Conferences on Intelligence in Services
and Networks; Springer; S.: 459-467; 1997
[Fowler 2000]
Fowler, M.: Refactoring: Wie Sie das Design vorhandener Software verbessern;
München; Addison-Wesley Verlag, 2000
[Free Software Foundation 2004]
Free Software Foundation; Double Choco Latte; Stand: Februar 2004
URL: http://dcl.sourceforge.net/features.php
[Free Software Foundation 2000]
Free Software Foundation; Gnats – Bug Tracking System; Stand: Februar 2004
URL: http://www.gnu.org/directory/GNU/gnats.html
[Free Software Foundation 2000b]
Free Software Foundation; gnats – Summary; Stand : Februar 2004
URL: http://savannah.gnu.org/projects/gnats
[Free Software Foundation 2003]
Free Software Foundation; GNATS; Stand: Februar 2004
URL: http://www.gnu.org/software/gnats/
[Gamma et. al. 1996]
Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J.: Entwurfsmuster: Elemente
wiederverwendbarer objektorientierter Software; Bonn; Addison-Wesley-Longman,
1996
[Gössler 1999]
Gössler, C.; Support Tracking System: Object Reference; IICM Technische Universität
Graz, 1999
[Hyperwave 1999]
Hyperwave: Hyperwave Administrator's Guide; München, 1999
[Hyperwave 1999a]
Hyperwave: Hyperwave Programmer's Guide; München, 1999
[Hyperwave 1999b]
Hyperwave: Hyperwave User's Guide; München, 1999
[IBM 2004]
IBM; Rational ClearQuest; Stand: Februar 2004
URL: http://www-306.ibm.com/software/awdtools/clearquest/
[IBM 2004b]
IBM; Rational ClearDDTS; Stand: Februar 2004
URL: http://www-306.ibm.com/software/awdtools/clearddts/
[Jackson 1994]
Jackson, I.: Debian bug tracking software; Stand: Februar 2004
URL: http://www.chiark.greenend.org.uk/~ian/debbugs
[Kruse 2001]
Kruse, R.: Entwicklung eines Werkzeuges für die Administration eines Trouble Ticket
Systems; Fernuniversität Hagen; 2001;
URL:http://www.ice-bachelor.fernuni-hagen.de/Forschung/Forschungsbericht2_2001.pdf
[Link 2002]
Link, J.; Unit Test mit Java: Der Test-First-Ansatz; Heidelberg; dpunkt-Verlag, 2002
[Mozilla Organisation 2003]
Mozilla Organisation; Bugzilla: Bug Tracking System; Stand: Feb.2004
URL: http://www.bugzilla.org/about.html
[OmniNet 2001]
OmniNet GmbH.; Service-Management mit OmniTracker; Stand: Februar 2004
URL: http://www.omninet.de/german/id_otpos.html
[Schade 1999]
Schade, O.; Problemsortierer: Freie Trouble-Ticket-Systeme; iX 9/1999; Heise Verlag;
S70-75, 1999
[Wurzenberger 1999]
Wurzenberger, G.; hwlib: Reference Guide; IICM Technische Universität Graz, 1999
Abbildungsverzeichnis
Abbildung 2-1: Phasen des Fehlermanagements nach[Kruse 2001] ..................................... 7
Abbildung 4-1: Formulargenerator ...................................................................................... 39
Abbildung 4-2: Prototypeobjekthierarchie (HWLIB) nach [Wurzenberger 1999].............. 40
Abbildung 4-3: Verändern von Mitarbeiterdaten ................................................................ 42
Abbildung 4-4: Supportticket einen neuen Mitarbeiter zuweisen ....................................... 43
Abbildung 4-5: Formular für das Erzeugen eines Notizeintrages ....................................... 43
Abbildung 4-6: Anlegen eines neuen Supporttickets .......................................................... 45
Abbildung 4-7: Neue Suchabfrage erstellen ........................................................................ 46
Abbildung 4-8: Suchergebnis .............................................................................................. 47
Abbildung 4-9: Prototypeobjekthierarchie (STS) nach [Gössler 1999] .............................. 48
Abbildung 6-1: Sicht auf die Ticketdarstellung unter STS V1.2 ......................................... 69
Abbildung 6-2: Mit der HTML Vorlage sts_base generiert ................................................ 78
Abbildung 6-3: Mit der HTML Vorlage sts_ticketobject_object generiert ......................... 80
Abbildung 6-4: Mit der HTML Vorlage sts_ticketobject_content generiert ....................... 83
Abbildung 6-5: Mit der HTML Vorlage sts_noteentry generiert ........................................ 84
Abbildung 6-6: Mit der HTML Vorlage sts_phonenoteentry generiert .............................. 85
Abbildung 6-7: Mit der HTML Vorlage sts_schedulenoteentry generiert .......................... 85
Abbildung 6-8: Mit der HTML Vorlage sts_emailentry generiert ...................................... 88
Abbildung 6-9: Sicht auf ein Supportticketverzeichnis ....................................................... 88
Abbildung 6-10: Ansicht eines Supporttickets mit einer Telefonnotiz als Eintrag ............. 89
Tabellenverzeichnis
Tabelle 3-1: Gegenüberstellung von Wartung und Pflege nach [Balzert 1998] .................. 22
Tabelle 3-2: Eigenständiger Wartungsabteilungen nach [Balzert 1998] ............................. 23
Tabelle 5-1: Methoden der Klasse sts_AttributeInterfaceObject ........................................ 66
Tabelle 6-1: Ausgabemethoden ........................................................................................... 69
Tabelle 6-2: Methoden für insert_functionresult und deren Vorkommen ................ 73
Anhang A
Nichtkommerzielle Produkte
Produktname
URL
Bugzilla
http://www.bugzilla.org/
Debian Bug Tracking System
(debbugs)
http://www.chiark.greenend.org.uk/~ian/debbugs
http://www.benham.net/debbugs
GNU GNATS (GNU Problem http://www.cuug.ab.ca:8001/~macdonal/tkgnats.html
Report Management System)
Jitterbug
http://samba.anu.edu.au/cgi-bin/jitterbug
Opentrack (OT)
http://www.accurev.com/ot
PTS, XPTS und Web/PTS
http://www.halcyon.com/dean/pts/pts.html
PTS, Keystone
http://www.stonekeep.com
wrek
http://www.math.duke.edu/~yu/wreq
Anhang B
Kommerzielle Produkte
Produktname
URL
+1CR
http://www.plus-one.com
AccuRev/Dispatch
http://www.accurev.com/dispatch
Aegis
http://www.abacus-systems.com
AllChange
http://www.intasoft.co.uk/intasoft
Apriori
http://www.platinum.com/products
BugBase
http://www.bugbase.com
CCC/Harvest
http://www.ca.com/products/ccm
ClearDDTS
http://www.rational.com/products/clear_ddts
ClearQualtity
http://www.clarify.com
ClearQuest
http://www.rational.com/products/clearquest
ClearTrack
http://www.clrstream.com/ClearTrack.htm
Census
http://www.metaquest.com
Change Synergy
http://www.telelogic.com
Control First und TRUEtrack
http://www.truesoft.com/truetrack.php
Defect WorkFlow (DWF)
http://www.softquest.co.il
DTS
http://www.open.com.au/dts
ExtraView
http://www.extraview.com
GLOBETrack
http://www.globetrotter.com
IssueView
http://www.issueview.com
Lotus Notes
http://www.lotus.com/
NeumaCM+
http://www.neuma.com
OmniTracker
http://www.omninet.de
PR-Tracker
http://www.prtracker.com
Problem Tracker
http://www.n2r6.com
Produktname
URL
PVCS Dimensions
http://www.merant.com/pvcs/products
PVCS Tracker
http://www.merant.com
Siebel
http://www.siebel.com
Razor
http://www.razor.visible.com
Remedy ARS
http://www.remedy.com
SWBTracker
http://www.softwarewithbrains.com
TeamTrack
http://www.teamshare.com
Track for Windows
http://www.soffront.com
TrackRecord
http://www.compuware.com
TrackWise
http://www.sparta-sys.com
Vantive Quality
http://www.peoplesoft.com
Visual Intercept
http://www.elsitech.com
Anhang C
Refaktoring Ratschläge von Martin Fowler
Wenn Sie zu einem Programm etwas hinzufügen müssen und die Struktur des
Programms erlaubt dies nicht auf einfache Art und Weise, so refaktorisieren Sie
zunächst das Programm so, dass Sie die Erweiterung leicht hinzufügen können und
fügen sie anschließend hinzu.
Bevor Sie zu refaktorisieren beginnen, prüfen Sie, ob Sie eine solide Menge von
Testfällen haben. Diese Tests müssen selbstprüfend sein.
Beim Refaktorisieren ändern Sie das Programm in kleinen Schritten. Machen Sie einen
Fehler, so ist er leicht zu finden.
Jeder Dummkopf kann Code schreiben, den ein Computer versteht. Gute
Programmierer schreiben Code, den Menschen verstehen.
Drei Mal und Sie refaktorisieren.
Veröffentlichen Sie keine unausgereiften Schnittstellen. Ändern
Besitzverhältnisse am Code, um das Refaktorisieren zu vereinfachen.
Sie
die
Wenn Sie glauben, einen Kommentar zu benötigen, refaktorisieren Sie den Code, so
dass jeder Kommentar überflüssig wird.
Stellen Sie sicher, dass alle Tests vollständig automatisiert werden und dass Sie ihre
Ergebnisse selbst überprüfen.
Eine Testsuite ist ein leistungsfähiger Fehlerdetektor, der die Zeit für die Fehlersuche
dramatisch reduziert.
Führen Sie Ihre Tests oft aus. Verwenden Sie Ihre Tests bei jeder Umwandlung – jeden
Test mindestens einmal täglich.
Bekommen Sie einen Fehlerbericht, so schreiben Sie einen Komponententest der den
Fehler erkennt.
Es ist besser, unvollständige Tests zu schreiben und durchzuführen, als vollständige
Tests nicht auszuführen.
Denken Sie an die Randbedingungen, unter denen Dinge schief gehen können, und
konzentrieren Sie Ihre Tests auf diese.
Vergessen Sie nicht Ausnahmen zu testen, die ausgelöst werden, wenn etwas schief
gegangen ist.
Lassen Sie sich durch die Furcht, nicht alle Fehler zu finden, nicht davon abhalten, die
Tests zu schreiben, die die meisten Fehler finden.
Herunterladen