h1. Pflichtenheft h2. Inhaltsverzeichnis *[[Pflichtenheft#1-Projektstammdaten|1 Projektstammdaten]]* [[Pflichtenheft#11-Titel|1.1 Titel]] [[Pflichtenheft#12-Auftraggeber|1.2 Auftraggeber]] [[Pflichtenheft#13-Projektteam|1.3 Projektteam]] [[Pflichtenheft#14-Datenspeicherung|1.4 Datenspeicherung]] [[Pflichtenheft#15-Projektumgebung|1.5 Projektumgebung]] [[Pflichtenheft#16-Namensgebung|1.6 Namensgebung]] *[[Pflichtenheft#2-Zielbestimmung|2 Zielbestimmung]]* [[Pflichtenheft#21-Musskriterien|2.1 Musskriterien]] [[Pflichtenheft#22-Kannkriterien|2.2 Kannkriterien]] [[Pflichtenheft#23-Abgrenzungskriterien|2.3 Abgrenzungskriterien]] *[[Pflichtenheft#5-Prototypen|3 Produktaufbau und Produktfunktionen]]* [[Pflichtenheft#31-Produktaufbau|3.1 Produktaufbau]] [[Pflichtenheft#32-Grundfunktionen|3.2 Grundfunktionen]] 3.2.1 Registrierung und Anmeldung 3.2.2 Termine eintragen und löschen 3.2.3 Zeitpläne ansehen und drucken 3.2.4 Rollenverwaltung [[Pflichtenheft#33-Funktionen-für-die-einzelnen-Benutzer|3.3 Funktionen für die einzelnen Benutzer]] 3.3.1 Funktionen für die Eltern 3.3.2 Funktionen für die Lehrer 3.3.3 Funktionen für die Verwaltung 3.3.4 Funktionen für Administratoren *[[Pflichtenheft#4-Qualitätsanforderungen|4 Qualitätsanforderungen]]* [[Pflichtenheft#41-Datenschutz|4.1 Datenschutz]] [[Pflichtenheft#42-Usability|4.2 Usability]] [[Pflichtenheft#43-Barrierefreiheit|4.3 Barrierefreiheit]] *[[Pflichtenheft#5-Prototypen|5 Prototypen]]* [[Pflichtenheft#51-Anmeldeseite|5.1 Anmeldeseite]] [[Pflichtenheft#52-Registrierung|5.2 Registrierung]] [[Pflichtenheft#53-Terminliste|5.3 Terminliste]] [[Pflichtenheft#54-Lehrersuche|5.4 Lehrersuche]] [[Pflichtenheft#55-Termineintragung|5.5 Termineintragung]] [[Pflichtenheft#56-Benutzerverwaltung|5.6 Benutzerverwaltung]] *[[Pflichtenheft#6-Diagramme|6 Diagramme]]* [[Pflichtenheft#61-UML-Anwendungsfalldiagramm|6.1 UML-Anwendungsfalldiagramm]] [[Pflichtenheft#62-Datenbankstruktur|6.2 Datenbankstruktur]] *[[Pflichtenheft#7-Testfälle|7 Testfälle]]* [[Pflichtenheft#71-Modultest|7.1 Modultest]] [[Pflichtenheft#72-Integrationstest|7.2 Integrationstest]] [[Pflichtenheft#73-Systemtest-als-Blackboxtest|7.3 Systemtest als Blackboxtest]] 7.3.1 Festlegen eines Datums für den Elternsprechtag 7.3.2 Testregistrierungen und Eintragen von Kindern 7.3.3 Einfügen von Testterminen *[[Pflichtenheft#8-Zeitpläne-und-Meilensteine|8 Zeitpläne und Meilensteine]]* [[Pflichtenheft#81-Meilensteine|8.1 Meilensteine]] [[Pflichtenheft#82-GANTT-Diagramm|8.2 GANTT-Diagramm]] [[Pflichtenheft#83-Deadlines|8.3 Deadlines]] h2. Projektstammdaten h3. 1.1 Titel Bei der Namensgebung wurde darauf geachtet, dass sowohl ein leicht zu merkender Name als auch ein gut auszusprechender gewählt wird. Dabei wurde der Name Elternsprechtagsapplikation gewählt, was ESTA abgekürzt werden kann. h3. 1.2 Auftraggeber Das Projekt wurde von der Brühlwiesenschule in Hofheim beauftragt, um den Ablauf des Elternsprechtags zu optimieren. h3. 1.3 Projektteam Zu dem Projektteam gehören Christian Ehringfeld (Backend), David Mock (Frontend) und Matthias Unterbusch (Projektmanager). Herr Ehringfeld wird sich dabei vor allem mit der Programmierung beschäftigen. Herr Mock mit dem Design der Seite und Herr Unterbusch ist der Projektmanager. h3. 1.4 Datenspeicherung Bei der Elternsprechtagsapplikation werden bei allen Benutzern dieselben Daten gesammelt. Diese Daten beinhalten den Vor- und Nachnamen und die E-Mail Adresse. Alle weiteren Daten, die gespeichert werden, sind softwarespezifische Daten, z.B. die Termine und die Rollen der Benutzer. Die Passwörter werden als gesalzene sha512 Hashes in der Datenbank gespeichert. h3. 1.5 Projektumgebung Das Projekt wird plattformunabhängig programmiert. Die Elternsprechtagsapplikation kann auf einem Smartphone, Tablett oder PC benutzt werden. Dazu benötigt man lediglich einen installierten Browser. Dabei kann jeder Browser verwendet werden, z.B.: Firefox ab Version 3.5, Internet Explorer ab Version 8, Opera ab Version 10, Google Chrome ab Version 5 oder Safari ab Version 4. h3. 1.6 Namensgebung Im nachfolgendem wird die Liste der Lehrer Zeitplan und die Liste der Eltern Terminliste genannt. h2. 2 Zielbestimmung h3. 2.1 Musskriterien Die Software muss eine Registrierung ermöglichen. Die Benutzer sollen sich auf der Hauptseite, nach erfolgreicher Registrierung, anmelden können. Falls ein Benutzer sein Passwort vergessen hat, kann er ein neues festlegen und bekommt per E-Mail einen Link zugeschickt. Wenn es diesen anklickt, wird er auf eine Seite weitergeleitet, auf der er ein neues Passwort festlegen kann. Beim ersten Anmelden muss der Benutzer, wenn es sich um ein Elternteil handelt, ein oder mehrere Kinder eingeben, damit der Lehrer weiß, um welche Schüler es sich handelt. Um einen Termin einzutragen, können Eltern einen Lehrer aus einer Liste auswählen und den Zeitplan dieses Lehrers einsehen. Anhand des Zeitplans können sie freie Termine identifizieren und sich einen Termin reservieren. Diese Termine können von den Eltern, die den Termin erstellt haben, wieder gelöscht werden. Die Eltern können die bereits festgelegten Termine ansehen und über einen eingebauten Druckbutton ausdrucken. Der Benutzer soll eine Möglichkeit bekommen, die Liste der Lehrer zu filtern, sodass die Termineintragung vereinfacht wird. Dabei wird zunächst die gesamte Liste der Lehrer angezeigt. Der Benutzer kann in einem Feld die ersten Buchstaben festlegen, mit dem der Lehrer beginnen soll und die Lehrerliste wird dabei dynamisch aktualisiert. Die Verwaltung kann auch Benutzer manuell anlegen und bereits bestehenden Accounts eine neue Rolle zuweisen. Außerdem kann sie Termine manuell eintragen. Des Weiteren muss die Software über mehrere administrative Funktionen verfügen. Der Administrator legt das Datum des Elternsprechtages fest und die Dauer eines einzelnen Gesprächs. Ferner kann der Administrator eine Frist einstellen, in welchem Zeitraum Termine gemacht werden können. Außerdem kann der Administrator die Datenbankanbindung verwalten. Der Administrator hat die Möglichkeit die Datenbank in den Urzustand zu versetzen, indem er auf einen Resetbutton klickt. h3. 2.2 Kannkriterien Bei Löschung eines Termins durch einen Lehrer soll zur Information eine E-Mail an die Eltern geschickt werden. Ein weiteres Kannkriterium ist das Einbauen eines Zählers, der die Anzahl der Fehllogins zählt und bei zu vielen fehlerhaften Logins eine kurzzeitige Loginsperre verursacht. Eine Erstellung von einem Installationsskripts wäre ebenfalls möglich. h3. 2.3 Abgrenzungskriterien In der Elternsprechtagsapplikation soll kein Nachrichtensystem enthalten sein, mit denen sich Lehrer und Eltern untereinander Nachrichten schreiben können oder jeweils untereinander Nachrichten verschickt werden können. Außerdem soll es keinen Raumplan in der Software geben. Lehrer sollen keine Möglichkeit besitzen, Termine zu blockieren. Außerdem sollen vom System nur E-Mails verschickt werden, wenn der Lehrer einen Termin löscht. Eine weitere Ausnahme ist das Versenden von E-Mails bei der Erstellung eines neuen Accounts. h2. 3 Produktaufbau und Produktfunktionen h3. 3.1 Produktaufbau Die Software besitzt eine Startseite auf welcher man sich anmelden und registrieren kann. Nach dem Anmelden besteht die Möglichkeit die Zeitpläne der Lehrer einzusehen und Termine zu reservieren. Der Lehrer kann diese Liste einsehen und eventuell Termine löschen. Termine können von der Verwaltung auch manuell eingetragen werden. Die Rechte werden über Rollen verwaltet, die von der Verwaltung zugewiesen werden können. Die Rollen und die Datenbankanbindung wird vom Administrator verwaltet. h3. 3.2 Grundfunktionen +3.2.1 Registrierung und Anmeldung+ Die Benutzer des Systems sollen die Möglichkeit erhalten, sich mit ihrer E-Mail Adresse zu registrieren. An die eingetragene E-Mail Adresse wird eine E-Mail mit einem Bestätigungslink geschickt, der angeklickt werden muss, um den Account zu aktivieren. Wenn die Registrierung erfolgreich abgeschlossen wurde und der Account aktiviert ist, können sich die Benutzer auf der Seite anmelden. Nachdem der Benutzer sich erfolgreich angemeldet hat, muss, sofern es sich um einen Account mit der Rolle Eltern handelt, ein Schülername eingegeben werden. +3.2.2 Termine eintragen und löschen+ Die Eltern können sich eine Liste der Lehrer anzeigen lassen und sich darüber die Zeitpläne der Lehrer ansehen. Bei den Zeitplänen können sie klar erkennen, welche Termine belegt und welche frei sind. Sollten sie den Wunsch haben, mit einem Lehrer zu sprechen, können sie einen freien Termin reservieren. Falls der Gesprächswunsch nicht mehr bestehen sollte, kann der Termin im Nachhinein auch wieder gelöscht werden. Termine können nur eingetragen und gelöscht werden, wenn die Bearbeitungsfrist noch nicht verstrichen ist. +3.2.3 Zeitpläne ansehen und drucken+ Es existieren zwei Arten von Zeitplänen. Zum einen die Terminpläne der Eltern und zum anderen die Zeitpläne der Lehrer. Beide sollen über eine Visualisierung und über einen Druckbutton verfügen. +3.2.4 Rollenverwaltung+ Die Rollenverwaltung stellt sicher, dass jeder Benutzer die entsprechenden Rechte hat. Dabei ist die niedrigste Rolle die der Eltern und die höchste die der Administratoren. Jede Rolle beinhaltet dabei alle Rechte der darunterliegenden Rolle. Die einzige Ausnahme ist dabei das Eintragen von Terminen. Das kann jeder Benutzer ausgenommen diejenigen, die die Rolle Lehrer inne haben. h3. 3.3 Funktionen für die einzelnen Benutzer +3.3.1 Funktionen für die Eltern+ Nachdem der Account aktiviert wurde, können sich die Benutzer einloggen. Sie haben standardmäßig die Rolle der Eltern inne. Andere Rollen müssen von der Verwaltung festgelegt werden. Die Eltern können sich die Liste aller Lehrer anzeigen lassen und einen auswählen, um sich dessen Zeitplan anzusehen und eventuell eine Zeit für sich reservieren. Dabei sehen sie bei den bereits vergebenen Terminen nicht wer diese Termine reserviert hat, sondern nur, dass sie vergeben sind. Sie können falls der Gesprächswunsch nicht mehr besteht, ihre eigenen Termine löschen. Außerdem haben sie die Möglichkeit sich ihre eigenen Termine anzeigen und ausdrucken zu lassen. Außerdem können sie Ihre Benutzerdaten verändern, mit Ausnahme des Benutzernamens. +3.3.2 Funktionen für die Lehrer+ Die Lehrer können sich ihren Zeitplan vollständig anzeigen lassen und diesen ausdrucken. Außerdem können sie Termine ihres Zeitplans löschen. +3.3.3 Funktionen für die Verwaltung+ Die Verwaltung kann die Rollen für die Accounts der Benutzer zuweisen. Außerdem kann die Verwaltung Termine manuell nachtragen. Ferner kann die Verwaltung die Listen für alle Lehrer ausdrucken. +3.3.4 Funktionen für Administratoren+ Die Hauptaufgabe für Administratoren ist das Festlegen eines Zeitraums für den Elternsprechtag und das Bestimmen der Gesprächsdauer. Des Weiteren können sie die Datenbankanbindung festlegen. Außerdem kann die maximale Anzahl der möglichen Termine pro Account eingestellt werden. h2. 4 Qualitätsanforderungen h3. 4.1 Datenschutz Ein sehr wichtiger Punkt ist der Datenschutz der Schüler, Eltern und Lehrer. Deshalb werden die Zeitpläne der Lehrer den Eltern nicht komplett angezeigt. Die belegten Termine werden nur als belegt gekennzeichnet und nicht genau angezeigt wer welchen Termin belegt hat. Die Passwörter werden in der Datenbank verschlüsselt gespeichert. Dabei werden gesalzene sha512 Hashes verwendet. Da die Daten maskiert werden, ist eine SQL-Injection nicht möglich. Da alle Ausgaben maskiert werden ist Cross Site Scripting ebenfalls nicht möglich. h3. 4.2 Usability Die Benutzerfreundlichkeit soll auf gewährleistet sein. Dazu trägt vor allem ein schlichtes Design der Seite bei, wobei vor allem auf klare Kontraste geachtet wird. Außerdem wird eine sehr einfache Menüstruktur verwendet. Beim ersten Login werden die Eltern direkt aufgefordert ein Kind einzugeben und es muss nicht erst im Profil mühselig nachgetragen werden. Des Weiteren werden, falls Termine gemacht wurden, diese direkt im Startbildschirm angezeigt und es muss nicht jeder Lehrer, bei dem Termine gemacht wurden, einzeln überprüft werden. h3. 4.3 Barrierefreiheit Es ist sehr wichtig, dass jeder, auch Menschen mit Benachteiligungen, die Webseite in vollem Umfang nutzen können. Dabei kann vor allem mit einem einfachen Design, mit möglichst starken Kontrasten darauf geachtet werden, dass auch Menschen mit einen Sehschwäche die Website in vollem Umfang benutzen können. Ein weiterer Punkt der Barrierefreiheit ist die Verwendung von JavaScript. JavaScript ist ein Tool, was der Benutzer aktiv installieren muss und die Anforderungen an die Benutzer erhöht. Daher funktioniert die gesamte Webseite auch ohne JavaScript. JavaScript stellt dabei für die Benutzer lediglich einige zusätzliche Funktionen zur Verfügung. Ein Beispiel dafür ist das zusätzlich einblendbare Menü, welches ein besseres Design hat. Da es nicht immer eingeblendet ist, steht der zusätzliche Platz für den Rest der Website zur Verfügung. Ein weiteres Feature, welches nur mit JavaScript genutzt werden kann, gibt es bei der Termineintragung. Mit aktivierten JavaScript können freie Termine angeklickt werden, worauf die Felder Datum und Uhrzeit automatisch ergänzt werden. Wenn kein JavaScript aktiviert ist müssen diese Felder mit Hilfe von Drop Down Menüs manuell ausgefüllt werden. h2. 5 Prototypen h3. 5.1 Anmeldeseite !Anmeldeseite.png! Abb. 1: Anmeldeseite h3. 5.2 Registrierung Die Registrierungsseite kann von der Anmeldeseite aus erreicht werden und ist ebenfalls für nicht registrierte Benutzer sichtbar. !Registrierung.png! Abb. 2: Registrierung h3. 5.3 Terminliste Die Terminliste wird direkt nach dem Login angezeigt, falls bereits Termine vereinbart wurden. !Terminliste.png! Abb. 3: Terminliste h3. 5.4 Lehrersuche Die Lehrersuche kann über das Menü aufgerufen werden und ist eine Filterfunktion für Lehrer, um die Termineintragung zu vereinfachen. !Lehrersuche.png! Abb. 4: Lehrersuche h3. 5.5 Termineintragung Es wird der Zeitplan des Lehrers angezeigt und mit einem Klick auf einen verfügbaren Termin erscheint die untere Box, bei die Eltern noch die Möglichkeit haben, ein Kind auszuwählen falls zwei oder mehr ihrer Kinder auf die Schule gehen. Danach können sie einen Termin buchen, der danach als nicht verfügbar angezeigt wird. !Termineintragung.png! Abb. 5: Zeitplan h3. 5.6 Benutzerverwaltung Die Benutzerverwaltung ist nur für Administratoren sichtbar und kann zum Erstellen und Bearbeiten der Benutzer verwendet werden. !Benutzerverwaltung.png! Abb. 6: Benutzerverwaltung h2. 6 Diagramme h3. 6.1 UML-Anwendungsfalldiagramm !Anwendungsfalldiagramm.png! Abb. 7: UML-Anwendungsfalldiagramm h3. 6.2 Datenbankstruktur Die Datenbankstruktur gibt eine Auskunft darüber, welche Daten gespeichert werden und wie diese Daten miteinander verknüpft werden. Dabei steht die Verbindung mit einem Doppelstrich (||) und einem Pfeil (>|) für eine 1 zu n Relation. Die Verbindung mit zwei Doppelstrichen (||). !DBModel.png! Abb. 8: Datenbankstruktur h2. 7 Testfälle Die Testfälle berücksichtigen die Reihenfolge, in der die Schritte bei einem Ablauf des Elternsprechtags erfolgen würden. h3. 7.1 Modultest Der Modultest wird aufgrund der knappen Zeit während der Programmierung durchgeführt. Den Test führen die Programmierer und der Projektmanager nach jedem Abschluss eines Teilkriteriums durch, was genauer im GANTT Diagramm festgelegt ist. h3. 7.2 Integrationstest Der Integrationstest wird von den Programmierern bei der Zusammenführung der Prototypen durchgeführt. Dabei werden alle auftretenden Probleme, die das Zusammenspiel der Komponenten betreffen, behoben. h3. 7.3 Systemtest als Blackboxtest +7.3.1 Festlegen eines Datums für den Elternsprechtag+ Als erstes wird ein Zeitraum festgelegt, an dem der Elternsprechtag stattfindet. Dabei werden mehrere Testeingaben gemacht. Zunächst wird ein Tag eingegeben und getestet, ob Fehler auftreten. Danach wird der zweite Tag angegeben und das Resultat überprüft. Dabei wird vor allem Wert darauf gelegt, dass die Zeitpläne für jeden einzelnen Lehrer richtig generiert werden. +7.3.2 Testregistrierungen und Eintragen eines oder mehrerer Kinder+ Zunächst wird ein Testaccount erstellt. Dabei werden mehrere falsche Eingaben gemacht, z.B. falscher Name, falsche E-Mail Adresse oder eine unmögliche E-Mail Adresse. Nach mehreren falschen Eingaben wird eine korrekte Eingabe getätigt und getestet, ob der Account wie geplant über E-Mail aktiviert werden kann. Danach loggt sich der Tester in seinen Account ein und testet, ob er direkt zur Eingabe eines Kindes aufgefordert wird. +7.3.3 Einfügen von Testterminen+ Der letzte Test ist das Eintragen von Terminen. Dabei wird über das Menü die Seite aufgerufen. Dabei wird versucht, einen bereits belegten Termin auszuwählen und erneut zu reservieren. Danach wird ein verfügbarer Termin angeklickt und ein Termin reserviert. Zum Schluss wird auf die Startseite gewechselt und geprüft, ob der Termin eingetragen wurde. h2. 8 Zeitpläne und Meilensteine h3. 8.1 Meilensteine Der erste Meilenstein ist die Fertigstellung der Benutzerverwaltung. Für die Fertigstellung der Benutzerverwaltung wird eine Woche eingeplant. Der nächste große Meilenstein ist die Fertigstellung der Terminverwaltung. Diese ist Ende der zweiten Woche geplant. Der letzte große Meilenstein vor dem Release ist die Fertigstellung des Seitendesigns. Dieses soll ebenfalls Ende der zweiten Woche fertiggestellt werden. Der letzte Meilenstein ist die Fertigstellung des Systemtests. Dabei sollen die letzten Fehler in der Software entfernt werden und die Software für die Live Demonstration vorbeireitet werden. h3. 8.2 GANTT-Diagramm Im folgendem Diagramm sind die Meilensteine mit MS abkürzt. !Zeitplanung_quer.png! Abb. 9: GANTT Diagramm h3. 8.3 Deadlines |*Datum* |*Aufgabe* | |06.03.2013 |Abgabe der ersten Version des Pflichtenhefts | |08.03.2013 |Meilenstein: Fertigstellung der Benutzerverwaltung | |12.03.2013 |Abgabe der finalen Version des Pflichtenhefts | |12.03.2013 |Kick off | |15.03.2013 |Meilenstein: Fertigstellung der Terminverwaltung | |15.03.2013 |Meilenstein: Fertigstellung des Seitendesigns | |22.03.2013 |Abgabe des Projekts (Dokumentation, Manual, Angebot, Elternsprechtagsapplikation) | |22.03.2013 |Live Demo | |29.05.2013 |Präsentation |