Bachelorarbeit Zum Thema Ein modernes Audience Response System Autor: Alessa Groß Betreuer: Dr. Hans-Jürgen Schröder Abgabedatum: 04. Juni 2014 Persönliche Danksagung Persönliche Danksagung An dieser Stelle möchte ich mich bei all denjenigen bedanken, die mich bei der Erstellung dieser Arbeit unterstützt haben. Ein besonderer Dank gilt Herrn Dr. Hans-Jürgen Schröder für die Betreuung meiner Arbeit sowie für die konstruktiven Fachgespräche, durch die er mir immer wieder den nötigen Aufschwung gegeben hat. Mein besonderer Dank gilt auch Herrn André Runge, der mir geduldig mit allen meinen Anforderungen und Fragen an die Serverseite geholfen hat und immer schnell eine Lösung parat hatte. II Inhaltsverzeichnis Inhaltsverzeichnis Inhaltsverzeichnis ................................................................................................................. III Abbildungsverzeichnis ........................................................................................................... V Tabellenverzeichnis .............................................................................................................. VI Quellcodeverzeichnis ........................................................................................................... VII 1 Einleitung ....................................................................................................................... 1 2 Grundlagen .................................................................................................................... 2 2.1 Problemstellung ............................................................................................................... 2 2.2 Konkurrenzprodukte – Eine Analyse ................................................................................ 4 2.2.1 ARSnova.................................................................................................................... 4 2.2.2 eduVote .................................................................................................................... 7 2.2.3 PINGO ....................................................................................................................... 9 2.2.4 FreeQuizDome........................................................................................................ 11 2.2.5 Konsequenzen für die Entwicklung von Mainzel ................................................... 13 2.3 3 2.3.1 Benutzer und ihre Rollen........................................................................................ 14 2.3.2 Aufbau einer Umfrage ............................................................................................ 15 Anforderungen an das System .......................................................................................17 3.1 Funktionale Anforderung ............................................................................................... 17 3.1.1 Muss-Kriterien ........................................................................................................ 17 3.1.2 Kann-Kriterien ........................................................................................................ 18 3.2 4 Konzept .......................................................................................................................... 14 Nicht-funktionale Anforderungen .................................................................................. 19 3.2.1 Muss-Kriterien ........................................................................................................ 19 3.2.2 Kann-Kriterien ........................................................................................................ 19 3.3 Use Case Diagramm ....................................................................................................... 19 3.4 Use Cases........................................................................................................................ 20 Planung und Design .......................................................................................................27 4.1 Systemarchitektur .......................................................................................................... 27 4.1.1 Globale Systemarchitektur ..................................................................................... 27 4.1.2 Architektur eines Mainzel-Clients .......................................................................... 28 4.1.3 App-Architektur ...................................................................................................... 30 4.2 Frontend-Design............................................................................................................. 31 4.3 Datenbanken-Design ...................................................................................................... 35 4.3.1 Globale MS SQL Datenbank ................................................................................... 36 III Inhaltsverzeichnis 5 4.3.2 Lokale SQLite-Datenbank ....................................................................................... 37 4.3.3 Synchronisation ...................................................................................................... 39 4.3.4 XML-Datentypen .................................................................................................... 39 Entwicklung ..................................................................................................................42 5.1 Entwicklungssoftware .................................................................................................... 42 5.1.1 Balsamiq Mockups ................................................................................................. 42 5.1.2 draw.io ................................................................................................................... 42 5.1.3 Gimp ....................................................................................................................... 43 5.1.4 Android Developer Tools Bundle ........................................................................... 43 5.1.5 SQL Server Management Studio und MS SQL Server............................................. 43 5.2 Verwendete Technologien und Bibliotheken................................................................. 44 5.2.1 Java ......................................................................................................................... 44 5.2.2 Android SDK und Android Support v4-Bibliothek .................................................. 44 5.2.3 AChartEngine .......................................................................................................... 45 5.2.4 SQLSRV ................................................................................................................... 45 5.2.5 JSON ....................................................................................................................... 45 5.2.6 Android Holo Colors ............................................................................................... 45 5.3 Umsetzung der App mit Java, XML und den verwendeten Bibliotheken ...................... 46 5.3.1 Klassen.................................................................................................................... 46 5.3.2 XML-Dateien ........................................................................................................... 49 6 Das Produkt ..................................................................................................................50 7 Fazit ..............................................................................................................................56 7.1 Einsatzfähigkeit .............................................................................................................. 56 7.2 Umgesetzte Anforderungen ........................................................................................... 56 7.3 Ausblick .......................................................................................................................... 57 Anhang A - Use Cases .......................................................................................................... VIII Erklärung der Selbstständigkeit .......................................................................................... XVII IV Abbildungsverzeichnis Abbildungsverzeichnis Abbildung 2.1: Die Hardware des bisherigen ARS des Instituts für Informatik ............................... 4 Abbildung 2.2: Dozentenbereich von ARSnova ............................................................................... 5 Abbildung 2.3: Beantwortung einer Frage in ARSnova .................................................................... 6 Abbildung 2.4 Beantwortung einer Frage in EduVote ..................................................................... 8 Abbildung 2.5: Die Autorenansicht einer vergangenen Frage in PINGO ......................................... 9 Abbildung 2.6: Beantwortung einer Frage in PINGO ..................................................................... 10 Abbildung 2.7: Desktopsoftware von FreeQuizDome.................................................................... 12 Abbildung 2.8: Beantwortung einer Frage in FreeQuizDome ........................................................ 12 Abbildung 3.1: Use-Case Diagramm............................................................................................... 20 Abbildung 3.2: Benutzeroberfläche zum Beantworten einer Frage .............................................. 22 Abbildung 3.3: Detailansicht von Umfragen .................................................................................. 24 Abbildung 3.4: Benutzeroberfläche zum Einloggen in die App. ..................................................... 25 Abbildung 3.5: Benutzeroberfläche zum Einsehen der Einladungen. ............................................ 26 Abbildung 4.1: Globale Client-Server-Architektur von Mainzel ..................................................... 27 Abbildung 4.2: Architektur eines Clients im Schichten-Model ...................................................... 29 Abbildung 4.3: Vereinfachte Architektur der Mainzel-App ........................................................... 31 Abbildung 4.4: Umfrage-Übersicht ................................................................................................ 32 Abbildung 4.5: Frontend-Komponenten der App .......................................................................... 33 Abbildung 4.6: Detailansicht einer Frage ....................................................................................... 34 Abbildung 4.7: Umfragen-Editor .................................................................................................... 35 Abbildung 4.8: Globales Datenbankdiagramm .............................................................................. 37 Abbildung 4.9: Diagramm der lokalen Datenbank ......................................................................... 38 Abbildung 5.1: Klassendiagramm……………………………………………………………………………………………….47 Abbildung 6.1: Login-Ansicht ......................................................................................................... 50 Abbildung 6.2 Nach dem Einloggen in die Mainzel-App ................................................................ 51 Abbildung 6.3: Ansicht zum Beantworten einer Single-Choice-Frage ........................................... 52 Abbildung 6.4: Auswertung drei vergangener Fragen ................................................................... 53 Abbildung 6.5: Umfrage-Editor ...................................................................................................... 54 Abbildung A.1: Benutzeroberfläche zum Bearbeiten von Umfragen ............................................. IX Abbildung A.2: Ansicht zum Einsehen der eigenen Ergebnisse in bereits geschlossenen Fragen .. XI Abbildung A.3: GUI zum Einloggen in die App und zum Erstellen eines neuen Accounts ............. XII Abbildung A.4: GUI für die Einsicht der eigenen Account-Daten eines Benutzers ....................... XIII V Tabellenverzeichnis Tabellenverzeichnis Tabelle 2.1: Auflistung aller Frage-Typen von Mainzel .................................................................. 16 Tabelle 3.1: Use Case #05 .............................................................................................................. 21 Tabelle 3.2: Use Case #06a............................................................................................................. 23 Tabelle 3.3: Use Case #09a............................................................................................................. 24 Tabelle 3.4: Use Case #13 .............................................................................................................. 26 Tabelle A.1: Use Case #01 ............................................................................................................. VIII Tabelle A.2: Use Case #02 ............................................................................................................. VIII Tabelle A.3: Use Case #03 ............................................................................................................... IX Tabelle A.4: Use Case #04 ................................................................................................................ X Tabelle A.5: Use Case #06b .............................................................................................................. X Tabelle A.6: Use Case #07 .............................................................................................................. XII Tabelle A.7: Use Case #08 ............................................................................................................. XIII Tabelle A.8: Use Case #09b ........................................................................................................... XIV Tabelle A.9: Use Case #10 ............................................................................................................. XIV Tabelle A.10: Use Case #11 ........................................................................................................... XIV Tabelle A.11: Use Case #12 ............................................................................................................ XV VI Quellcodeverzeichnis Quellcodeverzeichnis Quellcode 4.1: Beispiel für ein AnswerXML-Wert einer Single-Choice-Frage ............................... 40 Quellcode 4.2: Beispiel für ein AnswerXML-Wert einer Schätzfrage............................................. 40 Quellcode 4.3: Beispiele für ResultXML-Werte einer Datum- und einer Position-Frage............... 41 VII 1 Einleitung 1 Einleitung Im Rahmen dieser Arbeit wurde eine Android App entwickelt, die ein modernes Audience Response System (ARS) darstellt. Die Schritte und Besonderheiten bei der Durchführung der Planung, Entwicklung und Implementation der App werden auf den folgenden Seiten behandelt. Ein ARS ermöglicht dem Publikum eines Vortrags die Fragen des Vortragenden mit Hilfe von „Fernbedienungen“ digitalisiert zu beantworten. Es wertet daraufhin die Ergebnisse aus und stellt sie in angemessener Weise für die Einsicht durch den Vortragenden bereit. Ein solches System motiviert und aktiviert das Publikum und gibt gleichzeitig eine Rückmeldung an den Vortragenden, in wie weit das Publikum ihm folgen kann. Um ein solches klassisches ARS mit spezieller Hardware durch moderne, hardwareunabhängige Technologien am Institut für Informatik der Johannes Gutenberg-Universität in Mainz zu ersetzen, wurde die Idee einer Android App als ARS entwickelt. Die App stellt die Funktionen zum Erstellen von Fragen, Beantworten durch die Teilnehmer und sowohl zum Auswerten, als auch zum Einsehen der Ergebnisse bereit. Es kombiniert dadurch die modernen Möglichkeiten einer App mit dem klassischen Nutzen eines ARS. Die entwickelte App trägt den Namen „Mainzel“. Auf die Herkunft Bezug nehmend, ist der Name eine Abkürzung für „Mainzer Audience Interaction Network for large-siZEd Learning groups“. Der erste Teil des Namens „Audience Interaction Network“ lehnt dabei stark an den Ursprung der App, nämlich einem Audience Response System, an. Er erweitert allerdings die Bedeutung um die Neuerungen von Mainzel, die es gegenüber einem klassischen ARS mitbringt. Im Gegensatz zum klassischen ARS, bietet Mainzel nicht allein die Möglichkeit in eine Richtung Antworten („Response“) zu verschicken, vielmehr können alle Benutzer in Interaktion miteinander treten. Die Rollenverteilung des Vortragenden und der Zuhörerschaft innerhalb des ARS verwischt unter Mainzel und kann von Mal zu Mal neu verteilt werden. Weiterhin wird der Typ des Systems von Mainzel näher als Netzwerk („Network“) beschrieben. Damit wird der Charakter einer vernetzten Mainzel-Community hervorgehoben, in der alle Benutzer auf gleicher hierarchischer Ebene stehen und alle zu jeder Zeit in alle Rollen schlüpfen können, um miteinander in Kontakt zu treten. Außerdem ist Mainzel durch verschiedene Faktoren wie dem Community-Charakter und der Verwendung moderner Technologien, die beispielsweise keinen physischen Empfänger, wie im klassischen ARS, mehr benötigen, für große Gruppen („large-siZEd groups“) geeignet. Beispielsweise müssen in großen Lehrveranstaltungen nicht einmal alle Beteiligten im selben Raum sein, um einander Fragen und Antworten zu liefern. Schließlich wurde Mainzel zum Einsatz in einer Universität entwickelt und daher wurde der Nutzen beim Lernen („Learning groups“) mit Mainzel stets im Auge behalten. Zur Aufarbeitung des Themas wird in Kapitel 2 zunächst ein Überblick über den Markt und später eine Einführung in die Begrifflichkeiten und das Konzept von Mainzel gegeben. Im darauf folgenden Kapitel 3 werden alle Anforderungen an das System nach den Regeln der SoftwareEntwicklung analysiert. Kapitel 4 bespricht im Anschluss die Überlegungen zum Design des Systems und der Benutzeroberfläche der App. Daraufhin werden die Entwicklungswerkzeuge und deren Einfluss auf das System in Kapitel 5 vorgestellt. Kapitel 6 stellt nachfolgend die App als Produkt vor und abschließend wird in Kapitel 7 ein Fazit über die Umsetzung der Anforderungen und den Ausblick auf Weiterentwicklungsmöglichkeiten von Mainzel gezogen. 1 2 Grundlagen 2 Grundlagen Dieses Kapitel widmet sich den Grundlagen der Thematik, indem zunächst die Problemstellung definiert wird. Darauf folgt eine Analyse bereits bestehender ähnlicher Systeme und schließlich wird das Konzept des Produkts erklärt, das dieser Arbeit zu Grunde liegt. 2.1 Problemstellung Jeder kennt das Problem: Bereits in der Schule kämpft der Schüler mit langweiligen Unterrichtsstunden und trockenem Stoff. Schon lange ist bekannt, dass der klassische Frontalunterricht für die meisten Lerntypen nicht geeignet ist und so nur wenige Schüler davon profitieren können. Um dem entgegen zu wirken, wurden und werden alternative Unterrichtsmethoden entwickelt, die den Schüler mehr in die Vermittlung und Erarbeitung des Lernstoffes einbinden und bei denen Lehrer öfter Rückmeldung über den Wissensstand der Schüler erhalten. Trotz der Veränderungen der Unterrichtsmethoden steht in späteren Ausbildungsabschnitten schließlich mehr die Wissensvermittlung als die didaktische Methode im Mittelpunkt. Vor allem Vorlesungen im akademischen Bereich, in denen ein Dozent zumeist im klassischen Vortrag an der Tafel oder mit vorbereiteter Beamer-Präsentation das Wissen vermittelt, treffen auf diese Beschreibung zu. Das mag seine Richtigkeit in der akademischen Ausbildung haben, in der es vor allem um die effiziente Weiterbildung geht und die Eigeninitiative der Lernenden notwendig ist. Dennoch können die Grundgedanken aus den neuen Lernmethoden, nämlich den Lernenden mit einzubeziehen und die Rückmeldungen an den Lehrenden zu erhöhen, auch an der Hochschule von Vorteil sein. Sicherlich gibt es bereits Empfehlungen und Tipps, die diese Erkenntnisse allgemein für Vorträge aller Art umsetzen. Beispielsweise ist es für den Vortragenden am einfachsten den Wissenstand des Publikums in Erfahrung zu bringen und gleichzeitig das Publikum während des Vortrags zu aktivieren, indem er von Zeit zu Zeit Fragen an die Zuhörer stellt. Durch das zufällige Auftreten der Interaktion zwischen Dozent und Zuhörerschaft wird die Aufmerksamkeit erhöht und der Vortrag wirkt kurzweiliger. Auf diese Weise erreichen den Dozenten allerdings bei jeder Frage nur eine oder zumindest wenige Antworten und diese sind zumeist aus den ersten paar Reihen des Hörsaals. Oft genug kommt es in dieser Situation vor, dass ein Teil des Publikums die Frage nicht einmal gehört hat, weil er abgelenkt war. Auch das Problem solcher Ablenkungen ist jedem bekannt. Vielleicht ist man als Zuhörer im Allgemeinen unkonzentriert oder der Sitznachbar lenkt durch Gesprächigkeit ab oder moderne Ablenkungen wie Laptop, Tablet und Handy sorgen dafür, dass auch der beste Vortrag ausgeblendet wird. Allerdings können genau diese Geräte die Ablenkung in eine Aktivierung der Zuhörerschaft umkehren: Ein Szenario wäre beispielsweise ein auf seinem Smartphone im Internet surfender, abgelenkter Student, der in dem Moment für den Vortrag reaktiviert wird, wenn auf seinem Smartphone eine Nachricht aufklappt, die ihm mitteilt, dass es eine neue Frage in dieser Vorlesung gibt, für die beispielsweise nur noch 60 Sekunden zum Beantworten zur Verfügung stehen. Der Student hat zwar verpasst, dass der Dozent diese Frage gestellt hat, mit Klick auf die Nachricht auf seinem Smartphone kann er sie aber trotzdem einsehen und seine Antwort sofort eingeben und 2 2 Grundlagen abschicken. Im vom Student verpassten Teil des Vortrags hat der Dozent diese Frage in einem speziellen Umfragesystem für die Beantwortung für 60 Sekunden freigegeben und somit die Benachrichtigung des Studenten durch sein Smartphone ausgelöst. Nachdem die 60 Sekunden abgelaufen sind, projiziert der Dozent die Auswertung der Antworten an die Leinwand und der Student sieht dort oder auf seinem Smartphone, auf dem ein ähnliches Diagramm erscheint, ob seine Antwort richtig war. Ein solches Umfragesystem, in dem es einen „Auswertungsknoten“ gibt, der mit mehreren „Empfängern“ zum Beantworten der Fragen kommuniziert, und zur automatisierten Kommunikation zwischen Vortragendem und Publikum dient, wird Audience Response System oder kurz ARS genannt. Das wohl bekannteste ARS kommt bei der Auswertung des Publikumsjokers in der Fernsehsendung „Wer wird Millionär“ zum Einsatz. Hier stellt der Moderator die Frage und gibt deutlich an, welche Antwortmöglichkeiten welchem Buchstaben zugeordnet werden. Daraufhin drücken die Zuschauer im Publikum den Buchstaben ihrer Wahl auf einer Art Fernbedienung und geben auf diese Weise ihre Antwort ab. Die Daten werden nach Ablauf der Zeit im Computer ausgewertet und als das bekannte Diagramm auf den Bildschirmen der Zuschauer zu Hause angezeigt. Die Anschaffung eines solchen Systems und der Hardware ist sicherlich teuer für eine Hochschule und letztendlich werden nie genug Fernbedienungen für eine Vorlesung zur Verfügung stehen. Aber wie bereits im Szenario dargestellt, ist es eine Möglichkeit ein ARS als Software anzubieten, das die Hardware nutzt, die bereits im Hörsaal vorhanden ist. Darüber hinaus kann eine solche Software noch weitere vorteilhafte Funktionen implementieren, die durch die festgelegte Hardware der klassischen ARS beschränkt wird. Beispielweise das Anzeigen der Fragetexte und der Antwortmöglichkeiten oder die Erweiterbarkeit der Fragetypen, die bei den meisten klassischen ARS auf Single-Choice Fragen mit fester Anzahl an Antwortmöglichkeiten beschränkt sind. Auch die strikte Trennung zwischen Auswertungsmaschine und Antwort-Fernbedienungen kann aufgehoben werden, sodass alle Beteiligten in der Position des Fragenden und des Antwortenden zur selben Zeit sein können. Schließlich ist auch eine Auswertung und Archivierung der Ergebnisse nicht nur für den Fragenden denkbar, sodass die Zuhörer auch im Nachhinein einen Überblick über die eigene Leistung einsehen können. In dieser Arbeit wird ein solches, modern interpretiertes ARS vorgestellt. Das System Mainzel wurde aus der Idee heraus geboren, ein klassisches, wie oben beschriebenes ARS unter Zuhilfenahme moderner Technologien am Institut für Informatik der Johannes GutenbergUniversität zu ersetzen. Es galt einen Nachfolger für das institutseigene ARS, das in Abbildung 2.1 gezeigt wird, zu entwickeln, das die Aufgaben eines klassischen ARS übernimmt und gleichzeitig die Vorteile der verwendeten Technologien aufgreift, um Mainzel zu einem modernen, erweiterten Kommunikationsmittel zwischen Vortragendem und Zuhörerschaft zu machen. 3 2 Grundlagen Abbildung 2.1: Die Hardware des bisherigen ARS des Instituts für Informatik - Das ARS besteht aus mehreren Fernbedienungen (grau dargestellt), die durch Identifikationsnummern gekennzeichnet sind, dem Empfänger(lila dargestellt), der per Ethernet-Kabel an einen Computer angeschlossen wird und einer Auswertungssoftware, die auf demselben Computer installiert wird. Zum Abschicken seiner Antwort drückt der Student einen der Knöpfe A bis F auf einer Fernbedienung. Ein Prototyp wurde bereits im Rahmen des Datenbanken-Praktikums im Wintersemester 2013/2014 als Web-App entwickelt. Diese Version von Mainzel implementierte bereits viele Grundgedanken des in dieser Arbeit vorgestellten Produkts. Als Web-App ist es beispielsweise von den meisten in einer Vorlesung vorhandenen Geräten schnell erreichbar. Es stellt Ergebnisse in Kuchen- und Balkendiagrammen dar, sodass sie dem Publikum ohne großen Aufwand anschaulich präsentiert werde können. Weiterhin können Teilnehmer nach dem Beenden einer Frage die eigene Antwort und die richtige Antwort einsehen. Auch konzeptionell beeinflusst der Prototyp das im Rahmen dieser Arbeit entwickelte System. Beispielsweise wurden sowohl die in Kapitel 2.3 angesprochenen Begrifflichkeiten und Beziehung als auch das Datenbankmodel weitestgehend übernommen. Alle Veränderungen, Weiterentwicklungen und Anpassungen zwischen dem genannten Prototypen und dem Mainzel, das dieser Arbeit zu Grunde liegt, sind mit dem Hintergrund gemacht worden, Mainzel so offen wie möglich zu gestalten, sodass sein Einsatz nicht allein auf den akademischen Bereich beschränkt ist, sondern sich für Vorträge und Fragerunden aller Art eignet. 2.2 Konkurrenzprodukte – Eine Analyse Oft wird auf unterschiedliche Weise versucht Vorträge oder Unterrichtsstunden in der Schule und im universitären Umfeld anschaulicher, spannender und kurzweiliger zu gestalten. Aus diesem Grund ist es selbstverständlich, dass das Mainzel-System nicht das einzige seiner Art auf dem Markt sein wird. Es verfolgt zwar durch seinen mobilen Einsatz und den offen gehaltenen Fragetypen nicht zwangsläufig das Ziel ausschließlich im Frontalunterricht eingesetzt zu werden, aber es muss sich dennoch dem Vergleich mit bereits bestehenden Produkten stellen, die für diesen Einsatz konzipiert wurden. Es gibt bereits eine Reihe von ARS auf Basis von Web- und mobilen Technologien, die genau wie Mainzel, für den akademischen Bereich entwickelt wurden. Im Folgenden werden vier Produkte dieser Art vorgestellt und ein Vergleich mit Mainzel gezogen. 2.2.1 ARSnova Das kostenlose Produkt „ARSnova“ der Technischen Hochschule Mittelhessen ist Mainzel vielleicht noch am ähnlichsten, da es vorwiegend durch Bachelor- und Master-Arbeiten entwickelt und weiterentwickelt wird. Es ist ein typisches Produkt aus der Hochschule für die Hochschule und 4 2 Grundlagen lädt mit dem Slogan „Feedback im Hörsaal“ auf der Startseite, auf der man sich als „Zuhörer/in“ oder „Dozent/in“ anmeldet, einzig zur Benutzung im universitären Bereich ein. Dennoch ist das Konzept, das sich hinter der kategorisierenden Startseite verbirgt, offen für viele andere Anwendungsbereiche. Abbildung 2.2: Dozentenbereich von ARSnova - Dargestellt ist die Ansicht zum Erstellen von vorbereiteten Fragen. [1] In ARSnova werden mehrere Fragen in einer Session zusammengefasst. Es gibt die Fragetypen Multiple-Choice, Single-Choice, Ja-Nein-Frage, Freitext, Rating1, Schulnote und Lernkarte2. Als einziges Produkt unter den in dieser Arbeit vorgestellten Konkurrenzprodukten von Mainzel, kann der Dozent für jede Frage angeben, ob eine Enthaltung möglich sein soll. Die Fragen können entweder als Hörsaal-Fragen angelegt werden und sie dadurch erst in der Vorlesung zu beantworten oder als Vorbereitungsfrage eingetragen werden, sodass Teilnehmer sie vorher schon zur Vorbereitung nutzen können. Die Übersicht über bereits erstellte Vorbereitungsfragen ist in Abbildung 2.2 dargestellt. Aktive Teilnehmer an einer Session, werden in Form von einem Zähler auf dem Startbildschirm auf die Anzahl unbeantworteter Fragen hingewiesen. Ebenfalls als einziges System, der hier analysierten Konkurrenzprodukte von Mainzel, hat der Dozent hier die Möglichkeit mehrere Fragen parallel zu stellen. Die Ansicht zur Beantwortung einer Frage wird in Abbildung 2.3 dargestellt. 1 Im Rating-Frage-Typ von ARSnova werden fünf vorgefertigte Antwortmöglichkeiten von „trifft voll zu“ bis „trifft nicht zu“ angeboten. 2 Lernkarten in ARSnova sind zum Selbst-Studium ausgelegt und können wie digitale Kartei-Lernkarten angesehen werden. 5 2 Grundlagen Mit einem Swipe3 nach rechts oder links kann der Benutzer die anderen Fragen der Session einsehen und beantworten. Die Fragen müssen manuell freigegeben und gesperrt werden. Ein Dozent kann die Beantwortung einer Frage pausieren und zu einem späteren Zeitpunkt fortsetzen. Weiterhin kann Feedback zum Tempo der Vorlesung in Form von Smileys gegeben werden, das mehrmals während einer Vorlesung vom Teilnehmer aktualisiert werden kann. Auch dieses Feature wird durch die Beschreibung der Smileys mit „Kann folgen“, „Bitte schneller“, „Zu schnell“ und „Abgehängt“ als Vorlesungshelfer kategorisiert, obwohl es viel mächtiger ist und auch in anderen Anwendungsbereichen Hilfestellung beim Einholen von Feedback leisten kann. Als weitere Feedback-Funktion kann ein Teilnehmer seinerseits Zwischenfragen an den Dozent stellen, der diese nach Erhalt mündlich beantworten kann, sobald es in den Vortrag passt. ARSnova ist als Web-App entwickelt worden und daher auf allen Geräten über einen Browser erreichbar. Benutzer melden sich entweder mit dem Uni-Account an oder geben den eigenen Facebook- oder Google-Account an. Auch ein anonymer Gastzugang ist möglich, ohne dass Umfrageergebnisse später einsehbar sind. Sowohl die Bedienung als auch das Design und der Aufbau der User-Interface-Elemente (UIElemente) der Web-App sind auf die Benutzung mit kleinen Touchdisplays ausgelegt. Dabei sei erwähnt, dass die Darstellung für Teilnehmer den erweiterten Platz auf einem großen Bildschirm nicht ausnutzt. Zum Beispiel geschieht das Navigieren durch die einzelnen Fragen, wie sie in Abbildung 2.3 dargestellt ist, durch eine horizontale Wischgeste, die auch bei der Benutzung mit der Maus nachempfunden werden muss. Abbildung 2.3: Beantwortung einer Frage in ARSnova - In der Abbildung ist die Ansicht zum Abgeben einer Antwort zu einer Mehrfachauswahl-Frage, die einer Multiple-Choice-Frage in Mainzel entspricht, dargestellt. [1] 3 Ein Swipe ist eine Geste auf einem Touchdisplay. Der Benutzer wischt auf dem Bildschirm mit einem Finger und gibt dabei eine Geschwindigkeit und eine Richtung vor, die eine App aufgreifen und entsprechend darauf reagieren kann. Oft wird ein Swipe zum „Blättern“ durch verschiedene, aber hierarchisch gleiche Ansichten genutzt. 6 2 Grundlagen Weiterhin existiert die Desktop-Erweiterung „ARSnova Overlay“, die auf einem PC installiert wird und sich als kleines Widget auf dem Bildschirm über die Präsentationsfolien des Dozenten legt. Es zeigt auf einen Blick die Ergebnisse des Feedbacks als Smiley und informiert über eingegangene Zwischenfragen. Mit Klick auf das Widget öffnet sich ein größeres Fenster, in dem die FeedbackStatistik, die Zwischenfragen und der QR-Code für den schnellen Zugang zur Session eingesehen werden können. Eine weitere Erweiterung für Dozenten ist der „ARSnova Presenter“, der ebenfalls als Webservice, allerdings für große Bildschirme konzipiert ist. Hier kann jeder Dozent die Statistiken seiner Sessions einsehen, die zur Präsentation vor Publikum durch Graphen und Diagramme aufbereitet sind. Das Feedback wird hier sogar zeitgleich mit der Abgabe durch die Teilnehmer aktualisiert, während die Antwortstatistiken mit Klick auf „Aktualisieren“ neue Ergebnisse anzeigen. ARSnova steht als OpenSource Projekt zur Verfügung und kann auf Nachfrage für die Installation auf anderen Hochschulservern personalisiert werden. Alles in allem implementiert ARSnova alle nötigen Funktion eines modernen ARS und erweitert das Angebot zusätzlich um durchdachte Funktionen und Details, die im Alltag einer Vorlesung nützlich sind, wie beispielsweise der anschauliche Presenter oder das schnell zugängliche, auf mobile Geräte ausgelegte Design. Es ist außerdem ersichtlich, dass bei diesem Produkt durch Angebote wie das Feedbacksystem der Fokus auf den Dialog zwischen Dozent und Teilnehmer einer Vorlesung gelegt wurde, der fast wie der persönliche Austausch in der Realität zwischen Dozent und Teilnehmer abgebildet wurde. Dennoch ist es genau auf diesen akademischen Alltag ausgelegt, obwohl die Funktionen von ARSnova sicherlich auch andere Anwendungsbereiche interessieren könnten. 2.2.2 eduVote EduVote ist das einzige kommerziell vertriebene ARS unter den in diesem Kapitel vorgestellten Systemen. Es wurde von der Firma „SimpleSoft“ entwickelt, hinter der sich zwei ehemalige Studenten der TU Braunschweig verbergen, die teilweise noch immer Lehraufträge an der TU Braunschweig ausüben. EduVote ist aus diesem Grund anders als die anderen vorgestellten Systeme. Es wurde zwar mit dem Hintergrund eines Lehrenden an einer Hochschule entwickelt, ist aber dennoch kein freies System einer Hochschule, sondern wird als kostenpflichtiges Produkt einer Softwarefirma vertrieben. Eine Einzellizenz für einen Dozenten kostet 299€ [2] im Jahr und eine Hochschullizenz, die alle Dozenten der Hochschule gleichzeitig nutzen können, kostet 2800€ [2] im Jahr. Dabei bietet das Produkt eine sehr genaue Abbildung eines klassischen Audience-ResponseSystem mit speziellen Hardware-Buzzern, wie man es aus der Sendung „Wer wird Millionär“ von dem Publikumsjoker kennt. In eduVote kann der lizenzierte und mit einer E-Mail-Adresse registrierte Dozent Fragen für seinen Vortrag vorbereiten, die alle vom Typ Single-Choice sind und sich lediglich in der Anzahl der Antwortmöglichkeiten unterscheiden. Der Dozent gibt im Vortrag die Frage manuell frei und stoppt sie nach einer gewissen Zeit manuell, woraufhin die Ergebnisse im Balkendiagramm zusammengefasst werden. Erst danach kann der Dozent die nächste Frage zur Beantwortung freigeben. Die Teilnehmer können der Umfrage beiwohnen, indem sie die E-Mail-Adresse des Dozenten eingeben. Mit Klick auf „Vote“ kann der Teilnehmer die laufende Frage beantworten. Bei erneutem Klick auf den Abstimmungs-Button wird erkannt, dass der Teilnehmer bereits abgestimmt hat. Es ist allerdings wie bei den klassischen Hardware-Buzzern für den Teilnehmer 7 2 Grundlagen nicht ersichtlich, wann eine neue Frage beantwortet werden kann. Auch der Fragetext wird wie beim klassischen Vorbild nicht angezeigt, sofern der Dozent diese Option nicht ausdrücklich einstellt. Die Anzeige der Antwortmöglichkeiten ist gar nicht möglich. Diese werden lediglich mit „A“, „B“, „C“, „D“, „E“, je nach Anzahl der Antwortmöglichkeiten, benannt. Ein Beispiel für diese Darstellung ist in Abbildung 2.4 zu sehen. Abbildung 2.4 Beantwortung einer Frage in EduVote - Da es nur den Single-Choice Frage-Typ gibt, sieht die Ansicht zum Beantworten immer wie oben dargestellt aus und unterscheidet sich lediglich in der Anzahl der Abstimmungs-Buttons. [2] Der Dozent hat außerdem die Möglichkeit sogenannte „Sofortfragen“ zu stellen, bei denen er mit wenigen Klicks während der Vorlesung und ohne Eingabe des Fragetexts eine Frage starten kann. Der Fragetext und die Antwortmöglichkeiten müssen hier über ein anderes Medium, wie beispielsweise die Präsentationsfolien des Dozenten, für die Teilnehmer ersichtlich sein. Für Dozenten stellt eduVote das auf Windows- und Apple-Geräten zu installierende „eduVoteshow“ zur Verfügung, in dem alle oben beschriebenen Funktionen verfügbar sind. Weiterhin gibt es eduVote für Dozenten als Webseite, im Rahmen derer allerdings keine Fragen vorbereitet und gespeichert werden können. Für die Teilnehmer bietet eduVote eine breite Auswahl von Anwendungen für verschiedene Plattformen. Es wurden sowohl Apps für Android, iOS, das Windows Phone 8, Software für Windows-Rechner und Mac OS als auch eine Browseranwendung entwickelt. Zusammengefasst bildet eduVote sehr genau die Handhabung eines klassischen ARS mit speziellen Hardware-Buzzern und einem „Auswertungsgerät“ auf moderne Technologien ab. Es stellt dabei Applikationen für jede gängige Plattform bereit, sodass das System sowohl für Teilnehmer als auch Dozenten schnell und vor allem im gewohnten System zugänglich ist. Abgesehen von der Verfügbarkeit auf verschiedenen Plattformen, nutzt es allerdings nicht die Vorteile der modernen Technologien, auf denen es installiert wird. Die Fragetypen etwa sind genauso eingeschränkt, wie auf Hardware-Buzzern, auf denen es nur eine festgelegte Anzahl an Knöpfen geben kann. Weiterhin werden aus Gründen des Datenschutzes [2], wie die Entwickler schreiben, die Fragen ausschließlich auf dem Rechner des Dozenten gespeichert, sodass der Teilnehmer die Frage- und Antworttexte auf dem eigenen Gerät nicht nachlesen kann und keine Möglichkeit zur späteren Selbstkontrolle hat. Das ist ein großer Nachteil von eduVote aus studentischer Sicht, denn vor allem in der Vorbereitung auf die Klausuren möchte ein Teilnehmer einer Vorlesung sicherlich noch einmal einen Überblick über die gestellten Fragen und die eigenen Antworten erhalten. Diese Funktion kann auch mit Blick auf den Datenschutz einfach implementiert werden und ist 8 2 Grundlagen bereits durch die Konzeption von Mainzel als Community, die später noch detaillierter besprochen wird, grundsätzlich vorgesehen. 2.2.3 PINGO Hinter dem Namen „PINGO“ verbirgt sich das Projekt „Peer Instruction for very large groups“ der Universität Paderborn. Hier handelt es sich ebenfalls um ein kostenloses Produkt aus der Hochschule für die Hochschule, an dem seit 2011 auch durch die zweimalige Unterstützung des Förderpreises für Innovation und Qualität in der Lehre entwickelt wird. [3] In PINGO sind Fragen in „Sessions“ zusammengefasst, die der Dozent neu erstellen oder aus seinem Fragenkatalog, der alle seine Fragen enthält, auswählen kann. Auch „Schnellstart“-Fragen sind möglich, bei denen kein Fragetext und keine Antwortmöglichkeiten eingegeben werden müssen. Es stehen die Fragetypen Single-Choice, Multiple-Choice, Freitext und Numerisch zur Verfügung. Der Dozent kann daraufhin eine Frage manuell zum Beantworten starten, wobei eine Dauer von einer Minute standardmäßig eingestellt ist, die aber angepasst werden kann. Die Frage läuft mit dem Ablauf der Dauer aus oder wenn der Dozent sie manuell vorzeitig beendet. Daraufhin werden die Ergebnisse der Frage als Balkendiagramm in Single- oder Multiple-ChoiceFragen, wie es in Abbildung 2.5 dargestellt ist, oder als Auflistung in Fragen von einem anderen Frage-Typ dargestellt. PINGO zeigt außerdem das arithmetische Mittel, die Standardabweichung und den Median der Ergebnisse für numerische Fragen. Danach erst kann der Dozent die nächste Frage starten. Vergangene Fragen können wiederholt werden, dabei wird diese als eigenständige Frage in die Historie der Session eingetragen, für die eigene Ergebnisse vorliegen. Die zuletzt Gestellte kann zudem fortgesetzt werden, sodass die neuen Ergebnisse zu den Vorhanden dazu gezählt werden. Abbildung 2.5: Die Autorenansicht einer vergangenen Frage in PINGO - Hier hat der Autor einer Frage alle Ergebnisse im Überblick und kann die Frage fortsetzen, um auf den vorhandenen Ergebnissen aufzubauen oder sie erneut stellen, um einen neuen Ergebnissatz zu sammeln. [4] 9 2 Grundlagen Mit Klick auf die Session-ID sieht der Dozent die Ansicht der Teilnehmer. Zum Teilnehmer an einer Session wird man über die Eingabe dieser Session-ID, eines Session-Links oder eines QR-Codes. Sobald eine Frage freigegeben wird, aktualisiert sich automatisch die Ansicht des Teilnehmers, sodass er die Frage mit allen Antwortmöglichkeiten sofort lesen und beantworten kann. Abbildung 2.6 zeigt diese Ansicht zum Beantworten einer Frage. Bei der Beantwortung der Frage ist der Teilnehmer sowohl für den Dozenten als auch für das System anonym und kann die Frage zu einem späteren Zeitpunkt nicht mehr einsehen. Abbildung 2.6: Beantwortung einer Frage in PINGO - Gezeigt wird eine Single-Choice-Frage, zu der der Benutzer mit Klick auf „Abstimmen!“ seine Antwort abgibt. [4] Als einziges Produkt in dieser Runde sind sowohl eine Session als auch der Fragenkatalog teilbar mit anderen registrierten PINGO-Benutzern, sodass ein Dozent auch seine Mitarbeiter an seiner Arbeit zu einer Vorlesung beteiligen kann und umgekehrt. Weiterhin kann PINGO TeX-Formeln in Fragen- und Antworttexten darstellen, sodass es sich besonders für Fragen aus dem Bereich der Naturwissenschaften eignet. Es besteht ebenfalls eine Schnittstelle für den Import und Export der Fragen zu Moodle4. Außerdem kann der Fragenkatalog als CSV-Datei exportiert und neue Fragen aus einer CSV-Datei importiert werden. PINGO wird ausschließlich als Web-Anwendung angeboten, die durch ihr responsive Design5 auf verschiedene Bildschirmgrößen reagiert, sodass der Service sowohl in Browsern auf mobilen Geräten als auch beispielsweise am PC nichts an Handhabung verliert. 4 Moodle ist eine Lernplattform für akademische Einrichtungen, die als Open-Source-Software vertrieben wird. Durch die offene Konzeption sind eigene Weiterentwicklungen möglich. 5 Eine auf einem responsive Design basierende Webseite antwortet auf die Eigenschaften des Geräts, auf dem sie geöffnet wird, wie Größe und Orientierung des Bildschirms. Ändern kann sich beispielsweise die Anordnung oder die Größe, aber auch die Sichtbarkeit der Elemente der Webseite. 10 2 Grundlagen Somit ist PINGO eine moderne Interpretation eines ARS, das viele Vorteile einer Web-Anwendung ausreizt. Das Design und der Aufbau sind schnell zugänglich, leicht verständlich und haben den Vorteil, auf jedem Gerät mit Browser auf die gleiche Weise verfügbar zu sein. Es wurde sehr viel Wert darauf gelegt, dass die Daten eines PINGO-Accounts auf verschiedenen Wegen exportiert und mit anderen PINGO-Nutzern geteilt werden können. Allerdings ist es auch in diesem System nicht auf direktem Weg vorgesehen, dass Studenten noch im Nachhinein von der Befragung profitieren können. Durch die Schnittstelle zu Moodle ist diese Funktion zwar grundsätzlich möglich, doch der Dozent muss zunächst bereit sein diesen Export zu leisten und die Studenten müssen sich zudem in Moodle anmelden. 2.2.4 FreeQuizDome Ein weiteres Beispiel für ein modern interpretiertes ARS ist die Software „FreeQuizDome“, die an der Universität Bielefeld entwickelt wurde und noch immer weiter entwickelt wird. An diesem kostenlosen Produkt haben bereits mehrere studentische Hilfskräfte unter Koordination eines Diplom-Pädagogen gearbeitet. Das Angebot von FreeQuizDome ist mit dem Hintergrund seines didaktischen Nährwertes geplant worden und bietet daher einige Funktionen, die von den bisher Vorgestellten vor allem im Bereich der Fragetypen abweichen. Das ARS ist zwar im akademischen Rahmen entwickelt worden, auf der Webseite weisen die Entwickler allerdings ausdrücklich auf den Nutzen für Großgruppen im Allgemeinen, wie Tagungen und Festivals hin [5]. Auch das Design und die Konzipierung lehnen nicht so stark an den akademischen Nutzen an, wie die bereits vorgestellten Produkte. Um FreeQuizDome zu benutzen, meldet sich der Dozent nicht an, sondern lädt eine Software, die auf einem Rechner installiert wird, herunter. Das Produkt, dessen Oberfläche in Abbildung 2.7 abgebildet wird, ist sofort nach der Installation startklar und mit höchstens drei Klicks erstellt der Benutzer bereits die erste Frage. Dabei hat er die Auswahl zwischen den Fragetypen „Yes/No“, „One Word“, „Short Text“, „Rating Scale“, „Single-Choice“, „Multiple-Choice“ und „Image Answer“. Weiterhin gibt es verschiedene Auswertungsmethoden abhängig vom Frage-Typ zur Auswahl. So kann zum Beispiel eine „One Word“-Frage nach Häufigkeit der abgegeben Antworten ausgewertet werden oder die Teilnehmer geben selbst eine Einordnung in ein QuadrantDiagramm6 mit der Antwort ab. Für den Frage-Typ „Image Answer“ kann der Teilnehmer entweder ein Bild hochladen oder selbst eines auf einem HTML5-Canvas7 malen. Die Ergebnisse einer „Rating Scale“-Frage können ausführlich über die Angaben Median, Modalwert, arithmetisches Mittel, Varianz, Standardabweichung und die Möglichkeit zum Clustern der Ergebnisse analysiert werden. Der Dozent kann immer nur eine Frage nach der anderen stellen. In diesem Produkt kann der Dozent Fragen einzeln oder zusammen mit anderen Fragen als Quiz abspeichern. Auch Ergebnisse können gespeichert und exportiert werden, um sie zu einem späteren Zeitpunkt weiterzuverwenden oder einen Ausdruck zu machen. Dabei können geladene Ergebnissätze in einer erneuten Umfrage erweitert werden. 6 In einem Quadrant-Diagramm im FreeQuizDome-System kann der Teilnehmer ein Wort oder eine Phrase zu den vier Standardkategorien Stärke, Schwäche, Chancen und Gefahr abschicken. Die Kategorien können vom Fragesteller angepasst werden. 7 Das <canvas>-Tag von HTML 5 ist zur Darstellung von Grafiken und vor allem Zeichnungen vorgesehen. Es kann dazu verwendet werden, um Grafiken mit Hilfe Javascript darzustellen oder um dem Benutzer eine „digitale Leinwand“, wie es in FreeQuizDome der Fall ist, zur Verfügung zu stellen. 11 2 Grundlagen Abbildung 2.7: Desktopsoftware von FreeQuizDome - In der Darstellung ist die Auswertung für den Autor einer vergangenen Single-Choice-Frage zu sehen. [5] Als Teilnehmer an einer FreeQuizDome Frage muss man sich ebenfalls nicht registrieren. Der Teilnehmer scannt lediglich den QR-Code der Frage ein oder gelangt durch einen Link direkt auf die in Abbildung 2.8 gezeigte Webseite zum Abgeben seiner Antwort. Jede Frage hat einen zuvor vom Dozenten eingestellten Countdown. In diesen Countdown muss der Dozent allerdings die Zeit einberechnen, die der Teilnehmer braucht, um auf die Antwortseite zu gelangen, da für jede Frage ein neuer QR-Code und Link generiert wird, sobald die Frage startet. Abbildung 2.8: Beantwortung einer Frage in FreeQuizDome - Da es sich bei der Frage um eine Single-Choice-Frage handelt, wird mit Klick auf die jeweilige Antwortmöglichkeit diese direkt als eigene Antwort abgegeben. [5] 12 2 Grundlagen Die Software für die Dozentenrolle wird sowohl für Windows, Mac OS als auch für Linux Distributionen angeboten, sodass eines der Betriebssysteme zusammen mit der Runtime „Adobe Air“ Voraussetzung für die Benutzung ist. Auch eine ständige Internetverbindung wird ausdrücklich benötigt. Ein Teilnehmer findet über jedes Gerät mit Browser Zugang zum Weblink, dazu reicht sogar der integrierte Browser, der manchmal bei QR-Code-Scannern mitgeliefert wird, aus. Auf Nachfrage „branded“ das Team die FreeQuizDome-Software mit einem individuellen Design und installiert die Komponenten auf den Servern einer Hochschule, sodass sie die Anwendung als hauseigenes Tool benutzen kann. Offensichtlich wurde in dieser Software viel Wert darauf gelegt, dass sie für alle Beteiligten schnell zugänglich ist und dabei die bestmögliche didaktische Hilfestellung geleistet wird. Weiterhin sind die bereits erarbeiten Fragen und Ergebnisse erneut abrufbar und erweiterbar, sowie exportierbar, sodass man einfach zu verschiedenen Zeiten an einer Umfrage arbeiten kann. Leider gilt dies nur für die Rolle des Dozenten. Ein Teilnehmer einer Umfrage kann auch hier von den Umfragen im Nachhinein nicht profitieren. Schließlich ist es ein Vorteil von FreeQuizDome, dass sein Image nicht von vorneherein auf den akademischen Bereich festgelegt wurde, sondern für alle Anwendungen eines ARS offen gehalten ist. 2.2.5 Konsequenzen für die Entwicklung von Mainzel Ein breites Wissen über die Angebote der Konkurrenzprodukte bringt keinen Nutzen, wenn man daraus keine Konsequenzen für das eigene Produkt zieht. Natürlich verfolgt Mainzel ein weniger auf den akademischen Bereich beschränktes Image, dennoch soll es alle Annehmlichkeiten, die andere Produkte für Dozenten und Studenten bereithalten, nicht missen, denn die Anwendung in Vorlesungen wird auch für Mainzel die Hauptaufgabe darstellen. Wie diese Anforderungen im Detail aussehen, wird im nächsten Kapitel besprochen, im Folgenden soll lediglich ein Überblick über die Besonderheiten von Mainzel gegeben werden, die es von den oben angegebenen Produkten hervorhebt. Mainzel hat den Charakter einer Community, in der die Abgrenzung zwischen Dozenten- und Teilnehmerrolle verwischen. Das bedeutet, dass in Mainzel jeder angemeldete Benutzer alle Umfragen auf einen Blick sehen kann, in denen er involviert ist, sei es als Teilnehmer oder als Autor. Zu den Umfragen, in denen er Autor ist, lädt er andere Mitglieder der Community als Teilnehmer ein und wird umgekehrt zu anderen Umfragen als Teilnehmer eingeladen. Dadurch ist jeder Benutzer gleichgestellt und ein Student kann beispielsweise seinerseits eigene Umfragen zum Lernen mit anderen Studenten nutzen. Weiterhin wird durch die Einladung ermöglicht, dass Teilnehmer nicht zwangsweise mit dem Autor in Kontakt treten müssen, um zum Beispiel eine Umfrage-ID auszutauschen. Das ist im universitären Bereich von Vorteil, in dem der Dozent alle Anmeldungen zu einer Vorlesung zur Verfügung hat und auf diese Weise sehen kann, wer die Einladung annimmt und wer aktiv an den Umfragen teilnimmt. Weiterhin bietet Mainzel sowohl anonyme als auch nicht anonyme Umfragen an, sodass der Autor die Möglichkeit hat, einen Einblick über die Leistung einzelner Teilnehmer zu erhalten. Alle oben genannten Konkurrenzprodukte erlauben bisher ausschließlich anonyme Fragen. Die Möglichkeit, dass sich Teilnehmer enthalten, wird ebenfalls einstellbar sein, sodass eine genaue Aussage darüber getroffen werden kann, wenn Teilnehmer sich bewusst nicht äußern wollen oder einfach keine Antwort abgeben. Der Autor hat zudem die Möglichkeit einen Start- und einen Endzeitpunkt 13 2 Grundlagen für Umfragen und Fragen anzugeben, sodass diese automatisch zum Beantworten freigegeben oder beendet werden. Ein weiterer wesentlicher Vorteil von Mainzel gegenüber den oben betrachteten Produkten begründet sich in der Natur einer nativen App, die auf dem Endgerät installiert wird. Mainzel kann Teilnehmer über neue unbeantwortete Fragen mittels Notifications8 informieren, auch wenn die App gerade nicht geöffnet ist. Durch die Entwicklung als native App ergeben sich noch weitere Vorteile. So ist es beispielsweise möglich, Fragetypen, die die Hardware der Endgeräte nutzen, wie Sensoren oder die Kamera, anzubieten. Schließlich ist eine Schnittstelle zu Microsoft Powerpoint geplant, die das einfache Einbinden von Start- und Stoppknöpfen, Umfrageergebnissen oder einem Link zum automatischen Beitreten zu einer Umfrage, ermöglicht. Die Präsentation der Ergebnisse wird in den oben genannten Systemen immer durch ein eigenes Tool ermöglicht, sodass der Vortragende von den Präsentationsfolien auf das System umschalten muss. Durch die Automatisierung der Start- und Endzeiten der Fragen und ein Plugin für Microsoft Powerpoint soll der Vortragende ganz ohne Umschalten eine Umfrage durchführen können. 2.3 Konzept Das Mainzel-System zeichnet sich durch ein einfaches Konzept mit flachen Hierarchien aus. Im Groben gibt es zwei große Entitäten, nämlich die Umfrage und den Benutzer, die miteinander in Beziehung stehen und sich aus kleineren Teilen zusammensetzen. Im Folgenden wird dieses Konzept näher erklärt und damit die Begrifflichkeiten festgelegt, auf die in dieser Arbeit Bezug genommen wird. 2.3.1 Benutzer und ihre Rollen Um Benutzer von Mainzel zu werden, muss man sich zunächst mit einer E-Mail-Adresse und einem Passwort registrieren. Wenn im Folgenden von einem Benutzer die Rede ist, ist damit ausschließlich ein registrierter Benutzer gemeint. Die E-Mail-Adresse des Benutzers dient als Identifikationsmerkmal. Benutzerbezogene Daten, wie erstellte Umfragen und Umfrageergebnisse können somit nur eindeutig zu einer bestimmten E-Mail-Adresse gehören. Jeder Benutzer kann selbst Umfragen erstellen und erhält dadurch die Autoren- und Administrator-Rolle dieser Umfragen. Zu diesen Umfragen kann er andere Benutzer zur Teilnahme einladen oder sie zu Autoren ernennen. Autoren von Umfragen können diese einsehen, editieren und starten, aber lediglich der Umfrageadministrator kann die Umfrage löschen. Wenn im Folgenden auf die Autoren einer Umfrage Bezug genommen wird, ist damit immer auch der Administrator der Umfrage gemeint, da er zusätzlich zu seinen Administrator-Rechten auch alle Rechte eines Autors an einer Umfrage hat. Nimmt ein Benutzer die Einladung zur Teilnahme an einer Umfrage an, ist er Teilnehmer dieser Umfrage und kann, sobald ein Autor die Umfrage startet, Antworten abgeben. Er wird auch die Ergebnisse zu dieser Umfrage erhalten. 8 Notifications sind kurze Nachrichten an den Benutzer außerhalb der App, die die Notification sendet. Unter Android werden Notifications zunächst als kleines Symbol in der Notification-Area (siehe dazu auch Kapitel 4.2) im linken oberen Teil des Displays angezeigt. Der Benutzer kann sie sich näher betrachten, wenn er die Notification-Area vergrößert und auf den Eintrag der Notification klickt. Notifications sollen ausschließlich in Situationen verschickt werden, in denen ein zeitnahes Handeln durch den Benutzer benötigt wird oder wenn andere Benutzer auf eine Antwort warten. [7] 14 2 Grundlagen 2.3.2 Aufbau einer Umfrage Eine Umfrage besteht aus mehreren Fragen und erhält beim Erstellen vom Administrator einen Namen. Dieser kann im Nachhinein von einem Autor editiert werden. Zusätzlich kann ein Autor eine Beschreibung angeben und einstellen, ob die Ergebnisse anonym gespeichert werden und weiterhin, ob die Teilnehmer vor der Beantwortungszeit bereits Einsicht in die Fragen haben. Eine Umfrage kann drei Zustände einnehmen: „kommend“, „laufend“ oder „vergangen“. Ein Autor kann durch Angabe eines Start- und Endzeitpunkt oder durch manuelles Starten und Beenden den Status einer Umfrage bestimmen. In den verschiedenen Status gibt es dabei verschiedene Funktionen für die Teilnehmer. Für kommende und vergangene Umfragen handelt es sich dabei vor allem um lesende Funktionen, wie die Einsicht der Fragen und Antwortmöglichkeiten oder der Ergebnisse. Laufende Umfragen hingegen bieten auch die Möglichkeit, dass Teilnehmer einzelne Fragen beantworten können. Aus Autorensicht können Umfragen im vollen Umfang lediglich im kommenden Zustand bearbeitet werden. Umfragen im laufenden Zustand können abhängig der einzelnen Status der Fragen bearbeitet werden und Umfragen, die bereits beendet wurden, bieten nur eingeschränkte Bearbeitungsmöglichkeiten. Wie bereits erwähnt, gehören zu einer Umfrage mehrere Fragen, die ihrerseits den Status „kommend“, „laufend“ oder „vergangen“ einnehmen können. Kommende und vergangene Fragen können von Teilnehmern lesend eingesehen werden, während laufende Fragen die Möglichkeit zum Abgeben einer Antwort bieten. Autoren können lediglich kommende Fragen bearbeiten. So wird sichergestellt, dass bereits gestellte Fragestellungen nicht verändert werden können und die Ergebnisse verfälscht werden. Eine Frage erhält beim Erstellen einen Frage-Typ. Die in Tabelle 2.1 aufgelisteten Frage-Typen Single-Choice, Multiple-Choice, Freitext, Begriff, Slider, Schätzen, Datum, Foto und Standort sind im Rahmen dieser Arbeit erarbeitet worden. Für die Frage-Typen Single- und Multiple-Choice stellt der Autor mehrere Antwortmöglichkeiten bereit. Weiterhin kann der Autor zu allen Fragen, außer vom Typ Freitext und Foto, eine oder mehrere richtige Antworten angegeben, sodass eine automatische Auswertung der Leistung der Teilnehmer durch das System ermöglicht wird. Ein Autor erhält nach dem Beenden einer Frage Einsicht in die Ergebnisse als Diagramm, dessen Gestalt vom Frage-Typ abhängt. Je nachdem, ob eine Umfrage anonym ausgewertet wird, erhält ein Autor auch Einsicht in die Antworten der einzelnen Teilnehmer. Falls richtige Antwortmöglichkeiten angegeben wurden, sind in der Darstellung der Ergebnisse Aussagen über richtige und falsche Abgaben einsehbar. Ein Teilnehmer kann eine ähnliche Auswertung einsehen, natürlich ohne eine Auflistung der Antworten der anderen Teilnehmer und er kann zusätzlich nachverfolgen, welche Antwort er selbst eingereicht hat. 15 2 Grundlagen Frage-Typ Erklärung geeignetes Diagramm zur Ergebnisdarstellung Lösung möglich SingleChoice Der Teilnehmer hat eine Auswahl an Antwortmöglichkeiten und kann genau eine auswählen. Balken- oder Kreisdiagramme Ja MultipleChoice Der Teilnehmer hat eine Auswahl an Antwortmöglichkeiten und kann mehrere auswählen. Balken- oder Kreisdiagramme Ja Freitext Der Teilnehmer schreibt einen Text als Antwort. Auflistung der Texte Nein Begriff Der Teilnehmer gibt ein Wort oder eine Phrase als Antwort ab. Auflistung der Begriffe Ja Slider Der Teilnehmer wählt in einem Slider einen Liniendiagramm Wert zwischen einem minimalen und einem maximalen Wert. Minimaler, maximaler Wert und Einheit der Werte müssen vom Autor angegeben werden. Ja Schätzen Der Teilnehmer schätzt eine Zahl als Antwort. Liniendiagramm Der Autor stellt ein, wie viele (Nachkomma-) Stellen möglich sind. Ja Datum Der Teilnehmer gibt ein Datum als Antwort an. Zeitleiste Ja Foto Der Teilnehmer schießt ein Foto und lädt es als Antwort in die App. Galerie Nein Standort Der Standort des Teilnehmers wird ermittelt und stellt die Antwort dar. Karte Ja Tabelle 2.1: Auflistung aller Frage-Typen von Mainzel - Einige Frage-Typen bieten die Möglichkeit an, dass der Autor Antwortmöglichkeiten vorgibt, andere Frage-Typen stellen die Funktion bereit, dass der Autor richtige Lösungen vorgibt. Für jeden Frage-Typ gibt es eine spezielle passende graphische Darstellung. 16 3 Anforderungen an das System 3 Anforderungen an das System Um den Aufwand für Planung und Implementierung einschätzen zu können, ist eine genaue Analyse der Anforderung an das System notwendig. Die Analyse muss umfassend und detailliert genug sein, sodass es keine Missverständnisse oder Interpretationsmöglichkeiten während der Entwicklung gibt. Eine gute Analyse ist der Grundstein für ein realistisches Zeitmanagement und in großen Projekten - für eine realistische Kosteneinschätzung. [6] In diesem Abschnitt werden aus diesem Grund alle Anforderungen an die Mainzel-App und das gesamte System detailliert beschrieben, wobei zwischen funktionalen und nicht-funktionalen Anforderungen unterschieden wird. Weiterhin wird das Use Case Diagramm der App anhand einiger beispielhafter Use Cases erläutert. 3.1 Funktionale Anforderung Funktionale Anforderungen beschreiben die Funktionalität des Systems. Analysiert wird, was das System leisten soll und welche Interaktionen mit dem Benutzer zur Verfügung stehen sollen. Hierbei gibt es die Muss-Kriterien, das heißt Kriterien, die auf jeden Fall umgesetzt werden müssen. Sie beschreiben vor allem für den Einsatz des Systems essentielle Funktionen. Weiterhin formuliert man die Kann-Kriterien, die umgesetzt werden, wenn es die Ressourcen des Projekts zulassen und die nicht die Einsatzfähigkeit des Systems beeinträchtigen, wenn sie nicht umgesetzt werden können. [6] 3.1.1 Muss-Kriterien 3.1.1.1 Benutzerbereich F010: Die App muss einem Benutzer ermöglichen sich mit seiner E-Mail-Adresse und seinem Passwort anzumelden. F020: Die App muss einem Benutzer ermöglichen sich aus der App wieder abzumelden. F030: Die App muss einem Benutzer ermöglichen seinen Account aus dem System zu löschen. F040: Die App muss eine Möglichkeit bereitstellen, durch die ein Benutzer seine Account-Daten einsehen kann. F050: Die App muss eine Möglichkeit zur Änderung der Account-Daten durch den Benutzer bereitstellen. 3.1.1.2 Umfrageverwaltung F060: Die App muss nach dem Öffnen die wichtigsten Informationen zu den laufenden Umfragen in einer Ansicht zusammenstellen. F070: Die App muss auch eine Übersicht mit den wichtigsten Informationen zu den kommenden und den vergangenen Umfragen bereitstellen. F080: Die App muss eine Detailansicht mit allen Informationen zu jeder Umfrage anbieten, die sich dem Status der Umfrage und der Rolle des Benutzers anpasst (Vorschau bei kommenden Umfragen, Fragen beantworten bei laufenden Umfragen, Ergebnisdarstellung bei vergangenen Umfragen). 17 3 Anforderungen an das System F090: Die App muss das Editieren von allen Informationen einer Umfrage durch einen Autor ermöglichen. F100: Die App muss das Löschen einer Umfrage durch den Umfrageadministrator ermöglichen. F110: Die App muss einem Autor die Möglichkeit geben die Vorschau für die Teilnehmer für jede Frage einzeln abzuschalten. F120: Die App muss einem Autor die Möglichkeit bieten, eine Frage anonym zu stellen. F130: Die App muss einem Autor die Möglichkeit bieten, die Enthaltungsoption für eine Frage einzuschalten. F140: Die App muss es einem Autor ermöglichen, eine Umfrage wieder zu verwenden. F150: Die App muss die Funktion anbieten, eine vergangene Frage in einer geschlossenen Umfrage erneut zu öffnen, sodass weitere Antworten abgegeben werden können. F160: Die App muss bereits bekannte andere Benutzer beim Hinzufügen von Autoren oder Teilnehmern zu Umfragen zur Auswahl stellen. F170: Die App muss den Benutzer darauf aufmerksam machen, wenn er zu neuen Umfragen eingeladen ist. 3.1.1.3 Umfragen beantworten F180: Die App muss die Frage-Typen Single-Choice, Multiple-Choice, Freitext, Begriff, Slider, Schätzen, Datum, Foto und Standort anbieten (siehe auch Tabelle 2.1). F190: Die App muss für jeden Frage-Typ eine passende Darstellung zur Beantwortung der Frage anzeigen (siehe auch Tabelle 2.1). F200: Die App muss Notifications zu einer neuen laufenden Frage und zu neuen Umfrageeinladungen an den Benutzer schicken, wenn die App geschlossen ist. 3.1.1.4 Ergebnisdarstellung F210: Die App muss statistische Größen und graphische Darstellungen der Zahlen zu jeder vergangenen Umfrage anzeigen. F220: Die App muss für Autoren einen Überblick über die einzelnen Leistungen der Teilnehmer zu einer Umfrage anzeigen, sofern die Umfrage nicht anonym war. F230: Die App muss statistische Größen und graphische Darstellungen der Zahlen zu jeder vergangenen Frage abhängig vom Typ der Frage anzeigen (siehe auch Tabelle 2.1). F240: Die App muss für Autoren die einzelnen Leistungen der Teilnehmer zu einer Frage anzeigen, sofern die Frage nicht anonym war. F250: Die App muss einem Teilnehmer das eigene Ergebnis anzeigen. F260: Die App muss einem Teilnehmer die richtigen Lösungen einer vergangene Frage anzeigen, sofern welche von einem Autor angegeben wurden. 3.1.2 Kann-Kriterien F270: Die App kann eine „Über Uns“-Ansicht bereitstellen. F280: Die App kann die Ergebnisdarstellung für einen Autor live aktualisieren. 18 3 Anforderungen an das System F290: Die App kann eine Schnittstelle zum Übertragen der Ergebnisdarstellung in eine Microsoft Powerpoint-Präsentation bereitstellen. F300: Die App kann eine Funktion zum Umstellen der Sprache auf Englisch enthalten. 3.2 Nicht-funktionale Anforderungen Die Nichtfunktionalen Anforderungen an das System beschreiben Rahmenbedingungen und Einschränkungen, die das System befolgen soll. Diese Anforderungen können Einfluss auf die gesamte Softwarearchitektur nehmen. Auch hier werden die Anforderungen in Muss- und in KannKriterien aufgeteilt. [6] 3.2.1 Muss-Kriterien NF010: Die App muss mindestens unter der Android-Version 4.0 Ice Cream Sandwich, Android API Level 14, benutzbar sein. NF020: Die App muss auch offline alle Informationen zu einer Umfrage zur Einsicht bereitstellen. NF030: Die App muss beim Öffnen alle Benutzer-relevanten Daten aus der globalen Datenbank in eine lokale Datenbank auf dem Endgerät laden, bzw. synchronisieren. NF040: Die globale Datenbank muss mit dem Zugriff durch mehrere mobile Geräte gleichzeitig umgehen können. 3.2.2 Kann-Kriterien NF050: Die App kann in Google-Play zur Verfügung gestellt werden. 3.3 Use Case Diagramm Ein Use Case Diagramm zeigt anschaulich alle Situationen auf, die beim regulären Benutzen eines Systems auftreten. In Abbildung 3.1 ist das Use Case Diagramm der Mainzel-App dargestellt. Es hilft die Funktionalität der App besser zu erfassen. Die Anwendungsfälle werden allerdings nur sehr einfach dargestellt. Für ein besseres Verständnis der Zusammenhänge werden daher im weiteren Verlauf dieses Kapitels ausgewählte Anwendungsfälle näher erläutert. [6] In Abbildung 3.1 ist zu sehen, wie die Benutzer in ihren verschiedenen Rollen auf die Umfragen und die App im Ganzen auf unterschiedliche Weise einwirken. Dabei hat ein allgemeiner Benutzer die meisten Belange an das System. Unabhängig von seiner Rolle möchte er beispielsweise den Überblick über alle Umfragen oder die Details einer bestimmten Umfrage einsehen. Weiterhin kann es vorkommen, dass er Änderungen an seinem Account vornehmen möchte oder diesen ganz aus dem System löschen muss. Als Teilnehmer einer Umfrage geht er in der Regel zwei Aktionen nach: Er beantwortet regelmäßig die Fragen der Umfragen, an denen er teilnimmt oder nimmt Einladungen zu weiteren Umfragen an. Als Autor von Umfragen hingegen benötigt der Benutzer die Möglichkeit, die Umfragen zu bearbeiten und sie starten oder stoppen zu können. Und schließlich hat jeder Benutzer als Umfrage-Administrator die Möglichkeit eigene Umfragen zu erstellen und diese auch wieder zu löschen. 19 3 Anforderungen an das System Abbildung 3.1: Use-Case Diagramm - Die Akteure, die auf das Mainzel-System Einfluss nehmen, sind die Benutzer. Es gibt Benutzer, die die Autoren-Rolle einer Umfrage einnehmen und andere, die als Teilnehmer involviert sind. Jede Umfrage hat außerdem einen Administrator. Er hat diese erstellt und ist somit selbst ein Autor. Nur der Administrator kann die Umfrage auch wieder löschen. 3.4 Use Cases Im Folgenden werden ausgewählte Use Cases aus dem Diagramm näher erläutert. Use Cases oder Anwendungsfälle beschreiben ein Szenario, in dem ein Benutzer Erwartungen an das System stellt und mit ihm interagiert. Primär wurde ein Tabellenformat zur Darstellung der Anwendungsfälle gewählt, um sie in eine schnell erfassbare Form zu bringen und ihre Vergleichbarkeit zu erhöhen. Auf diese Weise wurde für jeden Use Case eine Art Steckbrief erstellt, der eine detaillierte Beschreibung bereit hält und über die beteiligten Akteure, die Bedingungen zum Eintreten des Use Cases, das auslösende Ereignis und die nachfolgenden Bedingungen informiert. Weiterhin wird eine Komplexitätseinschätzung gemacht, die für diese Arbeit lediglich auf dem geschätzten Zeitaufwand der Implementierung basiert. In größeren Projekten wirken weitere Faktoren wie die Kosten auf diese Einschätzung ein. Schließlich wird eine Priorisierung vorgenommen, um anzugeben, welche Use Cases für einen Prototyp des Systems unabdingbar sind. Außerdem wird jeder Use Case in einer kurzen textuellen Beschreibung erläutert und dabei die jeweilige Skizze der grafischen Benutzeroberfläche mit einbezogen. Sie wurden erstellt, um den jeweiligen Use Case aus Sicht des Benutzers zu veranschaulichen. Es wurden nicht alle Use Cases behandelt, da auf sie in anderer Form in Kapitel 4 im Rahmen der Darstellung von Planung und Design des Systems eingegangen wird. Alle nicht angesprochenen Use Cases können in Anhang A eingesehen werden. [6] Zunächst ist wohl einer der wichtigsten Anwendungsfälle die Möglichkeit, dass Teilnehmer eine Frage beantworten können. Wie in Use Case #05 beschrieben, betrifft dieser Anwendungsfall 20 3 Anforderungen an das System einzig die Teilnehmer, die zuvor in das System eingeloggt sein müssen. Zu jeder laufenden Frage gibt es, wie in Abbildung 3.2 zu sehen ist, eine Ansicht, die an den Frage-Typ angepasst ist. Use Case ID Beschreibung Fragen in einer Umfrage beantworten #05 Der Benutzer beantwortet eine Frage einer Umfrage, indem er seine Antwort in die vorgesehenen Antwortfelder, die vom Frage-Typ abhängen, einträgt und sie abschickt. Beteiligte Akteure Teilnehmer Vorbedingung Der Benutzer ist eingeloggt und er ist Teilnehmer der Umfrage. Die zu beantwortende Frage wurde durch den Startzeitpunkt der Frage oder manuell durch einen Autor gestartet. Trigger Der Benutzer trägt seine Antwort in die Antwortfelder der Frage ein und schickt seine Antwort durch Betätigen eines Absende-Buttons ab. Nachbedingung Die Antwort des Benutzers wird in die Datenbank geschrieben Komplexität Hoch: Die GUI‘s9 zum Beantworten der verschiedenen Frage-Typen sind komplex. Die Eintragungen in die Datenbank sind einfach. Priorität Hoch: Das Beantworten von Fragen ist ein essentieller Use-Case. GUI Abbildung 3.2 Tabelle 3.1: Use Case #05 Nachdem der Teilnehmer seine Antwort abgeschickt hat, muss sie vom System in die globale Datenbank eingetragen werden, sodass die Geräte der anderen beteiligten Benutzer diese Information auslesen können. Das Umsetzen dieses Anwendungsfalles im System ist sehr wichtig, da es sich um eine essentielle Funktion handelt. Gleichzeitig ist das Umsetzen aber auch zeitaufwendig, da für jeden Frage-Typ eine eigene Ansicht implementiert werden muss. 9 Graphical User Interface (GUI), engl. für grafische Benutzeroberfläche. 21 3 Anforderungen an das System Abbildung 3.2: Benutzeroberfläche zum Beantworten einer Frage - Der Benutzer sieht verschiedene Ansichten für die verschiedenen Frage-Typen. Dargestellt sind die bisher geplanten Frage-Typen. 22 3 Anforderungen an das System Das Einsehen der Umfragedetails, um sich als Autor oder als Teilnehmer über Inhalt, Startzeitpunkt, Fragen oder Ähnliches informieren zu können, ist ein weiterer wichtiger Anwendungsfall. Dieser ist in Use Case #06a beschrieben. Auch hierfür muss der Teilnehmer oder der Autor einer Umfrage im System eingeloggt sein. Er öffnet die Detailansicht mit Klick auf den Listeneintrag der jeweiligen Umfrage in der Umfrage-Übersicht. Use Case ID Beschreibung Umfragedetails einsehen #06a Der Benutzer kann zu jeder Zeit die Details, d.h. Name, Beschreibung, Start/Endzeitpunkt, Autoren oder die Details der Fragen, d.h. Frage-Typ, Fragetext, Start-/Endzeitpunkt, Antwortmöglichkeiten oder richtige Lösungen, einsehen. Die Details kommender Fragen können von Teilnehmern nur eingesehen werden, wenn ein Autor die Vorschau erlaubt. Richtige Lösungen kommender und laufender Fragen können nie vom Teilnehmer eingesehen werden. Beteiligte Akteure Benutzer Vorbedingung Der Benutzer ist eingeloggt und ein Teilnehmer oder mindestens ein Autor der Umfrage. Trigger Der Benutzer öffnet die Detail-Ansicht einer Umfrage. Nachbedingung Komplexität Hoch: Die GUI zum Anzeigen der Details ist komplex. Es gibt nur lesende Datenbank-Kommunikation. Priorität Hoch: Das Einsehen der Details ist eine wichtige Funktion für alle BenutzerRollen. GUI Abbildung 3.3 Tabelle 3.2: Use Case #06a Das Umsetzen dieses Anwendungsfalles ist zeitaufwendig durch den komplexen Aufbau der Ansicht, die in Abbildung 3.3 zu sehen ist. In der Ansicht werden der Name, die Beschreibung, der Start- und der Endzeitpunkt, die Autoren und ein Überblick über die Fragen gezeigt. Der Überblick über Fragen verändert sich außerdem dynamisch mit dem Zustand der Umfrage und der Frage. In kommenden Umfragen beispielsweise, wird angegeben zu welcher Frage eine Vorschau zur Verfügung steht, während in vergangenen Umfragen eine kurze Auswertung, welche Fragen richtig und falsch beantwortet wurden, gegeben wird. Das ist nur möglich, wenn ein Autor richtige Antworten zu den Fragen angegeben hat. Für eine laufende Umfrage wird eine Kombination der beiden vorherigen Ansichten erstellt. Fragen, die gerade zur Beantwortung bereitstehen, zeigen einen Countdown an, der angibt wie lange die Frage noch beantwortet werden kann, während kommende und vergangene Fragen wieder Angaben zur Vorschau und zur Richtigkeit der Antworten machen. 23 3 Anforderungen an das System Abbildung 3.3: Detailansicht von Umfragen - Dargestellt ist die Ansicht für Teilnehmer, die eine Auswertung der Richtigkeit der Antworten von vergangenen Fragen beinhaltet. Die Autoren und Administratoren der Umfrage sehen dieselbe Ansicht, nur vergangene Fragen haben keinen Indikator für richtig oder falsch. Eine weitere essentielle Funktion der App ist das Einloggen, um den Zugang für registrierte Benutzer zu gewährleisten. Use Case #09a beschreibt diesen Anwendungsfall. Loggt sich ein Benutzer in die App ein, wird der Zeitstempel seiner letzten Aktivität in der globalen Datenbank aktualisiert. Außerdem wird die Synchronisation der lokalen mit der globalen Datenbank eingeleitet und der Benutzer gelangt auf die Übersicht über all seiner Umfragen. Use Case ID Beschreibung Beteiligte Akteure Vorbedingung Trigger Nachbedingung Komplexität Priorität GUI Einloggen #09a Der Benutzer loggt sich im System ein und hat Zugriff auf alle Funktionen. Benutzer Der Benutzer muss registriert und ausgeloggt sein, um sich einloggen zu können. Zum Einloggen gibt der Benutzer seine E-Mail-Adresse und sein Passwort in der Anmeldeansicht des Systems an und schickt diese Daten mit Klick auf den „Einloggen“-Button ab. Beim Einloggen wird der Zeitstempel der letzten Aktivität des Benutzers in der Datenbank aktualisiert. Weiterhin werden die Daten der lokalen Datenbank auf dem Gerät des Benutzers auf den neusten Stand der globalen Datenbank gebracht. Hoch: Die GUI zum Einloggen ist simpel. Jedoch das Synchronisieren der Daten auf dem Gerät mit der Datenbank beim Einloggen ist komplex. Hoch: essentielle Funktion Abbildung 3.4 Tabelle 3.3: Use Case #09a 24 3 Anforderungen an das System Die Implementation der Ansicht, wie sie in Abbildung 3.4 dargestellt wird, ist wegen der wenigen UI-Elemente wenig komplex, jedoch ist die Kommunikation mit der globalen Datenbank, vor allem für die Synchronisation, aufwendig, weshalb dieser Anwendungsfall als zeitaufwendig eingeschätzt wird. Abbildung 3.4: Benutzeroberfläche zum Einloggen in die App. Schließlich muss jeder Benutzer die Einladungen zu einer Umfrage zunächst annehmen können, um daran teilzunehmen. Daher ist der in Use Case #13 beschriebene Anwendungsfall ebenfalls sehr wichtig für das System. Um eine Einladung zu einer Umfrage annehmen zu können, muss der Benutzer zunächst eingeloggt sein und außerdem zuvor von einem Autor der Umfrage eingeladen worden sein. In der in Abbildung 3.5 dargestellten Skizze der App findet der Benutzer eine Auflistung über alle Einladungen und kann eine bestimmte mit Klick auf den „Daumen hoch“-Button annehmen. Daraufhin wird in der globalen Datenbank eingetragen, dass der Benutzer von nun an Teilnehmer der Umfrage ist und die Daten werden in die lokale Datenbank des Benutzers synchronisiert. 25 3 Anforderungen an das System Use Case ID Beschreibung Einladungen zu Umfragen annehmen #13 Ein Benutzer wird von anderen Benutzern zu Umfragen eingeladen, um an diesen Umfragen teilzunehmen. Beteiligte Akteure Benutzer Vorbedingung Der Benutzer ist eingeloggt und wurde von einem anderen Benutzer zu einer Umfrage eingeladen. Trigger Der Benutzer klickt auf „Annehmen“. Nachbedingung Der Benutzer ist nun Teilnehmer an der Umfrage, deren Einladung er gerade angenommen hat. Komplexität Niedrig: Sowohl die GUI als auch die Kommunikation mit der Datenbank sind wenig komplex. Priorität Hoch: essentielle Funktion der App. GUI Abbildung 3.5 Tabelle 3.4: Use Case #13 Sowohl die Implementierung der benötigten UI-Elemente, als auch der Datenbankkommunikation ist wenig komplex und wird daher nicht als zeitaufwendig eingeschätzt. Abbildung 3.5: Benutzeroberfläche zum Einsehen der Einladungen - Mit Klick auf den "Daumen hoch"-Button kann der Benutzer die Einladung zu den Umfragen annehmen. 26 4 Planung und Design 4 Planung und Design Dieses Kapitel erläutert den Prozess der Planung und des Designs des Mainzel-Systems aus verschiedenen Blickwinkeln. Betrachtet werden zunächst die Architektur des Systems, darauffolgend das Design der Benutzeroberfläche der App und zum Schluss die beiden Datenbanken. 4.1 Systemarchitektur Die Planung der Systemarchitektur wird durch zwei Hauptmerkmale beeinflusst. Zum Ersten soll jede Komponente im System alle benötigten Informationen erreichen und weitergeben können. Zum Zweiten soll das System gegen Gefahren von außen bestmöglich abgesichert werden. In diesem Abschnitt wird die Systemarchitektur von Mainzel unter der Berücksichtigung dieser zwei Punkte anhand von drei Abbildungen besprochen, die das System oder nur Teilsysteme in unterschiedlichen Detaildichten zeigen. Zunächst wird die globale Systemarchitektur mit allen Komponenten des Systems in Abbildung 4.1 besprochen. Danach wird eine erste Verfeinerung der Architektur in Abbildung 4.2 durchgenommen, die den Aufbau des Teilsystems auf einem AndroidGerät zeigt. Schließlich wird mit Hilfe von Abbildung 4.3 die Kommunikation innerhalb der Mainzel-App veranschaulicht. 4.1.1 Globale Systemarchitektur Die globale Systemarchitektur von Mainzel lässt sich als Client-Server-Architektur, wie in Abbildung 4.1 zu sehen ist, darstellen. Dieses Design-Pattern wird häufig zur Erstellung von Systemarchitekturen, die Datenzugriffe von unterschiedlichen Orten abbilden sollen, herangezogen. Im Mainzel-System stellt die auf einem Android-Gerät installierte App zusammen mit der lokalen Datenbank, die auf jedem Android-Gerät durch eine SQLite-Datenbank abgedeckt wird, einen Client dar. Im Späteren wird noch näher auf die Architektur eines Clients eingegangen. Abbildung 4.1: Globale Client-Server-Architektur von Mainzel - Mehrere Instanzen der Android-App stellen die Clients dar, die mit einem Server kommunizieren. Der Server stellt die Schnittstelle zur globalen Datenbank dar. Die Clients einer Client-Server-Architektur kommunizieren üblicherweise über Internetprotokolle mit einer Reihe von Servern, die für einen bestimmten Dienst bereitstehen. In Mainzel gibt es nur einen Dienst, nämlich die Aufbereitung der Datenbankinhalte und folglich gibt es nur einen Server im Architekturplan. Diese Seite setzt sich aus einem php-Webservice und der globalen Datenbank, die auf einem MS-SQL Server umgesetzt wurde, zusammen. Auf die globale Datenbank haben somit alle Clients im System Zugriff, sodass hier alle Informationen, die im System produziert und 27 4 Planung und Design benötigt werden, zentral gelagert sind. Die SQLite-Datenbänke der Clients enthalten lediglich für den Benutzer des Clients interessante, schlankere Kopien der Datensätze der globalen Datenbank. Auf diese Verteilung wird in Abschnitt 4.3 weiter eingegangen. Der Webservice hingegen dient als Aufbereiter der Daten in der Datenbank und hat die Fähigkeit mit dieser über SQL-Anfragen zu kommunizieren. Er erhält für die verwendete php-Extension, die in Kapitel 5.2.4 angesprochen wird, typische „php statement resources“. Die Werte aus der Datenbank codiert der Webservice im JSON-Format, auf das in Kapitel 5.2.5 eingegangen wird, sodass sie auf einfachem Weg innerhalb des Clients ausgelesen werden können. Welche Werte benötigt werden oder welche in die globale Datenbank geschrieben werden sollen, sodass andere Clients sie auch verwenden können, teilt ein Client dem Webservice über POST-Anfragen mit. Durch diese Standardisierung der Schnittstellen zwischen Client und Server können die Komponenten im System einfach ausgetauscht werden, sodass es möglich ist, dass Mainzel auch über Webservices, die andere Technologien benutzen, mit anderen Datenbankmanagementsystemen kommunizieren kann. In dieser Client-Server Architektur ist es einfach die Sicherheit bei der Übertragung der Daten zu gewährleisten, da es nur eine Schwachstelle, nämlich die Schnittstelle zwischen Client und Server, gibt. Hier besteht zum einen die Gefahr, dass Daten unberechtigt ausgelesen werden können, was leicht durch Benutzerauthentifizierung bei den POST-Anfragen und einer geeigneten Verschlüsselungsmethode der Daten behoben werden kann. Die zweite Gefahr verbirgt sich in veränderten Anfragen, die „bösartige“ SQL-Befehle enthalten, die der Datenbank und dem Datenbestand schaden oder sie komplett löschen. Diese Anfragen nennt man „SQL-Injection“. Sie werden in Mainzel durch den zwischen Client und globale Datenbank geschalteten Webservice abgefangen, der nur vordefinierte POST-Anfragen zulässt und diese in sicheren SQL-Anfragen an die Datenbank richtet. 4.1.2 Architektur eines Mainzel-Clients Zu der Systemarchitektur eines Clients im Mainzel-System gehören sowohl Komponenten, die in der App selbst implementiert sind, als auch die lokalen Speichermöglichkeiten. In Abbildung 4.2 sind alle Komponenten eines Clients in einem Schichtenmodell dargestellt. Üblicherweise werden die Schichten in einem Schichtenmodel übereinander gezeigt. In dieser Abbildung sind die Schichten aus Platzgründen und um die Orientierung zur vorherigen Abbildung beizubehalten, nebeneinander aufgereiht. Die Datenschicht ganz links stellt dabei die unterste Schicht dar, darauf folgt die Anwendungsschicht in der Mitte und schließlich stellt die Schnittstelle ganz rechts die oberste Schicht im Schichtenmodell dar. [6] Die Datenschicht setzt sich aus zwei Speichern zusammen, nämlich der bereits angesprochenen lokalen Datenbank des Clients und einer Menge an Konfigurationsdaten. Die Konfigurationsdaten enthalten die Informationen des Benutzers des Clients, sodass sie für alle Komponenten direkt zugänglich und unabhängig vom Stand der lokalen Datenbank sind. In der Abbildung wurden die Kommunikationswege zwischen den Konfigurationen und allen anderen Komponenten außer der Login-Komponente, die die Konfigurationen schreibt und liest, im Sinne der Übersicht weggelassen. Die lokale Datenbank ist, wie weiter oben erwähnt, ein abgespecktes Abbild der globalen Datenbank, die alle Daten enthält, die für den Benutzer interessant sind. Die Anwendungsschicht beinhaltet alle Implementationen der App, die zur Darstellung und Verarbeitung der Daten vorgesehen sind. Sie erhält alle Daten aus der lokalen Datenbank über die Klasse „LocalDatabaseHelper“ (Helper). Diese nimmt, ähnlich wie der php-Webservice, 28 4 Planung und Design vordefinierte Anfragen an, stellt die dazugehörigen SQL-Anfragen an die SQLite-Datenbank und erhält gegebenenfalls einen Android-spezifischen Cursor zurück. Ein Cursor kann als Zeiger auf die ausgewählten Daten angesehen werden. Die Werte auf die der Cursor zeigt, wandelt der Helper in geeignete Datentypen um und gibt die Information in dieser Form an die Anfrageschicht zurück. Abbildung 4.2: Architektur eines Clients im Schichten-Model - Ein Client teilt sich in drei Schichten auf. Dazu zählen die Datenschicht, die Anwendungsschicht und die Schnittstelle zum Server. Jede Schicht kommuniziert mit den benachbarten Schichten und sichert so den Datenfluss im Client selbst und mit dem ganzen System. Im Detail bekommt beispielsweise die Komponente der App, die für die Verwaltung der Einladungen zu Umfragen zuständig ist, alle aktuell vorliegenden Daten zu ausstehenden Einladungen. Falls der Benutzer eine Einladung bestätigt, gibt die Komponente diese Bestätigung unter anderem an die lokale Datenbank weiter. Einige Komponenten haben nur die Aufgabe 29 4 Planung und Design Informationen darzustellen, wie die Übersicht über alle Umfragen, in die der Benutzer involviert ist. Auch diese Komponenten bekommen ihre Werte vom Helper, liefern allerdings keine Informationen zurück. Die Anwendungsschicht kann ebenfalls mit der darüber liegenden Schicht, die lediglich aus der Schnittstelle zum Server besteht, kommunizieren. Die Schnittstelle ist eine ähnliche Klasse wie der LocalDatabaseHelper und heißt DBAccess. Sie stellt Methoden für alle Anfragen, die der Webservice annimmt, zur Verfügung, bereitet die POST-Anfragen an diesen vor und dekodiert die in JSON verpackten Antworten des Webservices. Erhält die Einladungen-Komponente beispielsweise eine Antwort auf eine offene Einladung, schickt sie die Antwort nicht nur an die lokale Datenbank, sondern ruft auch die passende Methode der DBAccess-Klasse auf. Es gibt lediglich eine Verbindung, die nicht den Prinzipien eines Schichtenmodells folgt, die besagen, dass es keine Kommunikation zwischen Schichten gibt, die nicht benachbart sind. [6] Die Synchronisation der lokalen mit der globalen Datenbank wird zwar von der Anwendungsschicht angestoßen, sobald es notwendig ist, sie wird allerdings durch eine direkte Kommunikation zwischen Helper und DBAccess realisiert, in der der Helper wie eine Komponente der Anwendungsschicht agiert und eine passende Methode in der DBAccess-Klasse aufruft. In diesem Fall verwischen in einem Mainzel-Client die klaren Strukturen eines Schichtenmodells. An den zahlreichen, eindeutigen Kommunikationswegen zwischen den Schichten erkennt man den Grundgedanken hinter dem Design der Architektur eines Mainzel-Clients. Innerhalb des Clients ist es die Hauptaufgabe alle benötigten Daten an die richtigen Komponenten zu liefern und im Sinne eines begrenzten Arbeitsspeichers auf einem mobilen Endgerät keine unnötigen Daten zu versenden. Durch den Einsatz des LocalDatabaseHelpers ist, ähnlich wie bei dem phpWebservice, die lokale Datenbank gegen SQL-Injection abgesichert, die durch passende Formulareingaben durch den Benutzer hätten ausgelöst werden können. Das Mitlesen der auf den Kommunikationswegen übergebenen Daten ist innerhalb des Clients nicht möglich, da alle Komponenten außer den zwei Speichern zur App selbst gehören. Auch die Kommunikation mit den Speichern ist nicht einsehbar, da sowohl die SQLite-Datenbank als auch die Konfigurationsdaten nur von der App, die sie erstellt hat, erreichbar sind. 4.1.3 App-Architektur Die Komponenten der Anwendungsschicht in Abbildung 2 werden in Abbildung 3 noch einmal aus einer detaillierteren Perspektive gezeigt. Zu sehen sind die Kommunikationswege der Anwendungskomponenten untereinander. Ein unbekannter Benutzer wird zunächst durch die Login-Komponente registriert oder eingeloggt. Bekannte Benutzer erhalten sofort Zugang zum Überblick über die Umfragen, in die sie involviert sind. Die Überblick-Komponente wiederum kann durch Übergabe einer Umfrage-ID an die Umfrage-Detail-Komponente abgeben und diese wiederum durch Übergabe einer Umfrage- und einer Frage-ID an die Frage-Detail-Komponente. Alle Komponenten außer der Login-Komponente können mit dem Umfrage-Editor kommunizieren und dabei optional eine Umfrage-ID weitergeben. Ohne Umfrage-ID bereitet der Umfragen-Editor eine neu zu erstellende Umfrage vor. Im Falle einer Übergabe, lädt er alle Informationen zum Editieren. Weiterhin können alle Komponenten den Benutzer zur Komponente zum Verwalten der Einladungen und des eigenen Accounts weiterleiten. 30 4 Planung und Design Diese Teilarchitektur lehnt stark an den Erwartungen des Benutzers an, auf schnellem Weg durch die App zu navigieren und es wurde vor allem Wert auf die richtige und effiziente Verteilung der Informationen gelegt. Das ganze Design ist darauf ausgelegt, die Benutzerfreundlichkeit hoch zu halten. Sicherheit spielt innerhalb der Komponenten der App eine nebensächliche Rolle, da die Kommunikationswege von außen nicht angreifbar sind. Abbildung 4.3: Vereinfachte Architektur der Mainzel-App - Die flachen Hierarchien der Mainzel-App ermöglichen diese vereinfachte Darstellung der App-Architektur. Gezeigt werden die Hauptkomponenten und ihre Kommunikationswege. Einige Komponenten übergeben einander Informationen. In diesen Fällen wurde der zurückzeigende Pfeil zur Vereinfachung weggelassen. Dennoch ist auch hier die Kommunikation in die entgegengesetzte Richtung, wie auf allen Kommunikationswegen in dieser Abbildung, möglich. Die Informationen auf den Kommunikationswegen zum UmfrageEditor sind eingeklammert, weil sie nicht zwingend notwendig sind. 4.2 Frontend-Design Bei der Planung des Frontends müssen nicht nur die in Kapitel 3 besprochenen Anforderungen umgesetzt werden, sondern auch die Gewohnheiten der Android-App-Benutzer müssen beachtet werden. Alle Vorgehensweisen und Richtlinien zum Design von Android-Apps sind in der Entwicklerdokumentation „Android Developers“ [7] zusammengetragen. Im Folgenden wird das Konzept des Frontends von Mainzel erklärt und dabei gezeigt, wie die Gewohnheiten von AndroidBenutzern adaptiert wurden. Zur Veranschaulichung werden ausgewählte Skizzen der einzelnen Ansichten gezeigt. Eine vollständige Darstellung aller Ansichtsskizzen wurde dieser Arbeit zusammen mit den Use-Cases in Anhang A hinzugefügt. In Mainzel gibt es verschiedene Ansichten, die dem Benutzer die Informationen auf verschiedene Art und Weise präsentieren und unterschiedliche Funktionen bereitstellen. Sie alle folgen allerdings einem Grundaufbau, der sich an den Aufbau vieler anderer Apps auf dem Markt anlehnt. 31 4 Planung und Design Der Aufbau der Mainzel-Ansicht nach diesem Prinzip folgt somit dem gewohnten Design einer App, sodass Benutzer sich schnell zurechtfinden können. In Abbildung 4.4 ist die Ansicht gezeigt, die ein Benutzer nach dem Starten der App erhält, sofern er sich in Mainzel bereits einmal auf dem mobilen Gerät eingeloggt hat. Auf den Inhalt und den Zweck dieser Ansicht wird später näher eingegangen. Hier soll der Fokus auf die einzelnen Bereiche der Ansicht gelegt werden. Am oberen Bildschirmrand ist wie bei den meisten Apps die Android Notification-Area zu sehen, die nicht Teil der entwickelten App ist. Sie hat die Aufgabe den Benutzer über alles Wichtige im Android-System zu informieren. Hier wird beispielsweise die Uhrzeit angezeigt oder auf Verbindungsprobleme hingewiesen. Jede App hat hier die Möglichkeit selbst Nachrichten, genauer die weiter oben erwähnten Notifications, anzuzeigen, die den Benutzer erreichen, auch wenn die App gerade nicht geöffnet ist. In Mainzel ist es vorgesehen, dass der Benutzer auf diese Weise informiert wird, dass es eine neue Frage zum Beantworten gibt. Abbildung 4.4: Umfrage-Übersicht - Nach dem Starten der App wird der bekannte Benutzer direkt auf diese UmfrageÜbersicht geleitet, damit er alle wichtigen Informationen auf den ersten Blick einsehen kann. Unter der Notification-Area zeigt Mainzel die sogenannte Actionbar der App. Hier wird das Logo von Mainzel gezeigt und eine Überschrift gibt Hinweis auf den betrachteten Inhalt. Am rechten Rand der Actionbar findet der Benutzer alle Funktionen und Navigationslinks, die für die jeweilige Ansicht zur Verfügung stehen. Dabei sind die Wichtigsten direkt anklickbar, während nicht häufig gebrauchte Punkte hinter dem zusammenfassenden „Action overflow“-Button, der in Abbildung 4.4 in der Actionbar ganz rechts zu sehen ist, verschwinden. Bei Android-Geräten, die einen physikalischen Actionbutton haben, taucht der simulierte Button aus Abbildung 4.4 nicht auf. Unter der Actionbar von Mainzel wird als größter Abschnitt auf dem Bildschirm der Inhalt einer Ansicht angezeigt. Der Aufbau dieser hängt stark von der Aufgabe der Komponente, zu der die 32 4 Planung und Design Ansicht gehört, ab. Die Aufgaben, die Ansicht und die Stellung der einzelnen Komponenten innerhalb der Hierarchie der App werden im Folgenden im Detail erklärt. Abbildung 4.5: Frontend-Komponenten der App - Die Struktur des Frontends lehnt sehr stark an der Systemarchitektur der App an und wurde durch die Richtlinien der Android Entwicklerdokumentation [7] beeinflusst. Android Developers [7] schlägt vor die Struktur einer App in „Top Level“- und „Detail/Edit“Ansichten einzuteilen. Falls eine weitere Hierarchiestufe dazwischen benötigt wird, wird diese als eine Kategorie-Ansicht betrachtet. Mit diesem Hintergrund und unter Einbeziehung der AppKomponenten der Systemarchitektur (siehe Abschnitt 4.1.3) sind die Komponenten, die das Frontend von Mainzel umsetzen, geplant worden. Abbildung 4.5 zeigt diese Komponenten als App auf einem stilisierten mobilen Telefon, um zu verdeutlichen, dass es für jede Komponente eine eigene Ansicht gibt. Wie bereits weiter oben beschrieben startet die App für einen bekannten Benutzer mit einer TopLevel-Ansicht, das heißt der Übersicht aller laufenden Umfragen, in die er involviert ist, die dort als Liste angezeigt wird. Mit einem Swipe nach links wird eine ähnliche Übersicht für alle 33 4 Planung und Design vergangenen Umfragen und mit einem Swipe nach rechts eine Übersicht über alle kommenden Umfragen gezeigt. Diese Übersicht ist in Abbildung 4.4 skizziert worden. Durch einen Klick auf eine Umfrage wechselt der Benutzer zur nächst unteren Hierarchie, einer Kategorie-Ansicht, die die Details einer Umfrage zeigt. Hier wird neben allen Informationen, die die Umfrage betreffen, auch eine der Umfrage-Übersicht ähnliche Liste der Fragen angezeigt. Mit einem Klick auf eine Frage gelangt der Benutzer auf die unterste Ebene der Hierarchie, in die Detailansicht der Frage. Eine solche Ansicht wurde in Abbildung 4.6 skizziert. Abhängig vom Satus der Frage lässt sie sich beantworten, Diagramme, die die Abgaben auswerten stehen zur Verfügung oder der Benutzer kann sie nur einsehen. Abbildung 4.6: Detailansicht einer Frage - Die linke Abbildung zeigt eine laufende Single-Choice Frage, zu der noch eine Antwort durch den Benutzer abgegeben werden muss. Die rechte Abbildung stellt eine vergangene Schätz-Frage, die auch ein Diagramm zur Ansicht der allgemeinen Ergebnisse anbietet, dar. Die Strukturierung des Frontends in Abbildung 4.5 zeigt weiterhin, dass der Benutzer die hierarchieübergreifenden Ansichten zum Einsehen und Bearbeiten des eigenen Accounts und zum Beantworten der Einladungen von allen Komponenten, außer der Login-Komponente, erreichen kann. Zu beiden Ansichten kann durch Auswählen des jeweiligen Navigationspunktes in der Actionbar von Mainzel navigiert werden. Auch der Editor zum Erstellen von Umfragen steht von überall in der App zur Verfügung. Innerhalb der Detailansicht einer Umfrage oder einer Frage, kann der Benutzer zwischen dem Bearbeiten und dem neuen Anlegen einer Umfrage in der Actionbar wählen, wobei bei der Bearbeitung alle Daten der ausgewählten Umfrage in den Editor geladen werden. Abbildung 4.7 zeigt eine Skizze des Editors. Um alle Eintragungen für eine Umfrage tätigen zu können, muss der Benutzer durch die Ansicht scrollen. Beim Erstellen einer neuen Frage erweitert sich das Formular abhängig vom 34 4 Planung und Design ausgewählten Frage-Typ, damit alle charakteristischen Attribute eines Fragetyps angegeben werden können. Abbildung 4.7: Umfragen-Editor - In dieser Ansicht kann der Benutzer alle Änderungen an einer Umfrage vornehmen oder eine neue erstellen. Das Formular des Editors ist zu lang für die Ansicht auf einer Bildschirmlänge eines AndroidGeräts, aber durch Scrollen nach unten kann der Benutzer auf alle Teile des Formulars zugreifen. 4.3 Datenbanken-Design Im Mainzel-System gibt es mehrere Datenbanken. Zum einen hat jeder Client Zugriff auf die globale Datenbank, die auf einem SQL Server von Microsoft umgesetzt wurde und in der alle gemeinsam benutzen Daten des Systems abrufbar sind. Zum anderen steht jedem Client seine eigene lokale SQLite Datenbank auf dem Gerät zur Verfügung. Auf den ersten Blick ist die lokale Datenbank eine schlankere Kopie der globalen Datenbank, dennoch gibt es gravierende Unterschiede zwischen den beiden. Eine SQLite Datenbank ist, wie der Name bereits verrät, eine abgespeckte Datenbank mit deutlich weniger Datentypen als beispielsweise die MSSQL Datenbank und auch Programmierbarkeit wie Funktionen oder Trigger sucht man in einer SQLiteDatenbank vergeblich. Diese Einschränkungen auf der lokalen Datenbank und die Aufgabe der Synchronisation beider Datenbanken haben das Datenbankdesign von Mainzel erheblich beeinflusst. Im Folgenden werden beide Datenbankentwürfe erläutert und in Zusammenhang mit den Bedürfnissen des Mainzel-Systems gestellt. 35 4 Planung und Design 4.3.1 Globale MS SQL Datenbank In Abbildung 4.8 ist das Datenbankschema der globalen Datenbank abgebildet. Hier sind die fünf Tabellen zum Speichern der Benutzerdaten „User“, der Umfrageinformationen „Survey“, einzelner Fragen „Question“, der eingereichten Antworten „Result“ und der Rollenzuweisungen zwischen Umfragen und Benutzer „IsInvolved“ zu sehen. Alle Tabellen stehen eng miteinander in Beziehung, so gehört jede Frage in der Question-Tabelle zu genau einer Umfrage und jede Antwort in der Result-Tabelle wurde von genau einem Benutzer zu einer bestimmte Frage abgegeben. Die IsInvolved-Tabelle dient als Mapping-Tabelle, um die Zugehörigkeit eines Benutzers zu einer bestimmten Rolle innerhalb einer Umfrage zuzuordnen. Jede Tabelle speichert die Basisinformationen zu den „Objekten“, die sie enthält. Bei einer Umfrage handelt es sich dabei beispielsweise um den Namen, die Beschreibung, der Start- und Endzeitpunkt, ob die Umfrage bereits vor dem Startzeitpunkt für Teilnehmer einsehbar ist und ob die Umfrage anonym gestellt wird. Allerdings ist diese Datenbank vor allem mit dem Hintergrund alle verarbeiteten Informationen im Mainzel-System konsistent und schnell verfügbar abzuspeichern, entworfen worden. Zu diesem Zweck speichert jede Tabelle weitere Attribute. Beispielsweise findet man in der Survey-Tabelle drei Attribute, die zum Zweck der schnellen Verfügbarkeit eingerichtet wurden. So speichert das Attribut „NumberParticipants“ die Anzahl der Teilnehmer und es wird regelmäßig mit Hilfe eines Triggers aktualisiert, wenn neue Eintragungen zur Umfrage in der IsInvolved-Tabelle gemacht werden. Durch angepasste Trigger werden auch die beiden Attribute für die Beteiligung an der Umfrage „AverageParticipation“ und für die Richtigkeit der Antworten „AverageCorrect“, die es auf Ebene einer Frage auch in der Question-Tabelle gibt, aktuell gehalten. Alle drei genannten Felder werden zur Ansicht der Ergebnisse einer Umfrage oder einer Frage auf den Clients gebraucht, eine Funktion die jedem Benutzer in jeder Umfrage zur Verfügung steht, in die er involviert ist. Die Werte der Felder können allerdings auf dem Client selbst nicht berechnet werden, da die meisten Clients die erforderlichen Daten auf Grund der Wahrung der Anonymität der Teilnehmer nicht synchronisieren, es sei denn der Benutzer des Clients ist ein Autor der Umfrage und die Umfrage wurde als nicht anonym freigegeben. Damit die Synchronisationsanfrage der Clients keine zeitintensiven Berechnungen, wie die dieser Werte, beinhaltet, wurden die drei Werte als selbstaktualisierende Attribute der Survey- bzw. der Question-Tabelle implementiert. Ein weiteres Feld mit besonderem Hintergrund, das in jeder der in Abbildung 4.8 gezeigten Tabellen vorkommt, ist das Attribut „Version“ vom Typ timestamp. Es erhält seine besondere Eigenschaft durch seinen Datentyp. Der Stand eines Datenbank-internen Zählers, der bei jeder Änderung am Datenbestand hochgezählt wird, wird automatisch in das Feld vom Typ timestamp eingetragen, wenn sich der Datensatz, zu dem das Feld gehört, ändert oder das erste Mal eingetragen wird. Dadurch wurde eine automatische Versionskontrolle auf der globalen Datenbank geschaffen, durch die ein jeder Client schnell herausfindet, welche Datensätze mit seiner lokalen Datenbank synchronisiert werden müssen. Es ist noch ein weiteres Attribut zu nennen, das Informationen über die Basisinformationen einer jeden Tabelle hinaus speichert. Zu jedem Datensatz wird in den Tabellen das Attribut „IsDeleted“ gespeichert, das Aufschluss darüber gibt, ob der Datensatz gelöscht wurde. Das Löschen eines Users beispielsweise, führt auf Ebene der globalen Datenbank dazu, dass seine persönlichen Daten wie Name und E-Mail-Adresse, nicht aber seine ID, gelöscht werden. Das ist aus dem Grund nicht möglich, da bereits seine Antworten in die Auswertung von Umfragen eingegangen ist und diese nicht mehr verfälscht werden sollen. Das Löschen seiner persönlichen Daten führt zur Anonymisierung seiner Antworten. Liest ein Client während der Synchronisation, die in Abschnitt 36 4 Planung und Design 4.3.3 erläutert wird, dass ein Datensatz gelöscht wurde, kann und wird dieser den kompletten Datensatz aus seiner lokalen Datenbank löschen, da es sich bei den lokalen Datensätzen lediglich um Kopien handelt und zum Schonen der Ressourcen des Clients keine unbrauchbaren Datensätze gespeichert werden. Abbildung 4.8: Globales Datenbankdiagramm - In der globalen MSSQL-Datenbank von Mainzel gibt es fünf Tabellen, die Survey-, User-, Question-, Result- und die IsInvolved-Tabelle. Sie stehen durch Fremdschlüssel miteinander in Beziehung. Die erste Spalte einer jeden Tabelle gibt an welche Attribute als Primärschlüssel (PK) und welche als Fremdschlüssel (FK) deklariert wurden. Die zweite Spalte zeigt die Benennung des Attributs und die dritte Spalte gibt den Datentyp des Attributs auf dem SQL-Server an. 4.3.2 Lokale SQLite-Datenbank Das in Abbildung 4.9 gezeigte Diagramm der lokalen Datenbank eines Clients von Mainzel ähnelt sehr stark dem Diagramm der globalen Datenbank und weist beispielsweise dieselben Tabellen 37 4 Planung und Design auf. Hier werden ebenfalls die genannten Basisdaten zu Benutzern, Umfragen, Fragen, Antworten und der Zuordnung zwischen Benutzern und Umfragen gespeichert. Abbildung 4.9: Diagramm der lokalen Datenbank - Die lokale Datenbank eines Mainzel-Clients weist dieselben Tabellen wie die globale Datenbank auf. Sie unterscheidet sich allerdings erheblich in ihren Attributen. Da die Programmierbarkeit von Funktionen, Prozeduren und Triggern in einer SQLite-Datenbank fehlt, werden hier fast alle Werte bei der Synchronisation aus der globalen Datenbank kopiert und danach meist nicht mehr von der App verändert. Ein Versionsattribut wie in der globalen Datenbank, ist daher für keine Tabelle nötig und alle Daten der lokalen Datenbank können als Kopien angesehen werden, die nicht vom Client gepflegt werden müssen, sondern immer nach der Synchronisation mit der globalen Datenbank automatisch auf den aktuellen Stand gebracht werden. Es gibt allerdings ein Feld, das in der globalen Datenbank nicht existiert und vom Client selbst aktualisiert wird. Das NotAnswered-Attribut der Survey-Tabelle zählt individuell für den Benutzer des Clients für jede Umfrage, in der er Teilnehmer ist, die Anzahl der unbeantworteten Fragen mit, damit die App ihn auf diese Weise schnell und an verschiedenen Orten in der App darauf 38 4 Planung und Design hinweisen kann. Der Wert des Attributs erhöht sich, wenn eine neue Frage zur Beantwortung bereit steht und löst bei geschlossener App beispielsweise eine Notification aus, die den Benutzer darüber informiert. Sobald eine Frage beantwortet wurde, wird der NotAnswered-Wert um eins verringern. 4.3.3 Synchronisation Es wurde bereits angedeutet, dass der Synchronisationsprozess in Mainzel nur in eine Richtung läuft, um die Daten von der globalen auf die lokale Datenbank zu kopieren. Im Rahmen dieses Prozesses, der außer beim ersten Starten der App im Hintergrund abläuft, übergibt die App dem php-Webservice die ID des Users und den Stand des angesprochenen Versionszählers der globalen Datenbank bei der letzten Synchronisation. Der Webservice stellt daraufhin eine Anfrage an die globale Datenbank zum Feststellen aller für den Benutzer interessanten Datensätze, die eine höhere Versionsnummer haben und gibt diese an die App zurück. Ein solcher Synchronisationsmechanismus ist in die andere Richtung nicht möglich. Die ID’s beispielsweise von Fragen und Umfragen werden beim Navigieren durch die App, wie es in Kapitel 4.1.3 erklärt wird, verschiedenen Komponenten der App übergeben und dürfen sich aus diesem Grund während der Laufzeit der App nicht ändern. Bei einer automatischen Synchronisation der globalen Datenbank mit einer lokalen Datenbank hätte aber beispielsweise eine neu erstellte Frage kurzeitig bis zum Abschluss der Synchronisation in beide Richtungen keine ID oder zumindest nicht die, die sie von der globalen Datenbank zugewiesen bekommt. Einzig eine abgegebene Antwort könnte auf diesem Weg mit der globalen Datenbank synchronisiert werden, da für einen neuen Datensatz der Result-Tabelle keine neuen ID’s erstellt werden müssen. Diese Daten sind allerdings wohl die brisantesten im ganzen System und sollen in Mainzel auf schnellstem Weg an alle beteiligten Clients kommuniziert werden. Das Warten auf die nächste Synchronisation würde zu lange dauern. Daher findet das Eintragen von Änderungen an Umfragen, abgegebenen Antworten oder Ähnlichem in die globale Datenbank auf direktem Weg über den Webservice statt und löst eine erneute Synchronisation der Clientdatenbank mit der globalen Datenbank aus. 4.3.4 XML-Datentypen Die meisten Attribute, die die erwähnten Basisinformationen enthalten sind durch die Kombination von Namen und Datentyp selbsterklärend. Lediglich bei den beiden Attributen „AnswerXML“ und „ResultXML“ vom Typ xml in der Answer- und der Result-Tabelle kann nicht direkt vom Datentyp auf die Gestalt des Inhalts geschlossen werden. Hier werden speziell für Mainzel definierte XML-Daten erwartet, die von der App ausgelesen werden können. Die Wurzel eines AnswerXML-Wertes gibt dabei Aufschluss über den Frage-Typ der Frage, welcher der Wert zugeordnet ist. Der Wurzel folgen vom Frage-Typ abhängige Attribute und weitere Elemente. In Quellcode 4.1 ist ein Beispiel für eine Single-Choice-Frage dargestellt. Wie zu sehen ist, enthält ein typischer AnswerXML-Wert einer Single-Choice-Frage mehrere option-Elemente, die jeweils die Nummer der Option als Attribut angeben. Die richtige Option erhält außerdem den Wert „true“ im Attribut „correct“. Zusätzlich hat jedes Element ein Attribut namens „counter“. Es gibt die Anzahl der Teilnehmer an, die die jeweilige Antwortmöglichkeit gewählt haben. 39 4 Planung und Design <singlechoice> <option nr="0" correct="true" counter="2">Option 0</option> <option nr="1" counter="6">Option 1</option> <option nr="2" counter="1">Option 2</option> <option nr="3" counter="2">Option 3</option> <abstentions>3</abstentions> </singlechoice> Quellcode 4.1: Beispiel für ein AnswerXML-Wert einer Single-Choice-Frage - Die option-Elemente innerhalb des Wurzelelements geben Aufschluss über zur Verfügung stehenden Antwortmöglichkeiten. Eine Schätz-Frage wiederum, zu der ein Beispiel in Quellcode 4.2 angegeben wurde, speichert Elemente zur Anzahl der Vorkommastellen (digits), der Anzahl der Nachkommastellen (fractional), der Einheit der Antworten (unit) und welcher Wert korrekt ist (correct). Weiterhin gibt es das Element „results“, das für alle eingereichten Antwortmöglichkeiten die Anzahl der Teilnehmer, die sie gewählt haben, angibt. Sowohl dieser Teil einer Schätz-Frage als auch das counter-Attribut der Antwortmöglichkeiten von Single-Choice-Fragen stellen die Werte für die Überblicksdiagramme der Antworten der einzelnen Fragen zur Verfügung. Auf diese Weise ist gewährleistet, dass alle an einer Umfrage beteiligten, auch die Teilnehmer-Clients ein solches Diagramm darstellen können, ohne dass alle Result-Tabelleneinträge herunter geladen werden müssen. Die Einträge werden mit Hilfe eines Triggers, der auf Veränderungen in der Result-Tabelle reagiert, auf dem SQL-Server bearbeitet. <estimation> <digits>3</digits> <fractional>2</fractional> <unit>cm</unit> <correct>2.00</correct> <results> <result counter="5">2.00</result> <result counter="2">3.14</result> <result counter="4">1.74</result> </results> <abstentions>3</abstentions> </estimation> Quellcode 4.2: Beispiel für ein AnswerXML-Wert einer Schätzfrage - Es gibt Elemente mit Angaben zur Gestalt der Antworten, der richtigen Antwort und den eingereichten Antworten. Auch das Wurzelelement eines ResultXML-Wertes gibt Aufschluss über den Typ der Frage, zu der der Result-Tabelleneintrag gehört. Das Beispiel für eine Datum-Frage (Wurzelelement „date“) in Quellcode 4.3 zeigt, dass das abgegebene Datum als Inhalt des Wurzelelements gespeichert wird, während die Antwort auf eine Position-Frage (Wurzelelement „position“) wesentlich komplexer ist. Hier ist jeweils ein Element für den Längen-und den Breitengrad der Antwort eingetragen, die jeweils Attribute mit Angaben zur Richtung, Minute und Sekunde besitzen. 40 4 Planung und Design <date>21.08.1990</date> <position> <latitude direction="N" minute="49" second="59" /> <longitude direction="E" minute="8" second="14" /> </position> Quellcode 4.3: Beispiele für ResultXML-Werte einer Datum- und einer Position-Frage - Auch hier unterscheiden sich die Elemente innerhalb des Wurzelelements stark voneinander. Die oben gezeigten Quellcodes sind nur Beispiele und es gibt spezielle Answer- und ResultXMLWerte für jeden Frage-Typ. Das Auslesen der Werte wird auf Seiten der Clients mit Hilfe von zwei speziell dafür implementierten Klassen erledigt, die Methoden für jeden Frage-Typ anbieten. Dieser zusätzliche Aufwand auf Seiten des Clients vereinfacht die Speicherung und die Erweiterbarkeit auf Seiten der Datenbank sehr. Durch den Datentyp XML wird in der Datenbank jeder Wert zugelassen, sodass hier keine Änderungen vorgenommen werden müssen, wenn ein Datentyp erweitert werden soll oder neue hinzugefügt werden. Außerdem können auf diese Weise mehrere Frage-typsiche Informationen in einem Datenbankfeld gespeichert werden. Schließlich standardisiert XML durch den Baum-artigen Aufbau und das Konzept der Elemente und Attribute stark die Gestalt dieser Informationen, sodass sie leicht auf dem Client ausgelesen werden können. 41 5 Entwicklung 5 Entwicklung Zur Entwicklung von Mainzel gehört sowohl die Programmierung der App mit allen ihren Funktionen als auch eine vorherige gründliche Durchleuchtung aller Anforderungen und wie sie umgesetzt werden sollen. Für beide Schritte wurden einige Werkzeuge benutzt, die das Planen und Programmieren erleichtert und beschleunigt haben. Weiterhin wurden verschiedene Technologien benötigt, die das Umsetzen der Funktionalität im System erst ermöglichen. In diesem Kapitel werden diese Werkzeuge und Technologien vorgestellt. Im Anschluss wird die Software selbst besprochen und daran aufgezeigt, wie die eingesetzten Technologien, diese beeinflusst haben. 5.1 Entwicklungssoftware In der Planungsphase des Mainzel-Systems wurden zunächst bildbearbeitende und diagrammerstellende Software benötigt. Für die Entwicklung wurden daraufhin eine klassische Entwicklungsumgebung und ein Datenbankmanagementsystem (DBMS) eingesetzt, die in den folgenden Abschnitten vorgestellt werden. 5.1.1 Balsamiq Mockups Zur Erstellung der Skizzen für die verschiedenen Ansichten innerhalb der App, wie sie beispielsweise in Kapitel 4.2 zum Einsatz kommen, wurde das Wireframing10-Tool Balsamiq Mockups in der Desktop-Version 2.2 verwendet. Die minimalistische Oberfläche von Balsamiq Mockups stellt dem Benutzer eine Auswahl an vorgefertigten geometrischen Objekten, gängigen UI-Elementen und weiteren Formen zur Verfügung, die er per Drag-and-Drop auf einem großflächigen virtuellen Skizzenpapier zurecht rücken kann. Jede Form kann dabei auf verschiedene Art und Weise angepasst und skaliert werden. Für das Aussehen der Formen, vor allem deren Linien kann zwischen zwei Optionen gewählt werden. Mit der „Wireframe Skin“ sehen alle Darstellungen sehr realitätsnah und nach Abbildungen bereits implementierter Oberflächen aus. Die in dieser Arbeit verwendete „Sketch Skin“ stellt alle Formen wie mit dem Bleistift gezeichnet dar, sodass dem Betrachter klar ist, dass es sich dabei um einen Entwurf handelt. [8] 5.1.2 draw.io Nicht alle Entwürfe und Abbildungen für die Planung von Mainzel können als handgezeichnete Skizzen dargestellt werden. Aus diesem Grund wurde neben Balsamiq Mockups das DiagrammZeichenprogramm draw.io zur Erstellung der Diagramme während der Designphase von Mainzel verwendet. Es ist als Web-Anwendung online über alle Browser unter der gleichnamigen WebAdresse erreichbar. In draw.io kann der Benutzer ähnlich wie bei Balsamiq Mockups per Drag-andDrop Formen aus einer großen Auswahl auf einem digitalen Skizzenpapier platzieren. Dabei stehen Formensätze für Datenbank-Design, UML-Diagramme und vielen andere Standards zur Verfügung. Die Diagramme können als XML-Datei im Google-Drive, in der Dropbox, auf dem Gerät oder sogar im Browser gespeichert werden, damit zu einem späteren Zeitpunkt mit draw.io daran weitergearbeitet werden kann. Außerdem gibt es die Möglichkeit das Erstellte in gängigen Bildformaten herunterzuladen. Mit draw.io wurden beispielsweise die Datenbankdiagramme in Kapitel 4.3 erstellt. 10 Beim Wireframing wird die Benutzeroberfläche von Software, vornehmlich von Webseiten, oft unter Zuhilfenahme von spezieller Designsoftware skizziert. [8] 42 5 Entwicklung draw.io basiert auf der JavaScript Bibliothek mxGraph und wird als Beispiel-Anwendung für diese Bibliothek von den Herstellern beworben. [9] 5.1.3 Gimp Die Anwendung Gimp bietet anders als Balsamiq Mockups und draw.io keine großen Sätze an vorgefertigten Formen an. Als Bildbearbeitungsprogramm ist sie vor allem zum Ausbessern von bereits erstellten Bildmedien geeignet und bringt daher unter vielen anderen Möglichkeiten Werkzeuge zum Verwischen, Kopieren oder Einfärben von Bildausschnitten mit. Auch neue Bilddateien können mit Hilfe von Text, Linien und wenigen Formen erstellt werden. Im Rahmen dieser Arbeit wurde die Version 2.8 verwendet. Mit Hilfe von Gimp sind das Logo und die Icon-Bildmedien von Mainzel entstanden. Für den Einsatz in der App musste vor Allem das Icon in verschiedenen Auflösungen zur Verfügung stehen, damit es auf verschiedenen Bildschirmen in gleichbleibender Bildqualität angezeigt werden kann. Hier hat sich die Bild-skalieren Funktion von Gimp als sehr nützlich hervorgetan. 5.1.4 Android Developer Tools Bundle Die wohl wichtigste und am meisten eingesetzte Entwicklungssoftware für Mainzel ist das Android Developer Tools (ADT) Bundle. Es liefert alle Komponenten, die zur Entwicklung von Android-Apps benötigt werden, in einer Installation. Es beinhaltet die Version 4.3 „Kepler“ der Entwicklungsumgebung Eclipse zusammen mit dem bereits integrierten Eclipse-Plugin zur Android-Entwicklung, das dem Bundle seinen Namen gibt. Weiterhin gehört zu dem Bundle das Android Software Development Kit (SDK) in verschiedenen Versionen, das beispielsweise die für die Android-Entwicklung verwendeten Bibliotheken einschließt und das näher in Abschnitt 5.2.2 beschrieben wird. Die Integrierung der ADT in Eclipse beschleunigt und erleichtert die Entwicklung der Apps sehr, da ohne die Entwicklungsumgebung mit Hilfe einer Konsole gearbeitet wird. Eclipse wurde ursprünglich als Entwicklungsumgebung für die Java-Implementierung geplant und basiert selbst auf Java-Code. Mittlerweile sind unzählige Plugins für die Umgebung auf dem Markt, sodass die Eclipse-Entwicklungsumgebung für fast alle Entwicklungsaufgaben eingesetzt werden kann. Das ADT-Plugin im Speziellen integriert einen Java- und einen XML-Editor, da der funktionale Teil einer App auf Java basiert und sowohl das Layout als auch andere Ressourcen in XML definiert werden. Weiterhin ermöglich das Plugin aus Eclipse heraus Emulatoren für Android-Geräte zu starten, auf denen das Entwickelte getestet werden kann. Auch eine Schnittstelle um auf per USB an den Entwicklungs-Rechner angeschlossene Android-Geräte zuzugreifen und auf diesen zu testen, wird bereit gestellt. Das logging-System von Android produziert bei jedem dieser Testläufe Logs, die Aufschluss über die Vorgänge auf dem Gerät und in den laufenden Apps geben. In Eclipse, das das ADT-Plugin integriert, können diese Logs in der logcat-Konsole angezeigt werden. Die genannten Werkzeuge des ADT-Bundles sind nur einige des gesamten Angebots und wurden Aufgrund ihrer Wichtigkeit bei der Entwicklung des Mainzel-Apps zur Beschreibung ausgewählt. Es ist dabei zu erwähnen, dass das ADT-Plugin und damit das Bundle noch viele weitere nützliche Werkzeuge liefern, die das Entwickeln von Apps sehr beschleunigen. 5.1.5 SQL Server Management Studio und MS SQL Server Für den Zugriff auf die globale Datenbank, die auf einem MS SQL Server der Johannes GutenbergUniversität Mainz, läuft, kam das SQL Server Management Studio in der Version 12.0 zum Einsatz, das im SQL Server 2014 Paket ausgeliefert wird. Das Studio, dessen Oberfläche ähnlich wie die 43 5 Entwicklung einer Entwicklungsumgebung aufgebaut ist, lässt Verbindungen zu mehreren Datenbanken auf unterschiedlichen SQL-Servern gleichzeitig zu, die in einem Objekt-Explorer wie ein Datei-System angezeigt werden. Tabellen, Datensätze, Funktionen, Prozeduren oder Trigger können in einem SQL-Editor erstellt und bearbeitet werden, der auch alle SELECT-Anfragen auswertet und das Ergebnis in einer Tabelle darstellt. Auch eine grafische Darstellung der Tabelleneigenschaften ist möglich, die Änderungen und Erweiterungen an den Tabellen zulässt. Weiterhin können die Tabellen und Beziehungen zwischen diesen innerhalb der Datenbank in einem Datenbankdiagramm dargestellt werden, über das man ebenfalls Änderungen an den Tabellen vornehmen kann. Das SQL Server Management Studio wurde während der Entwicklung von Mainzel hauptsächlich zum Implementieren der Tabellen, Funktionen, Prozeduren und Trigger mit Hilfe von SQL-Skripten genutzt. Aus diesem Grund können im Rahmen dieser Arbeit nur die Basis-Funktionen dieser mächtigen Software genannt werden. 5.2 Verwendete Technologien und Bibliotheken Neben der Entwicklungssoftware, die durch Alternativen hätten ersetzt werden können, kamen einige Technologien und Bibliotheken in der Entwicklung des Systems zum Einsatz, die erst die breite Funktionalität von Mainzel ermöglichen. Im Folgenden werden diese vorgestellt und dabei erklärt, welche Aufgaben sie im System umsetzen. 5.2.1 Java Die Programmiersprache in der Android-Apps vornehmlich geschrieben werden, ist Java, eine der meist verbreitetsten Programmiersprachen derzeit. Java ist eine objektorientierte Sprache und wurde mit Fokus auf die Plattformunabhängigkeit entwickelt. Diese wird vor allem durch das Ausführen des in Java-Bytecode kompilierten Quellcodes auf einer virtuellen Maschine, der Java Virtual Machine (JVM), erreicht. Die JVM wird von dem Java-Betreiber Oracle für verschiedene Plattformen auf der Webseite [10] bereitgestellt. Sie kann für spezielle Hardware angepasst und abgeändert werden, wie es im Falle von Android Geräten geschehen ist. Bis zur Android Version 4.3 wird der Quellcode einer App in Bytecode für die Dalvik Virtual Machine (DVM) kompiliert. Die DVM ist speziell für den mobilen Einsatz unter Android entwickelt worden. Ab Version 4.4, für die die App dieser Arbeit entwickelt wurde, wird neben der DVM die neue Android Runtime (ART) als virtuelle Maschine eingesetzt. Der Benutzer kann in den Entwickleroptionen des Geräts wählen, welche VM zum Ausführen der Apps verwendet werden soll. [11] [12] Die Objektorientiertheit der Programmiersprache von Java hat maßgeblich die Planung und Entwicklung von Mainzel beeinflusst. Einen Überblick über die erstellten Klassen und deren Rolle in der Umsetzung der Funktionen von Mainzel wird ausführlich in Kapitel 5.3.1 behandelt. 5.2.2 Android SDK und Android Support v4-Bibliothek Zum Entwickeln von Android-Apps wird das Android Software Development Kit (SDK) benötigt und bringt alle Komponenten zum Bauen, Debuggen und Ausführen von Apps mit. Im SDK ist beispielsweise der Compiler, der den für die eben erwähnte DVM benötigten Bytecode als DalvikExecutables (.dex) liefert. Weiterhin beinhaltet das Android SDK alle Kern-Bibliotheken für Android. Für Mainzel wurde das zur Zeit der Entwicklung aktuelle SDK für die Android Version 4.4.2 verwendet, was einem API Level 19 für die Bibliotheken entspricht. Das Android SDK ist Teil des in Kapitel 5.1.4 beschriebenen ADT Bundles, kann aber auch einzeln von Android Developer heruntergeladen werden. [12] [13] 44 5 Entwicklung Um die Ansichten der Mainzel-App dynamisch mit Hilfe von sogenannten Fragmenten aufbauen zu können, wird neben den Standardbibliotheken des Android SDKs die Android Support v4Bibliothek benötigt. Da Fragmente bei ihrer Einführung im API Level 11 ursprünglich für die Entwicklung für Tablets eingeführt wurden, ist der volle Umfang an Klassen für den Umgang mit Fragmenten auf allen mobilen Geräten, das heißt auch auf Handys, später im Rahmen der SupportBibliothek ausgeliefert worden. Die Support-Bibliothek gehört nicht zum ADT Bundle und muss extra von Android Developers heruntergeladen und in das Projekt der zu entwickelnden App eingebunden werden. [13] 5.2.3 AChartEngine Die von der Softwarefirma „The 4ViewSoft Company“ entwickelte Java-Bibliothek AChartEngine für Android, stellt alle benötigten Klassen und Funktionen zum Darstellen von Diagrammen in einer App zur Verfügung. [14] Für Mainzel wurden bisher Kreis- und Liniendiagramme für die Darstellung der Ergebnisse einer Umfrage verwendet. Möglich sind auch Balken- und Streudiagramme. Eine Vielzahl von Möglichkeiten die Diagramme selbst und ihre Beschriftung optisch anzupassen, stehen ebenfalls zur Verfügung. 5.2.4 SQLSRV Die SQLSVR-Extension für PHP wird benötigt, um eine MS SQL-Datenbank aus PHP heraus anzusprechen. In Mainzel ist die Extension Teil des Webservers und ermöglicht somit die SQLAnfragen an die globale Datenbank. Die am häufigsten im Mainzel-System benutzte Methode von SQLSRV ist die „sqlsrv_query“-Methode. Sie nimmt eine Anfragezeichenkette und eine Parameterliste an. Sofern ein Parameter in der Anfrage genutzt wird, beispielsweise, um die ID des Benutzers, der die Anfrage stellt, zu übergeben, wird anstelle des Parameters in der Anfragezeichenkette ein „?“ gesetzt und der Parameter selbst in die Parameterliste eingetragen. Auf diese Weise werden die Parameter auch als solche deklariert und das bereits angesprochene SQL-Injection-Verfahren, bei dem beispielsweise über Benutzereingaben bösartige SQL-Befehle in die Anfragen an die Datenbank injiziert werden, die den Datenbestand verändern oder sogar löschen können, wird ausgeschlossen. 5.2.5 JSON Bei der Arbeit in einer Client-Server-Architektur kommt man nicht um die Klärung der Frage, auf welche Weise man Daten am geeignetsten vom Client zum Server und wieder zurück schickt. Eine standardisierte Notation wie die JavaScript Objekt Notation (JSON), die beide Seiten beherrschen, ist dabei die Lösung. JSON wird oft benutzt, um Zeichenketten innerhalb von JavascriptAnwendungen zu verschicken. Es ist eine leicht leserliche Notation, die in mehreren Name/WertPaaren Daten in wenigen gängigen Datentypen aufnehmen kann und als eine Zeichenkette speichert. Diese Zeichenkette kann daraufhin verschickt werden und auf der Empfängerseite von einem JSON-Parser, den es derzeit in fast jeder Programmiersprache gibt, automatisiert ausgelesen werden. Aus diesem Grund kann JSON auch in Systemen, die andere Technologien als JavaScript benutzen, verwendet werden. In Mainzel werden die Ergebnisse einer Anfrage an die globale Datenbank vom Webservice als JSON- Objekte verpackt und an den anfragestellenden Client geschickt. Dieser liest das Objekt mit Hilfe des org.json-Pakets, das in Java standardmäßig enthalten ist, aus. 5.2.6 Android Holo Colors Schließlich wurde ein weiteres Tool eingesetzt, das maßgeblich zum äußeren Erscheinungsbild der Mainzel-App beiträgt. In dem online Generator für Android-UI-Elemente „Android Holo Colors“ 45 5 Entwicklung [15] ist es möglich alle im eigenen App verwendeten UI-Elemente farblich anzupassen und die benötigten Ressourcen-Dateien herunterzuladen. Diese können dann in das eigene Projekt eingebunden werden. Auf diese Weise wurde die standardmäßige hellblaue Farbe, die jedes Android-UI-Element auf seine eigene Weise einsetzt, durch das Rot des Mainzel-Logos ersetzt. Die Screenshots der App in Kapitel 6 zeigen einige Beispiel dafür. 5.3 Umsetzung der App mit Java, XML und den verwendeten Bibliotheken Wie bereits erwähnt haben die benutzten Technologien, die zum Teil frei gewählt werden konnten, wie die AChartEngine-Bibliothek oder der Android Holo Colors-Generator und zum Teil durch die Problemstellung vorgegeben waren, wie Java, XML und das Android SDK, die Entwicklung und das Endprodukt stark beeinflusst. Um einen Einblick in die Software selbst zu geben und aufzuzeigen, wie sich diese Einflüsse äußern, wird im Folgenden das Klassendiagramm von Mainzel besprochen und ein Überblick über die Rolle von XML-Dateien für die RessourcenVerwaltung von Mainzel gegeben. 5.3.1 Klassen Zur Veranschaulichung der eigens für Mainzel erstellten und der aus der Android-Bibliothek verwendeten Klassen wurde das Klassendiagramm in Abbildung 5.1 erstellt. Es zeigt das AndroidPaket in der Mitte, um das sich alle Klassen von Mainzel anordnen. Als Einstieg in das Diagramm können alle „Activity“-Klassen angesehen werden. Sie repräsentieren jeweils eine Ansicht in der App. Sicherlich startet man die App als User nicht in irgendeiner Ansicht, sondern entweder mit der Ansicht zum Einloggen, der „LoginActivity“ oder mit der Übersicht über alle Umfragen, in die der User involviert ist, der „AllSurveysActivity“. Dennoch kann man zwischen den Ansichten in der App mit Hilfe des Optionsmenüs navigieren und für das Klassendiagramm bedeutet das, dass alle Activities der obersten Hierarchieebene. Zur Übersicht wurden aus diesem Grund auch die Verbindungen, die die Navigation repräsentieren, zwischen den Activities weggelassen. Wie bereits angedeutet, wird eine Ansicht einer Android-App zunächst als Activity implementiert, der man ein Layout zuweist. In ihrer „onCreate“-Methode, die aufgerufen wird, sobald das System die Ansicht anzeigen soll, wird der Hauptteil der Funktionalität implementiert. In der Mainzel-App wurden sowohl die Activity-Klasse der Basisbibliothek als auch die „FragmentActivity“-Klasse der Support v4-Bibliothek, die zum Arbeiten mit den Listen von Mainzel benötigt werden, verwendet. Die ganze Funktionalität, die Einfluss auf das Aufbauen und das dynamische Anpassen der Ansichten hat, wird in Mainzel unter einem Thread ausgeführt. Das ist deshalb nötig, weil die Kommunikation mit UI-Elementen nur auf dem Hauptthread, der der App vom Android-System zugewiesen wird, möglich ist. Aus diesem Grund wird dieser Hauptthread auch „UI-Thread“ genannt. Manche Anweisungen, können mitunter zu lange dauern und den UI-Thread blockieren. Um dies zu umgehen, muss diese Funktionalität in sogenannte Worker-Threads ausgelagert werden. [16] Dieses Verfahren wurde zum Einloggen des Benutzers in das System im Rahmen der „AsyncLogin“-Klasse umgesetzt, um den UI-Thread nicht durch das Warten auf die Benutzerdetails, die von der globalen Datenbank geschickt werden, zu blockieren. Weitere Funktionalität, die auch über das Beenden der App hinaus agieren kann, wird unter Android als Service implementiert. Auch ein Service erhält einen eigenen Thread, dessen Lebenszyklus gänzlich unabhängig vom UI-Thread der App ist. [16] Dennoch ist ein Service nicht zum Auslagern aufwändiger Berechnungen geeignet, sondern muss als eigenständiger Teil des Programms angesehen werden. In Mainzel gibt es den „QuestionStatusService“, der die Start- und 46 5 Entwicklung Endzeiten der Fragen von Umfragen, in denen der Benutzer als Teilnehmer involviert ist, überwacht. Sofern eine neue Frage gestartet wurde, schickt der Service eine Notification an den Benutzer, die darauf hinweist, dass es eine neue unbeantwortete Frage im Mainzel-System gibt. Außerdem aktualisiert dieser Service das in Kapitel 4.3.2 angesprochene Feld „NotAnswered“ der Survey-Tabelle, das die Anzahl der unbeantworteten Fragen mitzählt. Dadurch fungiert es wie ein Trigger für die lokale Datenbank. Diese Anweisungen werden in der „onStartCommand“-Methode umgesetzt. Für die Kommunikation mit den beiden Datenbanken wurden, wie bereits in Abschnitt 4.1.2 erklärt, die Klassen „DBAccess“ und „LocalDatabaseHelper“ (Helper) implementiert. Sie verfügen über einen großen Satz an Methoden, um jegliche Datenbankabfrage, die im Mainzel-System benötigt wird, zu realisieren. In Abbildung 5.1 sind nur wenige dieser Methoden eingetragen, da eine komplette Liste den Rahmen des Diagramms überschreiten würde. Das Gleiche gilt für die zahlreichen Zugriffe auf diese beiden Klassen durch andere Klassen, weshalb die DBAccess-Klasse gänzlich ohne Verbindungen zum System dargestellt ist, auch wenn sie in der Realität eine sehr zentrale Rolle innerhalb der App spielt. Die LocalDatabaseHelper-Klasse ist im Singleton-Pattern erstellt worden. Hierbei gibt es die statische Klassenvariable „sInstance“ vom Typ der Klasse, die die einzige Instanz der Klasse in der ganzen Anwendung darstellt. Sie kann über den statischen Getter „getInstance()“ abgerufen werden. Der Getter erstellt eine neue Instanz, falls sInstance „null“ sein sollte und gibt daraufhin sInstance zurück. Da allein der Getter benutzt werden soll und keine neue Instanz über den Konstruktor der Klasse geschaffen werden soll, wird im SingletonPattern der Konstruktor häufig als „private“ ausgewiesen, wie es auch bei der Helper-Klasse geschehen ist [11]. Durch das Singleton-Pattern wird sichergestellt, dass auf die lokale Datenbank nur über den einen Helper zugegriffen wird. Das Transaktionsmanagement, das durch die Elternklasse „SQLiteOpenHelper“ von android gegeben ist, die der Helper erweitert, wird auf diese Weise nicht angetastet. Weiterhin sind über die geerbten Methoden „onCreate“ und „onUpgrade“ auch die Erstellung und die Versionsverwaltung der lokalen Datenbank über den LocalDatabaseHelper erreichbar. Im Rahmen dieser beiden Methoden greift die Klasse auf die Tabellen-Klassen „UserTable“, „SurveyTable“, „QuestionTable“, „ResultTable“ und „IsInvolvedTable“ zu, die sowohl den CREATE-SQL-Befehl als auch die Bezeichnungen für Tabelle und Spalten verwalten. Zum Auslesen der Bezeichnungen benutzen viele andere Mainzel-Klassen die Tabellen-Klassen, doch zur Übersicht wurde auf das Eintragen dieser Beziehungen im Diagramm verzichtet. Alle anderen Mainzel-Klassen können als Helfer-Klassen zur Verarbeitung und Darstellung der Datenbank-Daten angesehen werden. Beispielsweise wurden zur Erleichterung des Umgangs mit den XML-Daten, die in Kapitel 4.3.4 angesprochen werden, die Klassen „AnswerXML“ und „ResultXML“ erstellt. Sie bieten alle Methoden zum Auslesen und Bearbeiten der Werte innerhalb der XML-Daten an. Ein weiteres Beispiel sind die von der Android-Klasse „Fragment“ und „ListFragment“ abgeleiteten Klassen. Sie können als Teil, also als Fragment einer Activity, angesehen werden und besitzen ähnliche Möglichkeiten. Dennoch können sie nicht ohne eine Eltern-Activity zum Anzeigen von UI-Elementen verwendet werden. In der Mainzel-App kommen die Fragmente in den dynamisch auszutauschenden Teilen der Ansichten zum Einsatz. Beispielsweise müssen in der „QuestionDetails“-Activity, über die ein Benutzer eine Frage beantworten und deren Ergebnisse einsehen kann, je nach Typ und Status der Frage, Teile der Oberfläche ausgetauscht werden. Für die Darstellung des passenden Antwortformulars eines jeden Frage-Typs gibt es daher jeweils ein Fragment, das das Interface „QuestionTypeFragment“ implementiert. In Abbildung 5.1 sind exemplarisch die beiden Fragmente für Multiple-Choice- und 48 5 Entwicklung Freitext-Fragen dargestellt, es gibt allerdings für jeden implementierten Frage-Typ ein eigenes Fragment, da diese Konstruktion frei erweiterbar ist. Fragmente wiederum, die die Klasse ListFragment erweitern, stellen Listen dar. In Mainzel wird beispielsweise der Überblick über alle Umfragen in der AllSurveysActivity in einem Listfragment umgesetzt. Um ein Listfragment einbinden zu können, muss die Eltern-Activity die erwähnte Klasse FragmentActivity erweitern. Im Falle der AllSurveysActivity wird außerdem noch vom Interface „TabListener“ abgeleitet, das es ermöglicht mehrere Listen in Tabs aufzuteilen und die Interaktion des Benutzers mit den Tabs zu kontrollieren. Zum Befüllen einer Liste mit Daten aus der Datenbank wird eine Instanz der „CursorAdapter“-Klasse eingesetzt. Ein Cursor ist ein Zeiger auf eine Auswahl an Datenbankzeilen. In einem CursorAdapter, wie dem AllSurveysCursorAdapter, ist genau angegeben, wie mit den Daten, auf die ein auf den CursorAdapter angewendeter Cursor zeigt, umgegangen werden soll, sodass sie in der List angezeigt werden können. Beispielsweise wird mit der „newView“-Methode eines CursorAdapters ein eigenes View für eine Zeile der Liste angelegt und zurückgegeben und dieses mit der „bindView“-Methode in den Kontext der Liste, der der CursorAdapter zugewiesen ist, eingetragen. Ein View-Objekt unter Android ist ganz allgemein ein UI-Element. Es gibt Views, die direkt ein UI-Element darstellen, beispielsweise eine Checkbox und es gibt Views, die als Container für andere Views fungieren. Alle UI-Elemente und Container sind von der Klasse android.view.View abgeleitet. Daher kann ein View sowohl als Container als auch als einzelnes UIElement in Erscheinung treten. [16] Als Teile der UI werden auch die von der „Dialog“-Klasse abgeleiteten Klassen angesehen. Ein Dialog wird in einem separaten Fenster angezeigt und fordert Informationen wie eine Bestätigung oder im Falle des „DateTimeDialogs“ von Mainzel, ein Datum und eine Uhrzeit, bevor der Benutzer die eigentliche Ansicht weiterbenutzen kann. Auch die vollständige Erstellung oder die Änderung einer Frage wird in der „EditSurveyActivity“ durch den Einsatz des „EditQuestionDialog“ gelöst. Sicherlich sind die Bibliotheken des Android-SDKs und das Angebot der Support v4-Bibliothek um einiges größer als im Klassendiagramm von Mainzel dargestellt und im Rahmen der Mainzel-App werden noch auf viele weitere zugegriffen. Im Diagramm sind lediglich die Klassen ausgearbeitet, die von großen Nutzen für die App sind und von denen die Mainzel-Klassen abgeleitet wurden. 5.3.2 XML-Dateien Unter Android werden alle Layouts einer App in XML-Strukturen abgelegt. Aufgrund der Baumstruktur von XML-Daten lässt sich das Layout einer Ansicht schnell und einfach als Verschachtelung von Container- und UI-Views strukturieren. Aber nicht nur die Layouts werden auf diese Weise definiert. Es ist angeraten [7] alle verwendeten Zeichenketten, wie Bezeichnungen und Labels, in ein „strings.xml“ auszulagern und die bereits vorimplementierten Methoden zum referenzieren auf diese Ressource zu verwenden, um die Strings im Java-Code anzuwenden. Durch diese Zentralisierung ist es im Nachhinein einfacher eine App in verschiedenen Sprachen anzubieten, lediglich die strings.xml-Datei muss übersetzt und ausgetauscht werden. Auch Änderungen an häufig verwendeten Zeichenketten kann hier ohne Suchaufwand zentral vorgenommen werden. Diese Methode des Auslagerns der Ressourcen lässt sich im Rahmen der Android-Entwicklung beliebig auf andere Werte ausweiten. In der Mainzel-App werden beispielsweise die Abstände der UI-Elemente zum Bildschirmrand in einer solchen Ressourcen-Datei gespeichert, sodass man sie für alle Ansichten in einem Schritt anpassen kann. Auch die in Abschnitt 5.2.6 erwähnten Ressourcen, wie beispielsweise die Farbdefinition selbst, der manuell designten UI-Elemente aus dem Android Holo Colors-Generator werden unter anderem auch in XML-Daten ausgeliefert. 49 6 Das Produkt 6 Das Produkt Die Güte einer Software kann man im Allgemeinen am besten einschätzen, wenn man sie benutzt. Um einen Eindruck hier auf Papier festzuhalten werden in diesem Kapitel einige Screenshots der Mainzel-App besprochen. Sicherlich ist die App nur ein Teil des Mainzel-Systems, dennoch ist es der Teil, der mit allen anderen Komponenten des Systems in Verbindung steht und der einzige, mit dem die Benutzer in Kontakt kommen. Wie bereits erklärt, wird der Anwender bei der erstmaligen Benutzung der App zunächst auf die Ansicht zum Einloggen geführt. Wie in Abbildung 6.1 gezeigt wird, hat der Benutzer hier die Möglichkeit sich mit seiner E-Mail-Adresse und seines bei der Registrierung angegebenen Passworts in das Mainzel-System einzuloggen. Sofern es sich um einen noch nicht registrierten Benutzer handelt, wird er mit Klick auf „Registrieren“-Button zur einer weiteren Ansicht weitergeleitet, die es ihm ermöglicht einen neuen Account anzulegen. Falls der Benutzer einen Tippfehler macht oder die Verbindung zum Server nicht hergestellt werden kann, beispielsweise durch eine fehlende Internetverbindung des Endgeräts, taucht ein sogenannter „Toast“11 auf dem Bildschirm auf, der darauf hinweist, dass das Einloggen fehlgeschlagen ist. Abbildung 6.1: Login-Ansicht - Zum Einloggen in das Mainzel-System muss der Benutzer zunächst seine E-Mail Adresse und sein Passwort eingeben. 11 Ein Toast unter Android dient ähnlich wie die Notifications (siehe Abschnitt 2.2.5) zum Benachrichtigen des Benutzers. Es ist allerdings auf den Einsatz während der Laufzeit der App ausgelegt. Ein Toast hat die Form eines kleinen Blocks, der lediglich einen kurzen Satz enthalten soll. Er taucht für eine bestimmte Zeit im unteren Drittel des Bildschirms auf und beeinträchtigt nicht die Bedienung der UI-Elemente in der gezeigten Ansicht. 50 6 Das Produkt Bei erfolgreichem Einloggen wird die Synchronisation mit der Datenbank gestartet, das beim ersten Mal das Erscheinen des Fortschritt-Dialogs in Abbildung 6.2 auslöst. Wird die App nach dieser ersten Synchronisation gestartet, läuft das Update der lokalen Datenbank im Hintergrund ab, sodass der Benutzer zunächst mit den alten Daten weiterarbeiten kann. Sobald das Update fertig ist, wird die Ansicht automatisch aktualisiert. Nach dem Beenden der ersten Synchronisation und nach jedem weiteren Start der App wird die Übersicht über alle Umfragen, in die der Benutzer involviert ist, gezeigt. Hier sind die Umfragen in die drei Tabs „Vergangene Umfragen“, „Laufende Umfragen“ und „Kommende Umfragen“ eingeteilt und wie in Kapitel 4.2 geplant wurde, kann der Benutzer mit der Swipe-Geste zwischen den einzelnen Tabs navigieren. Auch der Aufbau einer Ansicht in Mainzel, wie sie in Abschnitt 4.2 geplant wurde, ist hier umgesetzt worden. Am oberen Teil des Bildschirms ist die Notification-Area von Android zu sehen, darunter folgt die Action-Bar von Mainzel, mit dem Icon von Mainzel, dem Titel der App und den wichtigsten Navigationsbutton. In dieser Ansicht handelt es sich dabei um den Button zum Erstellen einer neuen Umfrage. Alle weiteren Navigationsbuttons sind, wie in Kapitel 4.2 erklärt, im „Action overflow“-Button zusammengefasst. Das Gerät auf dem die Screenshots in diesem Abschnitt gemacht wurden, besitzt den angesprochenen Button als Hardware unter dem Bildschirm. Aus diesem Grund wird kein virtueller Button in der Actionbar von Mainzel in den Screenshots angezeigt, vielmehr gelangt der Benutzer in das Optionsmenü über den Hardware-Button. Optionen, die dort zusammengefasst werden, ermöglichen beispielsweise das Ausloggen aus der App, die Einsicht der unbeantworteten Einladungen zu Umfragen oder die Account-Details. Abbildung 6.2 Nach dem Einloggen in die Mainzel-App - Startet ein dem Gerät bekannter Benutzer die App gelangt dieser sofort auf die Übersichtseite rechts im Bild, die alle Umfragen auflistet, in die der Benutzer involviert ist. Sofern der Benutzer sich zum ersten Mal in der App einloggt, muss er erst die Synchronisation der App mit der globalen Datenbank abwarten, wie man links im Bild sehen kann. 51 6 Das Produkt Die in dieser Ansicht gezeigte Liste ist ein Überblick über die Umfragen. Jeder Eintrag enthält daher die drei wichtigsten Informationen einer Umfrage, das heißt den Namen, die Rolle des Benutzers in der Umfrage und den Startzeitpunkt. Laufende Umfragen zeigen zusätzlich die verbleibende Zeit bis zum automatischen Beenden der Umfrage an. Mit Klick auf einen Eintrag der Liste gelangt der Benutzer in die Detailansicht der Umfrage, in der er zusätzlich zu den bereits gezeigten Information, den Endzeitpunkt, die Beschreibung, die Autoren und einen Überblick über die Fragen einsehen kann, der ähnlich wie der Überblick über die Umfragen aufgebaut ist. Von dort aus gelangt der Benutzer in die einzelnen Detailansichten der Fragen. In einer laufenden Frage, wie sie in Abbildung 6.3 gezeigt wird, kann er den kompletten Fragetext lesen und ein Countdown weist ihn auf die verbleibende Zeit zum Beantworten der Frage hin. Je nach Frage-Typ stellt oder gibt der Benutzer hier seine Antwort ein und schickt sie mit Klick auf den „abschicken“Button an die globale Datenbank. Als Titel der Ansicht wird hier nicht der App-Name, sondern der Name der Umfrage gezeigt und mit Klick auf den Pfeil links neben dem Mainzel Icon in der Actionbar gelangt der Benutzer zurück in die Detailansicht der Umfrage. In Fragen, zu denen ein Autor angegeben hat, dass Enthaltungen möglich sein sollen, wird weiterhin ein Button zum Abgeben der Enthaltung angeboten. Abbildung 6.3: Ansicht zum Beantworten einer Single-Choice-Frage - Der Benutzer sieht die Frage selbst und einen Countdown. Zum Beantworten kann er einen Punkt aus der Radiobutton-Gruppe auswählen. Mit Klick auf „abschicken“ reicht er seine Antwort an die globale Datenbank. In der Detailansicht einer Frage verschwinden der „abschicken“-Button und gegebenenfalls der Button für die Enthaltungen, sobald die Beantwortungszeit der Frage vorbei ist. An ihre Stelle tritt die Auswertung der Frage. Nun kann jeder Benutzer, der in die Umfrage der Frage involviert ist, die richtige Antwort zu der Frage einsehen, falls eine angegeben wurde. Teilnehmer sehen zusätzlich ihre eigene Antwort. Weiterhin wird die Teilnahme als Prozentwert des Quotienten aus 52 6 Das Produkt der Anzahl der abgegebenen Antworten durch die Anzahl der eingetragenen Teilnehmer angegeben. Darüber hinaus wird eine Aussage über die Anzahl der richtigen eingereichten Antworten gemacht, falls eine richtige Antwort angegeben wurde. Für die meisten Frage-Typen steht zudem ein Diagramm zur Darstellung der Ergebnisse zur Verfügung. In Abbildung 6.4 werden Beispiele für die bereits umgesetzten Diagramme einer Single-Choice-Frage, einer Multiple-Choice-Frage und einer Schätz-Frage gezeigt. Für SingleChoice- und die Multiple-Choice-Fragen werden die Ergebnisse in einem Kuchendiagramm ausgewertet, während die Ergebnisse einer Schätz-Frage, wie dargestellt, in einem Liniendiagramm, mit den eingereichten Zahlen auf der x-Achse und der Anzahl der Einreichungen auf der y-Achse, veranschaulicht werden. Abbildung 6.4: Auswertung drei vergangener Fragen - Dargestellt ist eine Single-Choice-Frage (links), eine MultipleChoice-Frage (Mitte) und eine Schätz-Frage (rechts). Für verschiedene Fragen werden verschiedene Auswertungsdiagramme erstellt. Die bisher gezeigten Screenshots zeigen die Funktionen für die häufigsten Anwendungsszenarien, nämlich eine Umfrage und ihre Fragen einzusehen und zu beantworten. Essentiell für das System ist aber auch die Möglichkeit, dass ein Benutzer eine Umfrage erstellen und im Nachhinein editieren kann. In Abbildung 6.5 ist der Editor einer bereits erstellten Umfrage zu sehen. Beim Erstellen einer neuen Umfrage gelangt der Benutzer in die gleiche Ansicht, allerdings sind alle Formularfelder frei. Für die Bearbeitung des Namens und der Beschreibung sind Textfelder vorgesehen. Mit Klick auf den Kalender-Button bei Start- und Endzeitpunkt öffnet sich ein Dialog in dem der Benutzer in einem „Timepicker“ und einem „Datepicker“ sowohl Uhrzeit und Datum des jeweiligen Zeitpunktes einstellen können. Weiterhin kann eingestellt werden, ob die Vorschau der Fragen im Zustand „kommend“ für die Teilnehmer vorgesehen ist und ob die Ergebnisse für die Autoren anonym angezeigt werden sollen. Bei einem Klick auf den ersten Plus-Button öffnet 53 6 Das Produkt sich ein Dialog zum Erstellen einer neuen Frage, wobei der Typ durch den Spinner12 neben dem Plus-Button bereits festgelegt wird. In dem Dialog werden der Fragetext, Start- und Endzeitpunkt, ob die Frage eine Enthaltungsmöglichkeit bereitstellen soll und die vom Frage-Typ abhängigen Attribute vom Benutzer eingegeben. Nach dem Speichern der neuen Frage wird sie der Frageliste unter dem Spinner hinzugefügt und kann über die jeweiligen Buttons bearbeitet oder gelöscht werden. Eine ähnliche Liste wird für die Autoren und die Teilnehmer der Umfrage geführt, hier öffnet sich allerdings kein Dialog bei Klick auf die Plus-Buttons, da lediglich die E-Mail Adresse des Benutzers, der hinzugefügt werden soll, benötigt wird. Sie kann in dem Textfeld neben dem jeweiligen Plus-Button eingegeben werden. Diese Ansicht ist die einzige, die nicht nach den Vorgaben aus Kapitel 4.2 umgesetzt wurde. In Abbildung 4.7 ist der Teil zum Erstellen einer neuen Frage nicht in einem Dialog, sondern in der Editor-Ansicht selbst umgesetzt. Das Befüllen der betroffenen Formularfelder für die Bearbeitungsfunktion hat allerdings bei der Implementierung Probleme bereitet und war, im Nachhinein betrachtet, nicht die erste logische Konsequenz. Das Einfügen einer neuen Ebene mit Hilfe des Dialogs macht einen klaren Schnitt zwischen Umfrage- und Fragebearbeitung und verunsichert den Benutzer auf diese Weise nicht durch ähnliche Felder und Buttons, wie beispielsweise der UI-Elemente für Start- und Endzeitpunkt der Umfrage und der Fragen. Außerdem ähneln sich auf diese Weise alle „Listen“ einer Umfrage im Aussehen, nämlich die Liste der Fragen, der Autoren und der Teilnehmer. Abbildung 6.5: Umfrage-Editor - Der Benutzer muss im Editor zum Erstellen und Anpassen einer Umfrage je nach Anzahl der Fragen, der Autoren und der Teilnehmer scrollen, um alle Information einsehen und bearbeiten zu können. In der Abbildung ist der Beginn einer langen Umfrage links und das Ende rechts dargestellt. 12 Spinner werden die Drop-Down UI-Elemente unter Android genannt. In dem einzigen Spinner in der Mainzel-App wählt der Benutzer den Frage-Typ für eine neu zu erstellende Frage aus. 54 6 Das Produkt Nicht zuletzt kann man an diesem letzten Screenshot zwei andere Optionsbuttons in der Actionbar sehen. In den weiter oben gezeigten Ansichten war die wichtigste Option immer das Erstellen einer neuen Umfrage, während alle anderen Optionen im „Action overflow“-Button verschwanden. Eine Umfrage, die ohne Einschränkungen bearbeitbar ist, ist auch gleichzeitig im Status „kommend“ und in einer solchen Umfrage ist es am wichtigsten, dass man die Umfrage mit allen ihren Fragen auch von dort aus manuell starten kann. Diese Möglichkeit verbirgt sich hinter dem Play-Button. Weiterhin wird in diesem Zustand häufig eine Umfrage wieder verworfen, daher ist der Lösch-Button in diesem Zustand ebenfalls leicht zugänglich. Alle anderen Option verschwinden auch in diese Ansicht im „Action overflow“-Button. Gezeigt wurden nur einige Ausschnitte des Endprodukts, um einen Eindruck von den am häufigsten vorkommenden Abläufen bei der Benutzung der App zu vermitteln. Alles in allem entspricht aber auch der nicht dargestellte Teil des Produkts im Aussehen und in der Funktion dem in der bisherigen Arbeit Besprochenen. Welche Punkte nicht umgesetzt werden konnten und auf welche Zukunft das Produkt blicken kann, wird in Kapitel 7 näher erläutert. 55 7 Fazit 7 Fazit Zum Abschluss dieser Arbeit soll ein Fazit über das Produkt gezogen werden. Die Fragen, ob die App für den geplanten Einsatz geeignet ist, welche Anforderungen erfüllt wurden und welche zukünftigen Möglichkeiten für das Mainzel-System bestehen, werden in diesem Kapitel geklärt. 7.1 Einsatzfähigkeit In Kapitel 2.1 wurde bereits der geplante Einsatz des Mainzel-Systems in akademischen Vorlesungen nahegelegt. Sicherlich wurde bei der Planung und Umsetzung der App darauf geachtet, dass sie sich nicht ausschließlich auf diesen Bereich fokussiert, dennoch liegt hier der Schwerpunkt. Der Aufbau des Editors für Umfragen erlaubt es dem Dozent einfach und schnell neue Umfragen zu erstellen. Durch das Ernennen weiterer Autoren, ist es ein Einfaches für den Dozent auch Übungsleiter daran mitarbeiten zu lassen. Die bereits umgesetzten Fragetypen bieten eine Basis für die meisten Fragen während einer Vorlesung. Die Studierenden können auf schnellem Weg die Fragen des Dozenten beantworten und bekommen genauso wie der Dozent eine geeignete Rückmeldung über ihre Teilnahme und ihre Leistung. Aus dieser Sicht ist das Produkt vollkommen geeignet für den Einsatz in akademischen Vorlesungen. Um beispielsweise dem Dozenten das Einladen von neuen Teilnehmern für seine Umfragen und die Präsentation der Ergebnisse vor Publikum zu erleichtern, ist es sicherlich von Vorteil für den Einsatz der App in den nächsten Schritten der Entwicklung, Vorschläge aus Kapitel 7.3, wie dem QR-Code-Editor oder dem Powerpoint-Plugin, umzusetzen. 7.2 Umgesetzte Anforderungen Etwa zwei Drittel der funktionalen und nicht-funktionalen Anforderung an das Mainzel-System aus Kapitel 3 konnten im vorliegenden Mainzel-System umgesetzt werden. Dadurch ist wie vorher beschrieben ein funktionaler Prototyp entstanden, der durchaus seinen Einsatzzweck erfüllen kann. Dennoch konnten aus Zeitgründen ein paar Funktionen, die zum angenehmen Arbeiten mit Mainzel beitragen würden, noch nicht umgesetzt werden. Beispielsweise kann die Vorschau, anders als in Anforderung F110 spezifiziert, nicht für alle Fragen einzeln aus- oder eingeschaltet werden, sondern nur übergreifend für die ganze Umfrage. Umfragen können bisher nicht weiterverwendet werden (Anforderung F140). Die in F160 vorgeschlagene Erleichterung beim Eingeben von E-Mail-Adressen, sodass bereits bekannte E-Mail-Adressen bei der automatischen Vervollständig vorgeschlagen werden, wurde noch nicht eingesetzt. Außerdem werden Benutzer bei neuen Einladungen bisher nicht benachrichtigt, wie es die Anforderung F170 beschreibt. Schließlich gibt es bisher keinen Unterschied zwischen anonymen und nicht anonymen Umfragen, sodass die Ergebnisdarstellung aller Umfragen bisher anonym abläuft (Anforderungen F220 undF240). Aus den Kann-Kriterien konnte die „Über uns“-Ansicht realisiert werden. Außerdem ist der Grundstein für weitere Sprachenangebote der App gelegt und kann einfach wie in Abschnitt 5.3.2 erklärt, realisiert werden. Als Prototyp wurde die App bisher nicht in Google-Play, dem App-Shop für Android, zur Verfügung gestellt, wie es in Anforderung NF050 spezifiziert wurde. Der nächste Schritt im Entwicklungsprozess von Mainzel setzt die letzten fehlenden funktionalen Anforderungen um und macht das System zu einer komfortablen Anwendung. 56 7 Fazit 7.3 Ausblick Über die bereits geplanten und weiter entwickelten Ideen hinaus, kann der Prototyp von Mainzel der Grundbaustein für viele weitere Einsatzbereiche sein. Naheliegend ist der Ausbau als Werkzeug zum Motivieren und Aktivieren der Zuhörerschaft einer Vorlesung oder eines Vortrags im Allgemeinen. Dazu ist das bereits erwähnte Plugin für Microsoft Powerpoint denkbar, auf das in dieser Arbeit nicht eingegangen werden konnte. Da Powerpoint von vielen Vortragenden genutzt wird, ist es ein Leichtes für diese ein Plugin, das Mainzel integriert, zu verwenden. Denkbar wäre beispielsweise ein Button, über den der Dozent aus der Präsentation heraus eine bestimmte Frage manuell starten kann. In diesem Fall ist der nächste logische Schritt, dass das Plugin auf der nächsten Folie beispielsweise die Auswertung der Ergebnisse der Frage anzeigen kann. Auf VBABasis und in Kombination mit dem bereits verwendeten SQL-Server von Microsoft wäre ein solches Plugin mit konventionellen Methoden umsetzbar. Eine andere leicht umsetzbare Erweiterung für Mainzel als Präsentationswerkzeug wäre die automatische Erstellung von QR-Codes für Fragen und Umfragen, die ebenfalls in das PowerpointPlugin integriert werden könnten, oder als eigenständiges Angebot umgesetzt werden. Über einen solchen QR-Code wird ein Teilnehmer eigenständig einer Umfrage beitreten, ohne dass der Dozent die E-Mail-Adresse des Benutzers in das System eingeben muss, um ihn als Teilnehmer einzuladen. Auch das Bereitstellen der App in verschiedenen Sprachen kann für den akademischen Bereich eine nützliche Erweiterung sein, sodass sie nicht nur in deutschsprachigen Veranstaltungen Einsatz finden kann. Dieser Schritt ist, wie in Abschnitt 5.3.2 beschrieben wurde, eine einfache Implementierungsarbeit. Vor allem für den Einsatz in akademischen Vorlesungen sind außerdem noch unzählige weitere Frage-Typen denkbar, die ihren Einsatz in den unterschiedlichsten Fachbereichen finden können. Die Integration eines TeX-Formelsatzes für Fragen- und Antworttexte beispielsweise, wie es im Konkurrenzprodukt PINGO (Kapitel 2.2.3) umgesetzt wurde, käme sicherlich einigen Naturwissenschaften sehr gelegen. Auch die Umsetzung eines Frage-Typs über den die Teilnehmer eigene Skizzen auf dem Touch-Gerät zeichnen können, wie es bei dem in Kapitel 2.2.4 vorgestellten Produkt FreeQuizDome der Fall ist, wäre ein nützlicher Frage-Typ. Diese Idee ist weiterhin erweiterbar auf das Einbinden von bereits bestehenden Zeichenangeboten wie dem in Abschnitt 5.1.2 erläuterten draw.io, das auf der Open-Source JavaScript-Bibliothek mxGraph basiert, die unter dem Namen JGraphX auch als Java-Bibliothek herausgegeben wird. [9] Immer noch im Einsatzbereich der Studierenden, aber außerhalb der Vorlesungen kann Mainzel als interaktives Hilfsmittel beim Lernen dienen. Man könnte Mainzel um die Möglichkeit erweitern, dass ein Benutzer, ähnlich wie im Konkurrenzprodukt ARSnova aus Kapitel 2.2.1, eigene, digitale Lernkarten anlegen kann. Mainzel könnte den Benutzer über AndroidNotifications unregelmäßig zum Lernstoff abprüfen, indem einzelne oder ganze Sätze an Lernkarten abgefragt werden wie in einer Mainzel-Umfrage. Die Möglichkeit darüber hinaus diese Lernkarten zu teilen oder daran zusammen zu arbeiten, vielleicht sogar beim Beantworten in Konkurrenz zu treten, würde die Lernkreise der Studierenden unterstützen und sie motivieren sich gegenseitig zu helfen. Da Mainzel vielseitig einsetzbar konzipiert wurde, sind auch die möglichen Weiterentwicklungen nicht nur auf den akademischen Anwendungsbereich beschränkt. Vorstellbar ist auch der Einsatz als Werkzeug zum Planen und Organisieren mit Freunden oder in Teams. Man könnte Mainzel um die Option erweitern, dass bereits von anderen Teilnehmern eingereichte Antworten angezeigt 57 7 Fazit werden, wenn ein Teilnehmer auf die Ansicht zum Beantworten einer Frage wechselt. Auf diese Weise können beispielsweise die Salat-Mitbringsel bei der nächsten Grillparty geplant werden oder Uhrzeiten und Termine können abgesprochen werden. Alles in allem ist aus der Idee ein altes ARS am Institut der Informatik an der Johannes GutenbergUniversität zu ersetzen, ein ausgereifter Prototyp einer Android-App entstanden. Nach weiterer Implementierungsarbeit wird ein Produkt entstehen, das viele Möglichkeiten über das klassische Audience Response System hinaus bietet und auf dem viele Erweiterungen aufbauen können. 58 Anhang A - Use Cases Anhang A - Use Cases Use Case ID Beschreibung Umfrage erstellen #01 Ein Benutzer kann zu jeder Zeit neue Umfragen erstellen, d.h. einer neuen Umfrage einen Namen, eine Beschreibung, einen Startzeitpunkt, einen Endzeitpunkt geben, Fragen zur Umfrage erstellen, weitere Autoren ernennen und Teilnehmer einladen. Eine Frage zu erstellen bedeutet, einen Frage-Typ auszuwählen, einen Frage-Text, einen Start- und Endzeitpunkt und, je nach Frage-Typ, Antwortmöglichkeiten und richtige Lösungen anzugeben. Beteiligte Akteure Umfrage-Administrator Vorbedingung Der Benutzer ist eingeloggt. Trigger Der Benutzer klickt auf „neue Umfrage erstellen“. Nachbedingung Die eingetragenen Daten werden in die Datenbank geschrieben. Komplexität Hoch: Sowohl die GUI zum Erstellen von Umfragen als auch die Eintragungen in die Datenbank sind komplex. Priorität Hoch: essentielle Funktion GUI Abbildung 4.7 Tabelle A.1: Use Case #01 Use Case ID Beschreibung Beteiligte Akteure Vorbedingung Trigger Nachbedingung Komplexität Priorität GUI Umfrage löschen #02 Ein Benutzer kann eine Umfrage löschen. Umfrage-Administrator, (Autor, Teilnehmer) Der Benutzer ist eingeloggt und ist Umfrage-Administrator der zu löschenden Umfrage. Keine Frage der Umfrage darf gestartet sein, sodass es noch keine Ergebnisse zu dieser Umfrage gibt. (Sofern der Benutzer nur ein Autor oder ein Teilnehmer und nicht der Umfrage-Administrator ist, löscht er lediglich seine Rolle als Autor oder Teilnehmer dieser Umfrage.) Der Benutzer klickt auf die Lösch-Option der Umfrage. Die Daten, d.h. die komplette Umfrage, alle Autor-Referenzen, alle Fragen, alle Antwortmöglichkeiten, werden aus der Datenbank gelöscht, sofern der Benutzer Umfrage-Administrator der Umfrage ist. (Lediglich die Autor-Referenz/Teilnehmer-Referenz wird aus der Datenbank gelöscht, sofern der Benutzer nur Autor-Rechte an der Umfrage hat oder Teilnehmer der Umfrage ist.) Niedrig: In der GUI ist lediglich ein Button / eine Option zu implementieren und die Nachricht an die Datenbank enthält nur den Lösch-Befehl. Niedrig: gehört nicht zu den häufig auftretenden Use-Cases und ist nicht essentiell für die Abläufe im System Abbildung A.1 Tabelle A.2: Use Case #02 VIII Anhang A - Use Cases Abbildung A.1: Benutzeroberfläche zum Bearbeiten von Umfragen - Der Editor ist dem „Umfrage erstellen“-Editor (siehe Abbildung 4.7) sehr ähnlich, deshalb wurden hier die Ansichten nach dem Scrollen nicht wiederholt. Alle Details, die beim Erstellen der Umfrage angegeben wurden können geändert werden. Weiterhin gibt es in der Actionbar der GUI die Möglichkeit mit dem Play-Button alle Fragen auf einmal zu starten und im Menü findet man die Funktionen zum Speichern der Änderungen und zum Löschen der Umfrage. Nachdem eine Umfrage gestartet wurde, kann eine Umfrage nicht mehr gelöscht werden, da bereits Ergebnisse vorliegen können. Der Play-Button ist nun ein Stopp-Button. Use Case ID Beschreibung Umfrage bearbeiten #03 Der Autor kann eine Umfrage fast zu jeder Zeit bearbeiten, d.h. den Namen, die Beschreibung, den Start- und Endzeitpunkt, Autoren und Teilnehmer ändern. Fragen, d.h. den Frage-Typ, den Fragetext, den Startund Endzeitpunkt, und die dazugehörigen Antwortmöglichkeiten können nur geändert werden, falls die Frage noch nicht gestartet wurde. Beteiligte Akteure Autor Vorbedingung Der Benutzer ist eingeloggt und hat mindestens Autoren-Rechte an der Umfrage. Trigger Der Benutzer wählt die Bearbeiten-Funktion einer Umfrage aus. Nachbedingung Alle Änderungen an den Daten der Umfrage werden in die Datenbank geschrieben. Komplexität Hoch: Die GUI zum Bearbeiten aller Daten einer Umfrage ist komplex. Auch die Datenbank-Kommunikation beinhaltet komplexe Befehle. Priorität Mittel: Die Funktion wird häufig genutzt, ist aber für die Abläufe im System nicht essentiell. GUI Abbildung A.1 Tabelle A.3: Use Case #03 IX Anhang A - Use Cases Use Case ID Beschreibung Umfrage starten (/stoppen) #04 Wenn eine Umfrage vom Status kommend in den Status laufend übergeht, wird sie gestartet. Genauso wird eine Umfrage gestoppt, wenn sie vom Status laufend in den Status vergangen übergeht. Im Gegensatz zu kommenden und vergangenen Umfragen können Fragen in laufenden Umfragen von Teilnehmern beantwortet werden. Beteiligte Akteure Autor Vorbedingung Der Benutzer ist eingeloggt und hat mindesten Autoren-Rechte an der Umfrage. (Zum Stoppen einer Umfrage muss sie zuvor gestartet worden sein.) Trigger Der Benutzer startet eine Frage in einer Umfrage oder er wählt die Starten-Funktion der Umfrage und startet somit alle Fragen. (Er stoppt die letzte laufende Frage einer Umfrage oder er wählt die Stoppen-Funktion der Umfrage und stoppt somit alle Fragen.) Nachbedingung Der Startzeitpunkt (bzw. der Endzeitpunkt) der Umfrage und der dazugehörigen Fragen werden in der Datenbank aktualisiert. Komplexität Mittel: Für diesen Use-Case müssen in der GUI lediglich Start/Stoppbuttons eingebaut werden. Die Kommunikation mit der Datenbank beinhaltet wenige Befehle, die allerdings auf jeden Fall während des Klicks der Start-/Stoppbuttons stabil sein muss. Priorität Niedrig: Die Funktion Umfragen manuell durch Betätigen von Buttons zu starten oder zu stoppen ist nicht essentiell für den Ablauf des System, sofern Start- und Endzeitpunkt der Umfragen angegeben (Use-Case #01) und geändert (Use-Case #03) werden können. GUI Abbildung A.1 Tabelle A.4: Use Case #04 Use Case ID Beschreibung Umfrageergebnisse einsehen #06b Autoren können die Ergebnisse aller Teilnehmer zu vergangenen Fragen einzusehen, sofern die Umfrage nicht anonym war, ansonsten sehen sowohl Autoren als auch Teilnehmer Überblicksdiagramme, Durchschnitt, Verteilung und weitere Größen der vorliegenden Ergebnisse. Beteiligte Akteure Benutzer Vorbedingung Der Benutzer ist eingeloggt, Teilnehmer oder mindestens Autor der Umfrage (und es liegen Ergebnisse zu der Umfrage vor). Trigger Der Benutzer öffnet die Detail-Ansicht einer Umfrage. Nachbedingung Komplexität Hoch: Die GUI zum Anzeigen der Details (bzw. Ergebnisse) ist groß und soll Echtzeit-Veränderungen anzeigen. Es gibt nur lesende DatenbankKommunikation. Priorität Hoch: Das Einsehen der Details ist eine wichtige Funktion für alle BenutzerRollen. Die Echtzeit-Darstellung der Ergebnisse ist nicht essentiell für die Abläufe im System. GUI Abbildung A.2 Tabelle A.5: Use Case #06b X Anhang A - Use Cases Abbildung A.2: Ansicht zum Einsehen der eigenen Ergebnisse in bereits geschlossenen Fragen - Der Teilnehmer sieht die eigene Antwort, die richtigen Antworten, falls es welche gibt und er sieht außerdem einen Überblick über die Ergebnisse der anderen Teilnehmer. Dieser Überblick hängt ganz vom Frage-Typ ab. Die Autoren der Umfrage haben einen ähnlichen XI Anhang A - Use Cases Einblick in die Fragen. Sofern die Fragen nicht anonym gestellt wurden, sehen sie allerdings auch die Ergebnisse eines jeden Teilnehmers. Use Case ID Beschreibung Account erstellen #07 Ein nicht im System registrierter Benutzer gibt eine noch nicht im System vorhandene E-Mail-Adresse und ein Passwort an. Beteiligte Akteure (nicht registrierte) Benutzer Vorbedingung Der Benutzer ist im System noch nicht registriert. Trigger Der Benutzer gibt seine E-Mail-Adresse und ein Passwort ein und schickt diese Daten ab. Nachbedingung Ein neuer Benutzer-Account wird in der Datenbank angelegt. Komplexität Mittel: Sowohl die GUI als auch die Datenbank-Kommunikation sind wenig komplex. Priorität Hoch: Die Funktion, dass neue Benutzer in das System eintreten können ist essentiell für den Erfolg des Systems. GUI Abbildung A.3 Tabelle A.6: Use Case #07 Abbildung A.3: GUI zum Einloggen in die App und zum Erstellen eines neuen Accounts. XII Anhang A - Use Cases Use Case ID Beschreibung Account löschen #08 Ein Benutzer kann zu jeder Zeit seinen Account löschen. Dabei gehen seine persönlichen Daten (E-Mail-Adresse, Passwort) im System verloren. Die Ergebnisse, die zu diesem Benutzer gehören, werden anonymisiert. Beteiligte Akteure Benutzer Vorbedingung Der Benutzer ist eingeloggt. Trigger Der Benutzer wählt die Löschen-Funktion seines Accounts. Nachbedingung Die zu dem Benutzer gehörende E-Mail-Adresse und das Passwort werden aus der Datenbank gelöscht. Lediglich die ID-Nummer des Benutzers bleibt bestehen, sodass alle Ergebnisse des Benutzers zumindest anonymisiert konsistent bleiben. Komplexität Niedrig: Sowohl die GUI als auch die Datenbank-Kommunikation sind wenig komplex. Priorität Hoch: Die Möglichkeit, dass Benutzer das System wieder verlassen können ist essentiell. GUI Abbildung A.4 Tabelle A.7: Use Case #08 Abbildung A.4: GUI für die Einsicht der eigenen Account-Daten eines Benutzers - Hier kann der Benutzer sowohl E-MailAdresse als auch Passwort ändern und den eigenen Account löschen. Außerdem findet der Benutzer im Optionsmenü, das hier geöffnet dargestellt ist, die Funktion zum Ausloggen aus dem eigenen Account. XIII Anhang A - Use Cases Use Case ID Beschreibung Ausloggen #09b Der Benutzer loggt sich aus dem System aus, um alle Aktivitäten im System zu beenden und den Zugriff durch Dritte zu unterbinden. Beteiligte Akteure Benutzer Vorbedingung Der Benutzer muss eingeloggt sein. Trigger Der Benutzer wählt die „Ausloggen“-Funktion im System. Nachbedingung Die App wechselt auf die Einloggen-Ansicht und zeigt diese auch beim nächsten Starten der App. Komplexität Niedrig: Die GUI zum Ausloggen ist simpel. Priorität Hoch: essentielle Funktion GUI Abbildung A.1 + Abbildung A.4 (jeweils Eintragungen im Options-Menü) Tabelle A.8: Use Case #09b Use Case ID Beschreibung Beteiligte Akteure Vorbedingung Trigger Nachbedingung Komplexität Priorität GUI E-Mail-Adresse ändern #10 Der Benutzer kann zu jeder Zeit seine E-Mail-Adresse ändern. Benutzer Der Benutzer ist eingeloggt und die neue E-Mail-Adresse ist im System noch nicht vorhanden. Der Benutzer gibt die neue E-Mail-Adresse an und schickt sie mit Betätigen des „Speichern“-Buttons ab. Die E-Mail-Adresse wird in der Datenbank aktualisiert. Niedrig: Sowohl die GUI als auch die Kommunikation mit der Datenbank sind wenig komplex. Mittel: Das Ändern der E-Mail-Adresse ist nicht essentiell für die Abläufe im System. Abbildung A.4 Tabelle A.9: Use Case #10 Use Case ID Beschreibung Beteiligte Akteure Vorbedingung Trigger Nachbedingung Komplexität Priorität GUI Passwort ändern #11 Der Benutzer kann zu jeder Zeit sein Passwort ändern. Benutzer Der Benutzer ist eingeloggt. Der Benutzer gibt ein neues Passwort an und schickt es mit Betätigen des „Speichern“-Buttons ab. Das Passwort wird verschlüsselt in der Datenbank aktualisiert. Niedrig: Sowohl die GUI als auch die Kommunikation mit der Datenbank sind wenig komplex. Mittel: Das Ändern des Passworts ist nicht essentiell für die Abläufe im System. Abbildung A.4 Tabelle A.10: Use Case #11 XIV Anhang A - Use Cases Use Case ID Beschreibung Umfrage-Überblick einsehen #12 Direkt nach dem Starten der App erhält der eingeloggte Benutzer einen Überblick mit den wichtigsten Informationen zu den laufenden Umfragen. Von hier kann er leicht zu den Übersichten für vergangene und kommende Umfragen wechseln Beteiligte Akteure Benutzer Vorbedingung Der Benutzer ist eingeloggt. Trigger Der Benutzer startet die App oder navigiert zurück zu dieser Übersicht. Nachbedingung Komplexität Niedrig: Sowohl die GUI als auch die Kommunikation mit der Datenbank sind wenig komplex. Priorität Hoch: Hier handelt es sich um die „Startseite“ der App für eingeloggte Benutzer und um ein essentielles Navigationselement m App. GUI Abbildung 4.4 Tabelle A.11: Use Case #12 XV Literaturverzeichnis Literaturverzeichnis [1] „ARSnova,“ Technische Hochschule Mittelhessen, [Online]. Verfügbar: https://arsnova.eu/mobile/. [Zugriff am 21 05 2014]. [2] Buchholz Wengst GbR, „eduVote,“ 2012. [Online]. Verfügbar: http://www.eduvote.de/. [Zugriff am 15 05 2014]. [3] Universität Paderborn, Fakultät für Wirtschaftswissenschaften, „PINGO-Projekt,“ 2014. [Online]. Verfügbar: http://wiwi.uni-paderborn.de/dep3/winfo2/forschung/projekte/peerinstruction-for-very-large-groups/. [Zugriff am 15 05 2014]. [4] Universität Paderborn, Fakultät für Wirtschaftswissenschaften, „PINGO-Produkt,“ 2014. [Online]. Verfügbar: http://pingo.upb.de/. [Zugriff am 15 05 2014]. [5] E. Senst, „FreeQuizDome,“ [Online]. Verfügbar: http://freequizdome.com/. [Zugriff am 15 05 2014]. [6] I. Sommerville, Software Engineering, München: Pearson Deutschland, 2012. [7] „Android Developers Design,“ [Online]. Verfügbar: http://developer.android.com/design/index.html. [Zugriff am 15 05 2014]. [8] Balsamiq Studios, „Balsamiq Mockups,“ 2014. [Online]. Verfügbar: http://www.balsamiq.com/products/mockups/. [Zugriff am 23 05 2014]. [9] JGraph Ltd, „jgraph - connecing the dots,“ [Online]. Verfügbar: http://www.jgraph.com/. [Zugriff am 27 05 2014]. [10] Oracle Corporation, „Java for Developers,“ 2014. [Online]. Verfügbar: http://www.oracle.com/technetwork/java/javase/downloads/index.html. [Zugriff am 16 05 2014]. [11] C. Ullenboom, Java ist auch eine Insel, Galileo Computing, 2012. [12] J. Liu und J. Yu, „Research on Development of Android Applications,“ in 2011 Fourth International Conference on Intelligent Networks and Intelligent Systems, 2011. [13] „Android Developers Develop,“ [Online]. Verfügbar: http://developer.android.com/develop/index.html. [Zugriff am 16 05 2014]. [14] The 4ViewSoft Company, „AChartEngine,“ 2013. [Online]. Verfügbar: http://www.achartengine.org/. [Zugriff am 16 05 2014]. [15] J. Van Der Linden und R. Nurik, „Android Holo Colors,“ [Online]. Verfügbar: http://androidholo-colors.com/. [Zugriff am 20 05 2014]. XVI Erklärung der Selbstständigkeit [16] T. Künneth, Android 4 - Apps entwickeln mit dem Android SDK, Bonn: Galileo Press, 2014. Erklärung der Selbstständigkeit Hiermit versichere ich, dass ich die vorliegende Bachelorarbeit selbständig und ohne fremde Hilfe verfasst und keine anderen als die in der Arbeit abgegebenen Quellen oder Hilfsmittel benutzt habe. Diese Arbeit hat in gleicher Form oder in ähnlicher Form noch keinem Prüfungsamt vorgelegen. Mainz, 4. Juni 2014 ………………..…………………………………………………………. Alessa Groß XVII