Entwicklung einer Software zur

Entwicklung einer Software zur
Entwicklung einer Software zur
mitarbeiterbezogenen Datenaufbereitung
und Reportfunktion im Callcenter-Bereich
Development of a software for employee referring data preparation
and report functionality in the call center section
Anna Klein
Bachelor Abschlussarbeit
Betreuer: Prof. Dr. rer.nat. Andreas Lux
Gunnar Kreusel, getmobile AG
Trier, 19.8.2008
II
Vorwort
Das Projekt wurde für das Unternehmen getmobile AG angefertigt.
„Die getmobile AG ist in Deutschland der führende Anbieter beim Online- und TV-Verkauf
vertragsgebundener Handys. Das Unternehmen ist unabhängiger Vollsortimenter und bietet
Verträge aller Mobilfunknetze sowie aller Serviceprovider an. Die Vermarktungswege des
Mobilfunkspezialisten sind Internet, TV, Print - beispielsweise Kataloge - und über
Kooperationspartner.
Die besonderen Stärken des Unternehmens liegen bei den besonders günstigen Tarif-/ HandyKombinationen, dem besonders hohen Serviceniveau sowie der sehr schnellen Abwicklung
des Versands. Dazu kommt, dass die getmobile AG sehr oft einer der ersten Anbieter neuer
Mobiltelefon-Modelle auf dem deutschen Markt ist. Beste Preise, eine Riesenauswahl und
eine sehr gute Logistik, die aufgrund einer perfekten IT-Plattform eine reibungslose
Auslieferung gewährt, sind weitere Pluspunkte des Unternehmens.
Neben Mobiltelefonen mit Vertrag bietet die getmobile AG seinen Kunden ebenso eine
umfangreiche Auswahl einzigartiger Bundle-Angebote. Dazu zählen beispielsweise Handys
fast aller Hersteller mit günstigen Verträgen kombiniert mit zum Beispiel einem Laptop,
einem Navigationssystem, einer Digitalkamera, aber auch Produkten wie einer
Espressomaschine oder einem Fahrrad.
Selbstverständlich wird ebenfalls das entsprechende Zubehör für Mobiltelefone angeboten.
Ergänzt wird die Produktpalette des Online-Anbieters zusätzlich durch Notebooks,
Digitalkameras oder LCD Fernseher. Diese Geräte kann der Kunde auch über einen
günstigen Ratenkauf erwerben.“
[GMweb08]
Das Unternehmen hat seinen Geschäftssitz in München, wo sich neben dem Management
auch die Buchhaltung, der Einkauf, die IT-Abteilung, das Controlling und der Vertrieb
befinden. Die Kundenbetreuung mit dem Callcenter, für das dieses Projekt angefertigt wurde,
hat seinen Sitz in Trier.
III
Kurzfassung
Diese Arbeit dokumentiert die Entwicklung einer Software zur Erstellung von Statistiken und
Reports eines Callcenters. Dazu gehören Anforderungsanalyse, die Umsetzung in Java,
Softwaretests und eine Effizienzanalyse.
Die Software soll die Output-Dateien unterschiedlicher Anwendungen im csv-Format
auswerten, zusammenfassen und als Report in pdf-Format benutzerfreundlich ausgeben.
Weiterer Bestandteil der Software ist das Speichern von Dienstplänen, die über die Software
eingegeben werden. Hier soll es eine Möglichkeit geben, potentielle Dienstzeiten von
Mitarbeitern zu betrachten. Die Pläne sollen grafisch aufbereitet werden und ebenfalls
benutzerfreundlich exportiert werden.
Getestet wurde das Programm durch Funktionstests in Bezug zu den Anforderungen und mit
JUnit-Tests. Außerdem wurden Akzeptanztests durchgeführt bei den Personen, die zukünftig
mit der Software arbeiten sollen.
Abstract
This work documents the development of a software for the production of statistics and
reports of a call center. Part of the development is the analysis, the implementation in Java,
software tests and an efficiency analysis.
The software’s aim is to evaluate the output files of different applications in csv format, to
summarize them and to provide them user-friendly in pdf format. A further component of the
software is storing rosters, which are entered via the software. Here a possibility of regarding
potential office hours from co-workers should be given. It should be possible to export the
plans graphically and in a user friendly way.
The program was tested by function tests referencing to the requirements and with JUnit tests.
In addition, acceptance tests were accomplished with the persons, who have to work with the
software in the future.
IV
Inhaltsverzeichnis
1
Einleitung ................................................................................................... 1
2
Problemstellung ......................................................................................... 2
3
Aufgabenstellung und Zielsetzung ............................................................ 3
4
Anwendungsanforderung ....................... Fehler! Textmarke nicht definiert.
5
6
4.1
Modul „Dienstplan“ ............................................................................................. 4
4.2
Modul „Wer kann wann“ ..................................................................................... 6
4.3
Modul „Mitarbeiter“............................................................................................. 6
4.4
Modul „Statistik“ ................................................................................................. 6
Nutzung der Oberfläche ............................................................................ 9
5.1
Modul „Mitarbeiter“............................................................................................. 9
5.2
Modul „Wer kann wann?“ .................................................................................. 11
5.3
Modul „Dienstplan“ ........................................................................................... 13
5.4
Modul „Statistik“ ............................................................................................... 16
Analyse/Entwurf ...................................................................................... 18
6.1
Grafische Oberfläche ......................................................................................... 18
6.2
Entwurfsmuster .................................................................................................. 19
6.3
Datentypen und –strukturen................................................................................ 21
6.3.1
Modul „Dienstplan“ ............................................................................... 21
6.3.2
Modul „WerKannWann“ ........................................................................ 21
6.3.3
Modul „Mitarbeiter“ ............................................................................... 21
6.3.4
Modul „Statistik“ ................................................................................... 22
V
7
8
9
6.4
Datenhaltung ...................................................................................................... 22
6.5
Erzeugen von pdf-Dokumenten .......................................................................... 23
Implementierung ..................................................................................... 25
7.1
Umsetzung MVC ............................................................................................... 25
7.2
Klasse „Dienstplan“ ........................................................................................... 26
7.3
Klasse „Statistik“ ............................................................................................... 27
7.4
Klasse „AgentModel“ ........................................................................................ 31
7.5
Klasse „Agent“ .................................................................................................. 32
Test ........................................................................................................... 35
8.1
Funktionstests .................................................................................................... 35
8.2
Akzeptanztests ................................................................................................... 35
8.3
Robustheitstests ................................................................................................. 36
8.4
Unit-Tests .......................................................................................................... 36
Effizienzbetrachtung ............................................................................... 38
9.1
Eingabegröße „Mitarbeiter“ ............................................................................... 38
9.2
Eingabegröße „Anzahl Datensätze“ .................................................................... 39
10 Zukunftsaussichten/Erweiterbarkeit ...................................................... 41
11 Fazit .......................................................................................................... 42
Literatur ......................................................................................................... 43
Index ............................................................................................................... 44
VI
Abbildungsverzeichnis
Abbildung 4.1: Abgebildeter Zeitraum des Plans ............................................................ 5
Abbildung 5.1: Hauptfenster ........................................................................................... 9
Abbildung 5.2: JColorChooser (Farbauswahl) .............................................................. 10
Abbildung 5.3: Mitarbeiterverwaltung („neu“).............................................................. 10
Abbildung 5.4: Mitarbeiterverwaltung („bearbeiten“) ................................................... 11
Abbildung 5.5: Übersichtsfenster der Mitarbeiter .......................................................... 11
Abbildung 5.6: Fenster „Wer kann wann?“ (leer) .......................................................... 12
Abbildung 5.7: Fenster „Wer kann wann?“ (gefüllt) ..................................................... 12
Abbildung 5.8: Wochenübersicht potentielle Arbeitszeiten ........................................... 13
Abbildung 5.9: Dienstplan erstellen .............................................................................. 14
Abbildung 5.10: Fenster zur pdf-Generierung Stundenanzahl ....................................... 14
Abbildung 5.11: „JFileChooser“ (Dateiauswahl) ........................................................... 15
Abbildung 5.12: Dienstplan erstellen (Feiertag) ............................................................ 15
Abbildung 5.13: Anzeige potentielle Dienstzeiten eines Tages...................................... 16
Abbildung 5.14: Statistik erstellen ................................................................................ 17
Abbildung 5.15: Statusfenster 1 .................................................................................... 17
Abbildung 5.16: Statusfenster 2 .................................................................................... 17
Abbildung 6.1: Entwurfs-Klassendiagramm „Dienstplan“ ............................................ 20
Abbildung 6.2: Struktur eines pdf-Dokuments (iText) .................................................. 24
Abbildung 9.1: Laufzeit in Abhängigkeit von den Datensätzen ..................................... 40
VII
Tabellenverzeichnis
Tabelle 4.1 Anruf-CSV ................................................................................................... 8
Tabelle 4.2 Email-CSV ................................................................................................... 8
Tabelle 4.3 Zeiterfassung-CSV ....................................................................................... 8
Tabelle 6.1: Java.Swing Komponenten ......................................................................... 19
Tabelle 8.1: Testklassendefinition „Integer“ ................................................................. 37
Tabelle 9.1: Laufzeiten bei unterschiedlichen Komplexitäten........................................ 38
Tabelle 9.2: Laufzeit in Abhängigkeit der Datensätze ................................................... 39
Einleitung
1
1 Einleitung
Auf dem modernen Arbeitsmarkt gehört leistungsbezogene Vergütung mittlerweile zum
Standard in der Gehaltspolitik. Um dieses Lohnsystem fair und objektiv zu realisieren, spielen
Statistiken eine immer größere Rolle. Im Callcenter der Kundenbetreuung der getmobile AG
setzt sich, wie in anderen Bereichen auch,
die Leistung aus Qualität, z.B.
Kundenfreundlichkeit und Kompetenz, und Quantität zusammen. Die Qualität lässt sich mit
technischen Mitteln nicht erfassen, die Quantität hingegen schon. Hierzu zählen die Anzahl
der Anrufe (Calls), die Anzahl bearbeiteter Emails und die Übereinstimmung der eingeteilten
Dienstzeit eines Callcenter-Mitarbeiters (Agent) mit der tatsächlichen Anwesenheit, also die
Pünktlichkeit und Zuverlässigkeit.
Diese messbaren Größen werden bei der getmobile AG durch unterschiedliche Anwendungen
erfasst. Die entwickelte Software ermöglicht das Auswerten dieser Anwendungen, bzw. ihrer
Output-Dateien, ohne dass die unterschiedlichen Daten manuell abgeglichen und
zusammengefasst werden müssen. Dies führt zu einer zeitnahen, objektiven Beurteilung der
quantitativen Leistung eines Mitarbeiters, ohne dass durch menschliche Ungenauigkeit
Ergebnisse verfälscht sein können.
Die endgültige Beurteilung des Agenten obliegt weiterhin der Teamleitung, da sich, wie
schon erwähnt, die Qualität der Arbeit eines Mitarbeiters nicht mit Statistiken erfassen lässt.
Durch die entwickelte Anwendung wird die Teamleitung bei der Beurteilung eines
Mitarbeiters unterstützt. Zudem ergibt sich ein zeitlicher Vorteil, der nicht nur Kosten für das
Unternehmen einspart, sondern auch zur Zufriedenheit der Mitarbeiter durch zeitnahe
Beurteilung und der damit verbundenen früheren Bonuszahlung beiträgt.
Problemstellung
2
2 Problemstellung
Wie bereits in der Einleitung erwähnt, existiert bei der getmobile AG ein Bonussystem zur
leistungsgerechten Entlohnung der Callcenter-Mitarbeiter.
Im Vorfeld der Mitarbeitergespräche und Bonuszahlungen muss eine Statistik erstellt werden,
um die quantitative Leistung eines Agenten zu beurteilen und darzustellen. Die benötigten
Angaben werden aus drei Systemen gewonnen: Zeiterfassungssystem, Mailsystem und
Telefonanlage. Darüber hinaus wird der Dienstplan benötigt, um die Pünktlichkeit zu
evaluieren.
Das Erstellen der Statistiken wird zurzeit manuell von der Teamleitung durchgeführt. Das
bedeutet, dass jedes Quartal umfangreiche Listen mit mehreren 10000 Calls, ebenso vielen
Mails und mehreren 1000 Datensätzen aus der Zeiterfassung manuell ausgewertet werden
müssen, was einen Zeitaufwand von mehreren Arbeitstagen bedeutet.
Eine saubere Lösung zur Erstellung von Statistiken ist das Berechnen der relevanten Zahlen
mit Hilfe der in den Datenbanken der einzelnen Systeme enthaltenen Informationen. Alle
gängigen Datenbanken stellen ein umfangreiches Paket an statistischen Funktionen bereit und
ermöglichen das Bereitstellen aller für dieses Problem benötigten Ausgaben. Diese Lösung
wird aber nicht umgesetzt, da sowohl bei der Zeiterfassung als auch bei der Mail-Anwendung
ein Zugreifen auf die Datenbank nicht möglich ist. Das Problem des Zusammenführens der
Daten ist mit diesem Ansatz auch nicht gelöst.
Eine weitere Möglichkeit ist das Nutzen einer eigenen Datenbank, also das Befüllen einer
Datenbank mit den eingelesenen Daten der verschiedenen Anwendungen, die im csv-Format
vorliegen. Diese Lösung wird vom Unternehmen ebenfalls abgelehnt, da keine Datenbank am
Standort zur Verfügung steht, und die Anwendung auch ohne Netzanbindung nutzbar sein
soll.
Die Bearbeitung soll also innerhalb der Software stattfinden. Eingelesen werden csv-Dateien,
für das Erfassen der Dienstpläne soll eine grafische Oberfläche entwickelt werden. Sowohl
die Statistiken, als auch der Dienstplan sollen benutzerfreundlich ausgegeben werden.
Statistiken müssen nicht gespeichert werden, lediglich die Daten der Mitarbeiter und die
Dienstpläne sollen persistent gespeichert werden.
Ein zeitlicher Nachteil ohne Verwendung einer eigenen Datenbank ergibt sich nicht, da die
eingelesenen Daten nur einmal verarbeitet werden und danach nicht mehr benötigt werden.
Aufgabenstellung und Zielsetzung
3
3 Aufgabenstellung und Zielsetzung
Die vom Unternehmen gewünschte Software soll es ermöglichen, einmal im Quartal benötigte
Statistiken zur quantitativen Mitarbeiterbewertung ohne hohen Arbeitsaufwand zu erstellen.
Als Input für die Berechnung dienen csv-Dateien von Zeiterfassung, Mail-Anwendung und
Telefonanlage, die einen beliebigen Zeitraum abbilden. Attribute der Mitarbeiter (im
Folgenden auch mit dem Begriff Agenten bezeichnet) und Dienstpläne können über eine
Maske eingegeben und persistent gespeichert werden. Die komplette Bearbeitung soll
innerhalb der eigen entwickelten Software stattfinden; es sollen also keine Datenbanken oder
sonstigen externen Anwendungen genutzt werden. Als Ausgabe soll eine formatierte
Auflistung der Statistiken für die einzelnen Agenten erzeugt werden.
Die Anwendung soll über eine grafische Oberfläche verfügen, über die die Mitarbeiterdaten
und Dienstpläne eingegeben werden. Bei den Mitarbeitern muss unterschieden werden, ob
diese im Callcenter arbeiten oder im Backoffice. Während der Eingabe der Dienstpläne soll
der gerade bearbeitete Wochenplan grafisch als Balkendiagramm erscheinen, um schon
während des Eintragens der Agenten und ihrer Dienstzeiten eine Übersicht über die
Auslastung in der jeweiligen Woche zu geben. Darüber hinaus soll ein weiterer Plan generiert
werden, der die potentiellen Arbeitszeiten der Callcenter-Agenten abbildet, also dem zu
ersehen ist, wann welcher Mitarbeiter arbeiten kann. Dieser Plan soll ebenfalls beim
Eintragen eine Übersicht bieten, um noch freie Kapazitäten aufzuzeigen. Der Dienstplan soll
als Bild oder pdf-Datei exportiert werden können, um eine Weiterleitung an die Mitarbeiter zu
ermöglichen.
Die Daten des Dienstplans, des parallelen Plans und der Mitarbeiter werden in einer Datei der
Anwendung gespeichert und beim Öffnen des Programms geladen. Um eine Statistik zu
erstellen, müssen die csv-Dateien aus den Systemen Zeiterfassung, Mail und Telefonanlage
vorliegen und deren Speicherort angegeben werden. Nach Bearbeitung wird ein pdfDokument generiert, das die benötigten Kennzahlen nach Mitarbeitern geordnet beinhaltet.
Eine weitere Sicherung der Statistiken, die über die Aufbereitung der csv-Dateien als pdfDokument hinausgehen würden, ist nicht gewünscht.
Anforderung an die Anwendung
4
4 Anforderung an die Anwendung
In Absprache mit den Auftraggebern wurde festgelegt, dass die Software aus vier Teilen
bestehen soll: zum einen das Modul zur Erstellung und Darstellung der Dienstpläne, ein
Modul, um die potentiellen Zeiten der Mitarbeiter einzutragen („Paralleler Plan“,
„WerKannWann“), ein Modul zum Verwalten der Mitarbeiterdaten und das Modul zum
Erstellen der Statistiken.
Die einzelnen Module sollen weitgehend unabhängig voneinander sein, also jeweils über eine
eigene Oberfläche verfügen. Die grafische Oberfläche soll so gestaltet sein, dass sie möglichst
einfach und intuitiv zu bedienen ist.
Im Folgenden werden die Anforderungen an die einzelnen Module beschrieben.
4.1 Modul „Dienstplan“
Das Modul soll die Erstellung der Dienstpläne ermöglichen, so dass diese zur Berechnung der
Statistik verwendet werden können und eine grafische Ausgabe der Wochenpläne als Bild
oder pdf-Dokument anbieten, die optisch möglichst wenig von den bisherigen Plänen (siehe
Anhang A) abweicht. Jeder Mitarbeiter hat eine festgelegte Farbe, in der seine tägliche
Dienstzeit in einem Balkendiagramm dargestellt wird. Der Balken beinhaltet das Kürzel des
Mitarbeiters und die jeweilige Arbeitszeit, bei der die Pausenzeiten bereits abgezogen sind.
Für jeden Tag soll außerdem die Gesamtstundenzahl der Mitarbeiter angezeigt werden. Diese
Zahl muss nicht auf dem exportierten Plan erscheinen, da sie nur für den Teamleiter relevant
ist.
Darüber hinaus soll es eine Möglichkeit geben, Feiertage als solche zu kennzeichnen, so dass
dort keine Dienstzeiten eingetragen werden können und eine optische Hervorhebung im Plan
vorhanden ist.
Weitere Anzeigen auf dem wöchentlichen Dienstplan sind die Angabe der Kalenderwoche,
der Wochentage (Montag bis Freitag) und das jeweils zugehörige Datum, sowie die Uhrzeiten
von 8.00 bis 18.00 im 30-Minuten-Takt.Während der Eingabe der Dienstpläne soll der gerade
bearbeitete Wochenplan grafisch als Balkendiagramm erscheinen, und alle getätigten
Eingaben umgehend abbilden.
Dienstpläne müssen nur wenige Wochen im Voraus, aber mehrere Monate im Nachhinein
betrachtet werden können. Dies ist in folgender Weise zu berücksichtigen: Ist die Nummer
der aktuellen Kalenderwoche größer als 44 und die Nummer der Kalenderwoche des
geforderten Plans kleiner als 10, so wird der Plan für das nächste Jahr angezeigt. Ist die
aktuelle Wochennummer kleiner als 30 und die geforderte größer als 39, so wird der Plan des
vorherigen Jahrs angezeigt.
Eine Datenhaltung erfolgt wie in Abbildung 4.1 dargestellt somit für 12 Monate, was dem
Zweck voll entspricht, da die Pläne nach Erstellung der Quartalsstatistiken nicht mehr
benötigt werden und ggf. nur die exportierten Pläne archiviert werden. Der Plan wird lokal
abgespeichert.
Anforderung an die Anwendung
5
Abbildung 4.1: Abgebildeter Zeitraum des Plans
Bei der Erstellung des Plans ist ein Tag durch Kalenderwoche und Wochentag
gekennzeichnet. Pro Tag sollen dann durch Angabe des Mitarbeiters, der Anfangszeit und der
Endzeit Dienstzeiten angegeben werden. Die Eingaben sollen über Auswahlboxen
(„Comboboxen“) erfolgen, um falsche Eingaben zu vermeiden und den Bedienkomfort zu
erhöhen. Lediglich die Callcenter-Mitarbeiter sollen zur Auswahl stehen. Umfasst die
Dienstzeit eines Mitarbeiters an einem Tag mehr als sechs Stunden, so wird bei der
Zeitanzeige auf dem Balken 0,5 Stunden Pausenzeit abgezogen. Umfasst die Zeit mehr als 9
Stunden, muss eine Stunde abgezogen werden. Pausen müssen nicht weiter berücksichtigt
werden, da diese nicht im Plan eingetragen sind, sondern spontan erfolgen. Darüber hinaus
soll die Möglichkeit bestehen, den Plan der Vorwoche in die aktuelle Woche zu kopieren, um
ihn als Grundlage für den neuen Plan zu nutzen.
Zusätzlich soll eine Möglichkeit bestehen, den parallelen Plan aufzurufen mit den potentiellen
Dienstzeiten. Dies soll über eine Schaltfläche erfolgen, die eine Anzeige der möglichen
Dienstzeiten des aktuellen Tages verursacht. Auf dieser Anzeige haben die Balken in die
Füllfarbe Schwarz und als Schriftfarbe die Farbe des Mitarbeiters. Diese Farbgebung
verhindert Verwechslungen mit dem tatsächlichen Plan. Ein Plan soll auf Knopfdruck an
einem beliebigen Ort auf der Festplatte als pdf-Dokument oder Bild gespeichert werden,
wenn möglich mit einer Auflistung der Dienstzeiten nach Mitarbeitern sortiert.
Des Weiteren soll ein pdf-Dokument generiert werden können, wo die tägliche Anzahl der
Mitarbeiterstunden und die Anzahl der eingeplanten Mitarbeiter tabellarisch aufgelistet sind.
Anforderung an die Anwendung
6
4.2 Modul „Wer kann wann“
In diesem Modul soll eingegeben werden, welcher Mitarbeiter wann arbeiten kann. Diese
Eingabe soll durch Angabe des Mitarbeiters und das Erstellen einer Regel erfolgen. Folgende
Regeln sollen realisiert werden:
• „Jede Woche“ (Angabe von Wochentag und Zeit)
• „Jede gerade/ungerade Woche“ (Angabe von Wochentag und Zeit)
• „Nicht von...bis...“ (Angabe von Kalenderwochen)
• „Ausnahmsweise“ (Angabe von Kalenderwoche, Tag und Zeit)
Die Kombination der Regeln erlaubt sowohl das Eintragen der regelmäßigen Zeiten, als auch
das Eintragen von Besonderheiten, wie beispielsweise Weihnachts- oder Brückentage, indem
erst die betrachtete Kalenderwoche gelöscht wird („Nicht von... bis...“) und anschließend die
abweichenden Zeiten durch Ausnahmen eingetragen werden.
Die Regeln sollen zum einen persistent mitarbeiterbezogen gespeichert werden und zum
anderen aus Performanz-Gründen in den parallelen Plan eingetragen werden, um diesen bei
Bedarf im Modul „Dienstplan“ aufzurufen, ohne erst die Regeln auszuwerten. Der parallele
Plan soll ebenso wie der Dienstplan gespeichert werden. Optisch unterscheidet sich der
parallele Plan nur insofern vom Dienstplan, dass die Balkenfarben invertiert sind.
Regeln sollen sich löschen lassen, und die Liste der vorhandenen Regeln eines Mitarbeiters
soll übersichtlich angezeigt werden.
4.3 Modul „Mitarbeiter“
Das Modul soll die Bearbeitung der relevanten Daten jedes Mitarbeiters ermöglichen.
Primäres Kennzeichen jedes Mitarbeiters soll die Zeiterfassungs-ID sein, so dass bei
Bearbeitung eines Mitarbeiters diese Angabe nicht geändert werden kann. Weitere relevante
Daten sind: Vor-, Nach- und Kurzname des Mitarbeiters, interne zweistellige Rufnummer,
Email-Kennung und die Farbe, die auf dem Dienstplan erscheint. Außerdem soll eine
Unterscheidung ermöglicht werden zwischen Callcenter-Mitarbeiter (CC-Mitarbeiter, Agent)
und Mitarbeiter des Backoffices.
Bei Bearbeitung eines Mitarbeiters soll die Auswahl über eine Combobox erfolgen; die Felder
mit den gespeicherten Daten der Person sollen vorbelegt werden. Bei Neuanlegen eines
Mitarbeiters sind alle Felder leer, und auch das Feld der Zeiterfassung aktiv.
Alle Felder sind Pflichtfelder. Die Wahl der Farbe des Mitarbeiters soll über ein
Auswahlfenster erfolgen, das mindestens 200 mögliche Farbtöne anbietet.
Das Löschen eines Mitarbeiters soll ebenfalls über die Oberfläche erfolgen. Zusätzlich soll
eine Übersicht mit allen Mitarbeiterdaten erzeugt werden können. Die Übersicht soll sich eine
Entscheidungsmöglichkeit zwischen „Alle Mitarbeiter“ und „Nur Callcenter“ und eine
Exportfunktion bereitstellen, die es ermöglicht, die gewünschten Daten als csv-Datei auf der
Festplatte abzulegen.
4.4 Modul „Statistik“
Das Modul Statistik ermöglicht das Einlesen der benötigten csv-Dateien, die Berechnung der
Statistiken und die Ausgabe in einem pdf-Dokument.
Es soll unterschieden werden, ob Statistiken nur für eine Person erstellt werden, nur für
Callcenter-Agenten oder für alle Mitarbeiter. Außerdem soll auswählbar sein, für welchen
Anforderung an die Anwendung
7
Zeitraum die Statistiken erstellt werden sollen. Die Auswahl soll entweder nach Datum
erfolgen, nach Kalenderwoche oder nach dem größtmöglichen Zeitraum, der von den
eingelesenen Dateien abgebildet wird.
Wird die Option der Statistik nur eines Mitarbeiters gewählt, soll die Auswahl des
entsprechenden Mitarbeiters durch eine Combobox erfolgen. Die Eingabe der benötigten csvDateien soll über eine Festplattensuche realisiert werden, eine manuelle Eingabe des Pfades
ist nicht gewünscht.
Folgende Kennzahlen sollen abgebildet werden:
§
Gesamtstatistik
§ Angewählte Rufnummern mit Anzahl, wenn diese größer als 100/Woche ist
§ Gesamtschnitt eingehender und ausgehender Calls pro Stunde
§ Gesamtschnitt Mails pro Stunde
§ Summe aus Calls und Mails pro Stunde
§ Verteilung der Arbeitszeiten (Tortendiagramm)
§
Einzelstatistik eines Mitarbeiters über den gesamten Zeitraum
§ Schnitt der eingehenden/ausgehenden Calls pro Stunde
§ Schnitt von Mails pro Stunde
§ Summe aus Calls und Mails pro Stunde
§ Durchschnittliche Sprechzeit pro Call
§ Anzahl gearbeiteter Stunden
§ Anzahl anwesender Tage
§ Anteil an der Arbeitszeit aller Mitarbeiter (Tortendiagramm)
§
Tägliche Einzelstatistik eines Mitarbeiters
§ Schnitt der eingehenden/ausgehenden Calls pro Stunde
§ Schnitt von Mails pro Stunde
§ Summe aus Calls und Mails pro Stunde
§ Durchschnittliche Sprechzeit pro Call
§ Eingetragene Dienstzeit
§ Zeitpunkt des „Ein- und Ausstempelns“
§ Zeitpunkt des ersten und des letzten angenommenen Anrufs
„Calls“ sind hier diejenigen Anrufe, die im Zuge der Callcenter-Tätigkeiten gemacht werden,
also Anrufe, die entweder zu einer externen Nummer gehen, oder Anrufe, die von einer
externen Nummer kommen, zu einem Mitarbeiter weitergeleitet werden und die angewählte
Nummer nicht die Durchwahl des Mitarbeiters ist. Interne Nummern sind dadurch
gekennzeichnet, dass sie aus genau zwei Ziffern bestehen, externe Nummern sind alle
anderen. Es werden nur Anrufe berücksichtigt, die mindestens eine Sekunde dauern. Der
Zeitraum für die Berechnung der Kennzahl „Calls pro Stunde“ ist die sogenannte
„Telefonierzeit“, also der Zeitpunkt zwischen dem ersten geführten „Call“ und dem letzten
geführten „Call“. Auch hier werden die Pausenzeiten abgezogen. Davon wird abgewichen,
wenn an einem Tag zusätzlich Emails bearbeitet wurden. Dann wird die Anwesenheitszeit als
Grundlage genommen, um nicht bei der Bildung der Summe eine zu hohe Anzahl pro Stunde
zu berechnen.
Der Zeitraum für die Berechnung der „Mails pro Stunde“ ist der Zeitraum der Anwesenheit.
Der Output des Mailprogramms bietet leider keine Angabe über den genauen Zeitpunkt der
Bearbeitung einer Email, sondern nur den Zeitpunkt des Eingangs einer bearbeiteten Email.
Als Zeitpunkt des Bearbeitens einer Email wird der Tag festgelegt, an dem die Email
Anforderung an die Anwendung
8
eingegangen ist, wenn der betreffende Mitarbeiter an dem Tag anwesend war, oder als der
Tag, an dem der Mitarbeiter das nächste Mal anwesend war. Werden die Emails nicht wie
erwartet zeitnah bearbeitet, so kann es dadurch zu verfälschten Reports kommen, was sich
jedoch nicht vermeiden lässt.
Bei den angegebenen Zeiten der Einzelstatistiken sollen diejenigen rot markiert werden, die
auf Unpünktlichkeit schließen lassen. Zum einen, wenn die Zeit der Ankunft nach der
eingetragenen Zeit liegt oder wenn der erste Anruf mehr als 5 Minuten nach der
eingetragenen Zeit erfolgt.
4.4.1 Die Inputdateien
Grundlage zur Erstellung der Statistik sind, neben dem Dienstplan, die csv-Dateien, die
eingelesen werden. Es werden drei solcher Dateien benötigt: eine mit Angaben zu getätigten
Anrufen, eine mit Angaben zu bearbeiteten Emails und als dritte Datei eine Auflistung mit
den Arbeitszeiten. Die Voraussetzungen, die die einzelnen Dateien erfüllen müssen, sind im
Folgenden beschrieben.
Pro Datensatz wird eine eigene Zeile verwendet. Als Trennzeichen der einzelnen Datenwerte
wird das Semikolon verwendet. Die Daten können in Anführungszeichen stehen, müssen aber
nicht. Die erste Zeile wird ignoriert, da diese im Normalfall die Überschriften der jeweiligen
Daten beinhaltet. Das Datum muss im Format TT.MM.JJJJ gegeben sein, Zeit im Format
HH:MM. Tabelle 4.1, Tabelle 4.2 und Tabelle 4.3 zeigen die Daten, die vorhanden sein
müssen.
Spaltennr.
0
1
3
5
6
Name
Anrufer-Nummer
gewählte Nummer
weitergeleitet zu
Anrufzeitpunkt
Anrufdauer
Datentyp
alphanummerisch
alphanummerisch
alphanummerisch
Datum + Zeit
Ganzzahl
Beispiel
„0651-6772229“
„15“
„43“
„10.05.2008 13:25“
„135“
Tabelle 4.1 Anruf-CSV
Spaltennr. Name
Datentyp
Beispiel
2
Bearbeitungsdatum Datum
„12.06.2008“
7
Emailkennung
alphanummerisch „aklein“
Tabelle 4.2 Email-CSV
Spaltennr.
1
2
3
4
6
15
Name
Zeiterfassungs-ID
Datum
Arbeitsanfang
Arbeitsende
Dauer
Bemerkung
Datentyp
alphanummerisch
Datum
Zeit
Zeit
Fließkommazahl
alphanummerisch
Beispiel
„1173“
„13.04.2008“
„08:05“
„17:45“
„7.25“
„krank“
Tabelle 4.3 Zeiterfassung-CSV
Nutzung der Oberfläche
9
5 Nutzung der Oberfläche
Die Anwendung wurde wie vorgegeben mit vier Modulen realisiert. Wird die Anwendung
gestartet, so erscheint erst das Hauptfenster zur Auswahl der Module (siehe Abbildung 5.1).
Das Fenster kann nur mit dem Button „Beenden“ geschlossen werden und ist in der Größe
unveränderlich.
Abbildung 5.1: Hauptfenster
5.1 Modul „Mitarbeiter“
Bei Betätigen der Schaltfläche „Mitarbeiter“, öffnet sich das Fenster zur Bearbeitung der
Mitarbeiter, wie in Abbildung 5.3 zu sehen. Hier kann nun zwischen den Optionen „neu“ und
„bearbeiten“ gewählt werden. Bei der Auswahl „neu“ sind alle Felder aktiv, können also
gefüllt werden, die Auswahlbox zur Angabe eines Mitarbeiters ist jedoch inaktiv, kann also
nicht genutzt werden. Alle Felder sind Pflichtfelder, das heißt, es kann erst gespeichert
werden, wenn alle Felder plausible Daten erhalten. Die Rufnummer muss zweistellig sein und
die Zeiterfassungs-ID darf nicht schon an einen anderen Mitarbeiter vergeben sein. Die Farbe,
die einem Mitarbeiter zugewiesen werden kann, erscheint bei der Darstellung des Dienstplans
und dient so der schnellen Erkennung des Mitarbeiters im Plan. Die Angabe der Farbe erfolgt
über einem sogenannten „ColorChooser“, also einer Farbauswahl, die 224, also über 16
Millionen Farben anbietet. Dieses Fenster ist in Abbildung 5.2 zu sehen.
Nutzung der Oberfläche
10
Abbildung 5.2: JColorChooser (Farbauswahl)
Wird ein Mitarbeiter als Callcenter-Mitarbeiter markiert, so erscheint er bei der MitarbeiterAuswahl im Dienstplan, und in der Mitarbeiterübersicht. Außerdem wird er dann
berücksichtigt, wenn in der Statistik die Option „nur Callcenter“ ausgewählt wurde. Dies wird
später noch näher erläutert.
Abbildung 5.3: Mitarbeiterverwaltung („neu“)
Ist die Option „bearbeiten“ ausgewählt, so ist die Auswahlbox zur Angabe eines Mitarbeiters
aktiv, die Eingabefläche „Zeiterfassungs-ID“ kann jedoch nicht genutzt werden, da diese
Kennzahl aufgrund ihrer identifizierenden Eigenschaft nicht geändert werden soll. Sollte sich
dennoch die Zeiterfassungs-ID eines Mitarbeiters beispielsweise systembedingt geändert
haben, so muss dieser Mitarbeiter gelöscht und neu angelegt werden. Wird auf der Oberfläche
mit Hilfe der Auswahlbox ein Mitarbeiter angegeben, so werden dessen Attribute auf der
Oberfläche angezeigt (siehe Abbildung 5.4). Diese können dann geändert und die
Änderungen gespeichert werden.
Nutzung der Oberfläche
11
Abbildung 5.4: Mitarbeiterverwaltung („bearbeiten“)
Außerdem bietet das Modul eine Übersicht aller Mitarbeiter, die über die Schaltfläche
„Übersicht“ aufgerufen werden kann. Dort werden die Mitarbeiter, wie in Abbildung 5.5 zu
sehen, aufgelistet und, wenn gewünscht, durch Setzen des Häkchens „nur Callcenter“ auf die
Callcenter-Mitarbeiter reduziert. Dies bietet eine gute Möglichkeit, die Daten vor Erstellen
einer Statistik nochmal zu prüfen, um eine verfälschte Statistik zu vermeiden. Ist
beispielsweise eine falsche Rufnummer angegeben, werden die Anrufe, die der Mitarbeiter
gemacht hat, nicht erkannt. Außerdem kann die angezeigte Liste der Mitarbeiter als csv-Datei
exportiert werden, indem die Schaltfläche „Exportieren“ in der Übersicht betätigt wird.
Abbildung 5.5: Übersichtsfenster der Mitarbeiter
5.2 Modul „Wer kann wann?“
Wird im Hauptfenster die Schaltfläche „Wer kann wann?“ betätigt, öffnet sich das
dazugehörige Fenster (siehe Abbildung 5.6). Nach Auswahl eines Mitarbeiters erscheinen
dessen potentielle Zeiten im grau hinterlegten Bereich. Dies ist in Abbildung 5.7 zu sehen.
Hier können nun neue Regeln für den Mitarbeiter angegeben werden. Dafür muss im
entsprechenden Bereich jedes Feld ausgefüllt werden und anschließend der zugehörigen
Button „OK“ betätigt werden. Die Regel wird dann hinzugefügt und erscheint umgehend in
dem grauen Bereich unter den bisher angelegten Zeiten. Regeln, die in der Vergangenheit
liegen, können über den Button „Löschen“ neben der entsprechenden Anzeige der Regel
gelöscht werden. Dies sollte wegen der Übersichtlichkeit immer gemacht werden. Eine
Obergrenze an Regeln, die ein Mitarbeiter haben kann, gibt es jedoch nicht.
Nutzung der Oberfläche
12
Abbildung 5.6: Fenster „Wer kann wann?“ (leer)
Abbildung 5.7: Fenster „Wer kann wann?“ (gefüllt)
Betätigt man die Schaltfläche „KW anzeigen“ so wird diejenige Woche als Übersicht gezeigt,
die links daneben mit der Auswahlbox ausgewählt wurde. Standardmäßig ist dort die aktuelle
Woche angegeben. Die Anzeige erfolgt in einem eigenen Fenster, so wie in Abbildung 5.8 zu
sehen.
Nutzung der Oberfläche
13
Abbildung 5.8: Wochenübersicht potentielle Arbeitszeiten
Dieses Fenster dient zur Kontrolle, ob die Regeln wie gewünscht eingetragen wurden. Eine
ähnliche Darstellung kann über das Modul „Dienstplan“ aufgerufen werden, was im
entsprechenden Kapitel genauer erläutert wird. Die einzelnen Balken sind in schwarz
dargestellt, die Beschriftung in der Farbe des Mitarbeiters. Dadurch kann es nicht zu
Verwechslungen mit dem eigentlichen Dienstplan kommen, bei dem die Farben umgekehrt
gewählt wurden.
5.3 Modul „Dienstplan“
Durch Betätigen der Schaltfläche „Dienstplan“ im Hauptfenster öffnet sich das Fenster zur
Eingabe und Anzeige des Dienstplans (Abbildung 5.9). Im oberen Bereich wird der
Dienstplan der Woche angezeigt, die unten in der Auswahlbox „KW:“ angegeben ist. Neben
den Dienstbalken mit Namen und Arbeitszeiten der Mitarbeiter ist unten eine Zahl anzeigt,
die die Summe der eingetragenen Arbeitszeiten repräsentiert. So ist während der Eingabe für
den Nutzer ersichtlich, wie viele Stunden bereits verplant sind, was beispielsweise dann von
Relevanz ist, wenn eine Obergrenze für die Stunden (die im betriebswirtschaftlichen Sinne
gleichzusetzen sind mit Kosten) angegeben ist. Oben werden die angezeigte Kalenderwoche,
und die Wochentage angezeigt, unten das jeweils zugehörige Datum.
Im unteren Bereich sieht man die eingetragenen Mitarbeiter eines Tages mit den
dazugehörigen Zeiten. Die Woche entspricht derjenigen des angezeigten Plans, der Tag kann
über die Auswahlbox „Wochentag“ angegeben werden. Die Zeiten können verändert werden
und mit dem zugehörigen Button „OK“ gespeichert werden. Es kann immer nur eine Zeit
gleichzeitig geändert werden. Werden also mehrere Zeiten verändert und ein Button „OK“
betätigt, so wird nur der Mitarbeiter aktualisiert, der in der Zeile des betätigten Buttons steht
und alle anderen Änderungen werden nicht mehr angezeigt. Hier können nur diejenigen
Mitarbeiter ausgewählt werden, die als „Callcenter-Mitarbeiter“ deklariert wurden. Durch
Betätigen des Buttons „Entfernen“ wird die entsprechende Dienstzeit gelöscht. Das Ändern,
Hinzufügen oder Entfernen von Dienstzeiten wird umgehend im Plan und in der Ansicht im
unteren Bereich angezeigt.
Nutzung der Oberfläche
14
Abbildung 5.9: Dienstplan erstellen
Bei Betätigen der Schaltfläche „Mitarbeiterstunden“ öffnet sich ein Fenster zur Angabe von
Kalenderwochen, so wie in Abbildung 5.10 zu sehen. Hier kann nun durch Betätigen des
Buttons „exportieren“ die Anzahl der eingetragenen Stunden und Mitarbeiter aufbereitet als
pdf-Dokument generiert und gespeichert werden. In Verbindung mit anderen statistischen
Auswertungen, wie beispielsweise der Erreichbarkeitsstatistik der Telefonanlage, kann die
Güte der Diensteinteilung einfach evaluiert werden.
Abbildung 5.10: Fenster zur pdf-Generierung Stundenanzahl
Durch Drücken der Schaltfläche „Plan exportieren“, wird der aktuell angezeigte Plan als Bild
gespeichert und ein pdf-Dokument generiert, das sowohl den Plan enthält, als auch die
einzelnen Dienstzeiten nach Mitarbeiter geordnet in tabellarischer Form. Der Speicherort wird
durch einen sogenannten „FileChooser“ (Dateiauswahl) angegeben, der in Abbildung 5.11 zu
sehen ist. An allen Stellen, bei denen der Nutzer den Ort einer Datei zum Speichern oder
Öffnen eingeben muss, wird ein solcher „FileChooser“ aufgerufen.
Nutzung der Oberfläche
15
Abbildung 5.11: „JFileChooser“ (Dateiauswahl)
Setzt man im mittleren Bereich des Dienstplan-Fensters das Häkchen „Feiertag“, so werden
nach Bestätigen eines Hinweisfensters alle Dienstzeiten des entsprechenden Tages gelöscht
und im Dienstplan erscheint statt der Dienstzeit-Balken an dem Tag ein weißes Feld mit dem
Hinweis auf einen Feiertag. Dies ist in Abbildung 5.12 dargestellt.
Abbildung 5.12: Dienstplan erstellen (Feiertag)
Durch Betätigen der Schaltfläche „Plan wie Vorwoche“ wird nach Bestätigen eines
Warnhinweises der aktuell angezeigte Plan mit den Daten des Plans der Vorwoche
überschrieben. Die bisherigen Daten der aktuellen Woche sind damit unwiderruflich gelöscht.
Als letzte Schaltfläche gibt es den Button „Wer kann wann?“. Dieser erzeugt ein Fenster
ähnlich wie im Modul „Wer kann wann?“ zur Anzeige der potentiellen Dienstzeiten. Hier
wird jedoch nicht die Woche angezeigt, sondern der aktuelle Tag. In Abbildung 5.13 ist diese
Anzeige zu sehen.
Nutzung der Oberfläche
16
Abbildung 5.13: Anzeige potentielle Dienstzeiten eines Tages
5.4 Modul „Statistik“
Betätigt man im Hauptfenster die Schaltfläche „Statistik“ öffnet sich das Fenster zum
Erstellen der Statistiken (Abbildung 5.14). Hier gibt es drei Bereiche zur Eingabe der
relevanten Daten.
Oben kann angegeben werden, welcher Personenkreis berücksichtigt wird. Da gibt es zur
Auswahl „Alle Mitarbeiter“, „nur Callcenter“ oder „einzelne Person“. Ist letzte Option
ausgewählt, so ist die Auswahlbox zur Angabe eines Mitarbeiters aktiv und es kann eine
Person angegeben werden.
Im mittleren Bereich kann angegeben werden, über welchen Zeitraum sich die Statistik
erstrecken soll. Bei der Auswahl „Kompletter Zeitraum“ wird der größtmögliche Zeitraum
ermittelt, der von den drei eingelesenen csv-Dateien abgedeckt wird. Durch Angabe der
Option „Zeitraum in Wochen“ erstreckt sich der Zeitraum der Statistik von Montag der
angegebenen Anfangswoche bis Sonntag der angegebenen Endwoche. Die Wochen müssen
als Ganzzahl zwischen 1 und 53 angegeben werden. Die Anfangswoche muss nicht kleiner
sein als die Endwoche, da beispielsweise auch eine Statistik von KW 50 bis KW 2 (des
Folgejahres) erzeugt werden kann. Wird die Option „Zeitraum nach Datum“ ausgewählt, so
können das Anfangs- und das Enddatum frei gewählt werden, lediglich mit der Restriktion,
dass das Ende nicht vor dem Anfang liegen darf. Das jeweilige Datum soll im Format
TT.MM.JJJJ angegeben werden. Toleriert werden auch einstellige Angaben von Tag und
Monat und zweistellige Angabe des Jahres, wie zum Beispiel 1.3.2008 oder 12.4.08.
Im unteren Bereich können dann die Speicherorte der csv-Dateien angegeben werden. Dies
erfolgt über einen „FileChooser“, wie bereits oben erwähnt, eine manuelle Eingabe des Orts
ist nicht möglich. Die Auswahl erfolgt nach Betätigen der Schaltfläche „Durchsuchen“ neben
dem jeweiligen deaktivierten Eingabefeld.
Nutzung der Oberfläche
17
Abbildung 5.14: Statistik erstellen
Durch Betätigen des Buttons „Berechnen“ wird anschließend die Statistik gemäß der
gemachten Angaben erzeugt. Während der Bearbeitung, die je nach Datei-Größe einige
Sekunden dauern kann, erscheint ein Statusfenster, das den aktuellen Stand der Bearbeitung
anzeigt. In Abbildung 5.15 und Abbildung 5.16 sind solche Statusanzeigen dargestellt.
Nach Abschluss der Bearbeitung erscheint ein Auswahlfenster zur Angabe des Speicherorts,
wo anschließend das generierte pdf-Dokument abgelegt wird.
Abbildung 5.15: Statusfenster 1
Abbildung 5.16: Statusfenster 2
Analyse/Entwurf
18
6 Analyse/Entwurf
Obwohl üblicherweise die Analyse und der Entwurf voneinander abgegrenzt sind, sind die
beiden Betrachtungsweisen in diesem Projekt gut vereinbar. Das liegt daran, dass das
Erstellen der Anforderungen zum Projekt gehörte und die Analyse sonst als Schnittstelle
zwischen Auftraggeber und technischer Umsetzung dient. In diesem Projekt sind auf der
Auftraggeber-Seite keine technischen Kenntnisse vorhanden bezüglich Softwareentwicklung,
so dass auch Analysediagramme keine Schnittstelle darstellen könnten. Die Schnittstelle zur
fachlichen Seite ist in diesem Fall bereits die Anforderungsanalyse.
6.1 Grafische Oberfläche
Die im Kapitel „Nutzung der Oberfläche“ beschriebenen Elemente sind mit Hilfe von „JavaSwing“ realisiert. Das Paket „Swing“ wurde in den 90er Jahren entwickelt und bietet ein
umfangreiches Portfolio an verschiedenen Komponenten, die sowohl zur Darstellung von
Daten, als auch zur Steuerung (z.B. Schaltflächen) dienen. [Insel08]
Tabelle 6.1 beschreibt kurz die verwendeten Komponenten.
Bezeichnung Darstellung
JFrame
JLabel
JTextField
JButton
JCheckBox
Beschreibung
Ein Fenster, das auf dem Bildschirm erscheint.
Die Schaltflächen oben rechts zeigen das
gewohnte Verhalten (minimieren, maximieren,
schließen). Die Darstellung, Größe, Position
und das Verhalten, nachdem der Button zum
Schließen betätigt wurde, können angepasst
werden.
Diese Komponente zeigt einen Text, der vom
Nutzer markiert, aber nicht bearbeitet werden
kann. Der Text kann mit HTML formatiert
werden.
Dieses Feld kann vom Nutzer mit Text gefüllt
werden. Das Betätigen von „Enter“ innerhalb
der Komponente verursacht ein sog.
„ActionEvent“, das von einem „Listener“
abgefangen werden kann. (siehe Kapitel 6.2)
Diese Schaltfläche kann vom Nutzer betätigt
werden und dient dazu, eine bestimmte Aktion
(löschen,
starten…)
auszulösen.
Als
Beschriftung kann auch ein Bild angegeben
werden.
Diese Komponente kann vom Nutzer mit einem
Analyse/Entwurf
JRadioButton
JComboBox
JPanel
JScrollPane
19
Häkchen versehen werden. Das Setzen eines
Häkchens löst einen sogenannten „ItemEvent“
aus.
Diese
Komponente
hat
die
gleiche
Funktionsweise wie die JCheckBox. Nach den
gängigen Konventionen, wird der JRadioButton
in Zusammenhang mit einer „ButtonGroup“
genutzt, die dafür sorgt, dass stets genau ein
RadioButton aktiviert ist.
Hier wird dem Nutzer eine Auswahl geboten.
Gefüllt wird die JComboBox mit einer Liste
von Objekten. Zur Darstellung innerhalb der
Box wird dann die toString()-Methode des
Objekts verwendet.
Diese sogenannte Containerklasse, dient dazu,
andere Komponenten in einer bestimmten
Anordnung darzustellen. Sie ist entweder
Bestandteil des Containers „JFrame“ oder in
einer „JScrollPane“ eingebettet
Diese Klasse stellt einen Bereich mit ScrollLeiste bereit. Der Inhalt des Bereichs besteht
aus einem JPanel.
Tabelle 6.1: Java.Swing Komponenten
Java bietet zudem die Möglichkeit, ein globales Layout zu definieren. Standardmäßig wird
das plattformunabhängige Layout „Ocean“ gesetzt. In der erstellten Anwendung entschied fiel
die Entscheidung auf das windowseigene Layout, das vom Betriebssystem bereitgestellt wird.
Durch die gewohnte Darstellung der Komponenten, ist die Bedienung der Anwendung
angenehmer für den Nutzer.
6.2 Entwurfsmuster
Wie bereits erwähnt soll die Software aus vier Modulen bestehen. Um dies nicht nur auf der
Oberfläche zu realisieren, sondern auch beim Design, wird jedes Modul als eigenes Paket
(Package) realisiert. Innerhalb eines Package wird (abgesehen vom Package „Statistik“) das
MVC-Prinzip angewandt. MVC steht für Model-View-Controller und ist ein 1979
entwickeltes Architektur-Konzept, um die Komponenten zur Datenhaltung, zur Steuerung und
zur Präsentation zu trennen. Das Model hält in diesem Fall alle relevanten Daten, die View
(Ansicht) zeigt diese Daten an und reagiert auf Änderungen des Models, so dass die Ansicht
stets aktuell ist. Als dritte Komponente kommt der Controller (Steuerung) ins Spiel, der eine
Änderung des Models veranlassen kann. Oft ist der Controller ein sogenannter Hörer
(Listener), der an einer Oberfläche angemeldet ist [pattern08].
Das Diagramm in Abbildung 6.1 verdeutlicht nochmal das Konzept am Beispiel des Package
Dienstplan. Ohne näher auf die Klassen oder deren Beziehung einzugehen, ist hier das
Konzept gut ersichtlich. Das Model ist die Klasse Dienstplan. Diese hat einen Verweis auf die
Klassen „DienstplanErstellenView“ und „DienstplanPanelView“, die als View agieren, und
informiert diese, sobald eine Änderung eingetreten ist. Die Klasse „DienstplanErstellenView“
erzeugt außerdem den Listener und übergibt ihm eine Referenz auf den Dienstplan. Somit
Analyse/Entwurf
20
können Änderungen des Models über die Oberfläche angestoßen werden, zum Beispiel durch
Betätigen einer Schaltfläche.
Abbildung 6.1: Entwurfs-Klassendiagramm „Dienstplan“
Das Modul Statistik wurde nicht mittels MVC, sondern mit einem einfachen „Observer“Entwurfsmuster realisiert. „Observer“ lässt sich mit „Beobachter“ übersetzen und beschreibt
das Konstrukt, dass eine Klasse eine bestimmte Oberfläche oder Komponente „beobachtet“,
das heißt bei Änderung (z.B. Drücken einer Schaltfläche) aktiv wird. Für den
Anwendungsfall: Die Oberfläche zur Eingabe der Eckdaten der Statistik erzeugt einen
Listener, der dann bei Bedarf (also bei Betätigen der entsprechenden Schaltfläche) die
Statistik erstellt. Es existiert hier also kein Model, da es auch keine Daten gibt, die gehalten
werden.
Der parallele Dienstplan, also der Plan „Wer kann wann“, wird von der Klasse „Dienstplan“
abgeleitet. Der Plan muss lediglich um Funktionen zur Eingabe regelmäßiger Dienstzeiten
ergänzt werden. Die Models der Packages haben Referenzen auf die Models anderer
Packages. Der Dienstplan besitzt eine Referenz auf „WerKannWann“, um bei Bedarf im
Dienstplan den parallelen Plan aufzurufen. Außerdem hat der Dienstplan eine Referenz auf
die Klasse „AgentModel“, die das Model des Mitarbeiter-Packages darstellt. Dies ist
unumgänglich, da in der Datenhaltung der Dienstzeiten die Mitarbeiter enthalten sind. Da die
Klasse „WerKannWann“ von der Klasse „Dienstplan“ abgeleitet ist, erbt sie auch deren
Analyse/Entwurf
21
Referenzen. Die Klasse „Statistik“ hat Referenzen auf die Klassen „AgentModel“ und
„Dienstplan“, da diese Daten benötigt werden, um die Statistiken zu erstellen. Als einzige
unabhängige Klasse existiert das AgentModel. Die Datenhaltung der Mitarbeiter ist
unabhängig von allen anderen Daten und zentraler Punkt bei der Erstellung von Dienstplan
und Statistik.
6.3 Datentypen und –strukturen
6.3.1 Modul „Dienstplan“
Ein Dienstplan besteht aus einer Liste von Dienstwochen mit der Größe 53. Diese Liste wird
mit einem statischen Feld realisiert, so dass der Index eines Dienstwochenobjektes
gleichzeitig sein identifizierendes Attribut ist, nämlich die Nummer der Kalenderwoche.
Eine Dienstwoche wiederrum besteht aus genau sieben Diensttagen. Auch hier wird ein
statisches Feld verwendet, um über den Index den entsprechenden Tag zu identifizieren. Ein
Diensttag enthält eine Liste mit Elementen des Typs „Dienstzeit“. Eine Dienstzeit besteht aus
Mitarbeiter (Typ Agent), Anfangs- und Endzeit. Da die Anzahl der eingetragenen Zeiten
variiert, bietet sich eine einfach verkettete Liste an. Jedoch sollte die Reihenfolge beim
Löschen und Einfügen erhalten bleiben, um beim Erstellen des Plans nicht immer neu
angeordnete Dienstzeiten zu erhalten, was zu Unübersichtlichkeiten führen würde. Als
Kompromiss wird die Datenstruktur „ArrayList“ verwendet. Zwar handelt es sich hier auch
implizit um ein statisches Feld, allerdings ist eine Erweiterung auf beliebige Größen ohne
Entwickleraufwand möglich.
Die Zeiten werden durch den Typ „MyTime“ angegeben. Die Klasse beinhaltet lediglich die
Attribute „HOUR“ und „MINUTES“ und stellt einige Operationen auf diesem Datentyp
bereit. Diese selbsterstellte Klasse bietet mehr Übersichtlichkeit als die vorhandenen Timeoder Date-Klassen und verzichtet auf unnötigen Ballast.
6.3.2 Modul „WerKannWann“
Da diese Klasse von der Klasse „Dienstplan“ erbt, nutzt sie die gleichen Datentypen wie das
Modul „Dienstplan“.
6.3.3 Modul „Mitarbeiter“
Das Model des Packages „AgentPackage“ hält eine Liste aus Mitarbeitern. Da die
Reihenfolge aufgrund alphabetischer Ordnung von Relevanz ist, die Anzahl jedoch variieren
kann, wird auch hier der Datentyp „ArrayList“ verwendet. Neben der Liste aller Mitarbeiter,
gibt es eine Liste aller Callcenter-Mitarbeiter, um einen schnellen Zugriff auf diese
Untergruppe zu ermöglichen. Diese wird stets dann aktualisiert, wenn eine Änderung beim
Model aufgetreten ist. Die Mitarbeiter werden durch die Klasse „Agent“ dargestellt. Die
beschreibenden Attribute werden als String dargestellt. Dazu zählen auch die nummerischen
Angaben wie Rufnummer und Zeiterfassungs-ID. Da beim Einlesen der csv-Dateien diese
Daten als String vorliegen, wird so ein Umweg über Umwandlung in ein nummerisches
Format vermieden. Als einzige Operation auf diese Angaben werden der Vergleich und die
Bestimmung der Anzahl der Ziffern verwendet, so dass die Datenhaltung als String keine
Nachteile bringt. Neben den beschreibenden Attributen hat jeder Mitarbeiter eine Liste aus
Regeln, die beschreiben, wann ein Mitarbeiter arbeiten kann. Eine Regel besteht aus dem Typ
(z.B. „jede Woche“) und den zeitlichen Angaben (Wochentag, Anfangszeit, Endzeit). Als
Datenstruktur für diese Liste wird ebenfalls die ArrayList verwendet, da auch hier die
Reihenfolge relevant ist, um die Liste sortiert nach Regel-Typ anzuzeigen. Darüber hinaus
hält der Mitarbeiter eine Liste aus „StatistikTagen“, die beim Berechnen der Statistik gefüllt
Analyse/Entwurf
22
wird. Um eine Sortierung nach Datum zu ermöglichen, wird auch hier eine ArrayList
verwendet.
6.3.4 Modul „Statistik“
Die Klasse „Statistik“ beinhaltet die Eckdaten einer zu erstellenden Statistik. Zum einen die
Angaben über den relevanten Personenkreis, also das zu verwendende „AgentModel“ ,
Startzeitpunkt und Endzeitpunkt. Die Zeitpunkte werden zum einen als Kalenderwochen
angegeben und zum anderen als Datum, das durch einen String repräsentiert wird. Die
Repräsentation als String erscheint im ersten Moment ungewöhnlich, allerdings liegen die
eingelesenen Daten wie schon oben erwähnt als String vor. Mithilfe einiger Funktionen der
Klasse „Utilities“, die zum Beispiel die zeitliche Anordnung zweier Strings, die jeweils ein
Datum repräsentieren, prüft, lässt sich so die Bearbeitung effizient und ohne Umwandlung in
die Klasse „Date“ oder „Time“ realisieren. Bei einer Größenordnung von mehreren 10.000
Datensätzen würde sich die Umwandlung in einen solch umfangreichen Datentyp negativ auf
die Bearbeitungsgeschwindigkeit auswirken ohne einen relevanten Nutzen zu bieten.
Die eigentlichen statistischen Daten werden von der Klasse „Statistik“ in das AgentModel
geschrieben, zum einen die jeweiligen StatistikTage der einzelnen Mitarbeiter, zum anderen
ein fiktiver Mitarbeiter, der den Durchschnitt aller Mitarbeiter repräsentiert. Als einziger
statistischer Wert innerhalb dieser Klasse existiert die Liste „zielNr“, die als ArrayList
implementiert ist und die angewählten Rufnummern und ihre jeweilige Anzahl verwaltet.
6.4 Datenhaltung
In der Software müssen verschiedene Daten gespeichert werden. Persistent gespeicherte
Daten sind der Dienstplan, der parallele Plan und die Mitarbeiter. Dazu implementieren die
relevanten Klassen („AgentModel“, „Dienstplan“, „WerKannWann“) die Schnittstelle
„Serializable“. Die Standard-Serialisierung bietet eine einfache Möglichkeit, Objekte
persistent zu machen und später wiederherzustellen. Dabei werden die Objektzustände (keine
statischen!) in einen Byte-Strom geschrieben (Serialisierung), woraus sie später wieder zu
einem Objekt rekonstruiert werden können (Deserialisierung). [Insel08]
Die Objekte werden mit einem „OutputStream“, der die Methode „writeObject()“ bereitstellt,
auf die Festplatte geschrieben. Der Name der Datei ist dabei frei auswählbar. Das Einlesen
geschieht analog mit einem „InputStream“ und der Methode „readObject()“. Zu beachten ist
hierbei, dass wie schon erwähnt, ein Objekt mit seinem aktuellen Zustand gespeichert wird,
also die Menge der Attribute mit ihren momentanen Werten. Nicht jedes Attribut muss jedoch
persistent gespeichert werden. So ist bei den Plänen lediglich das Feld mit dem Attribut
„DienstWochen“ relevant und bei den Mitarbeitern sind die statistischen Daten, also die Liste
mit den „StatistikTagen“ nicht von Bedeutung. Alle nicht benötigten Attribute werden mit
dem Schlüsselwort „transient“ gekennzeichnet, was bewirkt, dass diese Werte beim
Serialisieren (also Speichern) ignoriert werden. Weiter zu beachten ist, dass alle Objekte, die
gespeichert werden sollen, ebenfalls die Schnittstelle „Serializable“ implementieren müssen,
so zum Beispiel die Klassen „DienstWoche“, „DienstTag“ und „Dienstzeit“. Die Schnittstelle
enthält keine Methoden, die implementiert werden müssen, sondern dient lediglich der
Markierung, ob ein Objekt geschrieben werden kann. Einige Objekte sollen standardmäßig
nicht serialisiert werden können, wie beispielsweise die Klasse „Thread“, wo nicht
sichergestellt ist, dass die Umgebung nach Wiederherstellen wieder so ist, dass der Thread
problemlos weiterarbeiten kann. Diese Form der Speicherung findet immer dann statt, wenn
sich das Model geändert hat und bei Betätigen des „Beenden“-Buttons im Hauptfenster. Mit
Analyse/Entwurf
23
Beenden der Anwendung werden dann die relevanten Daten als Sicherungskopie auf die
Platte gelegt.
Eine andere Form der Speicherung ist das Anlegen von csv-Dateien. Diese wird
beispielsweise beim Export der Mitarbeiterdaten im Modul „Mitarbeiter“ verwendet. Hier
werden die benötigten Daten als String aufbereitet und mittels eines „BufferedWriter“ in die
gewünschte Datei geschrieben. Das Einlesen von csv-Dateien, was essentiell beim Erstellen
der Statistiken ist, geschieht mit einem „BufferedReader“, der zeilenweise den Inhalt der
ausgewählten Datei als String bereitstellt. Die Verwendung der Puffer führt zu einem
beschleunigten Lesen bzw. Schreiben, da nicht bei jeder neuen Zeile ein Festplattenzugriff
erfolgt, sondern die Daten innerhalb der virtuellen Maschine zwischengespeichert werden.
Eine csv-Datei wird auch bei jedem Beenden der Anwendung angelegt. Inhalt der Datei ist
der aktuelle Dienstplan. So kann bei verloren gegangenen Daten, der Dienstplan mit einem
Sicherungs-Werkzeug („Rescue“) wieder eingespielt werden. Dazu wird ein neues Objekt der
Klasse „Dienstplan“ erzeugt, mit den Daten einer vom Nutzer ausgewählten Sicherungsdatei
parametrisiert und schließlich serialisiert und gespeichert.
Die letzte Variante der Datenspeicherung ist das Erzeugen von pdf-Dateien. Dieser Vorgang
wird im folgenden Kapitel beschrieben.
6.5 Erzeugen von pdf-Dokumenten
In der Software wird an drei Stellen die Erstellung von pdf-Dokumenten (portable document
format) gefordert. Beim Export der Dienstpläne, bei Angabe der Mitarbeiterstunden aus dem
Modul „Dienstplan“ heraus und, der Kernpunkt der Anwendung, bei der Ausgabe der
Statistik. Dazu wird die freie Bibliothek „iText“ verwendet, die von Bruno Lowagie
entwickelt wurde. iText stellt umfangreiche Möglichkeiten bereit, pdf-Dokumente zu erstellen
und direkt auf die Festplatte zu schreiben. Dazu gibt es einen sogenannten „PdfWriter“, der
als Parameter einen „OutputStream“ und ein Objekt der Klasse „Document“ erhält und so das
Schreiben der Inhalte in das pdf-Dokument realisiert. Das Objekt der Klasse „Document“
beinhaltet die Komponenten des pdf-Dokuments und muss zum Befüllen explizit geöffnet
werden und zum Schluss wieder geschlossen werden, um den OutputStream zu leeren
[iText08]. Das Erzeugen eines pdf-Dokuments mittels iText gliedert sich also grob in
folgende Schritte:
1.
2.
3.
4.
5.
6.
Erstellen einer Instanz vom Typ „Document“
Erzeugen eines „FileOutputStreams“
Erzeugen einer Instanz von „PdfWriter“
Öffnen der „Document“-Instanz
Füllen dieser Instanz mit der Methode „add(<Komponente>)“
Schließen der „Document“-Instanz
Es gibt verschiedene Komponenten, die dem pdf-Dokument zugeordnet werden können. Hier
stellt iText einige Klassen bereit, die nach einem Container-Prinzip angeordnet sind.
Umfassendster Container ist die bereits erwähnte Klasse „Document“. Diese beinhaltet
Objekte vom Typ „Chapter“ (Kapitel). Einem Kapitel können ein Titel und die Tiefe der
Nummerierung zugeordnet werden. Ein Chapter kann Bilder vom Typ „Image“ beinhalten,
Tabellen vom Typ „Table“ oder Absätze vom Typ „Paragraph“. Eine Tabelle besteht aus
Zellen vom Typ „Cell“. Sowohl die Zellen als auch die Tabelle kann typischerweise
parametrisiert werden, z.B. durch Angabe der Stärke der Umrandung. Eine Zelle wird mit
einem Objekt der Klasse „Chunk“ gefüllt. Ein „Chunk“ ist die kleinste Einheit des pdf-
Analyse/Entwurf
24
Dokuments und ist ein in bestimmter Weise formatierter String. Ein Absatz besteht aus Sätzen
(Typ „Phrase“), die wiederum aus „Chunks“ bestehen. Abbildung 6.2 visualisiert diese
Hierarchie der Inhalte eines pdf-Dokuments in iText.
Abbildung 6.2: Struktur eines pdf-Dokuments (iText)
Die Formatierung der pdf-Dokumente in der Software wird hauptsächlich durch Tabellen
realisiert. Der Aufbau der Statistik ist folgendermaßen: Die Gesamt-Statistik aller Mitarbeiter,
sowie die Gesamt-Statistiken der einzelnen Mitarbeiter stellen jeweils ein Kapitel dar. Eine
Gesamtstatistik besteht aus dem Titel mit der Angabe des betrachteten Mitarbeiters und des
Datums, einem Tortendiagramm, das als Bild eingefügt wird, und einer Tabelle mit den
relevanten Daten.
Die Tagesstatistiken stellen jeweils ebenfalls ein Kapitel dar, das aus Titel und zwei Tabellen
bestehen: die Tabelle mit den Zeiten und die Tabelle mit den statistischen Werten.
Die Tabellen werden zwar eigentlich mit Objekten der Klasse „Chunk“ gefüllt, jedoch kann
einem übergeordneten Objekt, wie z.B. einer Zelle, direkt Strings übergeben werden, die dann
implizit umgewandelt werden, so dass der Entwickler die Hierarchie nicht unnötig tief
betrachten muss.
Implementierung
25
7 Implementierung
In diesem Kapitel wird punktuell auf die Implementierung eingegangen. Die grundlegenden
Datenstrukturen wurden bereits im Kapitel Analyse/Entwurf erläutert. Eine umfangreiche
Beschreibung der implementierten Klassen mittels Javadoc befindet sich auf der CD im
Anhang. Javadoc ist ein Software-Dokumentationswerkzeug, das aus Java-Quelltexten
automatisch HTML-Dokumentationsdateien erstellt. Javadoc wurde ebenso wie Java von Sun
Microsystems entwickelt und ist seit Version 2 ein Bestandteil des Java Development Kits.
Die Dokumentation kann somit durch spezielle Kommentare im Quelltext erstellt werden.
Dadurch können Beschreibungen für Interfaces, Klassen, Methoden und Felder über spezielle
Tags definiert werden. [wdoc08]. Die im Anhang befindliche Beschreibung ist eine so
generierte HTML-Datei und bietet eine Übersicht über die erstellten Klassen mit ihren
Attributen und Funktionen. Darüber hinaus befindet sich im Anhang ein ausführliches
Klassendiagramm, dem man die einzelnen Klassen und ihre Beziehungen zueinander
entnehmen kann. Dort ist auch die Struktur der Packages zu ersehen, die wie schon erwähnt,
auch die Modularisierung der Software abbildet. Die „get- und set-Methoden“ sind im
Klassendiagramm nicht angegeben.
Hier werden darüber hinaus nur einige Kernpunkte der Implementierung erläutert.
7.1 Umsetzung MVC
Wie schon erläutert wird innerhalb der Module das MVC-Prinzip umgesetzt. Dazu gibt es die
Schnittstelle „MyViews“. Diese Schnittstelle besitzt die Funktion „modelChanged()“ und
wird von allen Oberflächen implementiert, die ein Model beobachten. Oberflächen sind stets
durch Objekte der Klasse „JFrame“ realisiert, die unterschiedliche Swing-Komponenten
bereitstellt. Bei der Anzeige des Dienstplan und des Plans „Wer kann wann?“ wird die
Ausgabe gezeichnet. Das heißt, die Ausgabe wird auf einem „JPanel“ erzeugt und die
Funktion „paintComponent()“ überschrieben. Diese Funktion zeichnet auf die Oberfläche und
wird stets dann aufgerufen, wenn sich das Fenster in Größe oder Position ändert, oder explizit
durch den Befehl „repaint()“. Jede View meldet sich bei dem Model an. Dies ist realisiert
durch eine Liste aus „MyViews“ im Model, zu der sich die Oberflächen in ihrem Konstruktor
hinzufügen. Wenn sich nun das Model ändert, ruft es in allen Views der Liste die Funktion
„modelChanged()“ auf, die wegen der Schnittstelle „MyViews“ implementiert sein muss. Die
Views aktualisieren dann ihre Ausgabe, z.B. im Beispiel des Dienstplans durch Aufruf der
Funktion repaint().
Zu diesem Konstrukt aus Model und View, kommt nun noch der Controller. Dies ist realisiert
durch Klassen, die die Schnittstelle „ActionListener“ oder „ItemListener“ implementieren.
Diese Schnittstellen haben eine Methode, die beim Auftreten eines Ereignisses aufgerufen
wird. Ein Ereignis ist zum Beispiel das Drücken einer Schaltfläche auf der Oberfläche. Dazu
muss der „Listener“ an dieser Schaltfläche als sogenannter „Observer“ (Beobachter)
Implementierung
26
angemeldet sein. Dies geschieht durch vorhandene Funktionen der Swing-Komponenten.
Komponenten beispielsweise, die einen „ActionEvent“ auslösen, besitzen die Funktion
„addActionListener(ActionListener)“. Gibt man nun dem „Listener“ im Konstruktor eine
Referenz auf das Model mit, so kann der „Listener“ (bzw. Controller) bei Bedarf Methoden
des Models aufrufen, um es so zu ändern. Das MVC-Prinzip ist somit komplett. In dieser
Software bekommt
der
Listener
in
den Paketen „AgentsPackage“ und
„WerKannWannPackage“ eine Referenz auf die View, die den Listener erzeugt, statt auf das
Model. So kann der Listener eine Funktion der View aufrufen, die wiederrum Daten ihrer
Oberfläche nutzt und die Aufgabe an das Model weiterleitet. Dieses Verhalten ist anhand des
folgenden Beispiels gut zu sehen. Als erstes ist die Methode „actionPerformed()“ der Klasse
„AgentListener“ zu sehen, die die Methode „save()“ im Objekt „aev“ aufruft. Das Objekt
„aev“ ist vom Typ „AgentErstellenView“ und die Methode „save() ebenfalls unten (teilweise)
angegeben. Dort ist gut zu sehen, dass die Inhalte der Textfelder der Oberfläche zur weiteren
Bearbeitung der Geschäftsdaten genommen werden.
public void actionPerformed(ActionEvent evt)
{
String name = ((JComponent) evt.getSource()).getName();
[]
if (aev.eingabenOK())
{
aev.save();
}
}
[]
}
public void save()
{
if (!modus_neu)
{
Agent a = am.getAgentUsingStempelID(
((Agent) agents_combo.getSelectedItem()).getStempelID());
a.setNachname(nachname_field.getText());
a.setVorname(vorname_field.getText());
a.setShortName(shortname_field.getText());
a.setAnrufID(anrufID_field.getText());
a.setMailID(mailingID_field.getText());
a.setBo_flag(!cc_radio.isSelected());
a.setColor(color_panel.getBackground());
am.fireModelChanged();
}
else
[]
}
7.2 Klasse „Dienstplan“
Wie bereits erwähnt, hält diese Klasse ein Feld mit Objekten der Klasse „DienstWochen“ und
Referenzen auf Objekte der Klasse „WerKannWann“ und „AgentModel“. Außerdem besitzt
die Klasse eine Liste von „MyViews“-Objekten mit dem Namen „planViews“. Diese sind die
Views aus dem MVC-Prinzip, die stets die aktuellen Daten anzeigen. Darüber hinaus gibt es
das Attribut „current_KW“ vom Typ „int“ und das Attribut „current_day“ vom Typ
„Wochentag“. Diese Attribute geben den gerade betrachteten Tag an, so dass beim
Hinzufügen oder Löschen von Dienstzeiten der Zeitpunkt eindeutig bestimmt ist. Das
Hinzufügen, Löschen und Suchen von Dienstzeiten ist so implementiert, dass der Dienstplan
über Methoden der Klasse „DienstWochen“ den gewünschten „DienstTag“ ermittelt und die
entsprechende Funktion auf diesem Tag ausführt.
An folgendem Beispiel ist diese hierarchische Anordnung gut zu erkennen:
Implementierung
27
public void removeDienst(Agent a, int kw, Wochentag day)
{
if(dienstWochen[kw]==null)
{
return;
}
dienstWochen[kw].getDienstTag(day).removeDienst(a);
fireModelChanged();
}
Die Funktion „fireModelChanged()“ ist zentraler Bestandteil des MVC-Prinzip. Innerhalb
dieser Funktion werden alle Objekte der Liste „planViews“ benachrichtigt, das heißt die
Methode „modelChanged()“ der Schnittstelle „MyViews“ ausgeführt.
Es gibt außerdem eine Möglichkeit, den Dienstplan als csv-Datei auszugeben und einzulesen.
Als Beispiel im Folgenden die Funktion „printCsv(String file)“.
public void printCsv(String file) throws IOException
{
String s = "";
char t = ';';
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
for (int i = 1; i < 54; i++)
{
if (dienstWochen[i] != null)
{
DienstTag[] dienstTage = dienstWochen[i].getDienstTage();
for (DienstTag dt : dienstTage)
{
for (Dienstzeit ob : dt.getDienste())
{
s = ("" + i + t + dt.getTag() + t + ob.getAgent() +
t + ob.getVon() + t + ob.getBis());
bw.write(s);
bw.newLine();
}
}
}
}
bw.close();
}
Diese Funktion bietet in Kombination des Einlesens einer so angelegten csv-Datei, die
Möglichkeit neben der Speicherung des Objektes eine zusätzliche Sicherheitskopie des
Dienstplans im csv-Format anzulegen. Das hat den Vorteil, dass bei nachträglicher Änderung
der Datenstrukturen, wenn das Einlesen des serialisierten Objektes Probleme bereiten kann,
ein Einlesen des Plans unabhängig von der Datenstruktur erfolgen kann. Eine analoge
Funktion gibt es für die Klasse „AgentModel“, die aber hier nicht näher erläutert wird.
7.3 Klasse „Statistik“
Die Attribute der Klasse wurden bereits im Kapitel „Datentypen und –strukturen“ ausreichend
erläutert. Hier interessant sind die Methoden, die die Statistiken erstellen, die im Folgenden
nach dem Top-Down-Prinzip betrachtet werde.
Zuerst gibt es die Methoden „ermittleStatistikAll()“, „ermittleStatistikCC()“ und
„ermittleStatistikEinzel()“, die je nach relevanter Personengruppe von dem Controller des
Packages „StatistikPackage“ angestoßen wird. Diese Methoden setzen das Attribut
„AgentModel“ gemäß den Anforderungen und erzeugen ein Objekt der Klasse
Implementierung
28
„StatistikThread“. Die run-Methode dieser von Thread abgeleiteten Klasse sieht
folgendermaßen aus:
public void run()
{
[]
s.readCallCSV(sev.getCallCSV());
[]
s.readStempelCSV(sev.getStempelCSV());
[]
s.readMailCSV(sev.getMailCSV());
[]
s.readDienstplan();
[]
s.berechneDaten();
[]
s.statistikPdf();
}
Die Markierungen ( [ ] ) stehen für fehlende Codefragmente, die das Exception-Handling und
das Anzeigen eines Statusfenster betreffen und hier nicht weiter betrachtet werden müssen.
Das Objekt „s“ ist ein Objekt vom Typ „Statistik“. Die folgenden betrachteten Methoden
befinden sich demzufolge in der Klasse „Statistik“, das Objekt „sev“ ist vom Typ
„StatistikErstellenView“, also die Oberfläche, die die Eckdaten der Statistik bereitstellt.
Die Reihenfolge der eingelesenen csv-Dateien ist nicht zufällig gewählt. Die csv-Datei mit
den Daten der Email-Anwendung muss nach dem Einlesen der Zeiterfassungs-Datei erfolgen,
da der Bearbeitungszeitpunkt einer Email von der Anwesenheitszeit des Mitarbeiters abhängt.
Folgende Funktion beschreibt beispielhaft das Einlesen der Dateien:
public void readStempelCSV(File stempelCSV) throws IOException
{
char trennzeichen = ';';
BufferedReader br = new BufferedReader(new FileReader(stempelCSV));
String s = br.readLine();
while (((s = br.readLine()) != null
{
String[] daten = s.split("" + trennzeichen);
for (int i = 0; i < daten.length; i++)
{
daten[i] = getSub(daten[i]);
}
if (kompletterZeitraum)
{
setVonBis(daten[stempelDatum]);
}
if (Utilities.isZwischen(daten[stempelDatum], vonDatum, bisDatum))
{
Agent a = am.getAgentUsingStempelID(daten[stempelID]);
if (a != null)
{
String note = "";
if (daten.length > stempelNote)
{
note = daten[stempelNote];
}
if (!note.toLowerCase().startsWith("krank") &&
!note.toLowerCase().startsWith("urlaub") &&
!note.toLowerCase().startsWith("feiertag"))
{
a.addArbeitszeit(daten[stempelDatum], new MyTime(daten[stempelVon]),
new MyTime(daten[stempelBis]),
Double.parseDouble(daten[stempelDauer]));
}
Implementierung
29
}
}
}
br.close();
}
Das Einlesen geschieht mithilfe eines „BufferedReader“, die erste Zeile wird übersprungen,
da in der csv-Datei dort Überschriften sind. Die Zeilen werden nacheinander eingelesen und
als String bereitgestellt. Dieser wird dann mit der Funktion „split()“ der Klasse String
aufgeteilt und als Feld gespeichert. Die Funktion „getSub()“ entfernt Leerzeichen und
Anführungszeichen aus den einzelnen Strings. Soll der komplette Zeitraum abgebildet
werden, so wird die Methode „setVonBis()“ aufgerufen und der String aus der Spalte
„Datum“ übergeben. Diese Methode prüft, ob das Datum Anfangs- oder Endzeitpunkt ist und
setzt dieses dann entsprechend.
Sollte das Datum innerhalb des betrachteten Zeitraums liegen, wird aus dem AgentModel
derjenige Mitarbeiter ermittelt, dessen Zeiterfassungs-ID dem String in der Spalte „ID“
entspricht. Sollte ein Mitarbeiter gefunden werden und in der Spalte „Bemerkung“ keine
spezielle Eintragung vorhanden sein, die anzeigt, dass der Datensatz ignoriert werden soll, so
wird dem Mitarbeiter vom Typ „Agent“ die Zeit aus den entsprechenden Spalten hinzugefügt.
Nachdem nach diesem Schema die benötigten csv-Dateien eingelesen wurden, wird der
Dienstplan ausgewertet. Dies geschieht prinzipiell wie das Einlesen der csv-Dateien und muss
hier nicht weiter betrachtet werden. Interessanter dagegen ist die Methode „berechneDaten()“:
public void berechneDaten()
{
for (Agent ag : am.getAgents())
{
if (ag.getTage() != null)
{
for (StatistikTag stag : ag.getTage())
{
stag.berechneStatistik();
}
ag.berechneGesamtStatistik();
}
else
{
ag.setGesamtTag(new StatistikTag("01.01.2000"));
}
}
am.berechneGesamtAgent();
zielNr = Mergesort.mergesort(reduceListe(zielNr));
am.getGesamtAgent().setTage(Mergesort.mergesortS(am.getGesamtAgent().getTage()));
for (Agent ag : am.getAgents())
{
ArrayList<StatistikTag> dt = ag.getTage();
if (dt != null)
{
ag.setTage(Mergesort.mergesortS(dt));
}
}
}
Zuerst wird für jeden Mitarbeiter des Models jeder StatistikTag ausgewertet. Dies geschieht
mit der Funktion „berechneStatistik()“, die die Daten eines einzelnen StatistikTages
auswertet. Danach wird die gesamte Statistik pro Mitarbeiter berechnet. Sollte der Mitarbeiter
keine statistischen Tage besitzen, so wird als gesamte Statistik ein fiktiver Tag erzeugt.
Anschließend wird die Funktion „berechneGesamtAgent()“ auf dem AgentModel ausgeführt,
die den gesamten Schnitt der Mitarbeiter berechnet und unten näher beschrieben ist.
Implementierung
30
Das Objekt „zielNr“ verwaltet alle angewählten Rufnummern. Die Funktion „reduceListe()“
entfernt alle Rufnummern mit weniger als 100 Anwahlen pro Woche aus der Liste, die
hinterher noch sortiert wird. Anschließend werden die StatistikTage noch nach Datum
sortiert.
Nachdem als relevanten Daten in der Anwendung vorhanden sind, findet nun noch die
Ausgabe mit der Funktion „statistikPdf()“ statt.
public void statistikPdf()
{
File file;
JFileChooser f = new JFileChooser();
f.showSaveDialog(null);
file = f.getSelectedFile();
Document document = new Document(PageSize.A4);
if(file!=null)
{
try
{
PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();
document.add((am.createGesamtStatistikPage(this)));
for (Agent a : am.getAgents())
{
if (a.getGesamtTag().getArbeitszeit() != 0)
{
document.add(a.createAgentGesamtStatistikPage(am, this));
for (StatistikTag st : a.getTage())
{
document.add(st.createTagesStatistikPage(am.getGesamtAgent(), a));
}
}
}
document.add(am.createStundenanzahlPage(this));
document.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (DocumentException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Hier wird, wie bereits beschrieben, ein pdf-Dokument mit Hilfe von iText erzeugt und erst
das Kapitel mit der gesamten Statistik, der sogenannten „Teamleiterübersicht“ hinzugefügt.
Anschließend wird für jeden Mitarbeiter, sofern er während des Zeitraums anwesend war,
seine Gesamtstatistik als Kapitel hinzugefügt und für jeden seiner StatistikTage ein Kapitel
mit den täglichen Daten. Dazu stellen die Klassen entsprechende Methoden bereit, die die
Kapitel zurückgeben. Ein Beispiel ist unter dem Punkt „Klasse Agent“ erläutert.
Implementierung
31
7.4 Klasse „AgentModel“
Das AgentModel fungiert wie bereits erwähnt als Model des Packages „AgentPackage“.
Neben der Datenhaltung der Mitarbeiter wie im Kapitel „Datentypen und –strukturen“
beschrieben, bietet die Klasse Funktionen, um Mitarbeiter anhand verschiedener Kriterien zu
ermitteln.
Eine der interessantesten Funktionen der Software befindet sich ebenfalls in dieser Klasse.
Die Funktion „berechneGesamtAgent()“ wird von der Klasse „Statistik“ aufgerufen und
veranlasst, dass die Daten, die während des Einlesens der csv-Dateien in die Objekte der
Mitarbeiter geschrieben wurden, ausgewertet werden.
public void berechneGesamtAgent()
{
gesamtAgent = new Agent("Gesamt", "Statistik", "", "", "", false, Color.WHITE);
for (Agent a : agents)
{
if (a.getTage() == null)
{
a.setTage(new ArrayList<StatistikTag>());
}
for (StatistikTag st : a.getTage())
{
if (gesamtAgent.getTag(st.getDatum()) == null)
{
gesamtAgent.getTage().add(new StatistikTag(st.getDatum()));
}
StatistikTag temp = gesamtAgent.getTag(st.getDatum());
// Nur Tage, an denen telefoniert/gemailt wurde, zählen in die Statistik
if (!st.nurGestempelt() && !st.nichtAnwesend())
{
temp.setAnzahlIncomingCalls(temp.getAnzahlIncomingCalls() +
st.getAnzahlIncomingCalls());
temp.setAnzahlOutgoingCalls(temp.getAnzahlOutgoingCalls() +
st.getAnzahlOutgoingCalls());
temp.setTelefonZeit(temp.getTelefonZeit() + st.getTelefonZeit());
temp.setAnzahlMails(temp.getAnzahlMails() + st.getAnzahlMails());
temp.setSprechzeitGesamt(temp.getSprechzeitGesamt() +
st.getSprechzeitGesamt());
temp.setAnzahlAgents(temp.getAnzahlAgents() + 1);
}
temp.setArbeitszeit(temp.getArbeitszeit() + st.getArbeitszeit());
}
}
for (StatistikTag st : gesamtAgent.getTage())
{
st.setEingestempelt(new MyTime(0, 0));
st.setAusgestempelt(new MyTime(0, 0));
st.setNichtTelefoniert(false);
st.setNichtEingetragen(false);
st.berechneStatistik();
}
gesamtAgent.berechneGesamtStatistik();
double anteil = 0;
// für alle Mitarbeiter wird der jeweilige Anteil an der Arbeitszeit ermittelt
for (Agent a : agents)
{
anteil = a.getGesamtTag().getArbeitszeit() /
gesamtAgent.getGesamtTag().getArbeitszeit();
anteil = ((int) (anteil * 10000)) / 100.0;
a.setAnteilArbeitszeit(anteil);
}
anteil = gesamtAgent.getGesamtTag().getArbeitszeit() /
gesamtAgent.getGesamtTag().getArbeitszeit();
anteil = ((int) (anteil * 10000)) / 100.0;
gesamtAgent.setAnteilArbeitszeit(anteil);
}
Implementierung
32
Zuerst wird ein fiktiver Mitarbeiter (gesamtAgent) erstellt, der den Gesamtschnitt
repräsentiert. Anschließend werden bei jedem Mitarbeiter die StatistikTage aufgerufen und
die Daten zu dem „gesamtAgent“ hinzugefügt. Sind an dem betrachteten Tag noch keine
Daten vorhanden, wird ein neuer StatistikTag im „gesamtAgent“ erstellt. Anschließend wird
auf dem fiktiven Mitarbeiter die Funktion „berechneGesamtStatistik()“ aufgerufen. Diese
berechnet den Durchschnitt der Daten eines Mitarbeiters und wird im nächsten Abschnitt
erläutert. Zuletzt wird für jeden Mitarbeiter den Anteil an der gesamten Arbeitszeit gerechnet.
Wichtig hierbei ist, dass alle Zeiten dort mitgezählt werden, auch die, an denen ein
Mitarbeiter weder telefoniert noch Emails bearbeitet hat. Die Arbeitszeit wird auf zwei
Nachkommastellen genau in Prozent angegeben.
7.5 Klasse „Agent“
Neben eher uninteressanten Aspekten wie das Setzen und Lesen von Attributen ist eine
wichtige Funktion die bereits erwähnte Methode „berechneGesamtStatistik()“
public void berechneGesamtStatistik()
{
gesamtTag = new StatistikTag("01.01.1000");
// Tage an denen telefoniert/Mails bearbeitet wurde.
int i = 0;
for (StatistikTag st : tage)
{
// Wenn Mitarbeiter da war und telefoniert bzw Mails bearbeitet hat
if (!st.nurGestempelt() && !st.nichtAnwesend())
{
gesamtTag.setIncoming_calls_pro_stunde
(gesamtTag.getIncoming_calls_pro_stunde() +
st.getIncoming_calls_pro_stunde());
gesamtTag.setOutgoing_calls_pro_stunde
(gesamtTag.getOutgoing_calls_pro_stunde() +
st.getOutgoing_calls_pro_stunde());
gesamtTag.setMails_pro_stunde
(gesamtTag.getMails_pro_stunde() +
st.getMails_pro_stunde());
gesamtTag.setSprechzeit_pro_call
(gesamtTag.getSprechzeit_pro_call() +
st.getSprechzeit_pro_call());
i++;
}
gesamtTag.setArbeitszeit(gesamtTag.getArbeitszeit() + st.getArbeitszeit());
}
if (i != 0)
{
gesamtTag.setIncoming_calls_pro_stunde
(gesamtTag.getIncoming_calls_pro_stunde() / i);
gesamtTag.setOutgoing_calls_pro_stunde
(gesamtTag.getOutgoing_calls_pro_stunde() / i);
gesamtTag.setMails_pro_stunde(gesamtTag.getMails_pro_stunde() / i);
gesamtTag.setSprechzeit_pro_call(gesamtTag.getSprechzeit_pro_call() / i);
}
}
Analog zur oben beschriebenen Funktion wird ein fiktiver StatistikTag erstellt. Dort wird die
Summe der eingetragenen Anrufe und Emails und Sprechzeiten eingetragen. Der Zähler „i“
gibt die Anzahl derjenigen Tage an, an denen ein Mitarbeiter nicht nur als anwesend
gekennzeichnet ist, sondern auch telefoniert oder Emails bearbeitet hat. Die Arbeitszeit ist
davon unabhängig. Anschließend werden alle relevanten Daten durch den Zähler „i“ geteilt,
Implementierung
33
was dazu führt, dass sich reine Anwesenheits-Tage nicht negativ auf Werte wie
„calls_pro_stunde“ auswirken.
Als weitere wichtige Funktion, und die letzte, die in diesem Kapitel betrachtet wird, stellt die
Klasse „Agent“ die Methode „createAgentGesamtStatistikPage()“ bereit. Diese gibt ein
Objekt des Typs „Chapter“ der Bibliothek von iText zurück.
public Chapter createAgentGesamtStatistikPage(AgentModel model, Statistik s)
{
Agent gesamtAgent = model.getGesamtAgent();
// erzeugt das Tortendiagramm und speichert es ab
new StatistikTortenFrame(model, this);
Image img = Image.getInstance("img/testb.jpg");
Chapter pdf = new Chapter(0);
pdf.setNumberDepth(-1);
Paragraph p = new Paragraph("Gesamt-Statistik", FontFactory.getFont
(FontFactory.HELVETICA, 20, Font.BOLD, Color.BLACK));
p.setAlignment(Paragraph.ALIGN_CENTER);
pdf.setTitle(p);
p = new Paragraph(toString(), FontFactory.getFont
(FontFactory.HELVETICA, 16, Font.BOLD, Color.BLACK));
p.setAlignment(Paragraph.ALIGN_CENTER);
pdf.add(p);
p = new Paragraph("von " + s.getVonDatum() + " bis " + s.getBisDatum(),
FontFactory.getFont(FontFactory.HELVETICA, 18, Font.NORMAL, Color.BLACK));
p.setAlignment(Paragraph.ALIGN_CENTER);
pdf.add(p);
double summeAgent = gesamtTag.getIncoming_calls_pro_stunde() +
gesamtTag.getOutgoing_calls_pro_stunde() + gesamtTag.getMails_pro_stunde();
double summeGesamt = gesamtAgent.getGesamtTag().getIncoming_calls_pro_stunde() +
gesamtAgent.getGesamtTag().getOutgoing_calls_pro_stunde()
+ gesamtAgent.getGesamtTag().getMails_pro_stunde();
Font f = FontFactory.getFont(FontFactory.HELVETICA, 11, Font.NORMAL, Color.BLACK);
Table uebersichtTable = new Table(2);
uebersichtTable.setPadding(2);
uebersichtTable.setBorderWidth(0);
uebersichtTable.setSpacing(0);
Cell c = new Cell(new Phrase("Anwesenheitszeit:", f));
c.setBorderWidth(0);
uebersichtTable.addCell(c);
c = new Cell(new Phrase(Utilities.trimDouble(gesamtTag.getArbeitszeit()) +
" (" + tage.size() + " Tage)", f));
c.setBorderWidth(0);
uebersichtTable.addCell(c);
c = new Cell(new Phrase("Anteil an Gesamtarbeitszeit", f));
c.setBorderWidth(0);
uebersichtTable.addCell(c);
c = new Cell(new Phrase(Utilities.trimDouble(getAnteilArbeitszeit()), f));
c.setBorderWidth(0);
uebersichtTable.addCell(c);
[]
pdf.add(new Phrase(" "));
pdf.add(new Paragraph("Verteilung Arbeitszeit", f));
pdf.add(img);
pdf.add(new Phrase(" "));
pdf.add(new Paragraph("Übersicht gesamt: ", f));
pdf.add(uebersichtTable);
return pdf;
}
In dieser Methode wird zuerst das Tortendiagramm durch das Erzeugen eines Objektes des
Typs „StatistikTortenFrame“ erstellt, das das erzeugte Diagramm als Bild auf der Festplatte
Implementierung
34
abspeichert. Dieses Bild wird dann anschließend als Image der iText-Bibliothek eingelesen.
Danach werden die Überschriften als Absätze angegeben und dem Kapitel hinzugefügt.
Anschließend wird eine Tabelle erzeugt und mit den relevanten Daten gefüllt. Die einzelnen
Zellen sind zugunsten der Übersichtlichkeit hier vernachlässigt, das Prinzip der Erzeugung
der einzelnen Zellen ist jedoch immer identisch.
Zuletzt werden das Tortendiagramm und die Tabelle dem Kapitel hinzugefügt und dieses
zurückgegeben.
Test
35
8 Test
Die Software wird mit unterschiedlichen Verfahren getestet, um die Funktionalität
sicherzustellen, die Robustheit bei hoher Belastung und falschen Eingaben und die
Korrektheit einzelner Funktionen. Das Testen der Software ist wichtiger Bestandteil der
Entwicklung und wesentlich für die Qualitätssicherung.
8.1 Funktionstests
Neben den üblichen Entwicklertests während der Implementierung, wurde das Programm
immer wieder gegen die Spezifikation, also gegen die Anforderungen, getestet. Dazu wurden
die Testprotokolle in Anhang D verwendet. In der linken Spalte ist der Testfall mit Angabe
der auszuführenden Schritte angegeben, in der Mitte das erwartete Ergebnis und rechts die
Beurteilung. Diese kann den Wert 0, 1 oder 2 annehmen. Der Wert 0 steht für korrektes
Verhalten, 1 für leichte Fehler, also Fehler, die die Funktionalität nicht beeinflussen, aber
trotzdem korrigiert werden sollten. Ein Beispiel hierfür wäre eine falsch formatierte Ausgabe.
Der Wert 2 steht für schwere Fehler, die ein weiteres Arbeiten verhindern oder zu falschen
Ergebnissen führen, zum Beispiel ein Programmabsturz oder eine falsche Anzeige von Daten.
Zusätzlich zu den protokollierten Funktionstests, wurden Statistiken erstellt und mit alten,
manuell erstellten Statistiken abgeglichen. Diese Tests zeigten, dass die manuellen Statistiken
prinzipiell übereinstimmten, aber sehr viel ungenauer sind bezüglich der relevanten
Kennzahlen, wie beispielsweise „Anrufe pro Stunde“. Dieses Vorgehen kann auch unter die
sogenannten Akzeptanztests einordnet werden, weil so der Auftraggeber ersehen konnte, ob
die Aufbereitung der Daten, seinen Vorstellungen entspricht.
8.2 Akzeptanztests
Diese Tests sind Blackbox-Tests, das heißt, die Software wird aus Anwendersicht und ohne
Kenntnisse über die technische Umsetzung getestet. Hierzu wurde die Software dem Kunden
zum Testen übergeben. Neben der Übersichtlichkeit und intuitiven Bedienung, wurde
beurteilt, ob die ausgegebenen pdf-Dokumente, den Vorstellungen entsprechen. Das Protokoll
dazu befindet sich im Anhang. Außer einigen Formatierungswünschen, wurden die
Dokumente als sehr gut und übersichtlich beurteilt. Die Oberfläche entsprach ebenfalls von
Anfang an den Vorstellungen des Kunden, lediglich die Datumseingabe bei der Oberfläche
zur Erstellung der Statistiken sollte über ein Textfeld realisiert werden und nicht über
Auswahlboxen. Auf eine umfassende Plausibilitätsprüfung des Datums mittels regulären
Test
36
Ausdrücken konnte nach Kundenaussage auch verzichtet werden, so dass nicht alle
Falscheingaben abgefangen werden müssen.
8.3 Robustheitstests
Diese nicht funktionalen Systemtests, sollen das Verhalten bei falschen Eingaben testen.
Wichtig ist, dass bei Falscheingaben, das System diese erkennt und eine sinnvolle Meldung
ausgibt, die aus Anwendersicht verständlich ist. Ebenso soll es sich bei falschen csv-Dateien
verhalten. Fehler beim Einlesen von csv-Dateien sind zum überwiegenden Teil sogenannte
„IllegalArgumentException“, da die als String vorliegenden Daten entweder vergleichend
genutzt werden (hier gibt es keine Ausnahmefehler, sondern nur eventuell einen fehlenden
Datensatz in der Bearbeitung) oder es wird der String, der das Datum oder die Zeit
repräsentiert, ausgewertet. Hier kommt es dann zu der eben benannten Ausnahme, da bei
falschen csv-Dateien Strings in den Spalten stehen, die sich nicht z.B. in Integer umwandeln
lassen. Diese Ausnahme soll durch eine Fehlermeldung abgefangen werden, so dass der
Anwender ersehen kann, in welcher Datei das Problem aufgetreten ist. Weiterer Punkt bei der
Robustheit ist das Abbrechen von Aktionen, wie zum Beispiel eines Auswahldialogs zur
Angabe eines Speicherorts. Auch hier soll das Programm mit diesem Verhalten umgehen
können. Diese Fälle sind im Protokoll zu Robustheitstests im Anhang zu finden.
Des Weiteren wurden sogenannte Lasttests durchgeführt, das heißt, das System unter
besonderer Belastung, also großen Inputdateien oder schnell aufeinanderfolgenden Eingaben
getestet. Des Weiteren wurden die Zeiten zum Einlesen der csv-Dateien, und für deren
Auswertung getestet. Bei einer Statistik, die über 3 Monate erstellt wird, was den Standardfall
darstellt, werden ca. 90.000 bis 100.000 Anruf-Datensätze eingelesen, 6000 bis 8000 EmailDatensätze und 3000 bis 4000 Datensätze aus der Zeiterfassung. Eine solche Statistik soll sich
unter einer Minute erstellen lassen. Die Tests mit Daten dieser Größenordnung ergaben Zeiten
von unter 30 Sekunden. Aufgrund der Effizienzbetrachtung in Kapitel 9 sind weitere Tests
mit größeren Daten nicht notwendig, da die Zeit lediglich linear ansteigt.
8.4 Unit-Tests
Unit-Tests dienen der Überprüfung von einzelnen Funktionen einer Software und sind als
einziger der hier vorgestellten Tests sogenannte Whitebox-Verfahren, also Tests, bei denen
Kenntnisse des Quelltextes nötig sind.
Getestet wurden die selbstgeschriebenen Klassen „MyTime“ und „Utilities“, die eine Anzahl
an statischen und nicht statischen Funktionen bereitstellen, beispielsweise zur Bearbeitung
von Strings, die ein Datum repräsentieren oder Methoden auf Objekten vom Typ „MyTime“.
Kernaufgabe eines Unit-Tests ist der Vergleich zwischen einem Soll-Ergebnis und dem IstErgebnis einer Funktion. Java stellt dazu einige Funktionen bereit, unter anderem
assertSame(Object,Object), welche prüft, ob die zwei Parameter auf das selbe Objekt
referenzieren oder assertEquals(Object, Object), welche auf Gleichheit prüft. Diese Prüfung
wird bei komplexen Datentypen mit der Funktion „equals()“ realisiert, bei einfachen
Datentypen mit dem Standardvergleich „==“. Als weiterer Parameter, kann ein
Toleranzbereich vom Typ double angegeben werden, der beim Vergleich einfacher Werte
eine Ungenauigkeit zulässt. So liefert die Funktion assertEquals( (10/3), 3.33, 0) den Wert
„false“, während assertEquals( (10/3), 3.33, 0.01) „true“ liefert.
Die Qualität bzw. Aussagekraft von Unit-Tests hängt stark von der Auswahl der Testdaten ab.
Um eine sinnvolle Auswahl an Testdaten zu treffen, werden sogenannte Testklassen gebildet.
Test
37
Wird eine Funktion mit dem Datentyp „Integer“ getestet, bietet es sich an, die Eingabedaten
in drei Klassen zu Teilen: Werte über 0, Werte unter 0, und der Wert 0 selber. Innerhalb jeder
Klasse, werden nun repräsentative Werte gewählt. Insbesondere die Grenzbereiche gehören
mit zu den repräsentativen Werten. Die Aufteilung des Typs Integer könnte also wie folgt
realisiert werden:
Klasse
1
2
3
Wertebereich
MIN bis 0
0
0 bis MAX
Repräsentanten
minValue(), -20,-1
0, -0
1, 33, maxValue()
Tabelle 8.1: Testklassendefinition „Integer“
Wie die Parameter einer Funktion in Testklassen eingeteilt werden, hängt stark von der
Funktion selber ab. So kann beim obigen Beispiel eine zusätzliche Unterteilung in gerade und
ungerade Zahlen oder in andere Wertebereiche sinnvoll sein. Werden mehrere Parameter
einer Funktion übergeben, so muss jede mögliche Kombination aus Parameterklassen getestet
werden.
In Anhang sind die erstellen Testklassen nach Funktionen der Klassen „MyTime“ und
„Utilities“ geordnet dargestellt.
Effizienzbetrachtung
38
9 Effizienzbetrachtung
Da in der Software große Datenmengen verarbeitet werden, ist eine Effizienzbetrachtung
unumgänglich, um auch bei großen Mengen von zu verarbeitenden Eingabewerten, eine
akzeptable Bearbeitungszeit zu gewährleisten. Da der Dienstplan nur für ein Jahr gespeichert
wird, kann diese Größe als fix angesehen werden. Die Anzahl der möglichen Diensttage
überschreitet den Wert von 53 * 7, also 371, nicht. Variable Größen dagegen sind die Anzahl
der Mitarbeiter und die Anzahl der eingelesenen Datensätze.
Die Effizienz eines Algorithmus wird in Form einer Komplexitätsklasse angegeben („ONotation“), die aussagt, in welchem Verhältnis die Anzahl der Bearbeitungsschritte bezüglich
der Eingabemenge im schlechtesten Fall steigt. Wird beispielsweise die Eingabemenge einer
Funktion mit Komplexitätsklasse O(n²) verdoppelt, so steigt die Anzahl der
Bearbeitungsschritte bezüglich der Eingabemenge um den Faktor 4. Tabelle 9.1
veranschaulicht die Auswirkungen der gängigen Komplexitätsklassen. Angegeben ist die Zeit,
wenn pro Eingabewert 100 Operationen folgen und pro Sekunde 1 Million Operationen
ausgeführt werden (Dies ist auf die Anwendung und die spätere Umgebung angepasst).
O(n)
O(n*log n)
O(n²)
O(2n)
n=10
0,001 s
0,003 s
0,01 s
0,1 s
n=50
0,005 s
0,028 s
0,25 s
>3000 Jahre
n=500
0,05 s
0,448 s
25 s
-
n=10.000
1s
13,28 s
2,7 Std
-
n=1.000.000
100 s
33 min
> 3 Jahre
-
Tabelle 9.1: Laufzeiten bei unterschiedlichen Komplexitäten
9.1 Eingabegröße „Mitarbeiter“
Die Anzahl der Mitarbeiter spielt an vielen Stellen des Programms eine Rolle. Beim Einfügen
eines neuen Mitarbeiters werden folgende Schritte ausgeführt:
1. Prüfen, ob ein Mitarbeiter mit der gleichen Zeiterfassungs-ID vorhanden ist. Dies
geschieht durch Suche im unsortierten Feld, also O(n)
2. Aktualisieren der Callcenter-Mitarbeiter-Liste. Dies geschieht ebenfalls mit einer
einfachen Schleife über das Feld, also O(n)
3. Sortieren der beiden Mitarbeiterfelder mit Mergesort, also 2* O(n*log n)
4. Aktualisieren der Views. Diese beziehen ihre Informationen durch einen einmaligen
Lauf über das Feld , also in O(n)
Dies führt nach einer Abschätzung nach oben zu einer Gesamtkomplexität von O(n*log n).
Dies ist bei einer Mitarbeiteranzahl, die im Normalfall weit unter 100 liegt, ein nicht
nennenswerter Faktor.
Effizienzbetrachtung
39
Alle weiteren Methoden, die auf den Mitarbeitern durchgeführt werden, finden mit einem
einfachen Schleifendurchlauf statt, also in O(n). Findet eine Änderung statt, kommt zusätzlich
noch ein Aufwand zum Sortieren von O(n*log n) hinzu, so dass bei der gesamten Bearbeitung
die Mitarbeiterzahl mit O(n*log n) die Effizienz beeinflusst.
9.2 Eingabegröße „Anzahl Datensätze“
Weitaus kritischer für die Bearbeitungszeit ist das Einlesen und Verarbeiten der Datensätze
aus den csv-Dateien. Hier bewegen wir uns in einem Bereich von mehreren 10.000
Datensätzen, was zu schlechten Laufzeiten führen kann, wie in Tabelle 9.1 zu sehen ist.
Das Einlesen ist so gestaltet, dass jede Zeile der csv-Datei, die hier jeweils einen Datensatz
darstellt, eingelesen und direkt verarbeitet wird.
Folgende Schritte werden beim Einlesen der Anruferdatei pro Datensatz durchgeführt:
1. Aufsplitten des Strings in ein String-Feld in O(1).
2. Setzen der Randzeiten der Statistik. Da dies mit einem direkten Vergleich der bereits
gesetzten Zeiten erfolgt, geschieht dies ebenfalls in O(1).
3. Inkrementieren des Zählers für die angewählten Nummern. Da dies unabhängig von
der Anzahl Datensätze ist, ist dies ebenfalls eine konstante Anzahl von Operationen.
4. Hinzufügen des Anrufs bei dem entsprechenden Mitarbeiter. Das Suchen eines
Mitarbeiters geschieht, wie eben gesehen, in O(n). Da sich das „n“ in diesem Fall aber
auf die Mitarbeiterzahl bezieht, wird dieses „n“ hier konstant gesetzt, da wir nur die
Datensätze als variable Größe betrachten. Das Hinzufügen erfolgt über eine Suche
über die bisher erstellten Statistiktage des gefundenen Mitarbeiters, was wiederum
eine Größe darstellt, die selten den zweistelligen Bereich verlässt, und hier auch nicht
betrachtet wird, sondern als Konstante angesehen wird. Somit findet auch das
Hinzufügen eines Anrufs in O(1) statt.
Zusammenfassend ist also ersichtlich, dass wir pro Datensatz eine konstante Anzahl an
Bearbeitungsschritten haben, also hier die Komplexitätsklasse n*O(1), also O(n) vorliegt.
Das Einlesen der anderen Dateien findet nach dem gleichen Konzept statt, insbesondere, was
das für die Effizienz relevante Verhalten betrifft.
So kann man also feststellen, dass die Zeit für das Einlesen der csv-Dateien linear mit
steigender Datensatzanzahl wächst. Um dies nochmals zu verifizieren und grafisch
darzustellen, wurden Statistiken mit unterschiedlicher Datensatzanzahl erstellt, und die Zeit
gemessen. Die einzelnen csv-Dateien wurden alle drei jeweils entsprechend vergrößert. Die
Ergebnisse sind der Tabelle 9.2 und der Abbildung 9.1 zu entnehmen.
Anzahl Datensätze (n)
98.000
56.000
28.000
15.000
10.000
5.000
1000
Zeit in Sekunden
29.3
17,1
8,3
4,3
3,02
1,52
0,28
Tabelle 9.2: Laufzeit in Abhängigkeit der Datensätze
1000
5000
9000
13000
17000
21000
25000
29000
33000
37000
41000
45000
49000
53000
57000
61000
65000
69000
73000
77000
81000
85000
89000
93000
97000
Effizienzbetrachtung
40
Komplexität
35
30
25
20
15
10
5
0
Abbildung 9.1: Laufzeit in Abhängigkeit von den Datensätzen
Zukunftsaussichten/Erweiterbarkeit
41
10 Zukunftsaussichten/Erweiterbarkeit
Da Softwareentwicklung kein abgeschlossenes Projekt, sondern vielmehr ein fortwährender
Prozess ist, wird im Folgenden erläutert, welche weiteren Schritte möglich sind.
Wie bereits erwähnt, ist die Software modular aufgebaut. So ist es zum einen möglich,
Module hinzuzufügen, zum anderen, die einzelnen Module weitgehend unabhängig
voneinander zu erweitern. Durch das MVC-Prinzip wird eine von der Oberfläche
abgekapselte Datenhaltung gewährleistet, auf die als Schnittstelle zum Modul zugegriffen
werden kann. So können zusätzliche Module problemlos die Daten der anderen Module
nutzen. Ein Beispiel hierfür wäre eine Erweiterung zum Aufstellen der Erreichbarkeitsstatistik
eines Callcenters. Diesbezügliche Daten aus der Telefonanlage müssten ähnlich wie im
Modul Statistik eingelesen werden und würden mit dem gespeicherten Dienstplan (also dem
Modul Dienstplan) in Verbindung gebracht und aufbereitet.
Eine Erweiterung eines Moduls wäre zum Beispiel die Speicherung aller für die
Personalführung relevanten Daten eines Mitarbeiters. Diese Erweiterung des Moduls
„Mitarbeiter“ könnte einen „Event-Reminder“ bereitstellen, also eine „Ereignis-Erinnerung“
der die Teamleitung rechtzeitig an Geburtstage oder das bevorstehende Ablaufen von
Arbeitsverträgen erinnert.
Neben solchen Erweiterungen besteht in Zukunft auch die Möglichkeit die abgelehnte
Datenbankanbindung zu realisieren. Dies wäre dann zu überlegen, wenn ein Zugriff auf alle
Datenbanken der einzelnen Systeme (Zeiterfassung, Email-Programm, Telefonanlage)
möglich ist, oder eine langfristige Speicherung der statistischen Daten gewünscht ist.
Obwohl die Anwendung speziell für die getmobile AG entwickelt wurde, ist sie auch für
andere Callcenter interessant, oder allgemein für Unternehmen, in denen die Beurteilung
eines Mitarbeiters (auch) über quantitativ messbare Werte erfolgt, wie beispielsweise in der
Produktion oder im Versand.
Fazit
42
11 Fazit
Die Anwendung wurde entsprechend den Anforderungen implementiert. Die Oberfläche
wurde so gestaltet, dass sie ein übersichtliches Bild abgibt und intuitiv zu bedienen ist.
Die exportierten Dienstpläne unterscheiden sich von den bisher mit Excel erstellten Plänen
nur insofern, dass sie genauer und übersichtlicher sind. So kam es früher durch
Verschiebungen vor, dass die angezeigten Balken nicht die tatsächlichen Anfangs- und
Endzeiten abbildeten und auch die angegebene Arbeitszeit nicht der Länge des Balkens
entsprach.
Das Erstellen der Dienstpläne ist komfortabler, da nicht mit grafischen Elementen gearbeitet
werden muss, sondern nur die Zeiten eingegeben werden müssen, während die grafische
Aufbereitung automatisiert erfolgt. Darüber hinaus gibt es den parallelen Plan, der eine
Übersicht bietet, wann welcher Mitarbeiter arbeiten kann. Diese Information war bisher auf
verschiedenen Notizzetteln und Emails vermerkt, was zu Unübersichtlichkeit führte. Die
Ausgabe mit den eingetragenen Stunden- und Mitarbeiter-Anzahlen kann mit anderen
Reports, zum Beispiel über die Erreichbarkeit an kritischen Tagen (Brückentagen,
Weihnachten), zusammen ausgewertet werden und so zur Qualitätsprüfung der Planerstellung
beitragen.
Die generierten pdf-Dateien übertrafen die Erwartungen des Kunden, was die Gestaltung und
die Übersichtlichkeit betrifft. Alle gewünschten Daten werden in ansprechender Form
dargestellt und bieten in Zukunft eine hervorragende Grundlage, um die Leistungen der
Mitarbeiter zu beurteilen. Zu den üblichen Quartals-Statistiken, kann auch die Leistung eines
einzelnen Mitarbeiters über einen bestimmten Zeitraum generiert werden, um diesen gezielt
zu beurteilen, beispielsweise, um den Wunsch nach einer Gehaltserhöhung zu diskutieren.
Dies war bisher nur unter einem kaum lohnenswerten Aufwand möglich. Durch die
Unterscheidung zwischen „Callcenter“ und „Backoffice“, ist es darüber hinaus möglich, die
Statistik auf eine Gruppe zu beschränken, um gezielt bestimmte Mitarbeiter miteinander zu
vergleichen.
In Anhang A und B sind Vergleiche zwischen manuell erstellten und den durch die
Anwendung bereitgestellten Plänen und Statistiken zu sehen.
Das Erstellen der Quartals-Statistiken kann in weniger als 10 Minuten erfolgen. Bisher
wurden die Statistiken manuell erstellt, was einen Zeitaufwand von ca. 6 Tagen bedeutete. Bei
dem aktuell gezahlten Teamleitergehalt, schlägt ein Arbeitstag mit ca. 150 Euro zu Buche,
was also pro Quartals-Statistik eine Einsparung von knapp 900 Euro ermöglicht. Aufs Jahr
gerechnet wird für das Unternehmen allein bei den Quartals-Statistiken ein Betrag von 3600
Euro gespart - bei höherer Qualität und zeitnaher Erstellung der Mitarbeiterbewertungen.
Das Projekt kann also zusammenfassend, sowohl aus technischer als auch aus
betriebswirtschaftlicher Sicht als sehr erfolgreich beurteilt werden.
Literatur
43
Literatur
GMweb08
Internetauftritt der Getmobile AG im Juni 2008
http://www.getmobile.ag/Firmenprofil
Insel08
Ullenboom, Christian: Java ist auch eine Insel, Programmieren mit der Java
Standard Edition Ausgabe 6. Auflage 7. Galileo Press, November 2007.
iText08
Lowagie, Bruno: iText in Action, creating and manipulating PDF. Mannig,
Dezember 2006
pattern08
Eilebrecht, Karl: Patterns Kompakt: Entwurfsmuster für effektive
Softwareentwicklung. Spektrum Akademischer Verlag, Auflage 2, September
2006
wdoc08
Sun Javadoc Tool Homepage, Juni 2008
http://java.sun.com/j2se/javadoc/
Index
44
Index
A
ActionListener ............................................ 25
Agent ............................................................ 1
AgentModel ................................................ 31
Akzeptanztests ............................................ 35
Analyse ....................................................... 18
ArrayList .................................................... 21
assertEquals ................................................ 36
iText ........................................................... 23
J
Blackbox-Tests ........................................... 35
BufferedReader ........................................... 23
BufferedWriter ............................................ 23
Javadoc ....................................................... 25
Java-Swing ................................................. 18
JButton ....................................................... 18
JCheckBox .................................................. 19
JComboBox ................................................ 19
JFrame ........................................................ 18
JLabel ......................................................... 18
JPanel ......................................................... 19
JRadioButton .............................................. 19
JScrollPane ................................................. 19
JTextField ................................................... 18
C
K
Calls ......................................................... 1, 7
Cell ............................................................. 24
Chunk ......................................................... 24
ColorChooser ................................................ 9
Kennzahlen ................................................... 7
Komplexitätsklasse ..................................... 38
B
D
Dienstplan................................................. 3, 4
Dienstzeit ...................................................... 5
Document ................................................... 23
E
Einzelstatistik................................................ 7
Entwurf ....................................................... 18
F
Feiertag....................................................... 15
FileChooser................................................. 14
G
Gesamtstatistik.............................................. 7
getmobile ..................................................... iii
H
L
Lasttests ...................................................... 36
Layout ........................................................ 19
M
Model-View-Controller ............................... 19
MVC-Prinzip .............................................. 19
O
Observer ..................................................... 20
O-Notation .................................................. 38
OutputStream .............................................. 22
P
Package ...................................................... 19
pdf-Dokumente ........................................... 23
Persistent .................................................... 22
Q
Hauptfenster ................................................. 9
Qualitätssicherung....................................... 35
Quartals-Statistik ........................................ 42
I
R
IllegalArgumentException .......................... 36
InputStream ................................................ 22
ItemListener ................................................ 25
Regel ............................................................ 6
45
S
U
Serializable ................................................. 22
Utilities ....................................................... 22
T
W
Testklassen (Unit) ....................................... 37
Testprotokolle ............................................. 35
transient ...................................................... 22
Whitebox-Verfahren, .................................. 36
Z
Zeiterfassungs-ID .......................................... 6
Zeitraum des Plans ........................................ 4
Anhang zur Dokumentation
Appendix
Anna Klein
Trier, 19.8.2008
Anhang zur Dokumentation - Dienstpläne
2
Inhaltsverzeichnis (Anhang)
A Dienstpläne................................................................................................. 3
B Statistiken .................................................................................................. 4
C Klassendiagramm ...................................................................................... 5
D Testprotokolle Funktionstests ................................................................... 6
E Testprotokolle Robustheitstests .............................................................. 15
F
Testklassen Unit-Tests ............................................................................. 20
G Protokoll Akzeptanztests ......................................................................... 23
H Kundendokumentation............................................................................ 27
I
Inhalt der CD ........................................................................................... 57
Anhang zur Dokumentation - Dienstpläne
A
Dienstpläne
Anhang A-1: bisheriger Dienstplan
Anhang A-2: neuer Dienstplan
3
Anhang zur Dokumentation - / Statistiken
B
Statistiken
Abbildung B.1: alte Statistik (ein Tag)
4
Anhang zur Dokumentation - Klassendiagramm
C
5
Klassendiagramm
Das Diagramm befindet sich aufgrund der Größe als Din-A-1-Ausdruck im Einband am Ende
der Dokumentation.
Anhang zur Dokumentation - Testprotokolle Funktionstests
D
6
Testprotokolle Funktionstests
Anhang D-1: Funktionstests Modul „Mitarbeiter“
Modul „Mitarbeiter“
Testfall
Initiale Oberfläche ist korrekt
Bearbeitungs-Modi
•
Abwechselndes Betätigen der
Buttons „neu“ und „bearbeiten“
Anzeige der Mitarbeiter-Übersicht
•
•
•
Betätigen des Buttons
„Übersicht“
Setzen des Häkchens „Nur
Callcenter“
Entfernen des Häkchens
Exportieren der CC-Mitarbeiterliste
•
•
•
Aufrufen der Übersicht
Setzen des Häkchens
„Callcenter“
Betätigen des Buttons
„exportieren“
Exportieren der Liste aller Mitarbeiter
•
•
Aufrufen der Übersicht
Betätigen des Buttons
„exportieren“
Bearbeiten eines Mitarbeiters
•
•
•
•
Betätigen des Buttons
„bearbeiten“
Auswahl eines Mitarbeiters
Ändern der Daten
Betätigen des Buttons
„Speichern“
Ändern der Farbe
•
•
•
•
Betätigen des Buttons
„bearbeiten“
Auswahl eines Mitarbeiters
Betätigen des Buttons „Farbe
wählen“
Speichern der Änderung
Backoffice-Flag wird gesetzt
•
•
•
Betätigen des Buttons
„bearbeiten“
Auswahl eines CC-Mitarbeiters
Betätigen des Buttons
„Backoffice“
Erwartetes Ergebnis
Alle Felder sind leer. Das Farbfeld ist weiß, die
ComboBox ist leer. Das Feld „ZeiterfassungsID“ ist deaktiviert. Die RadioButtons
„bearbeiten“ und „Callcenter“ sind aktiviert
Ist der Button „bearbeitet“ aktiviert, ist die
Combobox aktiviert, das Feld mit der
Zeiterfassungs-ID nicht. Ist der Button „neu“
aktiviert ist dies umgekehrt
Es öffnet sich ein Fenster mit einer Auflistung
aller Mitarbeiter und ihrer Daten. Bei gesetztem
Häkchen reduziert sich die Anzeige auf
diejenigen, die als Callcenter-Mitarbeiter
markiert sind. Die Fenstergröße passt sich an.
Bei nicht gesetztem Häkchen werden wieder alle
Mitarbeiter angezeigt.
Es öffnet sich ein Dialog zur Auswahl eines
Speicherorts. Nach Auswahl wird eine csv-Datei
dort abgelegt, die die Daten der CallcenterMitarbeiter in der Form
Vorname;Nachname;Kurzform;Rufnummer;
Zeiterfassungs-ID;Mail-ID hält
Es öffnet sich ein Dialog zur Auswahl eines
Speicherorts. Nach Auswahl wird eine csv-Datei
dort abgelegt, die die Daten aller Mitarbeiter in
der Form
Vorname;Nachname;Kurzform;Rufnummer;
Zeiterfassungs-ID;Mail-ID hält
Bei Auswahl eines Mitarbeiters werden die
Felder mit seinen Daten gefüllt. Nach der
Änderung sind Sie neuen Daten des Mitarbeiters
gespeichert. Bei erneuter Anwahl des
Mitarbeiters erscheinen die geänderten Daten.
Beim Aufrufen der Übersicht, erscheinen
ebenfalls die geänderten Daten.
Nach betätigen des Buttons „Farbe wählen“
erscheint ein Farbauswahlfenster. Die
ausgewählte Farbe erscheint in dem Farbfeld
links vom Button. Nach dem Speichern ist die
Farbe dem Mitarbeiter zugeordnet. Sie erscheint
in der Übersicht und auch beim Anlegen neuer
Dienstzeiten in den Plänen.
Bewertung
0
0
0
0
0
0
0
In der Übersicht ist der Mitarbeiter unverändert
vorhanden. Nach setzen des Häkchens
„Callcenter“ nicht mehr.
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
•
•
Betätigen des Buttons
„Speichern“
Öffnen der Übersicht
Rücksetzen des BO-Flags
•
•
•
•
•
Aktivieren des Buttons
„bearbeiten“
Auswahl eines BO-Mitarbeiters
Betätigen des Buttons
„Callcenter“
Betätigen des Buttons
„Speichern“
Öffnen der Übersicht
Anlegen eines Mitarbeiters
•
•
•
Aktivieren des Buttons „neu“
Eingabe aller Daten
Betätigen des Buttons
„Speichern“
Löschen eines Mitarbeiters
•
•
•
7
Aktivieren des Buttons
„bearbeiten“
Auswahl eines beliebigen
Mitarbeiters
Betätigen des Buttons „Löschen“
In der Übersicht ist der Mitarbeiter unverändert
vorhanden. Bei gesetztem Häkchen der
Checkbox „Callcenter“ bleibt der Mitarbeiter
aufgelistet.
0
Der neu angelegte Mitarbeiter erscheint in der
Combobox, in der Übersicht und in allen
Mitarbeiter-Auswahlboxen der anderen Module.
Der ausgewählte Mitarbeiter wird gelöscht. Er
erscheint nicht mehr in der Übersicht und auch
nicht mehr in den Auswahlboxen der anderen
Module. Die Oberfläche wird mit den Daten des
vorherigen Mitarbeiters gefüllt
0
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
8
Anhang D-2: Funktionstest Modul „Dienstplan“
Modul „Dienstplan“
Testfall
Initiale Oberfläche ist korrekt
Zeiten werden korrekt eingetragen:
•
•
•
•
•
Auswahl eines Mitarbeiters
Eintragen beliebiger Zeiten
Drücken des Buttons „ok“
Schließen des Moduls
erneutes Öffnen des Moduls
Zeiten werden korrekt eingetragen:
•
•
•
•
•
Auswahl eines Mitarbeiters
Eintragen beliebiger Zeit, aber
mehr als 6 Stunden
Drücken des Buttons „ok“
Schließen des Moduls
erneutes Öffnen des Moduls
Zeiten werden korrekt eingetragen:
•
•
•
•
•
Auswahl eines Mitarbeiters
Eintragen beliebiger Zeit, aber
mehr als 9 Stunden
Drücken des Buttons „ok“
Schließen des Moduls
erneutes Öffnen des Moduls
Zeiten werden korrekt gelöscht
•
•
•
•
Auswahl eines beliebigen Tages
mit Dienstzeiten
Drücken eines Buttons
„Entfernen“
Schließen des Moduls
Öffnen des Moduls
Mitarbeiterstunden werden korrekt
generiert
•
•
•
Betätigen des Buttons
„Mitarbeiterstunden“
Beliebige Auswahl von Wochen
Betätigen des Buttons
„exportieren“
Feiertag wird korrekt gesetzt
•
•
Auswahl eines beliebigen Tages
Auswahl der Option „Feiertag“
Dienstplan wird korrekt exportiert
•
•
Auswahl einer beliebigen Woche
Drücken des Buttons „Plan
exportieren“
Erwartetes Ergebnis
auszuwählende Mitarbeiter sind nur die als
Callcenter markierten, die angezeigte Woche ist
die aktuelle
Die eingetragene Dienstzeit wird in dem Plan
eingetragen und ist auch nach Neustart des
Moduls noch vorhanden, unten stehende
Stundenzahl stimmt mit eingetragenem Dienst
überein.
Die eingetragene Dienstzeit wird in dem Plan
eingetragen und ist auch nach Neustart des
Moduls noch vorhanden, unten stehende
Stundenzahl stimmt mit eingetragenem Dienst
überein. Bei Dienstzeit der Zeit wurden 0,5
Stunden abgezogen
Die eingetragene Dienstzeit wird in dem Plan
eingetragen und ist auch nach Neustart des
Moduls noch vorhanden, unten stehende
Stundenzahl stimmt mit eingetragenem Dienst
überein. Bei Dienstzeit der Zeit wurde eine
Stunde abgezogen
Die Dienstzeit links vom gedrückten Button
wird nicht mehr im Dienstplan angezeigt. Die
anderen Balken passen sich dynamisch an, es
bleibt keine Lücke
Ein Fenster zur Auswahl des Speicherorts
öffnet sich. An der ausgewählten Stelle wird ein
pdf-Dokument abgelegt. Die dort angegebenen
Daten stimmen mit dem Dienstplan überein.
Nach Auswahl der Option erscheint ein
Warnhinweis. Nach Auswahl von „OK“ werden
die Dienstzeiten des ausgewählten Tags
gelöscht und der Hinweis „FEIERTAG“
angezeigt. Bei Drücken von „Abbrechen“
passiert nichts
Ein Fenster zur Auswahl des Speicherorts
öffnet sich. An der ausgewählten Stelle werden
ein Bild des Plans und ein Pdf-Dokument
abgelegt, das den Plan auf Seite 1 beinhaltet.
Ab Seite 2 werden Dienstzeiten der Mitarbeiter
als Text angegeben. Die Daten stimmen mit
denen des Plans überein.
Bewertung
0
0
0
0
0
0
0
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
Dienstplan wird aus Vorwoche generiert
•
•
Auswahl einer beliebigen Woche
Drücken des Buttons „Plan wie
Vorwoche“
Die Dienstzeitbalken kommen nicht über
den Rand eines Tages hinaus
•
Eintragen vieler Dienstzeiten an
einem Tag
Ein Mitarbeiter kann pro Tag nur einmal
im Plan eingetragen sein
•
•
Auswahl eines beliebigen Tages
Eintragen eines bereits
vorhandenen Mitarbeiters
Der Dienstplan springt wie gefordert ins
neue Jahr voraus
•
Setzen der Systemzeit auf eine
KW >44
Der Dienstplan springt wie gefordert ins
alte Jahr zurück
•
Setzen der Systemzeit auf eine
KW <30
Zeitraum des Dienstplans sonst
•
Setzen der Systemzeit auf eine
KW >=30 und <=44
Ein Warnhinweis erscheint. Bei Drücken von
„Abbrechen“ geschieht nichts, bei drücken von
„OK“ wird der Plan der Vorwoche kopiert.
Änderungen des einen Plans haben keine
Auswirkungen auf den anderen Plan
Bei bis zu 8 Balken bleiben die Balken konstant
breit und überschreiten nicht die Linie zum
nächsten Tag. Bei mehr als 8 Balken passt sich
die Balkenbreite dynamisch an, um die Linie
nicht zu schneiden.
Die Dienstzeit des Mitarbeiters wird
aktualisiert, taucht also weiterhin nur einmal
auf.
9
0
0
0
Der Zeitraum des Dienstplans geht nun von
KW 10 des aktuellen Jahres bis zur KW 9 des
Folgejahres
0
Der Zeitraum des Dienstplans geht nun von
KW 40 des Vorjahres bis zur KW 39 des
aktuellen Jahres
0
Der Zeitraum erstreckt sich über das gesamte
aktuelle Jahr
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
10
Anhang D-3: Funktionstests Modul „Wer kann wann?“
Modul „WerKannWann“
Testfall
Initiale Oberfläche ist OK
Plan wird angezeigt
•
Betätigen des Buttons „KW
anzeigen“
Regel „jede Woche“ wird erfasst
•
•
•
Auswahl eines beliebigen
Mitarbeiters
Angeben eines Wochentags und
der Zeiten im Bereich „Jede
Woche“
Betätigen des Buttons „OK“
Regel „jede gerade Woche“ wird erfasst
•
•
•
•
Auswahl eines beliebigen
Mitarbeiters
Angeben eines Wochentags und
der Zeiten im Bereich „Jede
Woche“
Entfernen des Häkchens
„ungerade Wochen“
Betätigen des Buttons „OK“
Regel „jede ungerade Woche“ wird erfasst
•
•
•
•
Auswahl eines beliebigen
Mitarbeiters
Angeben eines Wochentags und
der Zeiten im Bereich „Jede
Woche“
Entfernen des Häkchens „gerade
Wochen“
Betätigen des Buttons „OK“
Regel „nicht von bis“ wird erfasst
•
•
•
Auswahl eines beliebigen
Mitarbeiters
Angeben der Wochen von und
bis im Bereich „Nicht von KW..
bis KW..“
Betätigen des Buttons „OK“
Regel „Ausnahme“ wird erfasst
•
•
•
Auswahl eines beliebigen
Mitarbeiters
Auswahl von KW, Wochentag
und Zeiten im Bereich
„Außerdem (Ausnahme)
Betätigen des Buttons „OK“
Angelegte Dienstzeiten werden auch über
Modul Dienstplan angezeigt
•
Öffnen des Moduls „Dienstplan“
Erwartetes Ergebnis
Alle Comboboxen sind leer, nur bei der Woche
wird die aktuelle Woche angezeigt
Es öffnet sich ein Fenster mit einem Plan der
KW, die in der Combobox ausgewählt ist. In
diesem Plan sind die Balken schwarz und die
Beschriftung in der Farbe des Mitarbeiters.
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel. Außerdem ist im Plan
in jeder Woche die Zeit eingetragen.
Bewertung
0
0
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel. Außerdem ist im Plan
in jeder geraden Woche die Zeit eingetragen.
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel. Außerdem ist im Plan
in jeder ungeraden Woche die Zeit eingetragen.
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel. Außerdem ist im Plan
der entsprechende Mitarbeiter in dem
angegebenen Zeitraum nicht mehr eingetragen
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel. Außerdem ist im Plan
die angegebene Zeit einmal eingetragen.
0
Es öffnet sich ein Fenster das den ausgewählten
Tag der Woche anzeigt und die dort angelegten
Dienstzeiten mit schwarzen Balken anzeigt
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
•
Betätigen des Buttons „Wer kann
wann?“
Löschen einer Regel
•
•
Auswahl eines beliebigen
Mitarbeiters mit Regeln
Betätigen eines Buttons
„Löschen“
Regeln werden persistent gespeichert
•
•
11
Schließen der Anwendung
Öffnen der Anwendung und des
Moduls
Die entsprechende Regel wird nicht mehr im
Bereich „vorhandene Regeln“ angezeigt. Die
Zeiten erscheinen außerdem nicht mehr im
Dienstplan.
0
Die eingepflegten Regeln sind noch vorhanden
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
12
Anhang D-4: Funktionstests Modul „Statistik“
Modul „Statistik“
Testfall
Initiale Oberfläche ist korrekt
Personen-Modus
•
Wechselnde Aktivierung der
Buttons „Alle Mitarbeiter“ , „Nur
Callcenter“ und „Einzelne
Person“
Zeitraum-Modus
•
Wechselndes Aktivieren der
Buttons „kompletter Zeitraum“,
„Zeitraum in Wochen“ und
„Zeitraum nach Datum“
Dateiauswahl
•
Betätigen der Buttons
„Durchsuchen“
Erstellen einer Statistik
•
•
•
Auswahl beliebiger Modi
Angabe korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erwartetes Ergebnis
Alle Felder sind leer. Aktiviert sind die Buttons
„nur Callcenter“ und „kompletter Zeitraum“,
die Combobox und die Felder im Bereich
„CSV-Input-Dateien“ ist deaktiviert.
Bei Aktivierung der Buttons „Alle Mitarbeiter“
oder „Nur Callcenter“ ist die Auswahlbox
deaktiviert. Bei Auswahl der Option „Einzelne
Person“ ist die aktiviert.
Ist der Button „kompletter Zeitraum“
ausgewählt, sind die Eingabefelder im
Zeitbereich deaktiviert. Bei der Auswahl
„Zeitraum in Wochen“ sind die Felder „von
KW“ und „bis KW“ aktiviert, die Felder zur
Eingabe eines Datums deaktiviert. Bei der
Option „Zeitraum nach Datum“ sind die Felder
zur Eingabe der Wochen deaktiviert, die Felder
„von“ und „bis“ aktiviert.
Es öffnet sich jeweils ein Dialog zum Öffnen
einer Datei. Der Dialog verweist auf den Ort, an
dem zuvor schon eine Datei ausgewählt wurde.
Es öffnet sich ein Statusfenster, das die Phasen
anzeigt: „Einlesen der Anrufer-Datei“,
„Einlesen der Zeiterfassungs-Datei“, „Einlesen
der Mail-Datei“, „Einlesen des Dienstplans“,
„Berechnen der Daten“. Anschließend öffnet
sich ein Dialogfenster zur Angabe eines
Speicherorts. Dort wird dann ein pdf abgelegt
mit folgendem Inhalt:
1. Teamleiterübersicht mit Tabelle der
angewählten Rufnummern,
Tortendiagramm der Anwesenheit der
Mitarbeiter, Auflistung der
Durchschnittswerte der Mitarbeiter
(Calls/Stunde, Mails/Stunde, Summe,
Anteil Arbeitszeit)
2. Einzelstatistiken der Mitarbeiter mit
Tortendiagramm der Anwesenheit,
Durchschnitt der Werte (Eingehende
Anrufe pro Stunde, ausgehende
Anrufe pro Stunde, Mails pro Stunde,
Summe) im Vergleich zum
Gesamtschnitt und pro Tag eine
Tagesstatistik mit den oben
genannten Werten und einer Tabelle
zum Vergleich der Zeiten
„eingetragen“, „gestempelt“,
„telefoniert“
3. Eine Auflistung der anwesenden
Mitarbeiter und der gestempelten
Stunden pro Tag
Die Werte stimmen mit Vergleichswerten aus
Excel-Berechnungen überein
Bewertung
0
0
0
0
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
Erstellen der Statistik für alle Mitarbeiter
über den gesamten Zeitraum
•
•
•
Auswahl der Buttons „Alle
Mitarbeiter“ und „kompletter
Zeitraum“
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für die CCMitarbeiter über den gesamten Zeitraum
•
•
•
Auswahl der Buttons „Nur
Callcenter“ und „kompletter
Zeitraum“
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für einen
Mitarbeiter über den gesamten Zeitraum
•
•
•
•
Auswahl der Buttons „Einzelne
Person“ und „kompletter
Zeitraum“
Auswahl eines beliebigen
Mitarbeiters
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für alle Mitarbeiter
über einen Zeitraum in Wochen
•
•
•
•
Auswahl der Buttons „Alle
Mitarbeiter“ und „Zeitraum in
Wochen“
Angabe plausibler
Kalenderwochen
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für die CCMitarbeiter über einen Zeitraum in
Wochen
•
•
•
•
Auswahl der Buttons „Nur
Callcenter“ und „Zeitraum in
Wochen“
Angabe plausibler
Kalenderwochen
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für einen
Mitarbeiter über einen Zeitraum in
Wochen
•
Auswahl der Buttons „Einzelne
Person“ und „Zeitraum in
13
Die erzeugte Statistik umfasst alle Mitarbeiter
unabhängig ob Callcenter oder Backoffice. Der
Startzeitpunkt der Statistik ist der frühste
Zeitpunkt in den csv-Dateien, der Endzeitpunkt
der späteste Zeitpunkt in den Dateien.
0
Die erzeugte Statistik umfasst nur die
Callcenter-Mitarbeiter. Der Startzeitpunkt der
Statistik ist der frühste Zeitpunkt in den csvDateien, der Endzeitpunkt der späteste
Zeitpunkt in den Dateien.
0
Die erzeugte Statistik umfasst lediglich den
ausgewählten Mitarbeiter. Die Werte der
Gesamtstatistik stimmen mit den Werten der
Einzelperson überein. Der Startzeitpunkt der
Statistik ist der frühste Zeitpunkt in den csvDateien, der Endzeitpunkt der späteste
Zeitpunkt in den Dateien.
0
Die erzeugte Statistik umfasst alle Mitarbeiter
unabhängig ob Callcenter oder Backoffice. Der
Startzeitpunkt der Statistik ist Montag der
angegebenen Woche, der Endzeitpunkt der
Freitag der angegebenen End-Woche
0
Die erzeugte Statistik umfasst nur die
Callcenter-Mitarbeiter. Der Startzeitpunkt der
Statistik ist Montag der angegebenen Woche,
der Endzeitpunkt der Freitag der angegebenen
End-Woche
0
Die erzeugte Statistik umfasst lediglich den
ausgewählten Mitarbeiter. Die Werte der
Gesamtstatistik stimmen mit den Werten der
Einzelperson überein. Der Startzeitpunkt der
Statistik ist Montag der angegebenen Woche,
der Endzeitpunkt der Freitag der angegebenen
0
Anhang zur Dokumentation - Testprotokolle Funktionstests
•
•
•
•
Wochen“
Auswahl eines beliebigen
Mitarbeiters
Angabe plausibler
Kalenderwochen
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für alle Mitarbeiter
über einen Zeitraum nach Datum
•
•
•
•
Auswahl der Buttons „Alle
Mitarbeiter“ und „Zeitraum nach
Datum“
Plausible Datumsangaben
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für die CCMitarbeiter über einen Zeitraum nach
Datum
•
•
•
•
Auswahl der Buttons „Nur
Callcenter“ und „Zeitraum nach
Datum“
Plausible Datumsangaben
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
Erstellen der Statistik für einen
Mitarbeiter über einen Zeitraum nach
Datum
•
•
•
•
•
Auswahl der Buttons „Einzelne
Person“ und „Zeitraum nach
Datum“
Auswahl eines beliebigen
Mitarbeiters
Angabe plausibler Datumswerte
Auswahl korrekter csv-Dateien
Betätigen des Buttons
„Berechnen“
14
End-Woche
Die erzeugte Statistik umfasst alle Mitarbeiter
unabhängig ob Callcenter oder Backoffice. Der
Startzeitpunkt der Statistik ist das angegeben
Datum „von“, der Endzeitpunkt das angegebene
Datum „bis“
0
Die erzeugte Statistik umfasst nur die
Callcenter-Mitarbeiter. Der Startzeitpunkt der
Statistik ist das angegeben Datum „von“, der
Endzeitpunkt das angegebene Datum „bis“
0
Die erzeugte Statistik umfasst lediglich den
ausgewählten Mitarbeiter. Die Werte der
Gesamtstatistik stimmen mit den Werten der
Einzelperson überein. Der Startzeitpunkt der
Statistik ist das angegeben Datum „von“, der
Endzeitpunkt das angegebene Datum „bis“
0
Anhang zur Dokumentation - Testprotokolle Robustheitstests
15
E Testprotokolle Robustheitstests
Anhang E-1: Robustheitstests Modul „Mitarbeiter“
Modul „Mitarbeiter“
Testfall
Bearbeitungs-Modi
•
•
Abwechselndes Betätigen der
Buttons „neu“ und „bearbeiten“
Zwischendurch Eingabe von
Daten, wo möglich
Anzeige der Mitarbeiter-Übersicht
•
•
Betätigen des Buttons
„Übersicht“
Häufiges Setzen und Entfernen
des Häkchens Callcenter
Abbruch beim Exportieren der
Mitarbeiterliste
•
•
•
Aufrufen der Übersicht
Betätigen des Buttons
„exportieren“
Auswahldialog abbrechen
Erwartetes Ergebnis
Ist der Button „bearbeitet“ aktiviert, ist die
Combobox aktiviert, das Feld mit der
Zeiterfassungs-ID nicht. Ist der Button „neu“
aktiviert ist dies umgekehrt Alle Felder sind
nach dem Aktivieren eines Buttons wieder leer
Es öffnet sich ein Fenster mit einer Auflistung
aller Mitarbeiter und ihrer Daten. Bei gesetztem
Häkchen reduziert sich die Anzeige auf
diejenigen, die als Callcenter-Mitarbeiter
markiert sind. Die Fenstergröße passt sich an.
Bei nicht gesetztem Häkchen werden wieder alle
Mitarbeiter angezeigt. Die Anpassung passiert
ohne Stocken.
Es öffnet sich ein Dialog zur Auswahl eines
Speicherorts. Nach Abbrechen des Dialogs wird
kein Ausnahmefehler ausgegeben.
Bewertung
0
0
0
Anhang zur Dokumentation - Testprotokolle Robustheitstests
16
Anhang E-2: Robustheitstests Modul „Dienstplan“
Modul „Dienstplan“
Testfall
•
Häufiges betätigen der OKButtons
Keine eingetragen Dienstzeiten
•
Betätigen des ok-Buttons ohne
vollständige Angabe von
Mitarbeiter und Zeiten
Nicht-plausible Dienstzeiten
•
•
Auswahl eines Mitarbeiters
Eintragen von nicht plausibler
Dienstzeit (von >= bis)
Abbruch bei Generierung der
Mitarbeiterstunden
•
•
•
•
Betätigen des Buttons
„Mitarbeiterstunden“
Beliebige Auswahl von Wochen
Betätigen des Buttons
„exportieren“
Abbrechen des Auswahldialogs
Abbruch bei Dienstplanexport
•
•
•
Auswahl einer beliebigen Woche
Drücken des Buttons „Plan
exportieren“
Abbrechen des Auswahldialogs
Erwartetes Ergebnis
Die Bearbeitung stockt nicht, die Änderungen
werden umgehend angezeigt
Bewertung
0
Das Betätigen des Buttons hat keine
Auswirkungen, die bereits angegebenen Daten
bleiben erhalten
0
Die eingetragene Dienstzeit wird nicht in dem
Plan eingetragen. Die Eingaben bleiben jedoch
stehen.
0
Ein Fenster zur Auswahl des Speicherorts
öffnet sich. Bei Abbruch verschwindet der
Auswahldialog, nicht aber das Fenster zur
Angabe der Wochen. Es wird kein
Ausnahmefehler erzeugt
0
Ein Fenster zur Auswahl des Speicherorts
öffnet sich. Bei Abbruch wird keine Ausnahme
erzeugt
0
Anhang zur Dokumentation - Testprotokolle Robustheitstests
17
Anhang E-3: Robustheitstests Modul „Wer kann wann?“
Modul „WerKannWann“
Testfall
Unvollständige Angaben bei Regel „jede
Woche“
•
Betätigen des Buttons „OK“ bei
„jede Woche“ ohne vollständige
Angabe von Mitarbeiter und
Zeiten
Unvollständige Angaben bei Regel „nicht
von bis“
•
Betätigen des Buttons „OK“ bei
„nicht von…bis…“ ohne
vollständige Angabe von
Mitarbeiter und Zeiten
Unvollständige Angaben bei Regel
„Ausnahme“
•
Betätigen des Buttons „OK“ bei
„Ausnahme“ ohne vollständige
Angabe von Mitarbeiter und
Zeiten
Nicht-plausible Angaben bei Regel „Jede
Woche“
•
•
Auswahl eines Mitarbeiters
Eingabe nicht plausibler Zeiten
bei „Jede Woche“ (von>=bis)
Nicht-plausible Angaben bei Regel
„Ausnahme“
•
•
Auswahl eines Mitarbeiters
Eingabe nicht plausibler Zeiten
bei „Ausnahme“ (von>=bis)
Nicht-plausible Angaben bei Regel „Jede
Woche“
•
•
Auswahl eines Mitarbeiters
Eingabe nicht plausibler Zeiten
bei „Jede Woche“ (von>=bis)
Erwartetes Ergebnis
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel nicht. Die eingegebenen
Daten bleiben erhalten.
Bewertung
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel nicht. Die eingegebenen
Daten bleiben erhalten.
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel nicht. Die eingegebenen
Daten bleiben erhalten.
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel nicht. Die eingegebenen
Daten bleiben erhalten.
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel nicht. Die eingegebenen
Daten bleiben erhalten.
0
Im Bereich „Vorhandene Regeln“ erscheint die
gerade angelegte Regel nicht. Die eingegebenen
Daten bleiben erhalten.
0
Anhang zur Dokumentation - Testprotokolle Robustheitstests
18
Anhang E-4: Robustheitstests Modul „Statistik“
Modul „Statistik“
Testfall
Es müssen alle Angaben zu den csv-Dateien
gemacht werden
•
Betätigen des Buttons
„Berechnen“ bei Angabe von
weniger als 3 Dateien
Es muss im Modus „Einzelner
Mitarbeiter“ ein Mitarbeiter ausgewählt
werden
•
•
•
•
•
•
Setzen des RadioButtons
„Zeitraum in Wochen“
Angabe von Wochen durch
andere Werte als Zahlen
zwischen 1 und 53
Auswählen der csv-Dateien
Betätigen der Schaltfläche
„berechnen“
Fehlende Angaben im Zeit Modus „KW“
•
•
•
Setzen des RadioButtons
„Zeitraum in Wochen“
Auswählen der csv-Dateien
Betätigen der Schaltfläche
„berechnen“
Fehlende Angaben im Zeit Modus
„Datum“
•
•
•
Setzen des RadioButtons
„Zeitraum nach Datum“
Auswählen der csv-Dateien
Betätigen der Schaltfläche
„berechnen“
Falsche Angaben in der Anruf CSV-Datei
•
•
•
•
Modifizieren der Anruf-csv
(String statt Datum, falsche
Datei)
Startet des Moduls Statistik
Angeben aller benötigten Werte
Betätigen des Buttons
„berechnen“
Falsche Angaben in der Email CSV-Datei
•
Modifizieren der Email-csv
(String statt Datum, falsche
Datei)
Bewertung
0
keine Reaktion der Anwendung, es wird keine
Ausnahme erzeugt
Setzen des RadioButtons
„einzelner Mitarbeiter“
Auswählen der csv-Dateien
Betätigen der Schaltfläche
„berechnen“
Nicht-plausible Angaben im Zeit Modus
„KW“
•
Erwartetes Ergebnis
Es erscheint ein Hinweisfenster mit dem Text
“Es müssen drei csv-Dateien angegeben
werden“, keine weitere Reaktion, die getätigten
Angaben bleiben erhalten, es wird keine
Ausnahme erzeugt
0
Es erscheint ein Hinweisfenster mit dem Text
“Kalenderwoche muss zwischen 1 und 53“,
keine weitere Reaktion, die getätigten Angaben
bleiben erhalten, es wird keine Ausnahme
erzeugt
0
Es erscheint ein Hinweisfenster mit dem Text
“Kalenderwoche muss zwischen 1 und 53“,
keine weitere Reaktion, die getätigten Angaben
bleiben erhalten, es wird keine Ausnahme
erzeugt
Es erscheint ein Hinweisfenster mit dem Text
“Falsches Datumsformat“, keine weitere
Reaktion, die getätigten Angaben bleiben
erhalten, es wird keine Ausnahme erzeugt
0
0
Es erscheint ein Hinweisfenster „Die AnrufDatei ist fehlerhaft“, das Programm wird
beendet
0
Es erscheint ein Hinweisfenster „Die MailDatei ist fehlerhaft“, das Programm wird
beendet
0
Anhang zur Dokumentation - Testprotokolle Robustheitstests
•
•
•
Startet des Moduls Statistik
Angeben aller benötigten Werte
Betätigen des Buttons
„berechnen“
Falsche Angaben in der ZeiterfassungCSV-Datei
•
•
•
•
Modifizieren der Anruf-csv
(String statt Datum, falsche
Datei)
Startet des Moduls Statistik
Angeben aller benötigten Werte
Betätigen des Buttons
„berechnen“
Abbrechen bei der Angabe der CSVDateien
•
•
•
Es erscheint ein Hinweisfenster „Die
Zeiterfassungs-Datei ist fehlerhaft“, das
Programm wird beendet
0
Es wird keine Ausnahme erzeugt, das Feld mit
dem Dateipfad bleibt unverändert
Betätigen eines Buttons
„Durchsuchen“
Abbrechen des Auswahldialogs
Abbrechen bei Angabe des Speicherorts
•
•
19
Angabe aller benötigten Werte
Betätigen des Buttons
„berechnen“
Abbruch des Speicherdialogs
0
Es wird keine Ausnahme erzeugt, die Eingaben
bleiben erhalten
0
Anhang zur Dokumentation - Testklassen Unit-Tests
20
F Testklassen Unit-Tests
Anhang F-1: Unit-Testklassen Klasse „Utilities“
Klasse
Parameter
Wertebereich
Repräsentanten
Funktion „trimDouble(double d)“
d:double
Negative Zahl ohne
Integer.minValue(), -3, -0
1
Nachkommastellen
d:double
Negative Zahl mit einer
-12000.2, -3.2, -0.1
2
Nachkommastelle
d:double
Negative Zahl mit zwei
-9000.35, -7.21, -0,001
3
Nachkommastellen
d:double
Negative Zahl mit mehr als zwei
-8001.3455, -3.7788, -0.00001
4
Nachkommastellen
d:double
Positive Zahl ohne
Integer.maxValue(), 3, 0
5
Nachkommastellen
d:double
Positive Zahl mit einer
12000.2, 3.2, 0.1
6
Nachkommastelle
d:double
Positive Zahl mit zwei
9000.35, 7.21, 0,001
7
Nachkommastellen
d:double
Positive Zahl mit mehr als zwei
8001.3455, 3.7788, 0.00001
8
Nachkommastellen
Funktion „parseDatumString(String d)“
d:String
Standardangabe
„01.01.2008“, „31.12.2002“
1
d:String
Tag einstellig
„1.01.2008“, „1.1.2008“, „1.01.08“
2
d:String
Monat einstellig
„01.1.2008“, „01.1.08“
3
d:String
Jahr zweistellig
„1.1.08“, „01.01.08“
4
Funktion „kwToDatum(int kw)“
kw:int
Woche mit Jahreswechsel
1, 52, 53
1
kw:int
Woche ohne Jahreswechsel
8, 39
2
Funktion „getDauer(MyTime von, MyTime bis)“
(von:MyTime,
Von liegt nach bis
(10:20, 9:12), (2:01, 2:00)
1
bis:MyTime)
(von:MyTime,
von ist zeitgleich mit bis
(11:11, 11:11), (0:00, 0:00)
2
bis:MyTime)
(von:MyTime,
Von liegt nach bis
(0:00,0:01), (0.00, 23.59)
3
bis:MyTime)
Funktion „datumToKw(String d)“
d:String
Datum vor 2000
„16.7.1982“, „31.12.1999“
1
d:String
Datum
nah
am
Jahreswechsel
„31.12.2000“, „01.01.2002“
2
Funktion „ermittle MailDatum“(Agent a, String d)“ (a war nur am 25.7.2008 anwesend)
d:String
Datum vor dem 15.07.2008
„12.8.2007“, 14.7.2008“
1
d:String
Datum
zwischen
14.7.08
und
25.7.08
„15.7.08“, „20.7.08“, „24.7.08“
2
d:String
Datum
am
25.7.08.
„25.7.08“
3
d:String
Datum
nach
dem
25.7.08
„26.7.08“, „31.7.08“, 01.01.2025“
4
Funktion „addMinutes“(MyTime t, int min)“
min: int
min <=-60
-72, -89, -60
1
min:
int
-60
<
min
<=
0
-49, -1, -0, 0
2
min:
int
0
<
min
<
60
1, 24, 59
3
min:
int
60
<=
min
60, 73, 134
4
Anhang zur Dokumentation - Testklassen Unit-Tests
Funktion „datumToQuartal“(String s)“
s:String
Datum aus 1. Quartal
1
s:String
Datum aus 2. Quartal
2
s:String
Datum aus 3. Quartal
3
s:String
Datum aus 4. Quartal
4
Funktion „isLater“(MyTime later, MyTime zeit)“ - Zeit ist 10:00
later:MyTime
later ist nach 10:00
1
s:String
later ist 10:00
2
s:String
later ist vor 10:00
3
Funktion „isZwischen“(MyTime zeit, MyTime von, MyTime bis)“
zeit, von, bis:
zeit ist zwischen von und bis (von –
1
MyTime
zeit – bis)
zeit, von, bis:
Reihenfolge zeit – von – bis
2
MyTime
zeit, von, bis:
Reihenfolge (von – bis – zeit)
3
MyTime
zeit, von, bis:
vor liegt nach bis
4
MyTime
21
„1.1.2008“, „15.2.2008“, „31.3.2008“
„1.4.2008“, „15.5.2008“, „30.6.2008“
„1.7.2008“, „15.8.2008“, „30.9.2008“
„1.10.2008“, „15.11.2008“,
„31.12.2008“
10:01, 23:59
10:00
9:59, 0:00
(10:00, 10:00, 10:00), (10:01,
10:00,10:02)
(9:05, 9:15, 9:20)
(4:59, 3:12, 3:57)
(0:02, 12:00, 10:20), (16:09, 12:00,
10:20), (11:15, 12:00, 10:20)
Anhang zur Dokumentation - Testklassen Unit-Tests
22
Anhang F-2: Unit-Testklassen Klasse „MyTime“
Klasse
Parameter
Funktion „hoursToString()“
HOURS: int
1
HOURS: int
2
Funktion „minutesToString()“
MINUTES: int
1
MINUTES: int
2
Funktion „toString()“
this: MyTime
1
this: MyTime
2
this: MyTime
3
this: MyTime
4
Funktion „getPartHour()“
MINUTES: int
1
MINUTES: int
2
Funktion „isLater(MyTime t)“
t:MyTime
1
t:MyTime
2
t:MyTime
3
Wertebereich
Repräsentanten
einstellig
zweistellig
0, 8
12, 23
einstellig
zweistellig
0,7
10,23, 59
einstellige Stunde
zweistellige Stunde
einstellige Minute
zweistellige Minute
1:57, 3:45, 6:06
12:01, 14:59, 22:00
18:06, 00:09, 1:00
13:57, 3:45, 6:16
MINUTES/60 ist rational
MINUTES/60 ist n. rat.
this ist 12:30
t ist vor this
t ist zeitgleich wie this
t ist nach this
15, 30, 45, 0
20, 40
0:00, 6:14, 12:29
12:30
12:31, 20:15, 23:59
Anhang zur Dokumentation - Protokoll Akzeptanztests
G
Protokoll Akzeptanztests
23
Anhang zur Dokumentation - Protokoll Akzeptanztests
24
Anhang zur Dokumentation - Protokoll Akzeptanztests
25
Anhang zur Dokumentation - Protokoll Akzeptanztests
26
Anhang zur Dokumentation - Kundendokumentation
H
Kundendokumentation
Benutzerhandbuch
Anna Klein
Trier, 19.8.2008
27
Kundendokumentation
Inhaltsverzeichnis
1
Einleitung ................................................................................................... 5
2
Die Software Marvin ................................................................................. 7
2.1
2.2
2.3
2.4
3
Nutzung der Oberfläche .......................................................................... 11
3.1
3.2
3.3
3.4
4
CSV-Datei mit den Anrufdaten .......................................................................... 20
CSV-Datei mit den Email-Daten ........................................................................ 20
CSV-Datei mit den Zeiterfassungsdaten ............................................................. 21
Die erstellten Dokumente ........................................................................ 22
5.1
5.2
5.3
5.4
6
Modul „Mitarbeiter“........................................................................................... 11
Modul „Wer kann wann?“ .................................................................................. 13
Modul „Dienstplan“ ........................................................................................... 15
Modul „Statistik“ ............................................................................................... 18
Die Inputdateien ...................................................................................... 20
4.1
4.2
4.3
5
Modul „Dienstplan“ ............................................................................................. 7
Modul „Wer kann wann“ ..................................................................................... 8
Modul „Mitarbeiter“............................................................................................. 9
Modul „Statistik“ ................................................................................................. 9
Der Dienstplan ................................................................................................... 22
Die exportierten Mitarbeiterstunden ................................................................... 23
Übersicht der Mitarbeiter ................................................................................... 23
Erstellte Statistik ................................................................................................ 24
5.4.1 Die Teamleiterübersicht ......................................................................... 24
5.4.2 Gesamtstatistik eines Mitarbeiters .......................................................... 25
5.4.3 Tagesstatistik ......................................................................................... 26
Problembehebung .................................................................................... 28
2
Kundendokumentation
Abbildungsverzeichnis
Abbildung 2.1: Abgebildeter Zeitraum des Plans ............................................................ 8
Abbildung 3.1: Hauptfenster ......................................................................................... 11
Abbildung 3.2: JColorChooser (Farbauswahl) .............................................................. 12
Abbildung 3.3: Mitarbeiterverwaltung („neu“).............................................................. 12
Abbildung 3.4: Mitarbeiterverwaltung („bearbeiten“) ................................................... 13
Abbildung 3.5: Übersichtsfenster der Mitarbeiter .......................................................... 13
Abbildung 3.6: Fenster „Wer kann wann?“ (leer) .......................................................... 14
Abbildung 3.7: Fenster „Wer kann wann?“ (gefüllt) ..................................................... 14
Abbildung 3.8: Wochenübersicht potentielle Arbeitszeiten ........................................... 15
Abbildung 3.9: Dienstplan erstellen .............................................................................. 16
Abbildung 3.10: Fenster zur pdf-Generierung Stundenanzahl ....................................... 16
Abbildung 3.11: „JFileChooser“ (Dateiauswahl) ........................................................... 17
Abbildung 3.12: Dienstplan erstellen (Feiertag) ............................................................ 17
Abbildung 3.13: Anzeige potentielle Dienstzeiten eines Tages...................................... 18
Abbildung 3.14: Statistik erstellen ................................................................................ 19
Abbildung 3.15: Statusfenster 1 .................................................................................... 19
Abbildung 3.16: Statusfenster 2 .................................................................................... 19
Abbildung 5.1: exportierter Dienstplan (jpg) ................................................................. 22
Abbildung 5.2: exportierter Dienstplan (Zeiten als pdf) ................................................ 22
Abbildung 5.3: Mitarbeiterstunden (pdf) ....................................................................... 23
Abbildung 5.4: Mitarbeiter-Übersicht (csv) .................................................................. 24
Abbildung 5.5: Tortendiagramm Teamleiterübersicht ................................................... 24
Abbildung 5.6: Zielnummern ........................................................................................ 25
Abbildung 5.7: Kennzahlenübersicht Mitarbeiter .......................................................... 25
Abbildung 5.8: Tortendiagramm Einzelstatistik ............................................................ 25
Abbildung 5.9: Übersicht Einzelstatistik ....................................................................... 26
Abbildung 5.10: Tagesstatistik ...................................................................................... 27
Abbildung 6.1: MarvinRescue (Datensicherung)........................................................... 29
3
Kundendokumentation
Tabellenverzeichnis
Tabelle 4.1 Anruf-CSV ................................................................................. 20
Tabelle 4.2 Email-CSV ................................................................................. 21
Tabelle 4.3 Zeiterfassung-CSV ....................................................................... 21
4
Einleitung
1. Einleitung
Dieses Dokument beschreibt die Nutzung der Anwendung MARVIN. Zuerst werden die
Möglichkeiten erläutert, die die Software bietet, anschließend die Oberfläche beschrieben und
zum Schluss die Input- und Outputdateien erklärt.
An einigen Stellen sind Hinweisfelder zu finden:
!
Ich bin ein Hinweisfeld. In mir sind nützliche Tipps und Tricks zu finden.
Diese beinhalten nützliche Tipps für die Nutzung der Software. Um einen bestmöglichen
Nutzen der Anwendung zu erzielen, sollte dieses Benutzerhandbuch gründlich
durchgelesen werden. Obwohl die Oberfläche intuitiv zu bedienen ist, kann eine
tiefergehende Kenntnis über die Oberfläche Fehlern vorbeugen und das Arbeiten erleichtern.
Außerdem sollte bei Änderung von Daten stets erst gewartet werden, bis die Änderungen
angezeigt werden, bevor weitere Änderungen durchgeführt werden.
5
Installation
2. Installation
Zur Installation der Anwendung, müssen die Ordner „data“, „img“ und „lib“ und die Datei
„marvin.jar“ in ein beliebiges, nicht schreibgeschütztes Verzeichnis kopiert werden. Alle
individuellen Daten über Mitarbeiter und der Dienstplan sind im Ordner „data“ gespeichert.
Dieser Ordner muss also bei Neuinstallation gesichert werden.
Um die Anwendung zu starten, muss „Java Runtime Environment“ (JRE) installiert sein.
Diese Laufzeitumgebung ist Bestandteil der „Java Platform Standard Edition“ (Java SE) und
kann kostenfrei im Internet heruntergeladen werden. Zu empfehlen ist hier die Seite
http://java.sun.com/javase/downloads/index.jsp
6
Die Software Marvin
3. Die Software Marvin
Die Software MARVIN dient dazu, Dienstpläne und Mitarbeiter zu verwalten und Statistiken
bzw. Reports über Callcenter-Mitarbeiter zu erstellen.
Die Anwendung besteht aus vier Modulen, die weitgehend unabhängig voneinander zu nutzen
sind. Die folgenden Abschnitte beschreiben die Möglichkeiten, die MARVIN bietet. Die
eigentliche Nutzung der Anwendung ist im Kapitel „Nutzung der Oberfläche“
beschrieben.
3.1 Modul „Dienstplan“
Das Modul ermöglicht die Erstellung der Dienstpläne so dass diese zur Berechnung der
Statistik verwendet werden können und bietet eine grafische Ausgabe der Wochenpläne als
Bild und pdf-Dokument. Jeder Mitarbeiter hat eine festgelegte Farbe, in der seine tägliche
Dienstzeit in einem Balkendiagramm dargestellt wird. Der Balken beinhaltet Kürzel des
Mitarbeiters und die jeweilige Arbeitszeit, bei der die Pausenzeiten bereits abgezogen sind.
Für jeden Tag wird außerdem die Gesamtstundenzahl der Mitarbeiter angezeigt. Diese Zahl
erscheint nicht auf dem exportierten Plan, da sie nur für den Teamleiter relevant ist.
Darüber hinaus gibt es eine Möglichkeit, Feiertage als solche zu kennzeichnen, so dass dort
keine Dienstzeiten eingetragen werden können und eine optische Hervorhebung im Plan
vorhanden ist.
Weitere Anzeige auf dem wöchentlichen Dienstplan sind Angabe der Kalenderwoche, der
Wochentage (Montag bis Freitag) und das jeweils zugehörige Datum, sowie die Uhrzeiten
von 8.00 bis 18.00 im 30-Minuten-Takt.Während der Eingabe der Dienstpläne erscheint der
gerade bearbeitete Wochenplan grafisch als Balkendiagramm, und alle getätigten Eingaben
werden umgehend abgebildet.
Dienstpläne müssen nur wenige Wochen im Voraus aber mehrere Monate im Nachhinein
betrachtet werden können. Die Datenhaltung erfolgt gemäß Abbildung 3.1 für 12 Monate.
Der Plan wird lokal abgespeichert.
7
Die Software Marvin
Abbildung 3.1: Abgebildeter Zeitraum des Plans
Bei der Erstellung des Plans ist ein Tag durch Kalenderwoche und Wochentag
gekennzeichnet. Pro Tag kann dann durch Angabe des Mitarbeiters, der Anfangszeit und der
Endzeit Dienstzeiten angegeben werden. Die Eingaben erfolgen über Auswahlboxen
(„Comboboxen“), um falsche Eingaben zu vermeiden und den Bedienkomfort zu erhöhen. Es
stehen lediglich die Callcenter-Mitarbeiter zur Auswahl. Umfasst die Dienstzeit eines
Mitarbeiters an einem Tag mehr als sechs Stunden, so wird bei der Zeitanzeige auf dem
Balken 0.5 Stunden Pausenzeit abgezogen. Umfasst die Zeit mehr als 9 Stunden wird eine
Stunde abgezogen. Es besteht darüber hinaus die Möglichkeit, den Plan der Vorwoche in die
aktuelle Woche zu kopieren, um ihn als Grundlage für den neuen Plan zu nutzen.
Zusätzlich kann ein paralleler Plan aufgerufen werden, der potentielle Dienstzeiten der
Mitarbeiter abbildet. Auf diesem Plan haben die Balken die Füllfarbe Schwarz und als
Schriftfarbe die Farbe des Mitarbeiters. Dies verhindert Verwechslungen mit dem
tatsächlichen Plan. Ein Dienstplan kann auf Knopfdruck an einem beliebigen Ort als pdfDokument und Bild gespeichert werden, das PDF enthält zusätzlich eine Auflistung der
Dienstzeiten nach Mitarbeitern sortiert.
Des Weiteren kann ein pdf-Dokument generiert werden, auf welchem die tägliche Anzahl der
Mitarbeiterstunden und die Anzahl der eingeplanten Mitarbeiter tabellarisch aufgelistet sind.
3.2 Modul „Wer kann wann“
In diesem Modul kann eingegeben werden, welcher Mitarbeiter wann arbeiten kann. Diese
Eingabe erfolgt durch Angabe des Mitarbeiters und Erstellen einer Regel.
8
Die Software Marvin
Folgende Regeln können genutzt werden:
• „Jede Woche“ (Angabe von Wochentag und Zeit)
• „Jede gerade/ungerade Woche“ (Angabe von Wochentag und Zeit)
• „Nicht von...bis...“ (Angabe von Kalenderwochen)
• „Ausnahmsweise“ (Angabe von Kalenderwoche, Tag und Zeit)
Die Kombination der Regeln erlaubt sowohl das Eintragen der regelmäßigen Zeiten, als auch
das Eintragen von Besonderheiten, wie beispielsweise Weihnachts- oder Brückentage, indem
erst die betrachtete Kalenderwoche gelöscht wird („Nicht von... bis...“) und anschließend die
abweichende Zeiten durch Ausnahmen eingetragen werden.
Die Liste der vorhandenen Regeln eines Mitarbeiters wird übersichtlich und aktuell angezeigt.
Selbstverständlich können falsch angelegte oder veraltete Regeln gelöscht werden.
3.3 Modul „Mitarbeiter“
Das Modul ermöglicht die Bearbeitung der relevanten Daten jedes Mitarbeiters. Primäres
Kennzeichen jedes Mitarbeiters ist die Zeiterfassungs-ID, so dass bei Bearbeitung eines
Mitarbeiters diese Angabe nicht geändert werden kann. Weitere einzupflegende Daten sind:
Vor-, Nach- und Kurzname des Mitarbeiters, interne zweistellige Rufnummer, EmailKennung und die Farbe, die auf dem Dienstplan erscheint. Außerdem ist eine Unterscheidung
möglich zwischen Callcenter-Mitarbeiter (CC-Mitarbeiter, Agent) und Mitarbeiter des
Backoffices.
Bei Bearbeitung eines Agenten erfolgt die Auswahl desselben über eine Combobox und die
Felder sind mit den gespeicherten Daten des Mitarbeiters vorbelegt. Bei Neuanlegen eines
Mitarbeiters sind alle Felder leer und auch das Feld der Zeiterfassung aktiv.
Alle Felder sind Pflichtfelder. Die Wahl der Farbe des Mitarbeiters erfolgt über ein
Auswahlfenster, das über 16 Millionen Farbtöne anbietet.
Das Löschen eines Mitarbeiters erfolgt ebenfalls über die Oberfläche. Der gelöschte
Mitarbeiter wird weiterhin in den Dienstplänen der Vergangenheit angezeigt, in der Statistik
aber nicht mehr berücksichtigt. Zusätzlich kann eine Übersicht erzeugt werden mit allen
Mitarbeiterdaten. Diese Übersicht kann auf Callcenter-Mitarbeiter reduziert werden und stellt
eine Exportfunktion bereit, die es ermöglicht, die gewünschten Daten als csv-Datei auf der
Festplatte abzulegen.
3.4 Modul „Statistik“
Das Modul Statistik ermöglicht das Einlesen der benötigten csv-Dateien, die Berechnung der
Statistiken und die Ausgabe in einem pdf-Dokument.
Es wird unterschieden, ob Statistiken nur für eine Person erstellt werden, nur für CallcenterAgenten oder für alle Mitarbeiter. Außerdem kann ausgewählt werden, für welchen Zeitraum
die Statistiken erstellt werden sollen. Die Auswahl erfolgt nach Datum, nach Kalenderwoche
oder nach dem größtmöglichen Zeitraum, der von den eingelesenen Dateien abgebildet wird.
Wird die Option der Statistik nur eines Mitarbeiters gewählt, erfolgt die Auswahl des
entsprechenden Mitarbeiters durch eine Combobox. Die Eingabe der benötigten csv-Dateien
wird über eine Festplattensuche realisiert.
Folgende Kennzahlen werden abgebildet:
9
Die Software Marvin
§
Gesamtstatistik
§ Angewählte Rufnummer mit Anzahl, wenn diese größer als 100 pro Woche ist
§ Gesamtschnitt eingehender und ausgehender Calls pro Stunde
§ Gesamtschnitt Mails pro Stunde
§ Summe aus Calls und Mails pro Stunde
§ Verteilung der Arbeitszeiten (Tortendiagramm)
§
Einzelstatistik eines Mitarbeiters über den gesamten Zeitraum
§ Schnitt der eingehenden/ausgehenden Calls pro Stunde
§ Schnitt von Mails pro Stunde
§ Summe aus Calls und Mails pro Stunde
§ Durchschnittliche Sprechzeit pro Call
§ Anzahl gearbeiteter Stunden
§ Anzahl anwesender Tage
§ Anteil an der Arbeitszeit aller Mitarbeiter (Tortendiagramm)
§
Tägliche Einzelstatistik eines Mitarbeiters
§ Schnitt der eingehenden/ausgehenden Calls pro Stunde
§ Schnitt von Mails pro Stunde
§ Summe aus Calls und Mails pro Stunde
§ Durchschnittliche Sprechzeit pro Call
§ Eingetragene Dienstzeit
§ Zeitpunkt des „Ein- und Ausstempelns“
§ Zeitpunkt des ersten und des letzten angenommenen Anrufs
„Calls“ sind hier diejenigen Anrufe, die im Zuge der Callcenter-Tätigkeiten gemacht werden,
also Anrufe, die entweder zu einer externen Nummer gehen, oder Anrufe, die von einer
externen Nummer kommen, zu einem Mitarbeiter weitergeleitet werden und die angewählte
Nummer nicht die Durchwahl des Mitarbeiters ist. Interne Nummern sind dadurch
gekennzeichnet, dass sie aus genau zwei Ziffern bestehen, externe Nummern sind alle
anderen. Es werden nur Anrufe berücksichtigt, die mindestens 1 Sekunde dauern. Der
Zeitraum für die Berechnung der Kennzahl „Calls pro Stunde“ ist die sogenannte
„Telefonierzeit“, also der Zeitpunkt zwischen dem ersten geführten „Call“ und dem letzten
geführten „Call“. Hier werden Pausenzeiten wie oben beschrieben abgezogen. Davon wird
abgewichen, wenn an einem Tag Emails bearbeitet wurden. Dann wird die Anwesenheitszeit
als Grundlage genommen, um nicht bei der Bildung der Summe eine zu hohe Anzahl pro
Stunde zu berechnen.
Der Zeitraum für die Berechnung der „Mails pro Stunde“ ist der Zeitraum der Anwesenheit.
Die csv-Datei mit den Email-Angaben bietet keine Angabe über den genauen Zeitpunkt der
Bearbeitung einer Email, sondern nur den Zeitpunkt des Eingangs einer bearbeiteten Email.
Zeitpunkt des Bearbeiten einer Email wird als der Tag festgelegt, an dem die Email
eingegangen ist, wenn der betreffende Mitarbeiter an dem Tag anwesend war, oder als der
Tag, an dem der Mitarbeiter das nächste Mal anwesend war. Werden die Emails nicht wie
erwartet zeitnah bearbeitet, so kann es dadurch zu verfälschten Reports kommen, was bei der
Auswertung berücksichtigt werden muss.
Bei den angegebenen Zeiten der Einzelstatistiken werden diejenigen rot markiert, die auf
Unpünktlichkeit schließen lassen. Zum einen, wenn die Zeit der Ankunft nach der
eingetragenen Zeit liegt oder wenn der erste Anruf mehr als 5 Minuten nach der
eingetragenen Zeit erfolgt.
10
Nutzung der Oberfläche
4. Nutzung der Oberfläche
Die Anwendung ist wie erwähnt mit vier Modulen realisiert. Wird die Anwendung gestartet,
so erscheint erst das Hauptfenster zur Auswahl der Module (siehe Abbildung 4.1). Das
Fenster kann nur mit dem Button „Beenden“ geschlossen werden und ist in der Größe
unveränderlich.
Abbildung 4.1: Hauptfenster
4.1 Modul „Mitarbeiter“
Bei Betätigen der Schaltfläche „Mitarbeiter“, öffnet sich das Fenster zur Bearbeitung der
Mitarbeiter, wie in Abbildung 4.3 zu sehen. Hier kann nun zwischen den Optionen „neu“ und
„bearbeiten“ gewählt werden. Bei der Auswahl „neu“ sind alle Felder aktiv, können also
gefüllt werden, Die Auswahlbox zur Angabe eines Mitarbeiters ist jedoch inaktiv, kann also
nicht genutzt werden. Alle Felder sind Pflichtfelder, das heißt, es kann erst gespeichert
werden, wenn alle Felder plausible Daten erhalten. Die Rufnummer muss zweistellig sein und
die Zeiterfassungs-ID darf nicht schon an einen anderen Mitarbeiter vergeben sein. Die Farbe,
die einem Mitarbeiter zugewiesen werden kann, erscheint bei der Darstellung des Dienstplans
und dient so der schnellen Erkennung des Mitarbeiters im Plan. Die Angabe der Farbe erfolgt
über einem sogenannten „ColorChooser“, also einer Farbauswahl, die 224, also über 16
Millionen Farben anbietet. Dieses Fenster ist in Abbildung 4.2 zu sehen.
!
Im Fenster zur Auswahl der Farbe bietet eine Möglichkeit zu sehen, wie gut schwarzer
Text auf der Farbe erkennbar ist. Das sollte genutzt werden, um den Effekt später im
Dienstplan abzuschätzen
11
Nutzung der Oberfläche
Abbildung 4.2: JColorChooser (Farbauswahl)
Wird ein Mitarbeiter als Callcenter-Mitarbeiter markiert, so erscheint er bei der MitarbeiterAuswahl im Dienstplan, und auch in der auf Callcenter-Mitarbeitern reduzierten Übersicht.
Außerdem wird er dann berücksichtigt, wenn in der Statistik die Option „nur Callcenter“
ausgewählt wurde. Dies wird später noch näher erläutert.
Abbildung 4.3: Mitarbeiterverwaltung („neu“)
Ist die Option „bearbeiten“ ausgewählt, so ist die Auswahlbox zur Angabe eines Mitarbeiters
aktiv, die Eingabefläche „Zeiterfassungs-ID“ kann jedoch nicht genutzt werden. Da die
Zeiterfassungs-ID identifizierend ist, darf diese nicht geändert werden. Sollte sich dennoch
die Zeiterfassungs-ID eines Mitarbeiters beispielsweise systembedingt geändert haben, so
muss dieser Mitarbeiter gelöscht und neu angelegt werden. Wird auf der Oberfläche mit Hilfe
der Auswahlbox ein Mitarbeiter angegeben, so werden dessen Attribute auf der Oberfläche
angezeigt (siehe Abbildung 4.4). Diese können dann geändert und die Änderungen
gespeichert werden.
12
Nutzung der Oberfläche
Abbildung 4.4: Mitarbeiterverwaltung („bearbeiten“)
Außerdem bietet das Modul eine Übersicht aller Mitarbeiter, die über die Schaltfläche
„Übersicht“ aufgerufen werden kann. Dort werden die Mitarbeiter wie in Abbildung 4.5 zu
sehen aufgelistet und, wenn gewünscht, durch Setzen des Häkchens „nur Callcenter“ auf die
Callcenter-Mitarbeiter reduziert. Dies bietet eine gute Möglichkeit, die Daten vor Erstellen
einer Statistik nochmal zu prüfen, um eine verfälschte Statistik zu vermeiden. Ist
beispielsweise eine falsche Rufnummer angegeben, werden die Anrufe, die der Mitarbeiter
gemacht hat, nicht erkannt. Außerdem kann die angezeigte Liste der Mitarbeiter als csv-Datei
exportiert werden, indem die Schaltfläche „Exportieren“ in der Übersicht betätigt wird.
Abbildung 4.5: Übersichtsfenster der Mitarbeiter
4.2 Modul „Wer kann wann?“
Wird im Hauptfenster die Schaltfläche „Wer kann wann?“ betätigt, öffnet sich das
dazugehörige Fenster (siehe Abbildung 4.6). Nach Auswahl eines Mitarbeiters erscheinen
dessen potentielle Zeiten im grau hinterlegten Bereich. Dies ist in Abbildung 4.7 zu sehen.
Hier können nun neue Regeln für den Mitarbeiter angegeben werden. Dafür muss im
entsprechenden Bereich jedes Feld ausgefüllt werden und anschließend den zugehörigen
Button „OK“ betätigt werden. Die Regel wird dann hinzugefügt und erscheint umgehend in
dem grauen Bereich unter den bisher angelegten Zeiten.
13
Nutzung der Oberfläche
!
Durch Kombination der Regel „nicht von…bis…“ und „Ausnahme“ lassen sich
besondere Zeiten wie Fastnacht oder Weihnachten abbilden
Regeln, die in der Vergangenheit liegen, können über den Button „Löschen“ neben der
entsprechenden Anzeige der Regel gelöscht werden. Dies sollte wegen der Übersichtlichkeit
immer gemacht werden. Eine Obergrenze an Regeln, die ein Mitarbeiter haben kann, gibt es
jedoch nicht.
Abbildung 4.6: Fenster „Wer kann wann?“ (leer)
Abbildung 4.7: Fenster „Wer kann wann?“ (gefüllt)
Betätigt man die Schaltfläche „KW anzeigen“ so wird diejenige Woche als Übersicht gezeigt,
die links daneben mit der Auswahlbox ausgewählt wurde. Standardmäßig ist dort die aktuelle
Woche angegeben. Die Anzeige erfolgt in einem eigenen Fenster, so wie in Abbildung 4.8 zu
sehen.
14
Nutzung der Oberfläche
Abbildung 4.8: Wochenübersicht potentielle Arbeitszeiten
Dieses Fenster dient zur Kontrolle, ob die Regeln wie gewünscht eingetragen wurden. Eine
ähnliche Darstellung kann über das Modul „Dienstplan“ aufgerufen werden, was im
entsprechenden Kapitel genauer erläutert wird. Die einzelnen Balken sind in schwarz
dargestellt, die Beschriftung in der Farbe des Mitarbeiters. Dadurch kann es nicht zu
Verwechslungen mit dem eigentlichen Dienstplan kommen, bei dem die Farben umgekehrt
gewählt wurden.
4.3 Modul „Dienstplan“
Durch Betätigen der Schaltfläche „Dienstplan“ im Hauptfenster öffnet sich das Fenster zur
Eingabe und Anzeige des Dienstplans (Abbildung 4.9). Im oberen Bereich wird der
Dienstplan der Woche angezeigt, die unten in der Auswahlbox „KW:“ angegeben ist. Neben
den Dienstbalken mit Namen und Arbeitszeiten der Mitarbeiter ist unten eine Zahl anzeigt,
die die Summe der eingetragenen Arbeitszeiten repräsentiert. So ist während der Eingabe für
den Nutzer ersichtlich, wie viele Stunden bereits verplant sind, was beispielsweise dann von
Relevanz ist, wenn eine Obergrenze für die Stunden (die im betriebswirtschaftlichen Sinne
gleichzusetzen sind mit Kosten) angegeben ist. Oben wird die angezeigte Kalenderwoche,
und die Wochentage angezeigt, unten das jeweils zugehörige Datum.
Im unteren Bereich sieht man die eingetragenen Mitarbeiter eines Tages mit den
dazugehörigen Zeiten. Die Woche entspricht derjenigen des angezeigten Plans, der Tag kann
über die Auswahlbox „Wochentag“ angegeben werden. Die Zeiten können verändert werden
und mit dem zugehörigen Button „OK“ gespeichert werden. Es kann immer nur eine Zeit
gleichzeitig geändert werden. Werden also mehrere Zeiten verändert und ein Button „OK“
betätigt, so wird nur der Mitarbeiter aktualisiert, der in der Zeile des betätigten Buttons steht
und alle anderen Änderungen werden nicht mehr angezeigt.
!
Wenn man bei einer im unteren Bereich angezeigten Dienstzeit nur den Mitarbeiter ändert
und „OK“ drückt, wird der neue Mitarbeiter mit den bestehenden Zeiten zum Plan
hinzugefügt, ohne den vorherigen Mitarbeiter zu löschen
Hier können nur diejenigen Mitarbeiter ausgewählt werden, die als „Callcenter-Mitarbeiter“
deklariert wurden. Durch betätigen des Buttons „Entfernen“ wird die entsprechende
Dienstzeigt gelöscht. Änderungen, Hinzufügen oder Entfernen von Dienstzeiten wird
umgehend im Plan und in der Ansicht im unteren Bereich angezeigt.
15
Nutzung der Oberfläche
Abbildung 4.9: Dienstplan erstellen
Bei betätigen der Schaltfläche „Mitarbeiterstunden“ öffnet sich ein Fenster zur Angabe von
Kalenderwochen, so wie in Abbildung 4.10 zu sehen. Hier kann nun durch betätigen des
Buttons „exportieren“ die Anzahl der eingetragenen Stunden und Mitarbeiter aufbereitet als
pdf-Dokument generiert und gespeichert werden. In Verbindung mit anderen statistischen
Auswertungen, wie beispielsweise der Erreichbarkeitsstatistik der Telefonanlage, kann die
Güte der Diensteinteilung einfach evaluiert werden
Abbildung 4.10: Fenster zur pdf-Generierung Stundenanzahl
Durch drücken der Schaltfläche „Plan exportieren“, wird der aktuell angezeigte Plan als Bild
gespeichert und ein pdf-Dokument generiert, das sowohl den Plan enthält, als auch die
einzelnen Dienstzeiten nach Mitarbeiter geordnet in tabellarischer Form. Der Speicherort wird
durch einen sogenannten „FileChooser“ (Dateiauswahl) angegeben, der in Abbildung 4.11 zu
sehen ist. An allen Stellen, wo der Nutzer den Ort einer Datei zum Speichern oder Öffnen
eingeben muss, wird ein solcher „FileChooser“ aufgerufen.
16
Nutzung der Oberfläche
Abbildung 4.11: „JFileChooser“ (Dateiauswahl)
Setzt man im mittleren Bereich des Dienstplan-Fenster das Häkchen „Feiertag“, so werden
nach Bestätigen eines Hinweisfenster alle Dienstzeiten des entsprechenden Tages gelöscht
und im Dienstplan erscheint statt der Dienstzeit-Balken an dem Tag ein weißes Feld mit dem
Hinweis auf einen Feiertag. Dies ist in Abbildung 4.12 dargestellt.
Abbildung 4.12: Dienstplan erstellen (Feiertag)
Durch betätigen der Schaltfläche „Plan wie Vorwoche“ wird nach Bestätigung eines
Warnhinweis der aktuell angezeigte Plan mit den Daten des Plans der Vorwoche
überschrieben. Die Daten der aktuellen Woche sind damit unwiderruflich gelöscht.
17
Nutzung der Oberfläche
!
Setzt man das Häkchen „Feiertag“ und entfernt es wieder hat man eine schnelle Möglichkeit,
alle Dienstzeiten eines Tages zu löschen, z.B. wenn man den Plan der Vorwoche nutzt, aber
ein Tag z.B. Heilig Abend ist.
Als letzte Schaltfläche gibt es den Button „Wer kann wann?“. Dieser erzeugt ein Fenster
ähnlich wie im Modul „Wer kann wann?“ zur Anzeige der potentiellen Dienstzeiten. Hier
wird jedoch nicht die Woche angezeigt, sondern der aktuelle Tag. In Abbildung 4.13 ist diese
Anzeige zu sehen.
Abbildung 4.13: Anzeige potentielle Dienstzeiten eines Tages
4.4 Modul „Statistik“
Betätigt man im Hauptfenster die Schaltfläche „Statistik“ öffnet sich das Fenster zum
Erstellen der Statistiken (Abbildung 4.14). Hier gibt es drei Bereiche zur Eingabe der
relevanten Daten.
Oben kann angegeben werden, welcher Personenkreis berücksichtigt wird. Da gibt es zur
Auswahl „Alle Mitarbeiter“, „nur Callcenter“ oder „einzelne Person“. Ist letzte Option
ausgewählt, so ist die Auswahlbox zur Angabe eines Mitarbeiters aktiv und es kann eine
Person angegeben werden.
!
Setzt man im Modul Mitarbeiter kurzfristig nur eine bestimmte Gruppe auf „Callcenter“, so
kann man so gezielt Mitarbeiter miteinander vergleichen, indem man die Option „nur
Callcenter“ wählt.
Im mittleren Bereich kann angegeben werden, über welchen Zeitraum sich die Statistik
erstrecken soll. Bei der Auswahl „Kompletter Zeitraum“ wird der größtmögliche Zeitraum
ermittelt, der von den drei eingelesenen csv-Dateien abgedeckt wird. Durch Angabe der
Option „Zeitraum in Wochen“ erstreckt sich der Zeitraum der Statistik von Montag der
angegebenen Anfangswoche bis Sonntag der angegebenen Endwoche. Die Wochen müssen
als Ganzzahl zwischen 1 und 53 angegeben werden. Die Anfangswoche muss nicht kleiner
sein als die Endwoche, da beispielsweise auch eine Statistik von KW 50 bis KW 2 (des
Folgejahres) erzeugt werden kann. Wird die Option „Zeitraum nach Datum“ ausgewählt, so
können das Anfangs- und das Enddatum frei gewählt werden, lediglich mit der Restriktion,
dass das Ende nicht vor dem Anfang liegen darf. Das jeweilige Datum soll im Format
18
Nutzung der Oberfläche
TT.MM.JJJJ angegeben werden. Toleriert werden auch einstellige Angaben von Tag und
Monat und zweistellige Angabe des Jahres, wie zum Beispiel 1.3.2008 oder 12.4.08.
!
Mit Angabe eines kleinen Zeitraums, wie beispielsweise die Zeit von Weihnachten bis
Neujahr, kann schnell ermittelt werden, wer in dieser zeit besonders stark das Team
unterstützt hat
Im unteren Bereich können dann die Speicherorte der csv-Dateien angegeben werden. Dies
erfolgt über einen „FileChooser“, wie bereits oben erwähnt, eine manuelle Eingabe des Orts
ist nicht möglich. Die Auswahl erfolgt nach Betätigen der Schaltfläche „Durchsuchen“ neben
dem jeweiligen deaktivierten Eingabefeld.
Abbildung 4.14: Statistik erstellen
Durch betätigen des Buttons „Berechnen“ wird anschließend die Statistik gemäß der
gemachten Angaben erzeugt. Während der Bearbeitung, die je nach Datei-Größe einige
Sekunden dauern kann, erscheint ein Statusfenster, das den aktuellen Stand der Bearbeitung
anzeigt. In Abbildung 4.15 und Abbildung 4.16 sind solche Statusanzeigen dargestellt.
Nach Abschluss der Bearbeitung erscheint ein Auswahlfenster zu Angabe des Speicherorts,
wo anschließend das generierte pdf-Dokument abgelegt wird.
Abbildung 4.15: Statusfenster 1
Abbildung 4.16: Statusfenster 2
19
Die Inputdateien
5. Die Inputdateien
Grundlage zur Erstellung der Statistik sind, neben dem Dienstplan, die csv-Dateien, die
eingelesen werden. CSV steht für „comma seperated values“, also für Daten, die
(ursprünglich) mittels Komma abgetrennt sind. Dieses Dateiformat wird von vielen
Anwendungen bereitgestellt, um eine Schnittstelle zu anderen Anwendungen zu bieten. Um
MARVIN zu nutzen, werden drei solcher Dateien benötigt: eine mit Angeben zu getätigten
Anrufen, eine mit Angaben zu bearbeiteten Emails und als dritte Datei eine Auflistung mit
den Arbeitszeiten. Die Voraussetzungen, die die einzelnen Dateien erfüllen müssen, sind
im Folgenden beschrieben. Ob diese erfüllt sind, lässt sich ermitteln, indem die möglichen
Dateien mit einem Editor geöffnet und mit den Voraussetzungen verglichen werden. Sollte in
einem Bereich eine Datei nicht vorhanden sein, so kann stattdessen ein leeres Textdokument
angegeben werden. In den erstellten Reports fehlen dann natürlich die entsprechenden
Angaben.
5.1 CSV-Datei mit den Anrufdaten
Pro Datensatz wird eine eigene Zeile verwendet. Als Trennzeichen der einzelnen Datenwerte
wird das Semikolon verwendet. Die Daten können in Anführungszeichen stehen, müssen aber
nicht. Die erste Zeile wird ignoriert, da diese im Normalfall die Überschriften beinhaltet.
Das Datum muss im Format TT.MM.JJJJ vorhanden sein, Zeit im Format HH:MM. Folgende
Tabelle zeigt die Daten, die vorhanden sein müssen.
Spaltennr.
0
1
3
5
6
Name
Anrufer-Nr
gewählte Nummer
weitergeleitet zu
Anrufzeitpunkt
Anrufdauer
Datentyp
alphanummerisch
alphanummerisch
alphanummerisch
Datum + Zeit
Ganzzahl
Beispiel
„0651-6772229“
„15“
„43“
„10.05.2008 13:25“
„135“
5.1 Anruf-CSV
5.2 CSV-Datei mit den Email-Daten
Pro Datensatz wird eine eigene Zeile verwendet. Als Trennzeichen der einzelnen Datenwerte
wird das Semikolon verwendet. Die Daten können in Anführungszeichen stehen, müssen aber
nicht. Die erste Zeile wird ignoriert, da diese im Normalfall die Überschriften beinhaltet.
20
Die Inputdateien
Das Datum muss im Format TT.MM.JJJJ vorhanden sein, eventuelle weitere Angaben im
Datumsfeld sind nicht relevant. Folgende Tabelle zeigt die Daten, die vorhanden sein müssen.
Spaltennr. Name
Datentyp
Beispiel
2
Bearbeitungsdatum Datum
„12.06.2008“
7
Emailkennung
alphanummerisch „aklein“
5.2 Email-CSV
5.3 CSV-Datei mit den Zeiterfassungsdaten
Pro Datensatz wird eine eigene Zeile verwendet. Als Trennzeichen der einzelnen Datenwerte
wird das Semikolon verwendet. Die Daten können in Anführungszeichen stehen, müssen aber
nicht. Die erste Zeile wird ignoriert, da diese im Normalfall die Überschriften beinhaltet.
Das Datum muss im Format TT.MM.JJJJ vorhanden sein, Zeit im Format HH:MM. Folgende
Tabelle zeigt die Daten, die vorhanden sein müssen. Der letzte Datensatz ist optional.
!
Spaltennr.
1
2
3
4
6
15
Steht im Bemerkungsfeld der Zeiterfassungs-CSV eines der Schlüsselwörter „krank“,
„Urlaub“ oder „Feiertag“, so wird der zugehörige Datensatz der Zeiterfassung nicht
ausgewertet.
Name
Zeiterfassungs-ID
Datum
Arbeitsanfang
Arbeitsende
Dauer
Bemerkung
Datentyp
alphanummerisch
Datum
Zeit
Zeit
Fließkommazahl
alphanummerisch
Beispiel
„1173“
„13.04.2008“
„09:05“
„17:05“
„.7.5“
„krank“
5.3 Zeiterfassung-CSV
21
Die erstellten Dokumente
6. Die erstellten Dokumente
Die Software ermöglicht an verschiedenen Stellen die Generierung von Dokumenten. Diese
sind im Folgenden beschrieben.
6.1 Der Dienstplan
Der erstellte Dienstplan wird wie in Abbildung 6.1 zu sehen als Bild im jpg-Format
gespeichert. Oben links befindet sich die Angabe der Woche, daneben, die Wochentage.
Unterhalb eines Tages ist das Datum angegeben. Links und Rechts sind die Uhrzeiten von
8.00h bis 18.00h im 30-Minuten-Takt angegeben. Feiertage sind mit einem weißen Rechteck
gekennzeichnet.
Abbildung 6.1: exportierter Dienstplan (jpg)
Am gleichen Ort wie das Bild wird ein pdf-Dokument gespeichert, das neben dem Dienstplan
auch eine Auflistung der Dienstzeiten enthält (siehe Abbildung 6.2).
Abbildung 6.2: exportierter Dienstplan (Zeiten als pdf)
Diese Auflistung dient nicht einer Gesamtübersicht, sondern bietet für jeden einzelnen
Mitarbeiter eine Zusammenfassung seiner Dienstzeiten der Woche.
22
Die erstellten Dokumente
6.2 Die exportierten Mitarbeiterstunden
Im Modul Dienstplan wird die Möglichkeit geboten, die Mitarbeiterstunden und die Anzahl
der eingetragenen Mitarbeiter zusammengefasst nach Tagen und Wochen zu generieren. Eine
solche Datei wird im pdf-Format gespeichert. Das Dokument enthält eine Tabelle, die in der
linken Spalte das Datum beinhaltet, dann die Angabe der Mitarbeiterstunden und schließlich
die Anzahl der Mitarbeiter. Abbildung 6.3 zeigt einen Ausschnitt eines solchen Dokuments.
In den grau hinterlegten Spalten sind die Zahlen wochenweise zusammengefasst.
Abbildung 6.3: Mitarbeiterstunden (pdf)
6.3 Übersicht der Mitarbeiter
Im Modul „Mitarbeiter“ besteht die Möglichkeit, die Mitarbeiter als csv-Datei auszugeben.
Diese Datei kann mit üblichen Tabellen-Kalkulations-Programmen (z.B. Excel) übersichtlich
angezeigt werden. Die Datei sieht dann wie in Abbildung 6.4 dargestellt aus. Ist bei
„Kurzform“ der Wert „null“ angegeben, so wird bei der Verarbeitung als Kurzform der
Vorname konkateniert mit dem ersten Buchstaben des Nachnamens gesetzt.
23
Die erstellten Dokumente
Abbildung 6.4: Mitarbeiter-Übersicht (csv)
6.4 Erstellte Statistik
Die Statistiken, die erstellt werden, werden im pdf-Format abgespeichert. Eine Statistik
besteht aus zwei Teilen: Teamleiterübersicht und Einzelstatistiken. Die Einzelstatistiken sind
nach Mitarbeiter geordnet und beinhalten eine Übersicht und dann pro Tag eine
Tagesstatistik. Die Tagesstatistiken sind nach Datum geordnet.
6.4.1 Die Teamleiterübersicht
Die Teamleiterübersicht besteht aus einem Tortendiagramm wie in Abbildung 6.5 zu sehen.
Dort ist die Arbeitszeitverteilung der einzelnen Mitarbeiter übersichtlich dargestellt, die
einzelnen Farben entsprechen den Farben, die den Mitarbeitern auch im Dienstplan
zugeordnet sind.
Abbildung 6.5: Tortendiagramm Teamleiterübersicht
Als weitere Komponente enthält die Teamleiterübersicht eine tabellarische Auflistung, der
angewählten Rufnummern, gefiltert nach denjenigen, die öfters als 100 mal pro Woche
angewählt wurden. Diese Auflistung ist in Abbildung 6.6 zu sehen. Als letzte Komponente
gibt es eine Auflistung der Mitarbeiterkennzahlen über den gesamten Zeitraum (siehe
Abbildung 6.7).
24
Die erstellten Dokumente
Abbildung 6.6: Zielnummern
Abbildung 6.7: Kennzahlenübersicht Mitarbeiter
6.4.2 Gesamtstatistik eines Mitarbeiters
In der Gesamtstatistik eines Mitarbeiters ist seine Arbeitszeit mit einem Tortendiagramm
dargestellt. Der Mitarbeiter ist dort rot hervorgehoben, während alle anderen Werte grau
dargestellt sind, wie in Abbildung 6.8 ersichtlich. Der Anteil an der Gesamtarbeitszeit aller
betrachteten Mitarbeiter ist rechts vom Diagramm prozentual angegeben.
Abbildung 6.8: Tortendiagramm Einzelstatistik
Darunter sind alle relevanten Daten für den gesamten Zeitraum übersichtlich dargestellt. Dies
ist in Abbildung 6.9 genauer zu entnehmen.
25
Die erstellten Dokumente
Abbildung 6.9: Übersicht Einzelstatistik
6.4.3 Tagesstatistik
Im Anschluss an die Gesamtstatistik ist für jeden Mitarbeiter für jeden Tag eine Tagesstatistik
hinterlegt (siehe Abbildung 6.10). Dort sind im Vergleich zum Tagesdurchschnitt alle
relevanten Daten zu ersehen. Hier ist auch der Vergleich zwischen eingetragener Zeit,
Anwesenheitszeit und telefonierter Zeit visualisiert. Rot hervorgehoben sind die Zeiten, bei
denen der Mitarbeiter entweder später ankam als er eingetragen war, oder der erste Anruf 5
Minuten nach der eingetragenen Dienstzeit getätigt wurde.
26
Die erstellten Dokumente
Abbildung 6.10: Tagesstatistik
27
Problembehebung
7. Problembehebung
Fehlerfreiheit kann bei keiner Software garantiert werden und auch die fast unberechenbaren
Systemzustände machen eine Garantie auf fehlerfreies Funktionieren unmöglich. Wichtig ist
jedoch, dass Fehler erkannt werden und mit einer entsprechenden Meldung angezeigt werden.
Dieses Kapitel beschreibt das Verhalten, wenn doch etwas schief gehen sollte.
7.1 Beim Erstellen der Statistik erscheint die Fehlermeldung „Die AnrufCSV ist Fehlerhaft“
Hier sollte genau geprüft werden, ob die eingelesene Datei, den Vorgaben aus Tabelle 5.1
entspricht. Man kann schnell prüfen, ob die Datei prinzipiell geeignet ist, indem man die
Datei auf einen Datensatz reduziert. Ist jetzt das Einlesen möglich, so hat sich beim Erstellen
der Datei ein Fehler eingeschlichen. Beispielsweise eine Zeile, wo der erste Wert fehlt, oder
am Anfang ein Semikolon steht. Ist das Einlesen auch mit der reduzierten Datei nicht
möglich, ist die Datei prinzipiell nicht geeignet und muss angepasst werden. Unter
Umständen wurde auch nur ein falscher Pfad angegeben, so dass die Anwendung nicht die
richtige Datei zur Verfügung hatte.
7.2 Beim Erstellen der Statistik erscheint die Fehlermeldung „Die EmailCSV ist Fehlerhaft“
Die Behebung erfolgt gemäß Kapitel 7.1
7.3 Beim Erstellen der Statistik erscheint die Fehlermeldung „Die EmailCSV ist Fehlerhaft“
Die Behebung erfolgt gemäß Kapitel 7.1
7.4 Es erscheint die Meldung „Fehler beim Zugriff auf die Festplatte“
Diese Meldung erscheint immer dann, wenn ein Lesen oder Schreiben der Anwendung auf die
Festplatte nicht möglich ist. Hier sollte man prüfen, ob die Installationsordner nicht
schreibgeschützt sind und eine Datei, die überschrieben werden soll (z.B. exportierter
Dienstplan), nicht von einem anderen Programm verwendet werden.
28
Problembehebung
7.5 Die Anwendung ist auf einmal sehr langsam
Hier empfiehlt es sich einige Sekunden abzuwarten, ohne die Oberfläche zu nutzen. So
können noch nicht abgeschlossene Bearbeitungsschritte noch beendet werden. Sollte die
Anwendung dann immer noch nicht ordnungsgemäß laufen, sollte das Programm über den
Taskmanager geschlossen werden. Das hat den Vorteil, dass die angelegten
Sicherungskopien nicht durch evtl. fehlerhafte Daten überschrieben werden.
7.6 Der Dienstplan ist weg
Sollte bei Starten des Moduls Dienstplan, der Plan verschwunden sein, so muss die
Anwendung über den Taskmanager geschlossen werden (WICHTIG!). Anschließend
benennt man die Datei „testKopie.dp“ im Ordner „data“ des Installationsverzeichnisses um in
„test.dp“. Beim Start von MARVIN erscheint nun wieder der Plan. Es sollte noch geprüft
werden, ob auch die aktuellsten Änderungen vorhanden sind.
7.7 Der Dienstplan ist trotz Umbenennen nicht mehr da
Sollte dieser Fall eintreten, so gibt es eine weitere Möglichkeit, den Dienstplan einzuspielen.
Durch Ausführen der Anwendung „marvinRescue.jar“ (im Installationsverzeichnis) wird
eine Sicherungskopie des Plans im csv-Format eingespielt (Siehe Abbildung 7.1). Die
Sicherungskopien liegen im Ordner „data“ des Installationsverzeichnisses. Hier sollte
diejenige Datei mit der höchsten Nummer gewählt werden. Sollte der Plan nicht herzustellen
sein, wählt man die Datei mit der zweithöchsten Nummer.
Abbildung 7.1: MarvinRescue (Datensicherung)
29
Index
Index
A
S
Anrufdaten .................................................. 19
Sicherungskopien ........................................ 28
B
T
Balkendiagramm ........................................... 6
Tagesstatistik .............................................. 25
Tortendiagramm.......................................... 23
Trennzeichen .............................................. 19
C
Calls ............................................................. 9
ColorChooser .............................................. 10
csv-Dateien ................................................. 19
Z
Zeiterfassungsdaten ..................................... 20
Zeiterfassungs-ID .......................................... 8
D
Dienstplan..................................................... 6
Dienstzeit ...................................................... 7
E
Einzelstatistik................................................ 9
Email-Daten ................................................ 19
F
Feiertag....................................................... 16
FileChooser................................................. 15
G
Gesamtstatistik.............................................. 9
H
Hauptfenster ............................................... 10
Hinweisfelder................................................ 5
K
Kennzahlen ................................................... 8
M
Mitarbeiterstunden ...................................... 22
P
Pflichtfelder .............................................8, 10
R
Regel ............................................................ 7
30
Inhalt der CD
I Inhalt der CD
57
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement