- Fischfauna
Transcrição
- Fischfauna
Fachbereich Elektrotechnik und Informatik der Hochschule Bremen Internationaler Frauenstudiengang Informatik B.Sc. Entwicklung einer mobilen Anwendung zur Erfassung und Visualisierung von Biodiversitätsdaten Eine Erweiterung des Fachinformationssystems „Biodiversitätsatlas“ Bachelor-Thesis von Konstanze Magdalena Steinhausen Matrikelnummer: 216589 Prangenstr. 85, 28203 Bremen Tel.: 0421-84797074 E-Mail: [email protected] Erstgutachterin: Prof. Dr.-Ing. Heide-Rose Vatterrott Zweitgutachter: Prof. Dr. Heiko Brunken Ausgabedatum: 28. November 2011 Abgabedatum: 30. Januar 2012 Kurzfassung II Kurzfassung Der Internationale Studiengang Technische und Angewandte Biologie der Hochschule Bremen betreut das Joomla!-basierte Fachinformationssystem Biodiversitätsatlas, welches 2006 dort entstand. Das Projekt wurde in den letzten Jahren weiterentwickelt und die eingesetzte Technik aktualisiert. Der Atlas kommt für diverse Lebensarten als Katalogisierungswerkzeug über mehrere Länder hinweg zum Einsatz. Da das Frontend des Systems lediglich als Webanwendung für den PC umgesetzt wurde, fehlt es an einer mobilen Lösung zur Erfassung und Visualisierung von Biodiversitätsdaten, die dies schnell und anwenderfreundlich auch im Gelände ermöglicht. Da Smartphones und Tablet-PCs verstärkt im Lebensalltag Einzug finden, bietet sich eine mobile Anwendung für den Biodiversitätsatlas auf einer oder mehrerer der hier zur Verfügung stehenden Betriebssystemplattformen an. Die prototypische Entwicklung dieser Anwendung und die Schaffung einer Schnittstelle zum Atlas sind die Ziele dieser Arbeit. Die mobile Anwendung soll wie das bereits implementierte Frontend des Biodiversitätsatlas die Erfassung und Visualisierung von Biodiversitätsdaten ermöglichen. Dies soll um weitere Smartphone spezifische Funktionen, wie der Ortungsfunktion oder dem Zugriff auf die Kamera, ergänzt werden. Einen theoretischen Schwerpunkt werden die Validierung der vorhandenen Entwicklungstools für die diversen Plattformen und die Analyse der umzusetzenden Softwarearchitektur bilden. Die Ergebnisse dieser Studien bilden die Grundlage für das Realisierungskonzept und die Implementierung der geplanten Anwendung. Inhaltsverzeichnis III Inhaltsverzeichnis Kurzfassung ................................................................................................................................ II Inhaltsverzeichnis ...................................................................................................................... III Abbildungsverzeichnis .............................................................................................................. VI Tabellenverzeichnis ................................................................................................................ VIII Abkürzungsverzeichnis ............................................................................................................ IX Glossar...................................................................................................................................... XI 1. 2. 3. Einleitung ............................................................................................................................. 1 1.1. Motivation und Zielsetzung .......................................................................................... 1 1.2. Gliederung der Arbeit ................................................................................................... 2 Der Biodiversitätsatlas ........................................................................................................ 3 2.1. Architektur des Systems .............................................................................................. 3 2.2. Nutzerrollen und Zugriffsberechtigungen..................................................................... 5 2.3. Logischer Aufbau von Biodiversitätsdaten................................................................... 7 2.4. Methoden der Erfassung von gesammelten Biodiversitätsdaten ................................ 9 Anforderungsanalyse ........................................................................................................ 10 3.1. Allgemeine Übersicht und Voraussetzungen ............................................................. 10 3.1.1. Nutzercharakterisierung ..................................................................................... 12 3.1.2. Anwendungsszenario ......................................................................................... 13 3.2. Funktionale Anforderung ............................................................................................ 14 3.2.1. Erfassung eines Fundes ..................................................................................... 15 3.2.2. Verwaltung von Funden ..................................................................................... 17 3.2.3. Erfassung eines Fundortes ................................................................................ 17 3.2.4. Visualisierung der GIS-Komponenten ................................................................ 18 3.2.5. Nutzerauthentifizierung ...................................................................................... 19 3.2.6. Optionale Einstellungen ..................................................................................... 19 3.3. Nichtfunktionale Anforderungen................................................................................. 20 3.3.1. Generelle nichtfunktionale Anforderungen......................................................... 20 3.3.2. Datenübertragung ............................................................................................... 21 Inhaltsverzeichnis 4. IV 3.3.3. Distribution und Installation des Systems .......................................................... 22 3.3.4. Mehrsprachigkeit ................................................................................................ 23 3.3.5. Einzusetzende Technologien ............................................................................. 24 Aktuelle Techniken und Plattformen der mobilen Programmierung................................. 26 4.1. Mobile Betriebssysteme ............................................................................................. 27 4.2. Strukturen der mobilen Programmierung................................................................... 34 4.2.1. Native Anwendungen ......................................................................................... 34 4.2.2. Webanwendungen.............................................................................................. 35 4.2.3. Hybride Anwendungen ....................................................................................... 37 4.2.4. Mobile Widgets ................................................................................................... 37 4.2.5. Plattformunabhängige Entwicklungstools .......................................................... 38 4.3. Unterschiede in der Programmierung von Smartphone- und Tablet-PCAnwendungen............................................................................................................. 39 5. Realisierungskonzept ........................................................................................................ 40 5.1. Systemaufbau............................................................................................................. 40 5.1.1. Zielplattform ........................................................................................................ 40 5.1.2. Zielstruktur .......................................................................................................... 41 5.1.3. Entwicklungsumgebung ..................................................................................... 41 5.1.4. Client-Server Architektur .................................................................................... 42 5.1.5. Einsatz von GIS .................................................................................................. 44 5.2. Nutzerschnittstelle ...................................................................................................... 45 5.2.1. Einsatz von UI Patterns ...................................................................................... 47 5.2.2. Navigationspfad .................................................................................................. 48 5.3. Funktionaler Aufbau ................................................................................................... 50 5.3.1. Datenerfassung .................................................................................................. 50 5.3.2. Schnittstelle zum Server..................................................................................... 53 5.3.3. Nutzerauthentifizierung ...................................................................................... 55 5.3.4. Mehrsprachigkeit ................................................................................................ 57 5.3.5. Datenspeicherung .............................................................................................. 59 5.3.6. Verwaltung der Daten ......................................................................................... 61 Inhaltsverzeichnis 5.3.7. 5.4. 6. 7. V Benutzerspezifische Konfiguration ..................................................................... 61 Grenzen und Einschränkungen ................................................................................. 62 Realisierung ...................................................................................................................... 63 6.1. Aufbau des Android-Projektes ................................................................................... 63 6.2. Erfassung eines Fundes ............................................................................................ 65 6.3. Auswahl einer Spezies ............................................................................................... 67 6.4. Einbindung von OSM ................................................................................................. 68 6.5. Ermittlung der GPS-Koordinate ................................................................................. 69 6.6. Meldung von Bildern ................................................................................................... 70 6.7. Datenbank .................................................................................................................. 73 Zusammenfassung und Ausblick ...................................................................................... 76 Anhang A .................................................................................................................................. 78 Literaturverzeichnis .................................................................................................................. 79 Anmerkung: Auf Grund der besseren Lesbarkeit wird im Text dieser Arbeit der Einfachheit halber nur die männliche Form der Bezeichnung „Nutzer“ verwendet. Die weibliche Form ist selbstverständlich immer mit eingeschlossen. Abbildungsverzeichnis VI Abbildungsverzeichnis Abbildung 1: 3-Schichtenarchitektur des Biodiversitätsatlas ..................................................... 4 Abbildung 2: Nutzertypen des Biodiversitätsatlas in Bezug auf ihre Rechte ............................ 6 Abbildung 3: Logische Zusammensetzung eines Fundes ......................................................... 8 Abbildung 4: Einordnung des mobilen Clients in das Gesamtsystem ..................................... 11 Abbildung 5: Anwendungsprozess ........................................................................................... 14 Abbildung 6: Erfassungsprozess.............................................................................................. 14 Abbildung 7: Überblick über den Vertrieb und die Nähe zur Plattform der mobilen Anwendungsarten ............................................................................................... 26 Abbildung 8: Android Architecture............................................................................................ 29 Abbildung 9: Dauer der Einarbeitung in die verschiedenen Plattformen ................................ 30 Abbildung 10: Marktverteilung der Android-Versionen (Stand: 01. Dezember 2011)............. 31 Abbildung 11: Architektur von iOS ........................................................................................... 33 Abbildung 12: Neue Gesamtarchitektur ................................................................................... 42 Abbildung 13: Direkte Client-Server-Kommunikation über Sockets ........................................ 43 Abbildung 14: Alternative Client-Server-Kommunikation unter Nutzung eines Wrappers ...... 44 Abbildung 15: Lebenszyklus einer Activity ............................................................................... 46 Abbildung 16: Dashboard (UI Patterns) ................................................................................... 47 Abbildung 17: Action Bar (UI Patterns) .................................................................................... 48 Abbildung 18: Nutzerpfad der mobilen Anwendung ................................................................ 49 Abbildung 19: Struktur eines gespeicherten Passwortes in Joomla! ...................................... 56 Abbildung 20: Speicherung von Ressourcen (Beispiel 1) ....................................................... 58 Abbildung 21: Speicherung von Ressourcen (Beispiel 2) ....................................................... 58 Abbildung 22: Struktur des Android-Projektes ......................................................................... 64 Abbildung 23: Deklarierung der Main-Activity HomeDashboard ............................................. 65 Abbildung 24: RecordNewActivity ............................................................................................ 66 Abbildung 25: Strukturierung eines Fundes mittels Java-Klassen .......................................... 67 Abbildung 26: SpeciesLIstActivity ............................................................................................ 68 Abbildung 27: LocationMapActivity .......................................................................................... 69 Abbildungsverzeichnis VII Abbildung 28: Initialisierung der Ermittlung der aktuellen Position über GPS ........................ 70 Abbildung 29: Aufruf der Kamerafunktion ................................................................................ 70 Abbildung 30: Aufruf der Bildergalerie ..................................................................................... 71 Abbildung 31: Auswertung des Intents (Bildergalerie) ............................................................. 71 Abbildung 32: Zuordnung von Bildern zu einem Fund ............................................................ 72 Abbildung 33: Struktur des Anforderungsstrings zum Senden von Bildern ............................ 72 Abbildung 34: Datenbankmodell .............................................................................................. 73 Abbildung 35: Einfügen eines Datensatzes in die Datenbank................................................. 74 Abbildung 36: Abrufen von Datenbankeinträgen ..................................................................... 75 Tabellenverzeichnis VIII Tabellenverzeichnis Tabelle 1: Status eines Fundes ................................................................................................ 54 Tabelle 2: Methoden zur Speicherung von Daten in Android .................................................. 60 Abkürzungsverzeichnis Abkürzungsverzeichnis ADT Android Development Tools API Application Programming Interface, Programmierschnittstelle CMS Content Management System, Inhaltsverwaltungssystem CSS Cascading Style Sheets GIS Geoinformationssystem GNU GPL GNU General Public License GPS Global Positioning System INI Initialisierungsdatei ISO Internationale Organisation für Normung JSON JavaScript Object Notation MD5 Message Digest MIME Multipurpose Internet Mail Extensions NFC Near Field Communication OSM OpenStreetMap PDA Personal Digital Assistant REST Representational State Transfer RPC Remote Procedure Call SDK Software Development Kit SLF4J Simple Logging Facade for Java SOAP Simple Object Access Protocol SSL Secure Sockets Layer TLS Transport Layer Security UI User Interface, Benutzerschnittstelle IX Abkürzungsverzeichnis W3C World Wide Web Consortium WGS84 World Geodetic System 1984 XML Extensible Markup Language X Glossar XI Glossar Biodiversität bezeichnet die „Vielfalt des Lebens“ bzw. die „biologische Vielfalt“, welche umfasst: - die Artenvielfalt (Reichtum an Tieren, Pflanzen, Pilzen und Mikroorganismen), - die genetische Vielfalt (erblich bedingte Variation innerhalb von Arten und Populationen) - und die ökosystemare Vielfalt (Systemeigenschaften von Lebensräumen (Biotope), Lebensgemeinschaften den und darin existierenden deren individuellen Bedürfnissen einschließlich der Vernetzung dieser Biotope untereinander) Biodiversitätsdaten Daten über die räumliche und zeitliche Verbreitung von Lebensräumen, Arten und Individuen, ggf. ergänzt um weitere Objektinformationen wie Statusangaben, Autorenschaft oder Qualität der Beobachtung; Biodiversitätsdaten ermöglichen weitergehende räumliche, zeitliche oder kausale Analysen und bilden eine wesentliche Grundlage in der Umweltforschung Messung gezielte floristisch-faunistische Datenerfassung mit definiertem Ort und Zeitpunkt Verbreitungspunkt Nachweis des Vorkommens einer Art an einem bestimmten Ort (im Idealfall mit Angabe geografischer Koordinaten) und zu einem definierten Zeitpunkt Einleitung 1 1. Einleitung 1.1. Motivation und Zielsetzung Mobilität nimmt im digitalen Zeitalter einen immer größeren Stellenwert ein und verbreitet sich zunehmend sowohl im Lebensalltag als auch in der Arbeitswelt.1 Allseits anwesender Helfer ist dabei das Smartphone, dessen Erfolgsgeschichte mit der Einführung des iPhones 2007 begann.2 Mit ihnen ist es möglich, fast überall online und erreichbar zu sein. Sie dienen u. a. sowohl als Informationsstelle für Nachrichtendienste als auch als Mediaplayer, ermöglichen eine intensive Beteiligung in sozialen Netzwerken und werden als Navigationshilfen eingesetzt. Des Weiteren bieten sie die Möglichkeit, bestehende Dienste auf eine ganz neue Weise an den Nutzer zu bringen und können Aufgaben umsetzen, die zuvor aufgrund der fehlenden Mobilität nicht zu bewerkstelligen waren. Unter der Trägerschaft der Gesellschaft für Ichthyologie wird an der Hochschule Bremen im Internationalen Studiengang Technische und Angewandte Biologie das Fachinformationssystem Biodiversitätsatlas entwickelt. Seit 2010 werden sie durch das Institut für Informatik und Automation mit Beteiligung des Internationalen Frauenstudiengangs Informatik (beide gehören ebenfalls der Hochschule Bremen an) unterstützt. Der Biodiversitätsatlas dient als Informations- und Erfassungsportal von Biodiversitätsdaten und ist universell für verschiedene Tierklassen einsetzbar. So sind bereits entsprechende Angebote für Fische und Reptilien vorhanden. Der Atlas trägt zur Erkennung von Gefährdungspotentialen, der Entwicklung von Schutzkonzepten sowie zur Umweltbildung bei.3 Auf den Einsatz von Geoinformationssystemen (GIS) zur Visualisierung der Biodiversitätsdaten wird dabei ein wesentlicher Schwerpunkt des Atlas gesetzt. Biodiversitätsdaten werden für einen Atlas durch privat interessierte Personen mit entsprechenden floristisch-faunistischen Kenntnissen sowie Experten und Katasterämtern oder durch Redakteure in das System eingepflegt. Zeitlich liegen dabei zwischen der Sichtung eines Lebewesens und der Erfassung im System große Abstände, sodass die Aktualität der Daten häufig nicht gewährleistet werden kann. Dies wäre besser zu erreichen, wenn ein Fund umgehend nach der Sichtung gemeldet werden könnte. Da dadurch dieser Vorgang zumeist im Freiland durchgeführt werden muss, wird eine mobile Anwendung zur Lösung der genannten Aufgabe benötigt. Mit Hilfe von Smartphones ist es möglich, dies zu realisieren. 1 Vergleiche [Linnhoff-Popien, 2012], S. 110f. Vergleiche [Spiering, 2011], S. 11. 3 Brunken, H., pers. Mitt. 2012. 2 Einleitung 2 Aufgrund dessen ist es das Ziel der vorliegenden Arbeit, eine mobile Anwendung für den Einsatz auf Smartphones zu entwickeln, die den Biodiversitätsatlas um einen schnellen Weg, Daten zu erfassen, ergänzt. Ein Schwerpunkt soll dabei ebenfalls auf die Visualisierung der Erfassung durch GIS gesetzt werden, da dies ein wesentliches Charakteristika des Biodiversitätsatlas ist. Des Weiteren ermöglicht der Einsatz von Smartphones die Nutzung von Hardwarefeatures wie der Kamera oder dem GPS-Sensor. 1.2. Gliederung der Arbeit Die vorliegende Bachelor-Thesis gliedert sich in sieben Hauptkapitel. Anschließend an diese Einleitung wird in Kapitel 2 der Biodiversitätsatlas sowie dessen Struktur näher vorgestellt. Außerdem wird die oben bereits kurz beschriebene Problematik, die zu dieser Arbeit geführt hat, ausführlicher thematisiert. Das Kapitel bildet die Wissensgrundlage für die Ergebnisse der Anforderungsanalyse, welche im dritten Teil der Arbeit dargestellt werden. Die Anforderungen an das zu realisierende System wurden in Zusammenarbeit mit Heiko Brunken4 und Heide-Rose Vatterrott5 ermittelt. In Kapitel 4 werden aktuelle Techniken und Plattformen der mobilen Programmierung untersucht. Dies beinhaltet einen Vergleich von Betriebssystemen, für die die Anwendung programmiert werden könnte, sowie die Präsentation von Anwendungsstrukturen, die umgesetzt werden könnten. Darauf aufbauend wird in Kapitel 5 ein Realisierungskonzept vorgestellt, welches eine mögliche Umsetzung der mobilen Anwendung veranschaulicht. Die auf Basis des Konzeptes durchgeführte Implementierung wird in Kapitel 6 erläutert. Abschließend werden die Ergebnisse dieser Arbeit in Kapitel 7 zusammengefasst sowie ein Ausblick auf denkbare Entwicklungen gegeben. 4 Prof. Dr. Heiko Brunken: zuständig für Ökologie und Naturschutz sowie Fischökologie im Internationalen Studiengang Technische und Angewandte Biologie der Fakultät 5 Natur und Technik an der Hochschule Bremen und Betreuer des Projektes Biodiversitätsatlas. 5 Prof. Dr.-Ing. Heide-Rose Vatterrott: Leiterin des Masterstudiengangs Komplexe Softwaresysteme, Professorin des Internationalen Frauenstudiengangs Informatik der Fakultät 4 Elektrotechnik und Informatik und Mitglied des Projektteams des Biodiversitätsalas. Der Biodiversitätsatlas 3 2. Der Biodiversitätsatlas Der Biodiversitätsatlas ist eine Informationsplattform, die die Erfassung und Kommunikation von raumbezogenen Biodiversitätsdaten (z. B. Verbreitung von Tier- und Pflanzenarten) auf Basis von User Generated Content ermöglicht. Ausgehend von der Idee, die Vorkommen von Fischen im deutschsprachigen Raum mit Hilfe von Experten aufzuzeichnen und allgemein zugänglich zu machen, wird seit ca. 10 Jahren unter der Trägerschaft der Gesellschaft für Ichthyologie an der Hochschule Bremen an dessen Umsetzung gearbeitet. 6 Ziel hinter diesem System ist es, die Daten für die nachhaltige Nutzung und das Management von Ökosystemen zu verwenden. Ausgehend davon können Gefährdungspotentiale erkannt, Schutzkonzepte entwickelt und ein wesentlicher Beitrag zur Umweltbildung geleistet werden. Mittlerweile wird der Atlas nicht nur für den Nachweis von Fischen verwendet, sondern für die Katalogisierung von verschiedenen Tierklassen (wie z. B. Säugetiere und Reptilien) genutzt. Das Projekt ist international im Einsatz (u. a. besteht eine Kooperation mit den Universitäten von Pernambuco und Recife, Brasilien) und legt Wert auf die Verwendung von frei verfügbarer Software. 2.1. Architektur des Systems Für die Umsetzung des Fachinformationssystems werden im Wesentlichen zwei grundlegende Technologien genutzt. Dies ist zum einen ein Inhaltsverwaltungssystem (engl. Content Management System, Abk. CMS), das sowohl die Daten als auch die Nutzerschnittstellen für den Zugriff auf die Informationen bereitstellt. Mit dem grundlegenden Prinzip, Open Source-Software als Basis für den Atlas einzusetzen, wird das unter der GNU General Public License (GNU GPL) stehende CMS Joomla! (Version 1.5) verwendet. Zum anderen liegt ein großer Schwerpunkt auf der Nutzung von Geoinformationssystemen (GIS), mit Hilfe derer die zu den Biodiversitätsdaten gehörigen räumlichen Angaben erfasst und präsentiert werden. Als Kartenbasis werden Geodaten des unter der Creative Commons Attribution-ShareAlike Lizenz stehenden Projektes OpenStreetMap (OSM) genutzt. Über die Javascript-Bibliothek OpenLayers7 werden die Karten eingebunden und mit den Biodiversitätsdaten des Atlas verknüpft. Aufgrund dieser Basis ergibt sich die folgende Systemarchitektur: 6 Siehe [GFI]. OpenLayers bietet eine einheitliche Schnittstelle für die Einbindung verschiedenster Kartenmaterialien an. Dies hat den großen Vorteil, dass aufgrund des durch den Dienst gebotenen modularen Aufbaus, Kartendaten auf schnellem Weg ausgetauscht werden können. 7 Der Biodiversitätsatlas 4 Abbildung 1: 3-Schichtenarchitektur des Biodiversitätsatlas Sie teilt sich zuerst in die Bereiche des Clients und des Servers. Der Nutzer erhält über einen Browser Zugriff auf das System. Für ein CMS typisch werden als Nutzerschnittstelle dabei zwei Bereiche angeboten – das Frontend für normale Nutzer und das Backend für die Administration des Dienstes und der Inhalte. Innerhalb des Browsers werden diese Inhalte präsentiert. Unterteilt man die Komponenten des Systems in die Schichten einer DreiSchichten-Architektur, so stellt demnach der Browser-Client die Präsentationsschicht der Gesamtarchitektur dar. Unterstützt wird er bei der Darstellung der vom Server abgerufenen Geoinformationen durch OpenLayers. Die Bibliothek liegt clientseitig vor bzw. wird vom Client zur Laufzeit aus dem Internet bezogen. Die Schichten der Logik und Persistenz werden durch mehrere Server, die für das CMS und GIS zuständig sind, realisiert. Frontend und Backend werden über einen Webserver abgerufen. Dieser enthält die Anwendungslogik des Biodiversitätsatlas, die mit Hilfe von PHP-Skripten die darzustellenden HTML-Seiten inklusive der Verknüpfung mit den benötigten Daten generiert. Der CMS-Server ist somit wesentlicher Bestandteil der Logikschicht. Zu dieser gehört des Weiteren der Tile-Rendering-Server von OSM, der auf Anforderung von OpenLayers Karten rendert und an den Client schickt. Die Persistenzschicht, in der die Daten gehalten werden, beinhaltet ebenfalls zwei Server. Der erste ist ein Datenbankserver, der an das CMS angebunden ist und mit dem Datenbankmanagementsystem MySQL verwaltet wird. Hier werden Fachinformationssystem zugehörigen Biodiversitätsdaten gespeichert. die zu dem Der Biodiversitätsatlas 5 OSM bietet vektorbasierte Karten an, deren Datengrundlage weitestgehend durch freiwillige Mitarbeit unter dem Einsatz von GPS-Geräten zusammengetragen wird. Die dadurch entstehenden Informationen liegen als Vektordaten auf dem OSM-eigenen Server. Dieser gehört demzufolge als zweiter Server ebenso zu der Persistenzschicht. Die aktuelle Implementation des Biodiversitätsatlas kann für unterschiedliche biodiverse Gruppen eingesetzt werden. Die Modellierung des Systems ist dafür vollständig von den Inhalten getrennt und auf allgemeine Attribute reduziert worden. Genauso ist der Atlas unabhängig von räumlichen Ausrichtungen der Daten, sodass er weltweit genutzt werden kann. 2.2. Nutzerrollen und Zugriffsberechtigungen Joomla! bietet die zwei Bereiche Frontend und Backend, auf die über den Browser zugegriffen werden kann, an. Über das Backend können die in der Datenbank enthaltenen Daten bearbeitet, neue Meldungen von erfassten Verbreitungspunkten validiert und das System verwaltet werden. Dieser Bereich ist nur Redakteuren zugänglich. Innerhalb dieser Nutzergruppe gibt es zusätzlich bestimmte Mitglieder, die die Befugnis für Änderungen am System haben. Das Frontend bietet die Visualisierung der in der Datenbank enthaltenen und positiv auf Korrektheit überprüften Daten sowie die Erfassung von neuen Funden. Auch hier werden weitere Nutzergruppen unterschieden, da nicht jeder neue Daten erfassen darf. Beide Bereiche nutzen für die Visualisierung der Verbreitungspunkte GIS. Für die Kontrolle der Zugriffsberechtigungen enthält Joomla! ein Nutzermodell.8 Dieses wurde den Bedürfnissen des Atlas angepasst und auf die nötigen Nutzergruppen reduziert. Geblieben sind vier Nutzerrollen, denen bestimmte Berechtigungen und Zugriffe auf das System zuteilwerden. Abbildung 2 zeigt eine übersichtliche Darstellung der Gruppen. Sie sind absteigend nach der Eingeschränktheit der Berechtigungen sortiert. Jede Nutzerrolle erbt und verfügt über die Berechtigungen seines Vorgängers. 8 Vergleiche [cocoate]. Der Biodiversitätsatlas 6 Abbildung 2: Nutzertypen des Biodiversitätsatlas in Bezug auf ihre Rechte 9 Die ersten beiden Nutzergruppen, Guest und Registered, beschreiben den Zugriff auf das Frontend. Hier sind die Nutzer nur auf einem niedrigen Level autorisiert. Gäste können sich die eingetragenen Verbreitungspunkte der verschiedenen Spezies sowie die Artinformationen und zugehörige Bilder ansehen. Sie haben also nur ein einfaches Leserecht. Die niedrigste Rolle, die erweiterten Zugriff – jedoch nur auf das Frontend – besitzt und Einträge hinzufügen darf, ist die Rolle Registered. Ein registrierter Nutzer ist den Betreibern des Systems bekannt, sodass sie seine Qualifikation für die Erfassung von Funden einschätzen können. Für diese Funktion haben sie mit einem Nutzeraccount, den sie nach Nachweis von geeignetem floristisch-faunistischem Wissen erhalten, die Berechtigung. Mit den Zugangs- 9 Überarbeitete Quelle aus [Genzel, 2011], S. 51 Der Biodiversitätsatlas 7 daten können sie sich über ein Formular im Frontend anmelden und anschließend Funde melden. Neben den dargestellten Nutzerrollen des Frontends gibt es Manager und Administratoren, die Zugriff auf das Backend besitzen. Dort nehmen sie die gemeldeten Daten entgegen und verifizieren sie. Diese beiden Gruppen werden über ihre technischen und fachlichen Kenntnisse differenziert. Manager haben wie registrierte Nutzer fachliches floristischfaunistisches Wissen, durch das sie in der Lage sind, die Korrektheit der empfangenen Zuordnungen und Verbreitungspunkte zu überprüfen und gegebenenfalls zu korrigieren. Sie wirken als Redakteure des Systems. Erst nachdem die Daten im Backend durch die Redaktion verifiziert wurden, werden sie für die Visualisierung im Frontend veröffentlicht. Ein Administrator verfügt über weitergehende technische Kenntnisse und verwaltet das CMS. Änderungen an Systemkomponenten sind alleine dieser Nutzergruppe vorbehalten. Administratoren besitzen alle Rechte. Darum können sie ebenfalls auf die Daten in der Datenbank zugreifen und diese ändern. Im günstigsten Fall besitzt ein Administrator daher neben den technischen Kenntnissen auch fachliches Wissen. 2.3. Logischer Aufbau von Biodiversitätsdaten Die Meldung über das Vorkommen einer Spezies (der Fund) setzt sich aus mehreren logischen Einheiten zusammen, deren Kombination eine eindeutige Identifikation des Fundes ermöglicht. Essentielle Daten sind die Nennung der Spezies, die Kennzeichnung des Fundortes durch dessen geografische Koordinate und der Tag, an dem die Beobachtung durchgeführt wurde. Die gezielte Datenerfassung, die einen definierten Ort und einen Zeitpunkt besitzt, wird als Messung bezeichnet. Abbildung 3 visualisiert die logische Verknüpfung der genannten Einheiten. Des Weiteren werden deren wichtigste charakteristische Merkmale genannt. Jede Einheit wird durch weitere Informationen ergänzt. Alle Einträge erhalten zur besseren Rückverfolgung eine Referenz auf einen Bearbeiter (als Editor bezeichnet; in der Funktion eines Urhebers und Ansprechpartners). Weiterhin können für Funde, Messungen und Orte Kommentare abgegeben und bestimmt werden, ob diese Informationen lediglich für die Redaktion oder allgemein im Frontend zugänglich sein sollen. Kommentare zu Spezies stehen öffentlich zur Verfügung und können in verschiedenen Sprachen hinterlegt werden. Der Biodiversitätsatlas 8 Abbildung 3: Logische Zusammensetzung eines Fundes Des Weiteren ist für einen Fund festzulegen, ob der Verbreitungspunkt im Frontend ausschließlich verfremdet angezeigt werden darf. Dies ist sinnvoll, falls die gefundene Spezies unter Artenschutz steht. Zusätzlich muss unterschieden werden, ob der Fund eigenständig gesichtet wurde („Individual“) oder aus einer Literaturquelle („Literature“) stammt. Für die mobile Anwendung wurde zur besseren Nachvollziehbarkeit außerdem der Wert „Mobile“ hinzugefügt. Die Herkunft der Daten wird durch die Angabe, ob der Fund durch eine Einzelperson oder ein Katasteramt gemeldet wurde, weiter spezifiziert.10 Ist er durch eine Einzelperson erhoben worden, wird an dieser Stelle zwischen einer „direkten Sichtung“ des Tieres und einem „indirekten Nachweis“ unterschieden. Indirekte Beobachtungen führen aufgrund der Sichtung von z. B. Spuren, Exkrementen, Gewöllen oder abgeworfenen Geweihen zur Identifizierung einer Spezies, ohne das Tier direkt gesehen zu haben. Der Fund kann deswegen nur indirekt nachgewiesen werden. Ein Ort wird neben der geografischen Koordinate durch einen eindeutigen Namen gekennzeichnet. Ferner muss angegeben werden, in welchem Land der Ort liegt und ob diese Koordinate eine punktgenaue Ortsangabe ist. Letzteres bedeutet, dass der Ort geografisch genau referenziert werden soll. Beschreibt die Koordinate einen Rastermittelpunkt oder liegen keine genauen Koordinaten vor, werden die Koordinaten des Ortes als „nicht genau“ definiert. Ein Ort kann mehreren Messungen zugeordnet werden. 10 Diese Eigenschaft wird auch als „Qualität des Fundes“ bezeichnet. Der Biodiversitätsatlas 9 Die Messung wird durch die eindeutige Kombination eines Ortes und des Datums der Messung bestimmt. Optional kann für eine Messung eine weitere geografische Koordinate angegeben werden, insofern der Nutzer den Ort der Messung genauer spezifizieren möchte. Innerhalb der Erfassung eines Fundes wird die Messung mit einer Spezies verknüpft. Die Messung kann dabei wiederverwendet und mehreren Funden zugeordnet werden. Im Gegensatz zum Ort, der Messung und dem Fund ist die Erfassung einer Spezies allein der Administration des Atlas vorbehalten, da es relativ selten vorkommt, dass neue Arten entdeckt werden. Spezies besitzen eine wissenschaftliche Bezeichnung, anhand derer sie identifiziert werden. Es können außerdem Populärnamen mehrsprachig hinterlegt werden. Eine Spezies kann wie eine Messung mehreren Funden zugeordnet werden. 2.4. Methoden der Erfassung von gesammelten Biodiversitätsdaten Der Weg der Daten in das System ist zeitlich gesehen lang. Datenlieferanten sind typischerweise Behörden, die Massendaten zumeist auf Anfrage öffentlich stellen möchten oder Einzelpersonen, die im Gegensatz zu den Behörden eher eine kleinere Anzahl an Verbreitungspunkten von Tierarten liefern. Einzelpersonen pflegen die Daten selbstständig über ein Formular im Frontend als registrierte Nutzer ein. Dagegen übergeben Behörden ihre Daten an die Redaktion des Atlas, die die Daten im Frontend oder über ein ebenfalls im Backend vorhandenes Formular eintragen. Dies stellt für kleine Datenmengen kein Problem dar. Größere Mengen verursachen auf diesem Weg jedoch einen immensen Zeitaufwand, der bislang durch das Schreiben von Übertragungsskripten umgangen wurde. Die geschilderten Fälle haben gemeinsam, dass häufig sehr viel Zeit zwischen der Erhebung der Daten und deren Erfassung im System liegt. Dies stellt ein grundsätzliches Problem dar, da so die Aktualität des Atlas nicht aufrecht zu erhalten ist. An dieser Stelle setzt die Aufgabe der vorliegenden Arbeit an. Da es dem System an einer schnellen Erfassung von Funden direkt nach deren Sichtung im Freiland fehlt, soll mit dieser Bachelorarbeit ein neuer Client konzipiert werden, der diese Aufgabe unterstützt und somit einen zeitlichen Vorteil verschafft. Anforderungsanalyse 10 3. Anforderungsanalyse Dieses Kapitel behandelt die Anforderungen an die zu erstellende mobile Anwendung. Mit der Festlegung der Anforderungen an das neue System, wird genau spezifiziert, welche Funktionen es haben und wie es in bestimmten Fällen reagieren soll. Diese Definition bildet die Grundlage für die folgende Konzeption und Implementierung. Es wird zunächst ein allgemeiner Überblick über die grundlegenden Voraussetzungen für den neuen Client gegeben. Anschließend werden die Anforderungen – aufgeteilt in funktionale und technische – spezifiziert. 3.1. Allgemeine Übersicht und Voraussetzungen Dem Biodiversitätsatlas fehlt bislang eine schnelle Erfassung von Funden. Unter optimalen Bedingungen würde die schnellstmögliche Erfassung direkt nach Sichtung des Fundes im Freiland stattfinden. Insofern soll sie über ein mobiles Gerät durchgeführt werden, welches der Nutzer bei sich tragen und im Freien einsetzen kann. Für diese Aufgabe eignen sich mobile Kommunikationsgeräte, wie Personal Digital Assistants (PDA), Feature Phones, Smartphones und Tablet-PCs, die durch eigene Programme erweitert werden können. Durch die Mobilfunkanbieter ist es möglich, über diese Geräte fast ununterbrochen auf das Internet zuzugreifen. Smartphones haben in den letzten Jahren zunehmend an Marktanteilen gewonnen. Prognosen verdeutlichen, dass die Zukunftschancen und die Marktentwicklung von Smartphones sehr gut aussehen.11 Ihr Funktionsumfang umgreift den der PDAs, Feature Phones und den von herkömmlichen Mobiltelefonen. Sie sind mittlerweile standardmäßig mit einer hochauflösenden Kamera und GPS-Empfänger ausgestattet. Außerdem wird bei der Konzeption von Smartphones berücksichtigt, dass sie mitunter den Witterungsbedingungen im Freiland ausgesetzt sind und demgemäß bis zu einem gewissen Grad eine Resistenz gegen äußere Einflüsse bieten. Parallel zu Smartphones können teilweise auch Tablet-PCs genutzt werden, da für beide Gerätetypen häufig das gleiche oder verwandte Betriebssystem eingesetzt wird. Aus diesen Gründen ist es eine wesentliche Anforderung, dass der neue Client für den Einsatz auf Smartphones entwickelt wird. Abbildung 4 zeigt die dadurch entstehende Systemstruktur. 11 In Deutschland besitzt nach einer Studie der Bitkom jeder Dritte ein Smartphone. Die Tendenz ist dabei steigend. Siehe [Bitkom]. Anforderungsanalyse 11 Abbildung 4: Einordnung des mobilen Clients in das Gesamtsystem Optimal wäre die direkte Eingliederung in das System inklusive der Nutzung der vorhandenen Schnittstellen zu den Servern. Der neue Client erhält hier die benötigten Ressourcen12 über das Internet. Anfragen werden direkt an den CMS-Server gestellt. Aus dem Grund, dass dieser Server lediglich HTML-Seiten verschickt, ist es jedoch fraglich, ob der mobile Client den CMS-Server auf dem gleichen Weg ansprechen kann bzw. sollte wie der Standard-Client. Da für die Darstellung des Biodiversitätsatlas ein großer Schwerpunkt auf den Einsatz von GIS gelegt wurde, sollte für die visuelle Unterstützung der Erfassung von Funden diese Technologie weiterhin verwendet werden. Aufgrund der freien Verfügbarkeit von OSMDaten, sollte ein Weg gefunden werden, diesen Dienst weiter zu nutzen. Um auf sich verändernde Lizenzen und Angebote bezüglich von öffentlich zugänglichen Kartendaten reagieren zu können, sollte allerdings ein Ansatz für die Austauschbarkeit der Kartendaten berücksichtigt werden. Die Datenverbindungen zwischen dem mobilen Client und dem CMS- sowie dem OSMServer sind strukturell (Pfeilenden und Linien) besonders gekennzeichnet. Die Bedeutung dieser Kennzeichnung wird in Kapitel 3.3.2 erklärt. Zunächst soll jedoch festgestellt werden, dass es eine Verbindung zwischen den Komponenten gibt, um auf die benötigten Daten zuzugreifen und neue Funde zu melden. 12 Benötigte Ressourcen beinhalten wesentliche Daten für die Erfassung eines Fundes, welche bereits im System eingetragen wurden und wiederverwendet werden können. Dies betrifft u. a. Spezies und Messungen inklusive Orten, die mehrfach Funden zugeordnet werden können. Anforderungsanalyse 12 Die geplante Anwendung soll in ihrer Funktionalität ein Erfassungstool für die Verbreitung von Lebewesen darstellen. Der Aufwand, der für eine Erfassung betrieben wird, soll dabei auf ein Minimum begrenzt werden. Aus diesem Grund sind nur die notwendigsten Informationen zu einem Fund zu erheben. Die Erfassung soll mit Hilfe von GIS in ihrer Visualisierung unterstützt werden. Zusätzlich ist es sinnvoll, Smartphone spezifische Funktionen wie die GPS-Ortung einzusetzen. Damit Funde besser nachvollzogen werden können, wäre die Aufnahme von einem oder mehreren Bildern von einzelnen Funden sehr wichtig. Dies sollte durch die Nutzung der Kamerafunktion des Geräts ermöglicht werden. Die meisten aktuell am Markt verfügbaren Smartphones werden fast ausschließlich über Touchscreens bedient. Zudem verfügen sie nur über eine kleine Nutzungsoberfläche. Die Bedienung der mobilen Anwendung muss deshalb speziell für diesen Kontext konzipiert werden. Dabei ist die Anzeige und Erfassung von Daten auf die essentiellen Informationen zu reduzieren und diese für den Nutzerdialog sinnvoll zu platzieren. Die genannte Reduzierung der Daten und Konzipierung der Nutzerschnittstelle (engl. User Interface, Abk. UI) sollen zudem unter Berücksichtigung einer schnellen und effizienten Eingabe der Daten durchgeführt werden, da der Nutzer aufgrund der im Gelände herrschenden Witterungsbedingungen oder weiteren anstehenden Funden den Vorgang in kürzester Zeit durchführen möchte. Zusammenfassend stellen sich die allgemeinen Hauptanforderungen an das geplante System wie folgt dar: Erstellung einer mobilen Anwendung, die zumindest auf einem Smartphone lauffähig ist Einsatz der mobilen Anwendung zur Erfassung von Daten für einen Biodiversitätsatlas Visualisierung der Erfassung anhand von GIS Nutzung von smartphonespezifischen Funktionen wie der Kamerafunktion und dem GPS-Empfang Wertlegung auf einen hohen Grad an Bedienbarkeit und Effizienz der mobilen Umsetzung 3.1.1. Nutzercharakterisierung Da die Anwendung von einer speziellen Nutzergruppe benutzt werden soll, ist es wichtig, den Nutzer zu charakterisieren, um in der späteren Realisierung dessen Bedürfnisse und Erwartungen an das System beurteilen zu können sowie die Bedienung auf ihn anzupassen. Welches Ziel möchte er mit dem Einsatz der Anwendung erreichen? Und in welchem Maße ist er innerhalb der Durchführung der Prozesse zu unterstützen? Anforderungsanalyse 13 Der Nutzer möchte die mobile Anwendung einsetzen, um schnell und effizient einzelne Funde im Fachinformationssystem zu melden. Der Nutzerkreis, der dabei durch die geplante Anwendung angesprochen wird, setzt sich zusammen aus Personen mit einem fachlichen floristisch-faunistischen Hintergrund. Sie sind in der Lage Tier- oder Pflanzenarten im Gelände sicher vom Stamm bis zur Art zu bestimmen und diese Meldung mit qualifizierten biologischen Daten, bspw. Informationen zum Lebensraum, zu verknüpfen. Diese Personen können sowohl ausgebildete Biologen als auch Studenten oder Mitglieder eines Naturschutzverbandes sein, die sich in ihrer Freizeit mit der Katalogisierung bestimmter Spezies befassen. In der Regel fokussieren sie sich dabei auf eine Spezies, für welche ein fundiertes Wissen vorliegt. Davon ausgehend, dass die Anwender im Durchschnitt geringe technische Kenntnisse besitzen, ist es sinnvoll den einzelnen Nutzer während technischer Prozesse zu unterstützen. Eine standardmäßige Bedienung eines PC’s sowie der vertraute Umgang mit dem Browser werden dem Nutzerkreis der mobilen Anwendung allerdings vorausgesetzt. Die Rolle des Nutzers entspricht den Rollen Registered bis Manager, da sie zur Erfassung von Funden fachliche Kenntnisse besitzen müssen. Es kann, u. a. zu Testzwecken, vorkommen, dass die Nutzer nicht entsprechend fachlich qualifiziert sind.13 Hier sollten Betreuer zur Seite gestellt werden, die über dieses Wissen verfügen. Zusätzlich werden als weitere Schutzmaßnahme vor inkorrekten Meldungen alle bekannt gemachten Funde durch die Redakteure des Fachinformationssystems auf Korrektheit überprüft. 3.1.2. Anwendungsszenario Im Folgenden wird der allgemeine Einsatz der geplanten Anwendung beschrieben. Der Nutzer erhält die mobile Anwendung auf Anfrage bei den Anbietern des Atlas. Diese installiert er eigenständig auf seinem Gerät. Abbildung 5 zeigt den nun startenden Einsatzprozess der Anwendung. Nach dem Installationsvorgang muss sich der Nutzer mit seinen vorhandenen Nutzerdaten anmelden. Anschließend ist die Anwendung für den Einsatz bereit. Der Nutzer würde nun gezielt nach Vorkommen suchen oder eine zufällige Beobachtung machen. Diese kann er umgehend mit Hilfe der mobilen Anwendung erfassen und melden. Des Weiteren sollte der Nutzer die Anwendung durch das Festlegen von Optionen, individuell konfigurieren können (z. B. Standardwerte für die Erfassung festlegen). Nach Abschluss der gewünschten 13 Die Anwendung könnte für Projekte in Schulen eingesetzt werden, wie z. B. als Hilfsmittel für eine praktische Exkursion eines Biologiekurses. Anforderungsanalyse 14 Katalogisierungsprozesse loggt sich der Nutzer wieder aus. Ab dem Login kann der Vorgang wiederholt werden. Abbildung 5: Anwendungsprozess Während der Erfassung des Fundes wird er eindeutig identifiziert. Der Nutzer muss eine Spezies auswählen, den Fundort und das Datum bestimmen. Die Ermittlung des Ortes und des Datums können durch Gerätefunktionen unterstützt werden. Der Fund kann optional durch Bilder ergänzend dokumentiert werden. Dieser Prozess ist im nächsten Aktivitätsdiagramm dargestellt. Abbildung 6: Erfassungsprozess 3.2. Funktionale Anforderung In diesem Abschnitt werden die Dienste beschrieben, die die Anwendung leisten soll bzw. auch die, die von vornherein ausgeschlossen werden. Die Anforderungen werden in die einzelnen Hauptfunktionalitäten der Anwendung eingeteilt. Diese sind die Erfassung und Verwaltung von Biodiversitätsdaten sowie deren Visualisierung mit Hilfe von GIS. Des Anforderungsanalyse 15 Weiteren werden Anforderungen an die Nutzerauthentifizierung und das Personalisieren der Anwendung gestellt. 3.2.1. Erfassung eines Fundes Die Grundfunktion der Anwendung soll die Erfassung von Biodiversitätsdaten sein. Die Anwendung soll zum Zeitpunkt der Sichtung zur Verfügung stehen, sodass der Fund ohne Zeitverzug gemeldet wird. Demnach sollen nur einzelne Funde an das Informationssystem gemeldet werden. Das heißt, es soll keine Sammelerfassung durchgeführt, sondern in jeweils einem Vorgang eine Spezies mit einem Ort und einem bestimmten Zeitpunkt verknüpft werden. Der Aufwand, der für eine einzelne Erfassung betrieben wird, muss dabei auf ein Minimum begrenzt werden. Es sind nur die notwendigsten Informationen14 zu einem Fund zu erheben. Diese sind: - der Editor - die Spezies - die Messung ∟ der Fundort ∟ ∟ - … (s. Kapitel 3.2.3) das Datum die Qualität des Fundes (handelt es sich um eine Literaturangabe, muss diese zusätzlich referenziert werden) - die Quelle des Fundes - das Datum der Meldung des Fundes - die Zustimmung, ob der Fund mit genauen Koordinaten veröffentlicht werden darf; andernfalls wird er nur verfremdet angezeigt - ein Kommentar inklusive der Entscheidung, ob dieser veröffentlicht werden darf Funden, Messungen, Orten und Spezies muss ein Editor zugeordnet werden. Dies bedeutet bezüglich dem neuen Anlegen von allen Einheiten, dass der Editor ermittelt werden muss (siehe Kapitel 3.2.5). Dieser soll im Falle der mobilen Anwendung der aktuell angemeldete Nutzer sein. Der Editor muss bei Meldung des Fundes übermittelt werden. Um eine Spezies auswählen zu können, soll die Anwendung im Falle, dass eine Verbindung zum Internet vorliegt, den Server kontaktieren und eine Liste aller Arten abrufen können. Alternativ soll es möglich sein, die Daten offline zu speichern. Der Nutzer soll die Spezies anhand der wissenschaftlichen und der populären Bezeichnung ermitteln. Da er voraus14 Die notwendigsten Informationen sind die Daten, die laut des bestehenden Datenbankmodells des Biodiversitätsatlas einen Wert besitzen müssen und nicht null sein dürfen. Anforderungsanalyse 16 sichtlich mit einer großen Menge an Daten konfrontiert wird, sollten die Spezies durchsucht werden können. Das Erfassen von Daten zu einer neuen Spezies sowie deren Meldung soll kein Bestandteil der Anwendung sein. Auch Orte sollen online abgerufen werden und bei Bedarf offline vorliegen. Es ist ebenfalls mit einer sehr großen Datenmenge zu rechnen. Der Nutzer sollte daher auch hier bei der Auswahl des Ortes durch eine Suchfunktion unterstützt werden. Ist der benötigte Ort nicht vorhanden, kann der Nutzer diesen neu erfassen. Auf die Erfassung eines Fundortes wird ausführlicher in Kapitel 3.2.3. eingegangen. Außerdem werden an die Darstellung von Fundorten besondere Anforderungen gestellt, die in Kapitel 3.2.4 erläutert werden. Für die Eingrenzung der Datenmengen sollten sowohl die Spezies als auch die Orte gefiltert vom Server abgerufen werden können. Um eine Messung anzulegen, genügt neben dem Ort die Auswahl eines Datums. Weitere Informationen, die für eine Messung erfasst werden könnten, wie ein Kommentar oder zusätzliche Koordinaten, sind optional. Da die zu erfassenden Daten in der mobilen Anwendung auf die essentiellsten Informationen zu reduzieren sind, sollen keine weiteren Angaben zu einer Messung erhoben werden. Das Datum der Messung soll aus dem Grunde, dass ein Fund mit der mobilen Anwendung direkt nach dessen Sichtung erfasst werden soll, fest vorgegeben werden (mit dem aktuellen Datum). Eine als Katasterfund definierte Meldung wird innerhalb von Massendaten an die Redaktion des Biodiversitätsatlas übermittelt. Dies ist für die mobile Anwendung nicht relevant. Es sollen lediglich einzelne Funde zeitnah erfasst werden. Demnach soll die Qualität eines Fundes entweder als „direkte Sichtung“ oder „indirekter Nachweis“ gekennzeichnet werden. Ein indirekter Fund sollte zusätzlich im Kommentar beschrieben werden. Des Weiteren wäre ein Hinweis, dass die Spuren als Foto dokumentiert werden sollten, wichtig. Funde, die über die mobile Anwendung gemeldet werden, sollen den Wert „Mobile“ als Quelle erhalten. Das Datum der Meldung des Fundes soll nicht durch den Client bestimmt werden. Das Festlegen der Quelle und des Meldedatums sind Aufgaben des Servers und sollen nicht durch die mobile Anwendung durchgeführt werden. Es muss festgelegt werden können, ob der Verbreitungspunkt eines Fundes veröffentlicht werden oder nur verfremdet angezeigt werden darf. Standardmäßig sollten die Koordinaten veröffentlicht werden dürfen. Der Nutzer soll dies verneinen können. Ergänzend soll ein Kommentar mit weiteren Informationen, die der Anwender textuell übermitteln möchte, angegeben werden können. Zusätzlich muss er bestimmen, ob der Kommentar allein für die Redaktion des Atlas bestimmt ist. Standardmäßig soll es Anforderungsanalyse 17 veröffentlicht werden dürfen. Der Nutzer soll dennoch die Möglichkeit besitzen, dies wieder verneinen zu können. Zur besseren Nachvollziehbarkeit wäre die Dokumentation des Fundes anhand von Bildern sehr wichtig. Dies soll durch die Nutzung der Kamerafunktion des mobilen Gerätes ermöglicht werden. Da diese Funktion meist in kurzer Zeit zur Verfügung stehen müsste, sollte sie auf dem schnellstmöglichen Weg innerhalb der Anwendung erreichbar sein. Der Nutzer soll mehrere Fotos hintereinander aufnehmen und anschließend wieder zur Anwendung zurückkehren können. Hier sollen die Bilder einem Fund zugeordnet werden. Die Erfassung des Fundes soll mit dem Senden an den Server abgeschlossen werden. Dies soll durch ein durch den Nutzer ausgelöstes Ereignis ausgelöst werden. Der Fund soll anschließend auf dem Endgerät abgespeichert werden. Dies ist vor allem wichtig, sofern zum Zeitpunkt des Sendens keine Internetverbindung vorliegt. Bei nächster Gelegenheit soll der Nutzer den Fund erneut senden können. 3.2.2. Verwaltung von Funden Auf dem Gerät gespeicherte Funde sollen in einer Übersicht dargestellt werden. Sie sollen anhand der Eigenschaften Spezies, Ort und Datum eindeutig identifiziert werden können. Bereits gemeldete bzw. noch nicht versendete Funde sollen durch eine Kennzeichnung unterschieden werden. Nicht versendete Funde sollen auf Anforderung durch den Nutzer erneut abgesendet werden können. Des Weiteren sollen die Einträge gelöscht werden können. Dies gilt sowohl für einzelne Funde als auch für die komplette Übersicht. 3.2.3. Erfassung eines Fundortes Der Nutzer soll einen neuen Ort erfassen können. Dazu müssen folgende Informationen erhoben werden: - ein Editor - der Name des Ortes - das Datum der Meldung des Ortes - die Koordinaten - die geografische Genauigkeit der Koordinaten - das Land, in dem der Ort liegt - ein Kommentar inklusive der Entscheidung, ob dieser veröffentlicht werden darf Der angemeldete Nutzer soll dem neuen Ort als Editor zugewiesen werden. Anforderungsanalyse 18 Der Nutzer muss den Namen des Ortes eindeutig benennen. Das Datum der Meldung des Ortes soll nicht durch den Client bestimmt werden. Auch hier versieht der Server die Meldung mit einem Zeitstempel. Sehr wichtig ist die Angabe der geografischen Koordinate des neuen Ortes. Sie soll über die GPS-Funktion des Endgerätes identifiziert werden und durch den Nutzer nicht modifiziert werden können. Es wäre wichtig, die Koordinate per Hand festzulegen, falls kein GPSEmpfang möglich ist. Der Einsatz der GPS-Funktion sollte jedoch vorrangig behandelt werden. Die Koordinate wird für die Weiterverarbeitung im Format des Koordinatenreferenzsystems WGS84 benötigt. Die geografische Genauigkeit der Koordinate gibt an, ob sie den Mittelpunkt eines Rasters beschreibt. Bspw. wäre dies für Deutschland die Rasteraufteilung nach TK25. Da die Koordinate eines neuen Ortes über die GPS-Funktion abgerufen werden soll, kann sie allein als punktgenaue Koordinate gemeldet werden. Dies gilt für alle Fundorte und soll dementsprechend unabhängig von der mobilen Anwendung durch den Server bestimmt werden. Jeder Biodiversitätsatlas erfasst und präsentiert Daten für ein bestimmtes Gebiet. Es kann vorkommen, dass das Gebiet nur eines oder auch mehrere Länder umfasst. Die Namen dieser Länder sind in der Datenbank inklusive der Ländercodes gespeichert. Diese Länder sollten dem Nutzer zur Auswahl angeboten werden. Da die Datenmenge jedoch gering ist und sich höchstwahrscheinlich nicht verändert, sollten die Daten offline vorliegen. Genau wie bei der Erfassung des Fundes soll ergänzend ein Kommentar mit weiteren Informationen, die der Anwender textuell übermitteln möchte, angegeben werden können. Und er muss bestimmen, ob der Kommentar allein für die Redaktion des Atlas bestimmt ist. Standardmäßig sollte es veröffentlicht werden dürfen, sofern es nicht durch den Nutzer verneint wird. 3.2.4. Visualisierung der GIS-Komponenten Es werden besondere Anforderungen an die Unterstützung der Erfassung eines Fundortes durch GIS gestellt, da auch in der mobilen Anwendung ein Schwerpunkt auf dieser Technologie liegen soll. Eine GIS-Karte soll dazu als Visualisierungsmittel der vorhandenen Orte und der durch die GPS-Funktion abgerufenen Position dienen. Die Karte sollte möglichst großflächig sein und die zur Verfügung stehende Fläche des Smartphones ausschöpfen. Es soll per Touchgesten gezoomt und die Ansicht verschoben werden können. Neben der Kartenansicht sollten die Orte zusätzlich in einer Liste angezeigt werden. Die Anforderungsanalyse 19 Auswahl eines Fundortes soll sowohl über die Karte, als auch über die Liste durchgeführt werden können. Das Anlegen eines neuen Ortes kann unabhängig von der jeweiligen Ansicht durchgeführt werden. Genau wie die Reduzierung des Datenvolumens für die Spezies und Orte wäre es sinnvoll, wenn die Karte auf das Gebiet, welches der Biodiversitätsatlas umfasst, gefiltert werden könnte. Kartenmaterial für Gebiete, die nicht durch den Atlas abgedeckt sind, sollte nicht heruntergeladen werden. Zusätzlich können die Zoomstufen eingegrenzt werden. 3.2.5. Nutzerauthentifizierung Die Anwendung soll ausschließlich von autorisierten Nutzern verwendet werden. Ferner muss für die Erfassung eines Fundes der Editor ermittelt werden. Um diese zwei Anforderungen zu erreichen, ist eine Nutzerauthentifizierung vor Beginn des Erfassungsprozesses notwendig. Um sich anzumelden, muss der Nutzer seinen Benutzernamen und das Passwort eingeben. Die eingegebenen Zugangsdaten sollen an den Server gesendet werden. Dort sollen sie geprüft werden. Der mobile Client soll anschließend eine Benachrichtigung erhalten, ob die Authentifizierung erfolgreich war und der Nutzer dadurch autorisiert ist, das System zu nutzen. Erhält er die Autorisierung, soll der Benutzername und das gehashte Passwort auf dem Gerät abgespeichert werden. Bei jedem Neustart der Anwendung muss der Nutzer jedoch das Passwort angeben, dessen Hashwert mit dem abgespeicherten Hashwert verglichen wird. Dies soll zusätzliche Zeit und Datenvolumen sparen, da keine Verbindung zum Server für die Überprüfung der Logindaten aufgebaut werden muss. Im Anschluss an den Loginprozess, soll der Nutzer die Möglichkeiten haben, Funde zu erfassen, Optionen zu ändern sowie sich abzumelden. Der Logout sollte zusätzlich durchgeführt werden, wenn die Anwendung beendet wird oder nach einem zeitlichen Ablauf von acht Stunden nach Login und Inaktivität. Ohne eine erfolgreiche Anmeldung soll die Anwendung nicht verwendet werden können. 3.2.6. Optionale Einstellungen Es wäre sinnvoll, dass der Nutzer die Anwendung personalisieren kann, indem er Standardwerte für die Erfassung festlegt. Bspw. möchte er nicht, dass die genaue Koordinate eines Fundes veröffentlicht wird, oder Kommentare sollen eine bestimmte Textkette standardmäßig enthalten. Anforderungsanalyse 20 Der Nutzer sollte bestimmen können, ob die Anwendung online oder offline auf die Daten zugreifen soll. Diese Einstellung sollte in den Optionen festgelegt werden können. Befindet sich die Anwendung im Offline-Betrieb, sollen Spezies und Orte nicht vom Server abgerufen und kein Kartenmaterial heruntergeladen werden. Die Anwendung soll dabei auf die auf dem Gerät gespeicherten Daten zurückgreifen. Die vollständige Funktionsfähigkeit ist in diesem Fall nur gewährleistet, sofern Daten offline vorliegen. Trotz des Offline-Modus sollen jedoch Funde versendet werden können. Ist der Online-Betrieb aktiviert, sollen die im Offline-Modus deaktivierten Verbindungen genutzt werden. 3.3. Nichtfunktionale Anforderungen Die nichtfunktionalen Anforderungen beschreiben die technischen Bedingungen, die an die zu entwickelnde Anwendung gestellt werden. Im ersten Abschnitt werden dazu generelle Aspekte beschrieben, die den Elementen einer typischen Klassifikation der nichtfunktionalen Anforderungen zuzuordnen sind. Danach werden einzelne wichtige Aspekte angesprochen, wie die Übertragung von Daten. Neben der Datenerfassung durch die Anwendung sollen die Daten dem Server gemeldet werden. Dies steht deswegen ebenfalls im Mittelpunkt der geplanten Anwendung und sollte gesondert betrachtet werden. Des Weiteren ist die Distribution der Anwendung aufgrund dessen, dass die Verfügbarkeit des Systems kontrolliert werden soll, ein wichtiger Prozess. Ein weiterer Schwerpunkt soll auf die Behandlung der Mehrsprachigkeit der Anwendung gelegt werden. Zum Abschluss der Anforderungsanalyse wird zu grundlegenden Anforderungen an die einzusetzenden Technologien der Anwendung Stellung genommen. 3.3.1. Generelle nichtfunktionale Anforderungen Die Anwendung soll in ihrer Bedienbarkeit der Intuitivität von aktuellen Smartphones entsprechen. Die Menüs, Anzeigen und Buttons sollen selbsterklärend sein, damit sich auch ein nicht technisch-versierter Anwender schnell mit der Bedienung der Anwendung zurecht findet. Fachlich müssen dagegen nicht alle Details für den Anwender erklärt werden. Zusätzlich wird Wert darauf gelegt, dass gerade in den Kartenansichten interaktive Elemente nicht zu klein sind, um dem Nutzer eine angenehme und sichere Bedienung zu ermöglichen. Da teilweise nur kurze Zeit zur Verfügung steht, um neue Daten einzutragen und abzuschicken, sollte die Anwendung stabil funktionieren und keine großen Verzögerungen besitzen. Ein Absturz der Anwendung sollte nicht eintreten. Die Anwendung benötigt eine Verbindung zum Internet, da darüber die Daten versendet werden und Kontakt mit dem Anforderungsanalyse 21 Server aufgebaut wird. Die Nutzung der internen Schnittstelle des Gerätes zum Internet muss daher stabil sein. Dies ist jedoch eine Rahmenbedingung, die allein durch die Wahl des Geräts und des Mobilfunkanbieters kontrolliert werden kann. Das Absenden von neuen Funden soll bevorzugt behandelt werden. Bezüglich des Zeitaufwandes für die Erfassung eines Fundes ist zudem gewünscht, dass der gesamte Vorgang unter optimalen Bedingungen, d. h. bei einwandfrei funktionierendem Gerät und Internetkonnektivität, innerhalb von fünf Minuten abgeschlossen sein soll. Für die Nachvollziehbarkeit der Anwendung und die Ermöglichung der Wartung und Erweiterung durch eventuelle andere Entwickler, aber auch zum Verstehen der Anwendung durch die Betreiber und Administratoren, soll sie modular aufgebaut und der Quellcode vollständig dokumentiert werden. Es werden besondere Anforderungen an die Qualität der Anwendung und an den Erhalt der Qualität der Daten des Fachinformationssystems gestellt. Zum einen sollten Nutzungsbedingungen in Zusammenarbeit mit Heiko Brunken erarbeitet werden. Diese sollten enthalten, dass die Autorenschaft des Nutzers gewährleistet wird. Insbesondere betrifft diese Regelung die zur Verfügung gestellten Bilder, aber auch die Meldung der Funde. Im Gegenzug dazu sollte sich der Nutzer verpflichten, sorgfältig mit der Anwendung und der Erfassung von Daten umzugehen. Auf diese Weise wird nicht nur die Qualität der mobilen Anwendung sondern die des Gesamtsystems unterstützt. Zum anderen muss die mobile Anwendung für den Zielkreis angemessen bedienbar und anwendbar sein. Am Ende dieser Arbeit soll eine lauffähige Anwendung stehen, die den Nutzer korrekt in seiner Zielsetzung unterstützt. Mit der Installationsdatei der mobilen Anwendung soll ein vollständig dokumentierter Quellcode, eine Installationsanleitung und ein Nutzerhandbuch geliefert werden. 3.3.2. Datenübertragung An dieser Stelle soll noch einmal Bezug auf die Einordnung der neuen Anwendung in das Gesamtsystem genommen werden, welche in Kapitel 3.1 beschrieben wurde. Die besondere Kennzeichnung der Datenverbindungen von dem mobilen Client zum CMS- und dem OSMServer in Abbildung 4 basiert auf den hier vorgestellten Anforderungen. Um die Erfassung von Funden umsetzen zu können, muss die Anwendung zum einen Daten empfangen. Dies gilt sowohl für Daten aus der CMS-Datenbank, die von dem CMS-Server gesendet, als auch für Tiledaten für die Visualisierung der GIS-Karten von OSM. Das Datenvolumen sollte aus beiden Quellen auf ein Minimum reduziert werden, um so wenig wie möglich auf eine Internetverbindung angewiesen zu sein. Die Anwendung sollte auch Anforderungsanalyse 22 ohne Internetverbindung einsatzbereit sein. Dadurch wird zusätzlich das durch den Mobilfunkvertrag verfügbare Datenvolumen des Nutzers nicht unnötig belastet. Aus diesen Gründen sollte eine Lösung entwickelt werden, Daten offline vorzuhalten und auf diese zuzugreifen. Zum anderen müssen Daten gesendet werden. Der Versand von Daten, also die Meldung von Funden, hat höhere Priorität als das Empfangen. Eine Internetverbindung ist für das Senden unabdingbar. Da die Priorität des Übertragens von Daten auf den Meldungen der neuen Funde liegen soll, ist der Pfeil von dem mobilen Client zum CMS-Server größer. Der umgekehrte Weg, die Lieferung von bekannten Arten, Orten, etc., soll dagegen minimal gehalten werden. Demnach ist das Datenvolumen in diese Richtung kleiner. Kartendaten sollen ebenfalls so wenig wie möglich aus dem Netz heruntergeladen werden. Es ist eine Lösung zu entwickeln, wie die Daten offline gespeichert und anschließend wieder abgerufen werden können. Optimal wäre es, wenn der mobile Client so gut wie gar nicht auf den Download von Kartendaten über den OSM-Server angewiesen ist. Deshalb sollte die Verbindung verschwindend gering sein. Es sollte jedoch auch nicht vernachlässigt werden, dass das Kartenmaterial aktualisiert werden kann. Die vom Nutzer eingetragenen Funde müssen unverändert und sicher an den Server gesendet werden. Sollten Daten aufgrund fehlender Internetkonnektivität nicht versendet worden sein, sind sie korrekt abzuspeichern. Eventuell sollten Daten vor der Übertragung verschlüsselt werden. Neben den Biodiversitätsdaten ist vor allem der sichere Versand der Zugangsdaten des Nutzers relevant. Eine weitere Option wäre der Einsatz von sicheren Protokollen wie HTTPS. 3.3.3. Distribution und Installation des Systems Um die Anwendung zu erhalten, muss der Nutzer die Anbieter eines Biodiversitätsatlas kontaktieren. Sie soll ausschließlich auf Anfrage ausgeliefert werden. Der Anbieter verfügt aus diesem Grund über die Möglichkeit, zu beurteilen, ob der Nutzer geeignet ist, die entsprechenden Daten zu erheben und die durch den Atlas abgedeckten Lebewesen korrekt einer Spezies zuzuordnen. Infolgedessen wird die Qualität der dargestellten Daten des Fachinformationssystems erhöht und das Aufkommen inkorrekter Daten reduziert. Der zweite Effekt dieses Vorgehens ist, dass der Anbieter den Nutzer im Voraus registriert und kein zusätzlicher Registrierungsprozess erforderlich ist. Dies wird für den Biodiversitätsatlas bislang auf diese Weise gehandhabt und soll auch in Zukunft so fortgesetzt werden. Es soll Anforderungsanalyse 23 ein Account pro Nutzer vorhanden sein, durch den er sowohl über einen PC auf den Atlas Zugriff hat, als auch über ein mobiles Endgerät neue Funde melden kann. Ein Registrierungsverfahren ist darum nicht Bestandteil der Anwendung. Die Installation sollte so einfach wie möglich gehalten werden. Im besten Fall wird der Nutzer durch den Prozess vom System begleitet oder er erhält eine Installationsanleitung. Die Anwendung soll für alle vorhandenen Biodiversitätsatlanten eingesetzt werden können. Atlasspezifische Eigenschaften sollten vor der Distribution durch die Redaktion des betroffenen Atlas konfiguriert werden. Hier ist es notwendig festzulegen, über welche Adresse der Server angesprochen wird. Optional wäre es sinnvoll, für jeden Atlas ein spezielles Design (Theme) zu erstellen, sodass er zusätzlich eindeutig über sein Erscheinungsbild identifiziert werden kann. Diese wären ebenfalls bei der Konfiguration auszuwählen. 3.3.4. Mehrsprachigkeit Die Mehrsprachigkeit bildet aufgrund dessen, dass ein weltweiter und variabler Einsatz unterstützt werden soll, einen wichtigen Bestandteil des Biodiversitätsatlas. Bezüglich dieser Thematik wurden drei unterschiedliche Ansätze im Rahmen der Bachelor-Thesis von CarlHeinz Genzel15 zum Teil unter Zuhilfenahme der Joomla!-eigenen Funktionen erarbeitet. Auf der einen Seite geht es dabei um die Mehrsprachigkeit der auf den HTML-Seiten wiederkehrenden Elemente wie Überschriften oder Beschriftungen. Für diese Elemente bietet Joomla! sowohl für das Frontend als auch für das Backend die Verwaltung von INIDateien an, die für die jeweilige Komponente ausgelesen werden. Die Dateien enthalten Schlüssel-Wert-Paare, welche bei der Generierung der Seiten durch PHP aufgelöst werden. Im Backend von Joomla! wird dafür eingestellt, welche INI-Datei für das Frontend oder Backend verwendet werden soll. Um eine bestimmte Konsistenz und Einheitlichkeit zwischen den Systemen zu schaffen, sollte für die mobile Anwendung eine ähnliche Lösung entwickelt werden. Andererseits wurde die Mehrsprachigkeit der Inhalte des Fachinformationssystems diskutiert und ein entsprechender Ansatz von Carl-Heinz Genzel modelliert, jedoch nicht implementiert. Zum Abschluss seiner Arbeit fasst er die Ergebnisse wie folgt zusammen: „Mehrsprachigkeit wurde in der Form, dass alle in der Datenbank befindlichen Tabellen in mehreren Sprachen vorliegen, noch nicht realisiert. Dies sollte allerdings in Zukunft in Betracht gezogen werden. Aus Sicht des Autors dieser Arbeit empfiehlt es sich nicht, 15 „Web GIS Erweiterung des CMS Joomla! im Kontext der Biodiversität“; siehe [Genzel, 2011]. Anforderungsanalyse 24 eine eigene Umsetzung zu implementieren. Es ist sinnvoller die Joomla!-Erweiterung Joom!Fish als eine der bekanntesten Erweiterungen für die Übersetzung von Inhalten im Joomla!-CMS auf ihre Anwendbarkeit zu überprüfen. Mit Hilfe von Joom!Fish können üblicherweise Datenbankeinträge mit einer Joom!Fish Übersetzung verknüpft werden, ohne weitere Datenbanktabellen zu erstellen. Dazu müssen die 16 Datenbanktabellen mit Hilfe von XML erfasst werden.“ Diese stellt eine zukünftige Erweiterung des Atlas dar und kann zum jetzigen Zeitpunkt nicht berücksichtigt werden. Da jedoch die Auswahl der Daten und die Generierung von Antworten auf Seiten des Servers liegt, sollte die Schnittstelle zwischen Client und Server so konzipiert werden, dass die Mehrsprachigkeit der Inhalte in Zukunft auch für den mobilen Client umgesetzt werden kann. Die dritte Lösung bezieht sich auf die namentliche Darstellung der Spezies. Sie werden mit einem wissenschaftlichen Namen abgespeichert und können einen oder mehrere Populärnamen in unterschiedlichen Sprachen besitzen. Die Populärnamen werden unter einem Schlüssel verwaltet, der sich zusammensetzt aus dem ISO-zertifizierten Sprachcode und dem unter dem gleichen Zertifikat stehenden Ländercode. Auf diese Weise können die Populärnamen direkt einer Sprache zugeordnet und die Listen anhand des Sprachcodes generiert werden. Die Schnittstelle zwischen dem neuen Client und dem Server soll so modelliert werden, dass der Abruf der verschiedenen Listen der Populärnamen möglich ist. 3.3.5. Einzusetzende Technologien Die mobile Anwendung sollte einen größtmöglichen Nutzerkreis ansprechen. Dies heißt, dass die Marktanteile der einzelnen Betriebssysteme und Möglichkeiten, eventuell auch mehrere Plattformen durch die Anwendung zu erreichen, analysiert und dementsprechend die Anwendung umgesetzt werden sollte. Die Haupteinsatzorte der Anwendung werden vorerst in Brasilien und Deutschland sein. Da nach Auskunft von Herrn Brunken vor allem in Brasilien eine große Verbreitung des durch Google entwickelten mobilen Betriebssystems Android vorliegt und auf die Kooperation im Bereich der Biodiversität zwischen den Hochschulen in Brasilien und Deutschland besonderer Wert gelegt wird, sollte diese Plattform bevorzugt behandelt werden. Außerdem wurde für den Atlas bislang besonderer Wert auf den Einsatz von Open-Source bzw. Common License Software gesetzt. Dieser Ansatz sollte möglichst weiterverfolgt werden. Um einen Überblick über die vorhandenen Möglichkeiten und Unterstützung der einzelnen Plattformen zu erhalten, werden im nächsten 16 Zitat nach [Genzel, 2011], S. 89. Anforderungsanalyse 25 Kapitel die aktuellen Techniken und Betriebssysteme der mobilen Programmierung näher analysiert. Aktuelle Techniken und Plattformen der mobilen Programmierung 26 4. Aktuelle Techniken und Plattformen der mobilen Programmierung Wie wird nun die mobile Anwendung aufgebaut sein und wie wird sie umgesetzt? Es ist zu entscheiden, auf welcher Basis dies geschehen soll, bevor diese Fragen geklärt werden können. Der Markt von Smartphones und Tablets ist sehr stark fragmentiert. Es gibt eine Vielzahl an Betriebssystemen, deren Anwendungen in unterschiedlichen Programmiersprachen geschrieben werden, sowie Verkaufsplattformen, über die diese Programme vertrieben werden, und viele weitere Technologien, Entwicklungsumgebungen und APIs, anhand deren es möglich ist, mehrere Betriebssysteme gleichzeitig anzusprechen. Bevor man also mit der Erstellung der Anwendung beginnen kann, muss validiert werden, auf welche Art und Weise diese optimal eingesetzt werden kann und welche Technologien dafür in Frage kommen. Das Kapitel bietet folglich einen Überblick über die aktuellen Möglichkeiten der mobilen Programmierung. Abbildung 7: Überblick über den Vertrieb und die Nähe zur Plattform der mobilen Anwendungsarten Aktuelle Techniken und Plattformen der mobilen Programmierung 27 Da die Fragmentierung des Smartphone-Marktes sehr groß ist und die einzelnen Komponenten, die berücksichtigt werden müssen, untereinander abhängig sind, soll der Leser anhand der Abbildung 7 zunächst eine kurze Einführung in dieses Kapitel erhalten. Ausgehend von den diversen Betriebssystemplattformen wie Android von Google oder iOS von Apple, können vier Arten von mobilen Anwendungen für Smartphones oder Tablet-PCs unterschieden werden. Diese sind: Native Anwendungen, hybride Anwendungen, Webanwendungen und mobile Widgets. Je nach Typ sind sie dabei von der Plattform, auf der sie laufen, abhängig (native Anwendungen) bis unabhängig (Webanwendungen). Plattformabhängigkeit bedeutet in diesem Zusammenhang, dass die Anwendungen nur innerhalb der sie unterstützenden Betriebssystemumgebungen laufen und speziell auf diese sowie die Geräteeigenschaften und -funktionen zugeschnitten sind. Daneben gilt, je plattformunabhängiger eine Anwendung ist, desto mehr ist sie auf die Nutzung des Internets angewiesen, welches zugleich die Basis aller proprietären Distributionsmöglichkeiten ist. Die Programmierung der vier Anwendungsarten ist ebenfalls sehr vielfältig und wird mit unterschiedlichen Programmiersprachen umgesetzt. Sprachen, in denen primär Anwendungen für eine Plattform entwickelt werden, werden als nativ bezeichnet. Da häufig versucht wird, plattformunabhängig zu programmieren und somit mehr Nutzer anzusprechen, gibt es eine große Anzahl an APIs und Entwicklungstools. Diese basieren auf aktuellen Webtechnologien. Die hier genannten Komponenten werden nun im Einzelnen beschrieben. 4.1. Mobile Betriebssysteme Laut einer Umfrage des Marktforschungsunternehmens Nielsen unter ca. 1000 Smartphonebesitzern sind in Deutschland im dritten Quartal 2011 Android und Nokias Symbian mit jeweils knapp einem Drittel die am meisten verbreiteten Betriebssysteme.17 An dritter Stelle ist iOS zu ca. einem Viertel unter den Verbrauchern ebenfalls sehr erfolgreich vertreten. Weitaus geringer genutzt werden dagegen BlackBerry der Firma Research in Motion (RIM), Windows Mobile und Windows Phone von Microsoft sowie Samsungs Bada oder webOS von HP. Eine Studie, die durch Gartner, Inc. durchgeführt wurde, hat die weltweiten Marktanteile anhand der tatsächlichen Verkaufszahlen im dritten Quartal 2011 analysiert. Das Ergebnis dieser Studie zeigt, dass Android weltweit gesehen mit der Hälfte der Marktanteile weitaus erfolgreicher ist. Symbian und iOS besitzen knapp ein Sechstel der Marktanteile und liegen damit deutlich unter den deutschen Ergebnissen. Weltweit bedeutender ist dagegen RIM. 17 Vergleiche [Nielsen]. Aktuelle Techniken und Plattformen der mobilen Programmierung 28 BlackBerry gehören 12% der verkauften Smartphones. Alle anderen Betriebssysteme sind wieder gering vertreten.18 Gartner prognostiziert jedoch Windows Phone eine erfolgreiche Zukunft. Demnach soll Microsoft im Jahr 2015 mehr Marktanteile besitzen als Apple. Diese Prognose entstand nach der Verkündung der Kooperation zwischen Nokia und Microsoft Anfang 2011. Nokias Smartphones werden zukünftig hauptsächlich mit Windows Phone ausgestattet werden.19 Parallel zu dem Erfolg Microsofts wird deswegen der Einbruch von Symbian erwartet.20 Basierend auf den vorgestellten Zahlen werden nun im Folgenden die zur Zeit wichtigsten und erfolgreichsten mobilen Betriebssysteme vorgestellt. Wie die Statistiken verdeutlichen, sind dies Android, Symbian und iOS. Sie bieten aktuell die besten Möglichkeiten, viele Nutzer zu erreichen. Android Entwickelt wird Android durch die Open Handset Alliance™, die sich, angeführt von Google, aus über 50 Mobilfunkanbietern, Mobiltelefon- und Chipherstellern sowie Marketing- und Softwareunternehmen zusammensetzt. Dazu gehören u. a. die Telekom, Vodafone, die Telefonica, Intel, Asus, HTC oder Texas Instruments. Diese Firmen haben sich zum Ziel gesetzt, ein besseres Mobiltelefon zu entwickeln, welches weltweit Menschen in der Erfüllung ihrer Aufgaben unterstützt.21 Aufgrund der Größe und den Marktpositionen der Mitglieder der Allianz, ist es das am schnellsten wachsende Smartphone-Betriebssystem.22 Android wurde Ende November 2007 vorgestellt und ist bereits nach vier Jahren zum unangefochtenen Marktführer aufgestiegen.23 Die Plattform steht unter der Apache Software Licence 2.0. Einzelne Komponenten laufen unter anderen Lizenzen, wie der Linux Kernel, der unter der GNU GPLv2 lizenziert ist. Der Quellcode ist dadurch öffentlich verfügbar.24 Allein, wenn man Anwendungen im Android Market veröffentlichen möchte, fällt eine einmalige Registrierungsgebühr von $25 an.25 18 Vergleiche [Gartner-1]. Vergleiche [Nokia-5]. 20 Vergleiche [Gartner-1]. 21 Vergleiche [Open Handset Alliance]. 22 Vergleiche [Enough Software], S.11. 23 Vergleiche [Enough Software], S.11. 24 Vergleiche [Android Open Source Project]. 25 Vergleiche [Google]. 19 Aktuelle Techniken und Plattformen der mobilen Programmierung 29 Abbildung 8: Android Architecture26 Hinter der Bezeichnung „Android“ verbirgt sich nicht nur das marktführende Betriebssystem, sondern auch eine Sammlung von Standardanwendungen (wie z. B. ein Emailprogramm, die SMS-Funktion oder der Browser) sowie die virtuelle Maschine Dalvik, welche für mobile Endgeräte optimiert ist. Das Android SDK beschreibt ein umfassendes Anwendungsframework für die Entwicklung weiterer Anwendungen. Entwickler finden hier Ressourcen für bspw. die Kommunikation mit anderen Programmen, den Zugriff auf Dateien oder auch Views und vorgefertigte Widgets für die Gestaltung der eigenen Anwendung. Neben der Android Runtime gibt es in der Middleware der Architektur Bibliotheken für die Darstellung von Grafiken in 2D oder 3D sowie Vektorgrafiken oder Datenbanken mittels SQLite, die in C bzw. C++ geschrieben sind. Die letzte Schicht bildet der Linux Kernel, über den auf die Geräteressourcen zugegriffen werden kann. Die Anwendungen werden in Java entwickelt. Neben dieser Programmiersprache, die nativ unterstützt wird, können außerdem Programme mit dem Android NDK in C und C++ programmiert werden.27 Die vollständige Einarbeitung in die Entwicklung mit Android beträgt laut der Developer Economics 2011-Studie ca. sechs Monate.28 Ein Vergleich mit anderen Plattformen sowie 26 Quelle: [Android Developers-1]. Vergleiche [Android Developers-1]. 28 Vergleiche [Vision Mobile]. Für diese Studie wurden weltweit Entwickler zu der Entwicklung und der Distribution von mobilen Anwendungen befragt. 27 Aktuelle Techniken und Plattformen der mobilen Programmierung 30 dem mobilen Web (mobile Websites und Webanwendungen, siehe Kapitel 4.2.2) zeigt, dass Android am schnellsten zu erlernen ist. Abbildung 9: Dauer der Einarbeitung in die verschiedenen Plattformen 29 Android wird auf Smartphones, Tablets, Mediaplayern und Entertainmentsystemen für Automobile eingesetzt.30 Außerdem sind diverse Netbooks mit diesem Betriebssystem ausgestattet. Für Smartphones und Tablets gab es bislang unterschiedliche Versionen. Am gängigsten sind die für Smartphone konzipierten Versionen Froyo (Android 2.2) und Gingerbread (Android 2.3.3 bis 2.3.7). Anfang des Jahres 2011 kam die rein für Tablets entwickelte Version Honeycomb (Android 3.0) auf den Markt, gefolgt von Ice Cream Sandwich (Android 4.0) im Oktober desselben Jahres.31 Letztere bietet eine API für beide Geräteklassen.32 29 Quelle: [Vision Mobile]. Vergleiche [Enough Software], S.11. 31 Vergleiche [Android Developers-2]. 32 Vergleiche [Enough Software], S.11. 30 Aktuelle Techniken und Plattformen der mobilen Programmierung 31 Abbildung 10: Marktverteilung der Android-Versionen (Stand: 01. Dezember 2011)33 Symbian OS Symbian OS ist eines der Betriebssysteme, die auf Nokia-Smartphones – früher auch unter Samsung und anderen Mobiltelefonherstellern – eingesetzt werden. Seine Ursprünge lassen sich auf das PDA-Betriebssystem EPOC der Firma Psion zurückführen, welches seit 1996 entwickelt wurde. Da sich der Markt veränderte, schloss sich Psion zwei Jahre später mit den damals führenden Mobiltelefonherstellern Nokia, Ericsson, Motorola und Panasonic zu dem Gemeinschaftsunternehmen Symbian zusammen, welche die Kernelemente EPOCs übernahm und kurz nach der Jahrtausendwende die ersten Smartphones mit Symbian OS 6.034 veröffentlichte.35 Das Konsortium löste sich jedoch 2008 auf und übernahm die Aufgabe der Lizenzierung des Betriebssystems unter dem Namen Symbian Foundation.36 Seitdem führt Nokia die Entwicklung Symbians eigenständig fort, verkündete jedoch im Februar 2011 fortan den größten Teil ihrer Smartphones mit Windows Phone auszustatten.37 Von 2003 bis 2005 fanden grundlegende Überarbeitungen für Übertragbarkeit, Flexibilität, Performance und Sicherheit statt. Danach folgten weitere Versionen, in denen die Unterstützung neuester Techniken, wie Wifi, Near Field Communication (NFC) oder SQLite, eingeführt wurde. Die erste Version (eigentlich Symbian OS 9.4) nach der Gründung der Symbian Foundation 2008 erhielt die Bezeichnung „Symbian^1“ mit einer neuen 33 34 Quelle: [Android Developers-3]. Das letzte Release von EPOC hatte die Versionsnummer 5.0. Aus diesem Grund erhielt die erste Version von Symbian die Nummer 6.0. Vergleiche [Tanenbaum, 2009], S. 1068. 35 Vergleiche [Tanenbaum, 2009], S. 1067f. 36 Siehe [Symbian Foundation]. 37 Vergleiche [Nokia-5]. Aktuelle Techniken und Plattformen der mobilen Programmierung 32 Nummerierung. Eine weitere Umbenennung erfolgte nach der Verkündung der Kooperation mit Windows. Der Versionssprung von Symbian^3 auf Symbian^4 wurde zurückgezogen und die Erweiterung als Symbian Anna auf Basis von Symbian^3 eingeführt. 2011 folgte die letzte Aktualisierung mit Symbian Belle. „We are Open!“ 38, so lautet die Überschrift eines Blogbeitrages auf der Symbian- Website von Nokia. Auch wenn es aufgrund dieses Slogans den Anschein hat, so ist Symbian keine Open Source-Software, sondern steht unter der Nokia Symbian Lizenz.39 Dieser Lizenz nach hat man erst nach einer Registrierung Zugriff auf den Quellcode des Betriebssystems. Nokia möchte außerdem den Entwicklerkreis, der am System arbeitet, begrenzt halten und bestätigt dadurch nur Registrierungsanfragen von bereits bekannten Mitarbeitern.40 Anwendungen werden nativ in C++ programmiert.41 Die Einarbeitung in die Programmierung für Symbian mit dieser Sprache dauert im Vergleich mit anderen Plattformen länger (siehe Abbildung 9, S.32). Nokia empfiehlt deshalb auch die Entwicklung mit Qt.42 Dies ist ein Framework zur Erstellung von plattformunabhängigen Anwendungen und UIs, welches sich vor Kurzem von Nokia losgelöst hat und fortan für die Open Source-Entwicklung frei zur Verfügung steht.43 Das letzte Release des Qt SDKs ermächtigt den Entwickler, Anwendungen für Symbian sowie die weitaus weniger genutzten Plattformen Maemo und MeeGo, die ebenfalls von Nokia entwickelt werden, zu erstellen.44 iOS Apple gab mit der Einführung des ersten iPhones Anfang 2007 den Anstoß für den Erfolg von Smartphones und löste „ein unvergleichliches Wettrennen der mobilen Plattformen aus“.45 Ein weiterer Triumph gelang Apple im Juli 2008 mit der Einführung des App Store. Mittlerweile stellt er die größte Verkaufsplattform mobiler Anwendungen mit über 500.000 Anwendungen dar.46 Das Betriebssystem iOS läuft sowohl auf dem Apple-eigenen Smartphone iPhone als auch auf dem Tablet-PC iPad und dem Mediaplayer iPod.47 In der ersten Version von iOS konnten keine Anwendungen von Drittanbietern installiert werden. Dies wurde parallel zur Eröffnung des App Store 2008 in der zweiten Version hinzugefügt. Jährlich folgten weitere 38 Zitat nach [Nokia-2]. Vergleiche [Nokia-3]. 40 Vergleiche [Nokia-4]. 41 Vergleiche [Nokia Developer-1]. 42 Vergleiche [Nokia Developer-2]. 43 Vergleiche [Qt Project]. 44 Vergleiche [Nokia-1]. 45 Zitat nach [Spiering, 2011], S. 11. 46 Vergleiche [Enough Software], S.34. 47 Vergleiche [Apple]. 39 Aktuelle Techniken und Plattformen der mobilen Programmierung 33 Systemupdates, die u. a. neue Standardanwendungen, die Unterstützung neuer Hardwarefeatures und die Anbindung an neue App Store-Dienste lieferten.48 Die Updates wurden dabei stetig mit der Vorstellung neuer iPhone-Modelle begleitet, sodass fortlaufend ältere Modelle vom Markt genommen und durch die neuen ausgetauscht werden konnten. Dies begünstigt, dass die Fragmentierung innerhalb der Plattform nicht so groß ist und gleichzeitig für Smartphones und Tablet-PCs entwickelt werden kann.49 Anwendungen werden für iOS mit Objective-C programmiert.50 Für die Entwicklung wird die Entwicklungsumgebung Xcode durch Apple frei zur Verfügung gestellt.51 Um Zugriff auf die Entwicklungsressourcen (API-Bibliothek, Codebeispiele, Videotutorials, etc.) zu bekommen, muss man sich als Entwickler registrieren und einen Mac-Rechner besitzen.52, 53, 54 Möchte man während der Entwicklung Anwendungen auf einem Apple-Gerät testen oder Anwendungen im App Store verkaufen, hat man Apple als Einzelperson jährlich $99 zu zahlen.55, 56 Firmen zahlen $299.57 Das iOS-System basiert auf der Anwendungsumgebung Cocoa, welche auch für MacRechner eingesetzt wird. Allerdings wurde der Umfang der Anwendungsumgebung für iOS reduziert, da bestimmte Features wie der Zugriff auf die Kommandozeile oder QuickTime nicht benötigt werden. Dafür wurde der Anwendungsschicht jedoch eine spezielle Schicht für das UI hinzugefügt.58, 59 Abbildung 11: Architektur von iOS60 48 Vergleiche [Wikipedia]. Vergleiche [Enough Software], S.34. 50 Vergleiche [iOS Developer Library-1]. 51 Vergleiche [Apple Developer-1]. 52 Vergleiche [Apple Developer-2]. 53 Vergleiche [Apple Developer-3]. 54 Vergleiche [Apple Developer-4]. 55 Vergleiche [Apple Developer-5]. 56 Vergleiche [Enough Software], S.35. 57 Vergleiche [Apple Developer-6]. 58 Vergleiche [iOS Developer Library-2]. 59 Vergleiche [iOS Developer Library-2]. 60 Quelle: [iOS Developer Library-2]. 49 Aktuelle Techniken und Plattformen der mobilen Programmierung 34 Die Einarbeitungszeit in die Programmierung für iOS ist im Vergleich zu den anderen Plattformen durchschnittlich (siehe Abbildung 9, S.32). Es müssen bei der Entwicklung jedoch strenge Programmier- und UI-Richtlinien beachtet werden, in die sich ein Entwickler zusätzlich einzuarbeiten hat.61 Die Anwendungen werden vor der Freistellung im App Store zusätzlich stark reglementiert und die Einhaltung aller Richtlinien überprüft. 62 4.2. Strukturen der mobilen Programmierung Am Anfang der Entwicklung von Anwendungen für mobile Geräte steht man vor der Entscheidung, wie die Anwendung aussehen soll und auf welchem Wege die Nutzer erreicht bzw. in ihrer Arbeit unterstützt werden sollen. Es gibt verschiedene Arten von Anwendungen, die auf unterschiedliche Art und Weise Funktionen zur Verfügung stellen. Bei der Wahl einer dieser Arten ist es wichtig zu validieren, was für den Nutzer am geeignetsten ist und wie er am besten in seiner Arbeit unterstützt wird. Dieses Unterkapitel bietet einen Überblick über die möglichen Arten einer mobilen Anwendung und zeigt deren Vor- und Nachteile auf. 4.2.1. Native Anwendungen Native Anwendungen sind Programme, die auf ein mobiles Gerät geladen und dort installiert werden. Sie werden somit als Software, lauffähig auf einem dedizierten Betriebssystem, in dem Gerät integriert. Dies ermöglicht einen direkten Zugriff auf Systemfunktionen wie das Gyroskop, die GPS-Ortung oder die Kamera. Daneben können Rechenoperationen schneller durchgeführt werden.63 Die Betriebssysteme der meisten Wettbewerber auf dem Smartphone-Markt ermöglichen es, native Applikationen zu installieren. 64 Dazu steht für jede mobile Plattform ein eigenes SDK zur Verfügung, das Entwickler in die Lage versetzt, Anwendungen in der nativen Programmiersprache des Betriebssystems zu programmieren. Es ist schwierig und komplex, mehrere Plattformen auf diesem Weg gleichzeitig zu unterstützen, da die Transformation von einer Programmiersprache in eine andere sehr aufwändig ist. 65 61 Vergleiche [iOS Developer Library-3]. Vergleiche [Apple Developer-7]. 63 Vergleiche [Enough Software], S.4. 64 Vergleiche [Enough Software], S. 89. 65 Vergleiche [Enough Software], S. 4. 62 Aktuelle Techniken und Plattformen der mobilen Programmierung 35 Native Anwendungen können durch GIS APIs ergänzt werden. Speziell für OSM ist es für fast jede Plattform möglich, Kartendaten einzubinden. Die OSM-APIs werden für die OpenSource-Verwendung entwickelt.66 Die Distribution der nativen Anwendungen findet fast ausschließlich über die App-Stores statt. Als einzige Plattform erlaubt es Android, Anwendungen u. a. über einen Server oder EMail zu installieren.67 Die Distribution über den App-Store ermöglicht jedoch eine kontrollierte und sichere Verteilung der Anwendungen. So können auf diesem Wege auch leichter kommerzielle Dienste verkauft werden, die mit Hilfe der Stores abgerechnet werden. Die Veröffentlichung einer Anwendung ist jedoch teilweise auch mit Kosten verbunden und die Betreiber der App-Stores erhalten bei kostenpflichtigen Anwendungen eine Provision. Des Weiteren sind die Barrieren für die Aufnahme einer Anwendung in einen Store mitunter sehr hoch und das Verfahren aufwändig. Genauso müssen Genehmigungsprozesse auch bei Aktualisierungen erneut durchlaufen werden.68 4.2.2. Webanwendungen Als Alternative zu den nativen Anwendungen gibt es Webanwendungen als plattformunabhängigsten Ansatz. Der Faktor, den alle Smartphones gemeinsam haben, ist das Internet, was sich hier zunutze gemacht wird. Über den Browser ist jedes Gerät imstande, Webseiten auf Basis von gängigen Webtechnologien anzuzeigen.69 Anstatt des Begriffes „Webanwendung“ (bzw. dem englischen Begriff „Web-App“) wird in der Literatur und im Internet häufig auch die Formulierung „mobile Website“ verwendet. Es soll jedoch darauf hingewiesen werden, dass die Gleichsetzung dieser beiden Begriffe in der Diskussion steht. Es gibt Stimmen, die der Meinung sind, dass diese beiden Begriffe getrennt werden müssten: „Web Apps grenzen sich von einer mobilen Website durch höhere Komplexität sowie die Möglichkeiten der Interaktion ab. Dennoch kann jede Web App auch eine für die mobile Nutzung optimierte Webseite sein. Die Grenzen sind dabei oft fließend.”70 Andere stellen fest, dass keine deutliche Trennung existiert. 71 An dieser Stelle sollte nur kurz auf die Diskussion hingewiesen werden. Im Folgenden wird unabhängig davon der Begriff 66 Vergleiche [OpenStreetMap]. Vergleiche [Android Developers-4]. 68 Vergleiche [Spiering, 2011], S. 15. 69 Vergleiche [Spiering, 2011], S. 16. 70 Zitat nach [Linnhoff-Popien, 2012], S. 149. 71 Vergleiche [AppsLab]. 67 Aktuelle Techniken und Plattformen der mobilen Programmierung 36 Webanwendung für eine auf der HTML-Technologie basierende Anwendung, die über den Browser zugänglich ist, verwendet. Ein großer Vorteil von Webanwendungen ist die einfache Distribution und Erreichbarkeit. Webanwendungen waren, bevor App-Stores existierten, sehr populär und mitunter fast die einzige Möglichkeit, Dienste auf dem mobilen Endgerät durchzuführen. Dadurch, dass native Anwendungen über App-Stores schnell auf das Gerät geladen werden können, und man so direkt auf sie zugreifen kann, rückten Webanwendungen für einige Zeit in den Hintergrund. Mit der Entwicklung von HTML 5 und CSS 3 gewinnen sie jedoch wieder zunehmend an Bedeutung, da sie weiterhin als plattformunabhängigste Anwendungsart die größte Anzahl an Nutzern erreichen.72 Mit der Web Storage API ist es möglich, Daten als Schlüssel-WertPaare oder in einer Datenbank im Browser des Clients zu speichern. Dies kann für die Laufzeit einer Session, aber auch dauerhaft durchgeführt werden. Daneben können Webanwendungen durch die Offline Application Caching API73 auch ohne Internetverbindung zugänglich gemacht werden74 oder mit Hilfe der Geolocation API75 direkten Zugriff auf die Ortungsfunktion des Geräts zu nehmen. Des Weiteren steht für Entwickler und Firmen im Vordergrund, dass Webanwendungen nicht über die App-Stores, sondern allein über das Internet bezogen werden. Es gibt infolgedessen keinen aufwändigen Genehmigungsprozess, um die Anwendung in einem App-Store zu veröffentlichen. Damit geht einher, dass Aktualisierungen den Nutzer weitaus schneller erreichen als native Anwendungen.76 Webanwendungen sind jedoch insofern beschränkt, als dass sie von den Leistungen und Funktionen der Browser abhängig sind. Bietet ein Browser den Zugriff auf Hardwarekomponenten an, so kann die Webanwendung diese Funktion nutzen. Dies ist momentan allerdings nicht mit allen Browser möglich, da sie sich an dieser Stelle noch in der Entwicklung befinden.77 Standardisierungs- und Entwicklungsprozesse sind jedoch von Seiten des W3C und der Entwickler im Gange.78 Für eine vollständige Einarbeitung in die Entwicklung von mobilen Webanwendungen bzw. Websites müssen durchschnittlich neun Monate eingeplant werden.79 Es gibt einige Frameworks, die Aussehen und Verhalten einer Webanwendung mittels CSS und Javascript an das native UI anpassen sowie die Speicherung von Daten offline 72 Vergleiche [Enough Software], S. 4. Siehe [W3C-1]. 74 Vergleiche [Linnhoff-Popien, 2012], S. 153. 75 Siehe [W3C-2]. 76 Vergleiche [Spiering, 2011], S. 16. 77 Vergleiche [Spiering, 2011], S. 16. 78 Vergleiche [Spiering, 2011], S. 317. 79 Vergleiche [Vision Mobile]. 73 Aktuelle Techniken und Plattformen der mobilen Programmierung 37 unterstützen. Der Zugriff auf Hardwarekomponenten ist dagegen nicht möglich. 80 jQuery Mobile ist eines dieser Tools, welches im Gegensatz zu den anderen Lösungen sehr viele Plattformen unterstützt.81 Es ist ein Open Source-Framework zur Entwicklung mobiler Webanwendungen, welche sich fast wie native Anwendungen verhalten und ein einheitliche UI besitzen. Dafür wurde eine umfangreiche Komponentenbibliothek für die Anpassung an verschiedene Endgeräte entwickelt. Die Anpassung geschieht durch die Generierung der Komponenten durch Progressive Enhancement. Dies ist eine Technologie, die beim Laden das Dokument analysiert und mit entsprechenden Funktionen (je nach Möglichkeiten des Gerätes) erweitert.82 Eine weitere Alternative zur Erstellung einer Webanwendung wäre im Hinblick dessen, dass das bisherige System des Biodiversitätsatlas mit Joomla! betrieben wird, die Umsetzung mittels Mobile Joomla!. Diese Erweiterung des CMS erzeugt für mobile Endgeräte angepasste Webseiten der eigenen Website und wird im Backend als Plugin installiert. Mobile Geräte werden automatisch erkannt und entsprechend eine optimierte Seite angezeigt. Dabei können spezielle Einstellungen für bestimmte Geräte (wie das iPhone) getroffen und daraufhin die Anzeige der Seite an die Plattform angepasst werden.83 4.2.3. Hybride Anwendungen Eine Mischform zwischen Web- und nativen Anwendungen sind hybride Anwendungen. Anhand dieser Art ist es möglich, Webanwendungen in App-Stores zu stellen. Um dies zu realisieren erzeugt man ein natives Programm, welches ein WebView-Element enthält, das die Webanwendung anzeigt. Die native Anwendung funktioniert hier als Wrapper. Ihre einzigen Aufgaben sind die Darstellung der Webseiten und die Bereitstellung von Hardwarekomponenten. Die Funktionalität der hybriden Anwendung liegt damit hauptsächlich beim Server.84, 85 4.2.4. Mobile Widgets Neben den zuvor genannten Arten von Anwendungen gibt es mobile Widgets. Sie basieren auf Markup- und Skriptingsprachen, also XML, HTML, CSS und JavaScript. Zurzeit wird noch häufig ein Player für Widgets benötigt, da die Plattformen nicht nativ auf sie eingerichtet 80 Vergleiche [Enough Software], S. 96f. Vergleiche [Enough Software], S. 97. 82 Vergleiche [mobile Developer-1], S. 28ff. 83 Vergleiche [Mobile Joomla!]. 84 Vergleiche [Enough Software], S. 97. 85 Vergleiche [Rodger, 2012], S. 5. 81 Aktuelle Techniken und Plattformen der mobilen Programmierung 38 sind. Es findet jedoch ein Standardisierungsprozess durch das W3C statt, um mobile Widgets standardmäßig zu etablieren.86 Mobile Widgets sehen für den Nutzer aus wie native Anwendungen. Sie sind jedoch aufgrund ihrer Programmierung eine Sonderform von Webanwendungen, da im Gegensatz dazu rohe Daten und keine HTML-Seiten übergeben werden. Die Distribution dieses Anwendungstyps kann über einen Store, aber auch über einen Link auf einer Webseite durchgeführt werden.87 4.2.5. Plattformunabhängige Entwicklungstools Es gibt drei grundlegende Vorgehen, bei denen versucht wird, mit einem Projekt mehrere Plattformen zu erreichen. Diese werden innerhalb von plattformunabhängigen Entwicklungstools eingesetzt. Zum einen ist dies die bereits erwähnte Entwicklung von hybriden Anwendungen mittels eines WebViews innerhalb der nativen Anwendung. Zum anderen gibt es die Methode der Interpretation. Hier wird für jede Plattform eine Engine mitgeliefert, die den erstellten Code in eine der Plattform bekannte Sprache interpretiert. Die dritte Möglichkeit ist die Cross-Kompilierung, bei der die Anwendung für eine Plattform programmiert und anschließend in die nativen Sprachen der anderen Plattformen übersetzt wird.88 Das größte Hindernis einer plattformunabhängigen Entwicklung, die in allen drei Vorgehensweisen beachtet werden muss, ist die Anpassung der UI. Die einer Plattform bekannten Nutzungsmethoden wie Touchgesten oder das Design der Anwendung können durch die Verwendung von plattformübergreifenden APIs so verändert bzw. anders dargestellt werden, dass sie für den Nutzer nicht selbsterklärend sind. Dies führt zu Fehlern innerhalb der Bedienung der Anwendung, was jedoch für den Nutzer so aussieht, dass die Anwendung nicht funktioniert. Das kann anschließend dazu führen, dass die Anwendung nicht mehr verwendet wird. Die Anpassung an die UIs der verschiedenen Plattformen beinhaltet jedoch einen immensen Aufwand. Weitere Herausforderungen stellen u. a. die Multitaskingfähigkeit der Betriebssysteme, der Batterieverbrauch und Push Services dar.89 86 Vergleiche [W3C-3]. Vergleiche [Enough Software], S. 8, 78ff. 88 Vergleiche [Enough Software], S. 91. 89 Vergleiche [Enough Software], S. 92ff. 87 Aktuelle Techniken und Plattformen der mobilen Programmierung 39 4.3. Unterschiede in der Programmierung von Smartphone- und Tablet-PC-Anwendungen Die vorgestellten Betriebssysteme gehen unterschiedlich mit der Unterstützung von Smartphones und Tablet-PCs um. Symbian wird allein auf Smartphones eingesetzt. 90 Die Programmierung für andere Geräteklassen ist damit kein Diskussionsgegenstand. Dagegen bietet Android mit Honeycomb ein eigenes Betriebssystem für Tablet-PCs. Außerdem sind auf dieser Plattform laufende Programme generell aufwärts kompatibel und können auf höheren API-Versionen eingesetzt werden. Dadurch können Anwendungen mit der Version 2.x auch unter Honeycomb laufen. Neuere Komponenten der APIs (z. B. Funktionen oder UI-Element) werden in diesem Fall jedoch nicht unterstützt, da keine Abwärtskompatibilität vorliegt. 91 Es ist jedoch möglich, die API-Version zur Laufzeit abzu- fragen und dementsprechend Anpassungen vorzunehmen.92 iOS ist im Gegensatz zu Android sowohl für das iPhone als auch für das iPad konzipiert. Jede iPhone-Anwendung läuft ebenfalls auf Apples Tablet-PC. iPad-Anwendungen, die die größere Nutzungsoberfläche ausnutzen und mehr Informationen darstellen, können jedoch umgekehrt nicht auf iPhones ausgeführt werden.93 Die Konzeption von Anwendungen für unterschiedliche Displaygrößen und Auflösungen bilden für Apple und Android einen Schwerpunkt in der Entwicklung für Smartphones und Tablet-PCs. Zusätzlich muss bei Android noch der erweiterte Funktionsumfang der TabletAPIs im Vergleich zu den Smartphone-APIs beachtet werden. 90 Vergleiche [Symbian Blog]. Vergleiche [Android Developers-5]. 92 Vergleiche [mobile Developer-2], S. 56ff. 93 Vergleiche [Goldstein, 2011], S. 9ff. 91 Realisierungskonzept 40 5. Realisierungskonzept Dieses Kapitel stellt ein Konzept vor, welches beschreibt, wie die in der Anforderungsanalyse beschriebene Anwendung realisiert wird. Zuerst werden dafür auf Basis der Ergebnisse des vorigen Kapitels sinnvolle Technologien ausgewählt und das System aus technologischer Sicht konzipiert. Weiterhin werden der Aufbau der Nutzerschnittstelle sowie dort einzuhaltende Richtlinien beschrieben. Darauf aufbauend wird anschließend die Anwendung funktional modelliert. Dieser Abschnitt widmet sich dabei den Vorgängen, die essentiell für die Umsetzung der Funktionen, die die Anwendung leisten soll, sind. Für den ersten Prototypen wurden die Anforderungen nach Relevanz sortiert. Zweitrangige Anforderungen sind nicht (!) Inhalt des Realisierungskonzeptes. Zu ihnen wird jedoch zum Abschluss dieses Kapitels kurz Stellung genommen. 5.1. Systemaufbau In diesem Unterkapitel wird der Aufbau der Anwendung aus technologischer Sicht beschrieben. Dieser beinhaltet die Festlegung der Zielplattform der Anwendung sowie die Art, wie sie entwickelt werden soll. Beides wird auf Basis der im vorigen Kapitel durchgeführten Analyse festgelegt. Des Weiteren wird erläutert, wie die Architektur des Gesamtsystems sinnvoll erweitert und darauf aufbauend die Kommunikation zum Server stattfinden wird. Es werden außerdem weitere Komponenten vorgestellt, die das System ergänzen und nachträglich zum System hinzugefügt werden müssen. Dies betrifft die Erweiterung um eine API zum Einsatz von GIS. 5.1.1. Zielplattform Die im vorigen Kapitel durchgeführten Analysen der Betriebssysteme zeigen, dass die Entwicklung für Android aktuell die beste Wahl darstellt. Zum einen wird kein App Store benötigt, wodurch die Distribution der Anwendung eigenständig gesteuert werden kann. Um jedoch trotzdem eine Vielzahl an Nutzern zu erreichen, ist es zum anderen von Vorteil, dass die Plattform weit verbreitet ist. Potentielle Nutzer werden daher mit größerer Wahrscheinlichkeit ein Android-Smartphone besitzen und die Anwendung sofort einsetzen können. Dies gilt sowohl z. B. für Deutschland als auch für Brasilien. Die Kooperation zwischen der Hochschule Bremen und den Universitäten in Pernambuco und Recife im Bereich der Biodiversitätsforschung wird somit berücksichtigt. Zudem wird durch den Einsatz von Android weiterhin mit Open Source gearbeitet. Realisierungskonzept 41 5.1.2. Zielstruktur Für die Umsetzung der Anwendung bieten sich sowohl die native Programmierung als auch die Erstellung einer Web- oder hybriden Anwendung an. Mobile Widgets sind noch nicht in dem Maße in Android standardisiert, als dass sie ebenfalls in Frage kommen würden. Sie könnten mit Titanium oder PhoneGap für die Plattform umgesetzt werden. 94 Allerdings bieten die drei anderen Möglichkeiten geeignetere Alternativen, dadurch dass sie von Haus aus mit Android eingesetzt werden können. Auch wenn mittlerweile Webanwendungen schon sehr viel leisten können, ist es sinnvoll die erste Version der mobilen Anwendung rein nativ zu programmieren. Neben der schnelleren Einarbeitungszeit in Android im Vergleich zum mobilen Web, hat dies den Vorteil, dass die benötigten Hardwarefeatures sicher benutzt werden können. Die Entwicklung einer hybriden App würde die Einarbeitung in beide Technologien bedeuten. Der Prototyp der mobilen Anwendung zur Erfassung von Biodiversitätsdaten wird daher nativ entwickelt. Bei der anschließenden Wahl der zu nutzenden Android API ist zu bedenken, für welche Geräteklasse man programmieren und welche Leistungen man anbieten möchte. Zusätzlich sollte die Verbreitung der Versionen berücksichtigt werden. Da die mobile Anwendung zur Erfassung von Biodiversitätsdaten für Smartphones konzipiert wird, sollte man zurzeit entweder Android 2.2 oder 2.3 nutzen. Android-Programme sind generell aufwärts kompatibel und können auf höheren API-Versionen eingesetzt werden. Eine Abwärtskompatibilität liegt nicht vor. Infolgedessen wird Version 2.2 (API 8) verwendet. Diese Version sollte durch die Aufwärtskompatibilität ebenfalls unter Honeycomb auf TabletPCs laufen. 5.1.3. Entwicklungsumgebung Android bietet eine vollständige Integration in die Open Source-Entwicklungsumgebung Eclipse. Dafür wird neben der Installation des benötigten Android SDK ein Plugin für Eclipse installiert. Dieses wird als Android Development Tools (ADT) bezeichnet. Damit kann in Eclipse ein Android-Projekt angelegt, das UI erstellt, Anwendungen debuggt und die Projekte signiert werden.95 Die Anwendung wird daher mit Eclipse implementiert. 94 95 Vergleiche [Enough Software], S. 82. Vergleiche [Android Developers-6]. Realisierungskonzept 42 5.1.4. Client-Server Architektur Der neue mobile Client muss in die bestehende Architektur eingegliedert werden. Aus Sicherheitsgründen sollte er dabei nicht direkten Zugriff auf den Datenbankserver besitzen. Demnach muss der Client mit einem zusätzlichen Server kommunizieren. Der CMS-Server könnte als Kommunikationsstelle mit der mobilen Anwendung eingesetzt werden. Dies würde bedeuten, dass der Client HTML-Seiten, die mit Javascript verknüpft sind, abrufen würde. Innerhalb dieser Seiten würden sich die Daten befinden, die vom restlichen Code getrennt werden müssten. Dieser ist überflüssig und stellt einen Overhead dar. An dieser Stelle sollte deutlich werden, dass dieser Ansatz wenig effizient ist, da zusätzliches Datenvolumen verursacht wird, das den Mobilfunkvertrag des Nutzers unnötig belastet. Außerdem benötigt die Filterung der Daten aus den HTML-Seiten heraus Zeit. Es entsteht daher eine neue Gesamtarchitektur (siehe Abbildung 12), in die neben dem mobilen Client auch ein weiterer Server hinzugefügt wird. Der mobile Client ist sowohl für die Logik, als auch für die Datenhaltung und die Präsentation zuständig. Die Aufteilung dieser Bereiche auf einzelne Komponenten der Architektur ist daher nicht mehr vollständig möglich und wird ferner nicht weiter verwendet. Abbildung 12: Neue Gesamtarchitektur Der Webserver dient dem Client als Kommunikationspartner, der Daten aus der Datenbank des Biodiversitätsatlas abruft und ihm diese schickt. Umgekehrt nimmt er neue Funde Realisierungskonzept 43 entgegen und speichert sie in der Datenbank. Um dies zu realisieren bedarf es eines Kommunikationskanals, über den schnell und kompakt Daten versendet werden können. In Zusammenhang mit Android existieren dafür sehr viele Möglichkeiten, die umgesetzt werden könnten. Standardmäßig bietet die Plattform im Java SDK die Kommunikation über eine einfache HTTP- bzw. HTTPS-Verbindung sowie über Sockets bzw. SSL Sockets an. Mit diesen lassen sich sowohl Server als auch Clients auf dem mobilen Gerät erstellen. Weitere Alternativen für die Programmierung der Client-Server-Kommunikation wären der Einsatz von XML- oder JSON-basierten Webservices mittels SOAP, REST oder Servlets, JSONRPC oder WebSockets. Eine Recherche zum Einsatz der unterschiedlichen Technologien innerhalb von Android zeigte, dass jede genannte Möglichkeit häufig eingesetzt wird. Achtung sollte jedoch bei der Verwendung von Beans und Java RMI geboten sein: Nicht alle Pakete, die zum Java SDK gehören, sind auch in der Java SDK-Variante in Android vorhanden; die Pakete java.rmi und java.beans gehören z. B. nicht dazu.96 Ein ausführlicher Vergleich der genannten Technologien wäre eine wichtige Aufgabe, die bei der Implementierung der neuen Architektur eine Rolle spielt. Da in dieser Arbeit der Schwerpunkt vornehmlich auf der Clientanwendung liegt, wird jedoch vorerst eine schnell umzusetzende Technologie gewählt, die bereits im Funktionsumfang von Android enthalten ist – nämlich Sockets. Für den Einsatz von Sockets spricht zusätzlich, dass die zu übertragenden Daten als Objekte gesendet werden können. Die Zusammensetzung von Funden, Spezies, Messungen und Fundorten können so in Java-Klassen abgebildet sowie Daten über öffentliche Zugriffmethoden auf diese Klassen direkt gespeichert und abgerufen werden. Da die Daten in der mobilen Anwendung weiterverwendet werden müssen, bietet dieser Ansatz folgende Möglichkeit: Die Umsetzung über Sockets beinhaltet das Senden und Empfangen von Java-Objekten. Bspw. wird ein Fundort so auf eine Java-Klasse abgebildet, dass dieser, nachdem der Server ihn an den Client gesendet hat, direkt weiterverarbeitet wird. Die Modellierung der Java-Objekte ist somit fester Bestandteil des Clients. Abbildung 13: Direkte Client-Server-Kommunikation über Sockets Sollte die Socket-Kommunikation mit einer anderen Technologie (bspw. REST) ausgetauscht werden, müsste clientseitig allein die Komponente der Verbindung zum Server ausgetauscht werden. Die Nutzung der erstellten Java-Klassen zur Abbildung der Fundorte bleibt 96 Vergleiche [Becker, 2009], S. 327f. Realisierungskonzept 44 bestehen. Die Schnittstellen innerhalb des Clients werden dafür modular implementiert, dass allein ein Wrapper benötigt wird, der zum einen die Kommunikationsstelle zum Server enthält. Zum anderen bearbeitet er die Daten, die z. B. als XML-Objekt vorliegen und überführt sie in die jeweiligen Java-Klassen. Mit diesen kann der Client anschließend weiterarbeiten. Auf diese Weise ist die Verbindung vom Client zum Server austauschbar. Abbildung 14: Alternative Client-Server-Kommunikation unter Nutzung eines Wrappers 5.1.5. Einsatz von GIS Ein GIS bildet einen Schwerpunkt innerhalb der mobilen Anwendung. Es ist jedoch keine Bibliothek zur Erzeugung von GIS-Karten im Android SDK enthalten. In der Anforderungsanalyse wurde festgelegt, dass vorzugsweise Karten von OSM verwendet werden sollen, da diese als Open Source verfügbar sind und bereits im Biodiversitätsatlas genutzt werden. Alternativen dazu gibt es (wie z. B. Google Maps97). Bei der Auswahl einer geeigneten GIS-API wurde aufgrund der Anforderungen nach einem Weg gesucht, OSM einzubinden. Dies wird durch die Open Source-Bibliothek osmdroid98 umgesetzt. Diese JavaBibliothek steht unter der GNU Lesser GPL (LGPL). Karten werden über ein MapView-Widget99 in die Anwendung eingebunden. Das Kartenelement ist ein Container für die Darstellung der Tiledaten. Für das Widget wurden bereits die Zoomfunktion und das Verschieben durch Touchgesten implementiert. Es kann mit weiteren Layern und Markern erweitert werden.100 Des Weiteren bietet die Bibliothek einen TileProvider, der für das Empfangen, Speichern und Abrufen der Tiledaten eingesetzt wird. Zum einen lädt der TileProvider die Daten bei einer vorliegenden Internetverbindung herunter und zeigt sie an. Zum anderen legt er gleichzeitig einen Tile-Cache an, durch den es möglich ist, offline auf die bereits angesehenen Karten in den jeweiligen abgerufenen Zoomstufen zuzugreifen. Daneben hat man die Möglichkeit, die Anwendung mit einem Archiv, in dem ausgesuchte Tiles vorhanden sind, auszustatten. 101 97 Siehe [Google code]. Siehe [Google Project Hosting-1]. 99 Der Aufbau der Nutzerschnittstelle wird in Kapitel 5.2 beschrieben. 100 Siehe [Google Project Hosting-2]. 101 Vergleiche [Google Project Hosting-3]. 98 Realisierungskonzept 45 Zur Erstellung solcher Archive gibt es Tools, wie z. B. den Mobile Atlas Creator102. Dort wird festgelegt, welcher Kartenausschnitt archiviert werden soll und es werden zusätzlich die Zoomlevel beschränkt. Jeder Biodiversitätsatlas enthält Informationen zu der abgedeckten Fläche, mit denen ein solches Archiv vor Auslieferung an den Nutzer erstellt werden kann. Aufgrund der Lizenzierung und den Anforderungen wird das Android SDK um die osmdroidBibliothek zur Umsetzung der mobilen Anwendung mit GIS erweitert. Durch das MapViewWidget ist ein modularer Austausch von Kartendaten gegeben. 5.2. Nutzerschnittstelle Im Folgenden wird gezeigt, wie ein einheitliches Layout mit den wichtigsten DesignKonzepten umgesetzt werden kann und eine Struktur in die Nutzerschnittstelle gebracht wird. Außerdem wird ein Navigationspfad für die mobile Anwendung vorgestellt, der zeigt, welche Bildschirmseiten der Nutzer wann zu sehen bekommt und wie er in der Anwendung navigieren kann. Vorher wird beschrieben, wie das UI in Android aufgebaut wird. Das UI wird aus hierarchisch angeordneten Views gebildet.103 Es stehen dafür standardmäßig Views zur Verfügung, die in drei Kategorien aufgeteilt werden. Zum einen gibt es Layouts. Sie sind von der Klasse ViewGroup abgeleitet und sorgen für die Anordnung der anderen Views. Zum anderen gibt es Views, die als Widgets bezeichnet werden. Diese sind nicht zu verwechseln mit Mobile Widgets (Kapitel 4.2.4). Es sind visuelle und auch interaktive Elemente auf dem Bildschirm, mit denen der Nutzer interagieren kann, wie z. B. Buttons, Checkboxen, Textfelder oder der zuvor beschriebene MapView. Als letztes gibt es noch Zeichenflächen, welche rechteckige Bereiche darstellen, in die z. B. Bilder eingefügt werden können und in denen gezeichnet werden kann.104 Ein Layout kann auf zwei Wegen erzeugt werden. Entweder per Code in einer Activity 105 oder mit einer XML-Layout-Datei, welche im Ressourcenordner res/layout gespeichert wird. Activities sind eine der wichtigsten Komponenten in Android, die die Anzeige des UI erst ermöglichen und diese mit Funktionen hinterlegen. Sie repräsentieren generell eine Bildschirmseite und bestehen aus einem oder mehreren Views. Sie besitzen einen speziellen Lebenszyklus, der durch das System gesteuert wird (siehe Abbildung 15: Lebenszyklus einer 102 Siehe [MOBAC]. Siehe [Android Developers-7]. 104 Vergleiche [Louis, 2011], S.78. 105 Siehe [Android Developers-8]. 103 Realisierungskonzept 46 Activity). Es gibt spezielle Activities, die ein bestimmtes Layout erstellen, wie z. B. eine Listenansicht.106 Abbildung 15: Lebenszyklus einer Activity107 Activities sind lose aneinander gekoppelt. Sie kommunizieren untereinander allein über Intents. Über diese ist es möglich Daten zu schicken, die durch ein Callback in der ausgehenden Activity wieder abgerufen werden. Dazu muss der aufzurufenden Activity bekannt gegeben werden, dass von ihr ein Rückgabewert erwartet wird. Der ermittelte Wert wird in einem Intent gespeichert, der an die erste Activity zurückgegeben wird. 106 107 Vergleiche [Louis, 2011], S. 76f. Quelle: [Android Developers-8]. Realisierungskonzept 47 5.2.1. Einsatz von UI Patterns Obwohl von Android keinerlei Vorgaben zur Gestaltung des Designs gemacht werden, haben sich mittlerweile einige Konzepte zur Gestaltung von UIs bewährt. Diese werden seit der Veröffentlichung von Ice Cream Sandwich von Android empfohlen.108 Im Folgenden werden zwei Konzepte zur Gestaltung des UIs vorgestellt, die in der mobilen Anwendung umgesetzt werden. Abbildung 16: Dashboard (UI Patterns)109 Das erste Konzept ist der Einsatz eines Dashboards. Dies ist die zentrale Bildschirmseite der Anwendung. Von hier aus können alle Aktionen gestartet werden. Dafür werden Buttons angeboten, die auf die weiteren Seiten führen. Abbildung 16 zeigt den Aufbau eines solchen Dashboards. Mit Hilfe einer Action Bar wird zusätzlich ein einheitliches Erscheinungsbild der Anwendung realisiert. Hier werden Buttons platziert, über die der Nutzer in der Anwendung navigieren und wichtige Funktionen ausführen kann. Die Action Bar wird als wichtigstes Element einer Anwendung angesehen.110 Daher wird sie in der mobilen Anwendung eingesetzt. 108 Vergleiche [Android Design-1]. Quelle: [Android UI Patterns]. 110 Vergleiche [Android Design-2]. 109 Realisierungskonzept 48 Abbildung 17: Action Bar (UI Patterns)111 5.2.2. Navigationspfad Zur Strukturierung der Anwendung in Bezug auf die dargestellten Bildschirmseiten zeigt Abbildung 18: Nutzerpfad der mobilen Anwendung den Nutzerpfad der mobilen Anwendung. Die in der Anforderungsanalyse beschriebenen Funktionen wurden dafür Activities zugeteilt. die Anwendung startet mit einer Anmeldung, bei der sich der Nutzer authentifizieren muss. Hat er dies erfolgreich getan, wird er zum Dashboard der Anwendung – dem HomeBildschirm – geführt. Hier hat er die Möglichkeit, die Kameraanwendung zu starten, Einstellungen vorzunehmen, einen neuen Fund zu erfassen und bereits fertig gestellte Funde zu verwalten. Wenn ein neuer Fund erfasst wird, kann man zu weiteren Seiten gelangen, die jeweils einen Rückgabewert mit Hilfe von Intents liefern. Es wird ein Bild aus der Bildergalerie, eine Spezies aus einer Liste sowie ein Fundort aus einer GIS-Karte oder Liste ausgesucht. Für letzteren hat man zusätzlich die Möglichkeit, einen neuen Fund anzulegen. Dies geschieht ebenfalls durch eine neue Activity, der die empfangene GPSKoordinate übergeben wird. Als Ergebnis wird ein neuer Fundort zurückgeliefert, der dann über die Fundort-Activity weitergeleitet wird. 111 Quelle: [Android UI Patterns]. Realisierungskonzept 49 Abbildung 18: Nutzerpfad der mobilen Anwendung Der Zurück-Button, mit dem alle Android-Geräte ausgestattet sind, dient dem Nutzer dazu, zu der vorher gestarteten Activity zurückzugehen. Für jede Anwendung wird dafür durch Android ein Task angelegt. Dieser beinhaltet einen Stack, in dem Activities in der Reihenfolge, in der sie gestartet wurden, eingeordnet werden. Wenn eine Activity beendet wird, wird sie aus dem Stack entfernt. Hier spielt der oben erwähnte Lebenslauf einer Activity eine wichtige Rolle. Die Activity wird (falls Speicherplatz benötigt wird) entweder durch das System oder durch die Anwendung selber, was in der Programmierung festgelegt wird, gelöscht.112 In Bezug auf die Anwendung heißt dies, dass bestimmt werden kann, zu welcher Activity aus der Reihe der Bildschirmseiten, die vorher aufgerufen wurden, das Programm zurückkehren soll, wenn der Zurück-Button geklickt wird. 112 Siehe [Android Developers-9]. Realisierungskonzept 50 Sobald ein neuer Fund eingetragen wird, wäre es nicht sinnvoll, wieder zu den vorhandenen Fundorten zurückzukehren, sondern direkt zu der Seite des Fundes. Die Activity des Fundortes wird daher, sofern der Nutzer den Erfassungsvorgang eines neuen Ortes nicht abbricht, zu der Erfassung des Fundes weitergeleitet. Bei allen anderen Activities wird der Nutzer zur letzten Activity zurückgeleitet, wenn der Zurück-Button betätigt wird. 5.3. Funktionaler Aufbau Im Folgenden wird ein Konzept beschrieben, wie die in der Anforderungsanalyse vorgestellten und benötigten Informationen erhoben und verarbeitet werden. 5.3.1. Datenerfassung Die wesentliche Funktion, die durch die mobile Anwendung realisiert werden soll, ist die Erfassung eines Fundes inklusive die eines neuen Fundortes. Die in der Anforderungsanalyse festgelegten Daten, die für einen Fund ermittelt werden müssen, werden übersichtlich für den Nutzer innerhalb einer Bildschirmseite dargestellt. Sie können in drei Gruppen eingeteilt werden, die verdeutlichen, auf welche Weise die Daten eingegeben bzw. erzeugt werden. Diese werden folgend erläutert. 5.3.1.1. Separater Vorgang Die Erfassung der Daten der ersten Gruppe stellt einen zusätzlichen Vorgang dar, der in weiteren Bildschirmseiten (also Activities) durchgeführt wird, und den Aufbau einer Verbindung zum Server beinhaltet. Dies ist zum einen die Ermittlung des Editors, welcher dem Fund bzw. einem neuen Fundort als Bearbeiter und Urheber zugeordnet wird. Der Editor ist der zurzeit am System angemeldete und für die Erfassung von Funden autorisierte Nutzer der Anwendung. Die Nutzerauthentifizierung wird in Kapitel 5.3.3 näher erläutert. Zum anderen muss der Nutzer dem Fund eine Spezies zuweisen. Dazu wird eine Liste der vorhandenen Spezies benötigt. Diese erhält der Client, indem er den Server kontaktiert und eine Liste aller vorhandenen Spezies abruft. Jede Spezies enthält dabei die eindeutige Identifikationsnummer (anhand derer sie dem Fund zugeordnet wird), die wissenschaftliche Bezeichnung sowie die Populärnamen. Letztere liegen dem Biodiversitätsatlas in mehreren Sprachen vor. Spezies werden sowohl mit dem wissenschaftlichen als auch mit dem Populärnamen angezeigt, sofern einer vorliegt. Die Darstellung der Populärnamen wird anhand der in Android vorliegenden Konzepte zur Mehrsprachigkeit umgesetzt. Deren Realisierungskonzept 51 Funktionsweise und die Darstellung der Bezeichnung einer Spezies werden in Kapitel 5.3.45.3.4 beschrieben. Der Vorgang wird mit der Auswahl abgeschlossen. Eine Suchfunktion auf Basis der vorhandenen textuellen Bezeichnungen einer Spezies unterstützt den Nutzer bei der Auswahl der Spezies aus der vorhandenen Liste. Für die Suche enthält Android ein Framework.113 Um den Suchvorgang zu starten, wird entweder der Standardsuchbutton auf dem Gerät oder ein in der Anwendung vorhandener Button verwendet. Letztere Lösung wird von Android empfohlen, da u. U. der Standardsuchbutton auf dem Gerät nicht vorhanden ist. Neben dem Editor und der Spezies wird ebenfalls für die Ermittlung des Fundortes ein separater Vorgang gestartet. Eigentlich gehört der Ort zu einer Messung, die ihn mit dem Datum verknüpft. Aufgrund dessen, dass keine weiteren Informationen zu einer Messung erhoben und die für den Nutzer dargestellten Informationen auf ein Minimum beschränkt werden, wird die Messung für den Nutzer nicht dargestellt. Die strukturelle Modellierung eines Fundes dargestellt in Java-Klassen wird jedoch diese Zwischenstufe beinhalten, damit die Daten dem Datenbankmodel der Biodiversitätsatlas-Datenbank angeglichen sind. So kann der Server diese leichter verarbeiten. Die Liste der Fundorte wird genauso wie die Liste der Spezies vom Server abgerufen. Jeder Fund enthält die eindeutige Identifikationsnummer, einen Namen und eine Koordinate. Die Funde werden sowohl innerhalb der Liste als auch unter Einsatz der durch osmdroid erzeugten Karte dargestellt. Innerhalb der Karte werden sie anhand ihres Namens und mit einem Marker angezeigt. Ein Ort wird entweder über einen Listeneintrag oder über einen Marker ausgewählt. Die Liste der Orte ist ebenfalls anhand der Namen durchsuchbar. Im Falle der Suche innerhalb der Karte wird für die gefundenen Einträge, die zum Suchstring passen, zuerst eine Liste der Namen der Fundorte angezeigt. Wählt der Nutzer anschließend einen der Einträge aus, wird der gefundene Marker in der Karte angezeigt. Neben den vorhandenen Fundorten, wird in der Karte der aktuelle Standort angezeigt, der mit Hilfe des GPS-Dienstes des Geräts ermittelt wird. Die Ermittlung dieser Koordinate wird unter 5.3.1.3 beschrieben. Wenn eine Koordinate vorliegt, kann ein neuer Fund eingetragen werden. Diesem neuen Fund wird die Koordinate fest zugeordnet. Sie kann nicht verändert werden. Die Erfassung der Daten zu einem Fund ist in Kapitel 5.3.1.2 erläutert. Weiterhin werden Bilder einem Fund zugeordnet. Über den Home-Bildschirm kann der Nutzer dafür zuerst Bilder aufnehmen. Android bietet eine Kameraanwendung, die in diesem Fall aufgerufen wird. Dies geschieht (wie auch der Aufruf der Activities innerhalb der Anwendung) über Intents. Eine eigene Kameraanwendung wird nicht erstellt, sondern die 113 Siehe [Android Developers-10]. Realisierungskonzept 52 vorhandenen Mittel, die über das Betriebssystem angeboten werden, genutzt. Da mehrere Bilder zugeordnet werden, die dementsprechend Platz brauchen, wird die Zuordnung der Bilder zu einem Fund in einen separaten Vorgang ausgelagert. Hier werden die durch die Kameraanwendung aufgenommenen Bilder ausgewählt. 5.3.1.2. Nutzereingaben mittels Widgets Die zweite Gruppe beinhaltet direkte Nutzereingaben innerhalb einer Bildschirmseite, für deren Darstellung keine Verbindung zum Server aufgebaut werden muss und die mit Hilfe von Widgets durchgeführt werden. Der Nutzer bestimmt die Qualität des Fundes. Dazu wird ihm ein Spinner visualisiert, welcher ein aus einer Liste ausgewähltes Textobjekt anzeigt. Die Werte, die sich in dieser Liste befinden, werden nicht vom Server abgerufen, da davon ausgegangen wird, dass sie sich nicht verändern. Nichtsdestotrotz wird ein Mechanismus benötigt, der dem Fund die richtige ID der Qualität zuordnet. Die direkte Sichtung hat in der Datenbank des Biodiversitätsatlas die ID „1“ und der indirekte Nachweis die ID „3“. Diese müssen je nach Auswahl eines Elementes durch den Spinner gesetzt werden, damit die Qualität des Fundes korrekt in die Datenbank eingetragen wird. Die Verfremdung des Fundes wird durch eine Checkbox realisiert. Standardmäßig wird der Ort veröffentlicht. Sollte der Nutzer damit nicht einverstanden sein, ändert er den Zustand der Checkbox. Es wird ebenfalls eine Checkbox für die Veröffentlichung des Kommentares zu einem Fund verwendet. Sie ist so eingestellt, dass der Kommentar veröffentlicht wird, was der Nutzer jedoch wieder ändern kann. Der Kommentar wird in einem Textfeld eingegeben. Bis auf die Koordinate und den Editor werden die Informationen zu einem Fundort ebenfalls durch Widgets erfasst. Diese bestehen aus dem Namen des Ortes sowie dem Kommentar, welche beide in ein Textfeld eingetragen werden. Auch hier wird zusätzlich eine Checkbox für die Veröffentlichung des Kommentares verwendet. Weiterhin kann der Nutzer ein entsprechendes Land durch einen Spinner wählen. Die Liste der durch den Atlas abgedeckten Länder ist in der Anwendung gespeichert (siehe dazu Kapitel 5.3.5). Alle Texteingaben durch einen Nutzer müssen aus Sicherheitsgründen überprüft werden, da sie in die Datenbank des Biodiversitätsatlas eingefügt werden. Demnach wird jede Nutzereingabe nach SQL-Befehlen durchsucht, um die Gefahr vor einer SQL-Injection zu vermeiden. Realisierungskonzept 53 5.3.1.3. Ermittlung durch das System Das aktuelle Datum wird durch das System ermittelt und kann nicht durch den Nutzer verändert werden. Dies hat den Grund, dass die Anwendung direkt nach Sichtung eingesetzt wird. Die Erfassung findet daher zum gleichen Zeitpunkt statt und erhält dementsprechend ein festes Datum. Ebenfalls durch das System ermittelt wird bei der Erfassung eines Fundes die aktuelle GPSKoordinate des Smartphones. Der Abruf der Koordinate erfolgt ebenfalls über ein Framework, welches Bestandteil des Android SDK ist.114 Die Koordinate kann sowohl über den GPS-Sensor als auch über die umliegenden Wifi-Netze ermittelt werden, welche als LocationProvider bezeichnet werden. Zum Abruf dieser Provider dient als zentraler Dienst der LocationManager. Um ein schnellstmögliches Ergebnis zu erhalten, werden beide genannten Provider eingesetzt und die Suche nach der aktuellen Position beendet, wenn einer der Provider ein Ergebnis liefert. Da über die mobile Anwendung nicht die Möglichkeit besteht, eine zusätzliche Koordinate für eine Messung einzutragen, wäre es sinnvoll, für jeden Fund die ermittelte GPS-Koordinate an den Server zu schicken. Auf diese Weise besteht eine weitere Möglichkeit, einen Fund noch zu dokumentieren. 5.3.2. Schnittstelle zum Server Der Client startet die Kommunikation, indem er eine Anfrage an den Server stellt. Dies wird in folgenden Szenarien durchgeführt: 1. Verifikation von Zugangsdaten zur Anmeldung eines Nutzers 2. Abruf einer Liste der vorhandenen Spezies 3. Abruf einer Liste der vorhandenen Orte 4. Senden eines Fundes 5. Senden von Bildern Zentrales Augenmerk wird in diesem Abschnitt auf die letzten beiden Fälle gelegt. Die Kommunikation mit dem Server für die Verifikation der Zugangsdaten wird in Kapitel 5.3.3. behandelt, da sie eng mit dem Prozess der Nutzerauthentifizierung verbunden ist. Zum Abruf der Listen für Spezies und Orte wurden die wesentlichen Vorgänge bereits im vorherigen Abschnitt behandelt, da sie nur wenige Schritte behandeln und auf die Anfrage allein eine Antwort vom Server zurückgesendet wird. Damit sind die Vorgänge abgeschlossen. 114 Siehe http://developer.android.com/guide/topics/location/index.html. Realisierungskonzept 54 Komplexere Vorgänge, für die ein bestimmtes Protokoll durchgeführt werden müssen, sind dagegen das Senden eines Fundes und das Senden von Bildern. Um den Fund zu versenden, steht dem Nutzer ein Button zur Verfügung, welcher folgenden Vorgang startet, sofern alle Daten eingetragen wurden: 1. Die eingegebenen Daten werden in einem Objekt gespeichert. 2. Dem Server wird Bescheid gegeben, dass ein neuer Fund gesendet werden soll. 3. Im Anschluss daran wird direkt das Objekt gesendet. 4. Die Anwendung erhält als Antwort eine Zahl zurück, die anzeigt, ob der Fund verarbeitet werden konnte. Falls die Kombination zwischen der Spezies und der Messung (Ort und Datum) bereits vorliegt, kann der Fund nicht in der Datenbank gespeichert werden. Dies liegt daran, dass die Kombination ein eindeutiger Index innerhalb des Datenbankmodells ist. Aufgrund dessen ist es sinnvoll, dem Nutzer mitzuteilen, ob ein Fund bereits gemeldet wurde. Der Nutzer weiß dadurch, dass die Spezies, die er an Tag X entdeckt hat, bereits durch jemand anderen gesichtet und gemeldet wurde. Erhält er lediglich die Meldung, dass der Fund gesendet worden ist, wüsste er nicht, dass dieser Fund verworfen wurde und jemand anders als Editor des Fundes eingetragen ist. Um darauf folgende Urheberrechtsprobleme zu verhindern, erwartet die Anwendung nach dem Senden eines Fundes eine Antwort des Servers, die die beschriebene Information enthält. Code -1 Statusbeschreibung Der Fund konnte durch den Server nicht verarbeitet und angelegt werden, da er bereits existiert. 0 Der Fund wurde bislang nicht gesendet bzw. es lag keine Netzwerkverbindung vor, sodass der Fund nicht gesendet werden konnte. Dies gilt ebenso, wenn die Netzwerkverbindung während der Übertragung abbricht. >0 Der Fund wurde erfolgreich angelegt. Der Code entspricht der Identifikationsnummer des Fundes in der Datenbank. Tabelle 1: Status eines Fundes Es werden mehrere Bilder einem Fund zugeordnet. Sie werden allerdings unabhängig von dem Fund versendet, da sie in der Modellierung mit Sockets als Dateien verschickt werden. Bei dem Fund handelt es sich dagegen um ein Objekt. Die Dateien werden nacheinander an den Server gesendet. Dieser muss dafür vorab mitgeteilt bekommen, dass Bilder gesendet Realisierungskonzept 55 werden, zu welchem Fund sie gehören, wie groß jedes einzelne Bild ist und welchen Titel es hat. Der zweite Punkt bedingt, dass der Fund bereits erfolgreich gemeldet wurde. Es ist keine Antwort des Servers zum erfolgreichen Empfangen und Speichern notwendig. Allein die Verbindung zum Server muss durch die Anwendung kontrolliert werden. Sollten Bilder nicht versendet werden können, besteht nicht die Möglichkeit, die Bilder erneut zu schicken. An dieser Stelle ist das Bild direkt an die Redaktion des Biodiversitätsatlas mit einer Referenz auf den Fund zu senden. Da der Verbindungsaufbau und die Datenübertragung einige Zeit in Anspruch nehmen können, wird empfohlen, diese Aufgaben in Threads auszulagern. Ansonsten friert das UI für die Ausführung der Kommunikation ein. Dadurch ist die Bedienung aus Sicht des Nutzers nicht flüssig.115 Für die Durchführung und Entgegennahme der Daten bieten sich des weiteren Services an. Sie sind eine wichtige Komponente, die unabhängig von Activities gestartet wird und im Hintergrund läuft. Services besitzen ihren eigenen Lebenszyklus. Dadurch kann zwischen Activities gewechselt werden, ohne dass der Service gestoppt wird. Auf diese Weise ist der Service für alle Komponenten der Anwendung verfügbar.116 5.3.3. Nutzerauthentifizierung Der Nutzer der mobilen Anwendung verfügt über Zugangsdaten, die in der Tabelle „jos_users“ in der Datenbank des Biodiversitätsatlas abgespeichert sind. Mit diesen Daten muss er sich zum Start der mobilen Anwendung anmelden, um sie nutzen zu können. Ohne eine erfolgreiche Anmeldung kann der Nutzer keine Funktionen verwenden. Die Anwendung ist, solange dies nicht geschehen ist, mit einem Login-Screen gesperrt. Der Nutzer wird anhand seines Nutzernamens und Passwortes authentifiziert und erhält anschließend die Autorisierung für die Erfassung von Funden. Für die Authentifizierung werden der Nutzername und das zugehörige Passwort benötigt. Diese Daten gibt der Nutzer in ein Formular im Login-Screen ein. Für die erste Anmeldung muss eine Verbindung zum Server aufgebaut werden, um die Nutzerdaten zu verifizieren. Da sehr sensible Daten geschickt werden, muss aus Gründen des Datenschutzes ein sicheres Protokoll verwendet werden. Da der erste Prototyp auf Sockets aufsetzen soll, wäre eine sicherere Alternative SSL Sockets, die standardmäßig von Android angeboten wird. SSL Sockets erweitern mit Hilfe von SSL oder TLS das Netzwerkprotokoll gewöhnlicher Sockets um eine zusätzliche Schicht, 115 116 Vergleiche [Android Developers-11]. Vergleiche [Android Developers-12]. Realisierungskonzept 56 die Sicherungsmaßnahmen enthält. Diese Maßnahmen umfassen die Überwachung, damit Daten während der Übertragung nicht verändert werden, die Authentifizierung von Client und Server sowie das verschlüsselte Senden der Daten. Man könnte nun den gesamten Datenaustausch mit SSL Sockets realisieren. Zum einen muss dabei jedoch bedacht werden, dass die Daten eines Fundes nicht derart sensibel sind wie die Zugangsdaten des Nutzers. Zum anderen stellen sie eine weitaus größere Menge an Daten dar (inklusive dem Abruf von Spezies und Funden). Des Weiteren wäre der Overhead, der durch die Authentifizierung der Kommunikationspartner in der Summe aller zu startenden Verbindungen anfallen würde, sehr groß. Aus diesen Gründen sollte der Server aus zwei Sockets bestehen, die jeweils an einem Port auf eingehende Verbindungen warten. Ist die Verbindung zum Server aufgebaut und hat er die Daten erhalten, müssen sie validiert werden, um zu entscheiden, ob der Nutzer autorisiert wird. An dieser Stelle wird ein Verfahren implementiert, welches dem Authorisierungsprozess in Joomla! gleicht. Joomla! speichert Nutzerdaten in der Tabelle „jos_users“. Passwörter werden nicht im Klartext, sondern als MD5-Prüfsumme hinterlegt. Für das Prüfsummenverfahren wird eine per Zufall generierte 32-stellige Hexadezimalzahl117 als Salt zur Erweiterung des Passwortes verwendet. Der bei dem Hashverfahren entstehende MD5-Hash ist ebenfalls eine 32-stellige Hexadezimalzahl. Das Passwort lässt sich praktisch nicht wieder in Klartext umwandeln, da die Umwandlung aufgrund der großen Länge des Hashes und der Kombination des Passwortes mit dem Salt unter Einsatz aktueller Prozessoren zu viel Zeit benötigen würde. Der Prüfsummenwert wird zusammen mit dem Salt in folgender Struktur als String abgespeichert: { Prüfsumme } : { Salt } Abbildung 19: Struktur eines gespeicherten Passwortes in Joomla! Um ein eingegebenes Passwort mit dem vorhandenen zu vergleichen, wird der gespeicherte Passwortstring anhand des Doppelpunktes gesplittet. Das eingegebene Passwort im Klartext wird mit dem Salt in die MD5-Prüfsummenfunktion gegeben und das Ergebnis mit der gespeicherten Prüfsumme verglichen. Stimmen die beiden Prüfsummen überein, ist das Passwort korrekt. In diesem Fall schickt der Server die dazu passende EditorID an den Client zurück. Ist das Passwort falsch oder existiert gar der Nutzername nicht, wird eine 0 zurückgegeben. Für die Zuordnung eines Editors zu einem Fund übermittelt man entweder den Usernamen oder die ID. Beide Attribute sind eindeutig. Es ist jedoch sicherer, die ID zu übermitteln, da 117 Der Hash ist 128 Bit lang und wird als Hexadezimalzahl notiert. Realisierungskonzept 57 man sie nicht für den Login benutzen kann. Ein Nutzername könnte abgefangen und anschließend für eine Bruteforce-Attacke verwendet werden. Aus diesem Grund wird am Ende des Logins die EditorID übertragen. Wenn die Anmeldung erfolgreich war, wird das Passwort ebenfalls mit einem per Zufall generierten Salt gehasht und mit der gleichen Struktur wie in Joomla! in der lokalen Datenbank gespeichert. Zusätzlich werden die empfangene EditorID, die fortan für die Meldung von Funden und Orten verwendet wird, und der Nutzername gespeichert. Weitere Loginversuche mit dem Nutzernamen werden zuerst offline validiert. Sollte das Ergebnis der Validierung hier nicht korrekt sein (z. B. falls der Nutzer sein Passwort geändert hat), muss zusätzlich der Server kontaktiert werden. Gibt der Server die Antwort zurück, dass die Zugangsdaten korrekt sind, wird das gespeicherte Passwort in der Android-Datenbank mit dem neuen eingegebenen Passwort überschrieben. Ist der Nutzer angemeldet, erhält er auf dem Homescreen der Anwendung die Möglichkeit, sich wieder abzumelden. Um den Ablauf der Anmeldung zu realisieren wird mit der erfolgreichen Anmeldung ein Timer gesetzt, der den Nutzer automatisch nach 8 Stunden abmeldet. Es ist jedoch sinnvoll, diesen Timer bei einer Aktivität des Nutzers neu zu starten, damit er nicht während eines Erfassungsprozesses unterbrochen wird. 5.3.4. Mehrsprachigkeit Android-Anwendungen können sich der im System eingestellten Sprache anpassen. Grundsätzlich werden alle konstanten Ressourcen wie Bilder, Layouts oder Strings in einem jeweiligen Ordner unterhalb des Ordners res eines Android-Projektes verwaltet. Strings sind dabei innerhalb einer XML-Datei standardmäßig in res/values gespeichert (siehe Abbildung 20). Dies ist der Standardsatz an Strings, der benutzt wird, sofern sich keine andere Ressource finden lässt, die besser zu den lokalen Einstellungen des Geräts passt. Die Strings sind dort als Schlüssel-Wert-Paare definiert. Realisierungskonzept 58 Abbildung 20: Speicherung von Ressourcen (Beispiel 1) Möchte man mehr als eine Sprache unterstützen, kreiert man einen zweiten Ordner, der den gleichen Namen besitzt, jedoch um den Ländercode der Sprache ergänzt wird. Außerdem müssen sich die übersetzten Strings in diesem Ordner befinden. Abbildung 21 zeigt bspw. den Ordner values-de für deutschsprachige Ressourcen. Ist auf dem Android-Gerät Deutsch als zu nutzende Sprache eingestellt, so werden die Strings aus res/values-de/strings.xml verwendet. Ist der benötigte Stringwert nicht in dieser Datei enthalten (da der SchlüsselWert-Eintrag fehlt), wird der Standardsatz unter res/values/strings.xml genutzt. Abbildung 21: Speicherung von Ressourcen (Beispiel 2) Auf diese Weise wird die Mehrsprachigkeit von festgelegten Strings geregelt, die nicht mehr geändert werden. Wenn jedoch Daten, die erst empfangen werden müssen (wie die Populärnamen der Spezies) in einer bestimmten Sprache angezeigt werden sollen, können Realisierungskonzept 59 die Systemeinstellungen zur Laufzeit über den Kontext der Anwendung abgerufen werden. Dieser liefert den zweistelligen Sprachcode gemäß ISO 639-1 der eingestellten Sprache.118, 119 Die Mehrsprachigkeit der mobilen Anwendung kann über diese zwei Wege vollständig gewährleistet werden. Konstante Zeichenketten werden innerhalb von XML-Dateien in den durch den Biodiversitätsatlas abgedeckten Sprachen definiert. Standardmäßig wird Englisch eingesetzt. Weitere Sprachdateien werden in entsprechenden Ordnern hinterlegt. Die Darstellung der Populärnamen von Spezies in einer bestimmten Sprache wird über eine Abfrage zur Laufzeit der Anwendung bestimmt. Die Populärnamen einer Spezies sind in der Datenbank des Biodiversitätsatlas inklusive ihrem Sprachcode, der ebenfalls ISO 639-1 entspricht, abgespeichert.120 Um eine Spezies auszuwählen, wird eine Liste der vorhandenen Spezies inklusive deren Populärnamen benötigt. Bezüglich der Populärnamen hat man die Möglichkeit, den Ländercode mitzuschicken. Dann würde man die Namen allein in der angegebenen Sprache erhalten; oder man erhält die gesamte Liste der Populärnamen und die Auswahl der Sprache wird durch die mobile Anwendung durchgeführt. Die zweite Lösung stellt den Vorteil dar, dass, wenn Spezies gespeichert werden, alle Populärnamen lokal vorhanden sind. Dadurch kann die Mehrsprachigkeit, falls dem Smartphone kein Zugang zum Internet vorliegt, weiterhin gewährleistet werden. Außerdem entstehen keine Probleme, wenn der Nutzer die Sprache in den lokalen Einstellungen des Geräts ändert. Daher werden alle Populärnamen vom Server abgerufen und die Auswahl der Sprache durch die Anwendung durchgeführt. Ist der Populärname nicht in der eingestellten Sprache vorhanden, wird (wie auch bei den Sprachdateien) die englische Bezeichnung angezeigt. Sofern auch diese nicht zur Verfügung steht, wird kein Populärname dargestellt. 5.3.5. Datenspeicherung Es gibt verschiedene Möglichkeiten, Daten unter Android persistent zu speichern. Welche dabei die passende ist, hängt davon ab, in welcher Form man die Daten speichern möchte, ob sie auch für andere Anwendungen zugänglich sein sollen und wie viel Platz die Daten einnehmen. 118 119 Vergleiche [Android Developers-13]. Vergleiche [Android Developers-14]. 120 Vergleiche [Genzel, 2011], S. 48. Realisierungskonzept 60 Methode Beschreibung Shared Preferences Speichern von persistenten Schlüssel-Wert-Paaren primitiver Datentypen, die innerhalb einer Anwendung verfügbar sind. Interner Speicher Speichern von Dateien im Gerätespeicher. Standardmäßig werden sie privat gespeichert und gelöscht, wenn der Nutzer die Anwendung deinstalliert. Alternativ können Daten kurzzeitig im Cache abgelegt werden. Externer Speicher Speichern von Dateien im öffentlichen Speicher des Gerätes oder einem austauschbaren Speicher (wie SD-Karten). Die Dateien können durch andere Anwendungen genutzt werden. SQLite Datenbank Android unterstützt von Haus aus die Open Source-Datenbank SQLite. Allein die Anwendung kann auf sie zugreifen. Online Speicherung Daten über eine Netzwerkverbindung an einen Server senden und dort abrufen. Tabelle 2: Methoden zur Speicherung von Daten in Android 121 In sechs Fällen ist in der mobilen Anwendung eine Speicherung von Daten notwendig. Vier verwenden die Datenbank, weil sie komplexere Daten beinhalten und nur für die Anwendung zugänglich sein sollen. Ein Fund wird mit Abschluss des Erfassungsvorgangs eines Ortes inklusive aller seiner Informationen, wie dem Fundort, der Spezies und Referenzen zu den Bildern gespeichert. Da bei einem Fehler die durch den Server gesendete Identifikationsnummer nicht eindeutig ist (entweder 0 oder -1), kann diese nicht als Primärschlüssel verwendet werden. Spezies und Fundorte können unabhängig von der Meldung eines Fundes in der Datenbank als Favoriten gespeichert werden. Dazu steht dem Nutzer eine Funktion innerhalb der jeweiligen Activities zur Verfügung, durch die er vorhandene Spezies und Orte in der Datenbank speichern kann. Auf diese Weise kann er auch offline auf sie zugreifen. Für die Erfassung von Fundorten müssen die Länder vorliegen. Diese befinden sich bereits zum Zeitpunkt der Auslieferung der Anwendung innerhalb der Datenbank. Um sie mit einem Ort zu verknüpfen, werden der Identifikationscode und der Name des Landes gespeichert. 121 Vergleiche [Android Developers-15]. Realisierungskonzept 61 Die Erfassung von Nutzerinformationen wurde bereits in Kapitel 5.3.3 beschrieben. Diese müssen ebenfalls in der Datenbank hinterlegt werden, damit sie dem abgespeicherten Fund zugeordnet werden können. Dies unterstützt die Verwendung der Anwendungen auf einem Smartphone mit mehreren Accounts, auch wenn dieses Szenario eher unwahrscheinlich ist. Die Datenbank wird mit Hilfe des SQLite-Frameworks erstellt.122 Dabei wird über eine zu implementierende Unterklasse der Klasse SQLiteOpenHelper die Datenbank erstellt. Der Datenbankzugriff wird über einen ContentProvider durchgeführt. ContentProvider bilden neben Activities einen weiteren wichtigen Baustein in der Android-Architektur. Wie der Name bereits verdeutlicht, werden über ContentProvider Daten abgefragt. Durch sie wird ein Mechanismus ermöglicht, der die Daten vor fremdem Zugriff schützt. Nutzerspezifische Einstellungen werden über Shared Preferences gespeichert und allen Komponenten der Anwendung zugänglich gemacht. Dieses Thema wird im nächsten Kapitel ausführlicher beschrieben. Zu guter Letzt werden Bilder durch die Kameraanwendung im externen Speicher gespeichert. Von dort können sie durch die mobile Anwendung des Biodiversitätsatlas wieder abgerufen und einem Ort zugeordnet werden. 5.3.6. Verwaltung der Daten Die in der Datenbank gespeicherten Funde werden in einer separaten Acitivity angezeigt, sodass der Nutzer seine Meldungen nachvollziehen kann. Außerdem dient dieser Bereich dazu, dass noch nicht versandte Funde geschickt werden können. Einzelne Funde können außerdem gelöscht werden. Die darin enthaltenen Spezies und Orte werden jedoch nicht entfernt, sodass sie offline vorhanden sind und gegebenenfalls erneut eingesetzt werden können. 5.3.7. Benutzerspezifische Konfiguration Um ein Optionsmenü in einer Anwendung zu realisieren, bietet Android ein Framework an, welches durch eine spezielle Activity, die PreferenceActivity, und das Speichern von SharedPreferences ein Optionsmenü kreiert. 123 Innerhalb des Menüs setzt der Nutzer Standardwerte zur Erfassung von Funden und Fundorten. Für Funde macht es Sinn benutzerdefinierte Standardwerte für die Verfremdung einer Koordinate, der Veröffentlichung 122 123 Vergleiche [Android Developers-15]. Vergleiche [Android Developers-16]. Realisierungskonzept 62 eines Kommentares sowie das Kommentar selbst festgelegt werden. Für die Fundorte bedeutet das Setzen von Standardwerten ebenso den Kommentar und die Entscheidung, ob dieser veröffentlicht werden darf sowie das Land, welches für jeden Fund voreingestellt werden soll. Durch einen Button hat der Nutzer die Möglichkeit, die eingetragenen Werte auf ihre Standardeinstellungen zurückzusetzen. 5.4. Grenzen und Einschränkungen Innerhalb dieses Kapitels wurde das Konzept des wesentlichen Kerns der Anwendung vorgestellt. Diese bildet die Basis für die Realisierung des ersten Prototypen. Zweitrangige Anforderungen, die vorerst nicht relevant sind, wurden nicht in das Konzept eingeschlossen. Sie sind jedoch für spätere Weiterentwicklungen nicht zu vernachlässigen. Dies betrifft zum einen die manuelle Aktualisierung von Kartendaten. Die Bibliothek osmdroid bietet in dem Zusammenhang eine automatisierte Aktualisierung des Tile-Caches. Eine durch den Nutzer gestartete Aktualisierung der Tiledaten mit der Eingrenzung des durch den Atlas abgedeckten Gebietes in verschiedenen Zoomstufen, bildet eine sinnvolle Erweiterung der mobilen Anwendung. Zum anderen wird die Filterung von Orten und Spezies nicht berücksichtigt. Dieses Verfahren benötigt eine komplexere Kommunikation zwischen dem Client und dem Server. Zusätzlich werden eventuell auch weitere Bildschirmseiten benötigt, z. B. für die Eingrenzung der Spezies, die der Nutzer durchführen muss. Die Anzeige und Bestätigung von Nutzungsbedingungen wurden vorerst nicht in das Konzept eingebunden. Für die öffentliche Verteilung der Anwendung ist es jedoch sehr wichtig, dass die Nutzer diesen Bedingungen zustimmen müssen. Die mobile Anwendung soll für mehrere Biodiversitätsatlanten eingesetzt werden. Das Konzept berücksichtigt keine Konfiguration der Anwendung, da dies eine weitere Entwicklung des Systems darstellt. Realisierung 63 6. Realisierung In diesem Kapitel wird der realisierte Prototyp vorgestellt. Der Fokus der Entwicklung wurde auf den inneren Kern der mobilen Anwendung gelegt. Dies sind die Erfassung von Funden inklusive der Aufnahme von Bildern sowie die Erfassung eines neuen Fundortes und dessen Visualisierung mittels GIS. Dem Prototyp liegt sowohl ein vollständiger englischer als auch ein deutscher Sprachsatz vor. In der folgenden Präsentation der realisierten Lösung werden die deutschen Bezeichnungen verwendet. Es soll jedoch darauf verwiesen werden, dass dazu jeweils englische Äquivalente existieren. Neben dem Prototyp der mobilen Anwendung wurde ein Server entwickelt, um die Anwendung zu testen. Der Server fügt Daten in die Datenbank ein oder liest sie aus, generiert anschließend Objekte, die an Client gesendet werden und nimmt seine Anfragen entgegen. 6.1. Aufbau des Android-Projektes Die umgesetzte Lösung enthält die in Abbildung 22 dargestellte Projektstruktur. Das Projekt beinhaltet neben dem im Verzeichnis src erstellten Quellcode weitere wichtige Androidspezifische Ordner. Im Verzeichnis gen befindet sich die automatisch generierte Java-Klasse hsb.mobile.android.R. Über diese Datei wird aus dem Quellcode heraus auf alle Ressourcen zugegriffen, die sich im Ordner res befinden. Realisierung 64 Abbildung 22: Struktur des Android-Projektes Neben dem Android SDK und der osmdroid API, muss die Bibliothek Simple Logging Facade for Java (SLF4J) dem Projekt hinzugefügt werden. Die SLF4J API wird durch osmdroid für Log-Ausgaben genutzt. Eine wichtige Datei ist das Android Manifest. Dieses beinhaltet wesentliche Informationen über die Anwendung, die dem System vor der Ausführung des Programms mitgeteilt werden. Über den XML-Tag <uses-sdk android:minSdkVersion="8" /> wird angegeben, dass mindestens das Android SDK 2.2 verwendet werden soll. Ältere Versionen werden daher nicht unterstützt. Für neue Android-Version heißt dies jedoch, dass sie die Anwendung ebenfalls installieren können. Des Weiteren müssen die Berechtigungen für den Internetzugriff, den Zugriff auf die Positionsabfrage sowie auf den externen Speicher eingetragen werden, welche die Anwendung zur Ausführung der Funktionen benötigt. Dies wird über <uses-permission>-Tag ausgeführt. Außerdem wird mittels <uses-feature android:name="android.hardware.camera" android:required="false" /> festgelegt, dass die Anwendung eine Kamera nutzt, diese jedoch u. U. nicht notwendig ist. Diese Informationen Realisierung 65 werden vor der Installation dem Nutzer angezeigt. Daraufhin kann dieser entscheiden, ob er die Anwendung installieren und ihr die geforderten Berechtigungen damit übergibt. Als nächstes werden in der Manifest-Datei innerhalb des <application>-Tags alle Activities, Services und ContentProvider aufgelistet, die zu der Anwendung gehören. Erst wenn sie dort deklariert wurden, sind sie für das System auffindbar. Weiterhin muss eine Activity als Startpunkt der Anwendung festgelegt werden. Dies ist für die hier realisierte Anwendung das Dashboard, welches mit einem Intent-Filter dem System angezeigt wird. Durch Intent-Filter wird mitgeteilt, dass eine Komponente eine bestimmte Aktion (wie in diesem Fall android.intent.action.MAIN) ausführen kann. Dazu kann zusätzlich eine Kategorie bestimmt werden, in die ein Intent ebenfalls eingeteilt werden kann (wie hier android.intent.category.LAUNCHER). Activities, die nur innerhalb der Anwendung aufgerufen werden sollen, benötigen keine Intent-Filter. <activity android:label="@string/app_name" android:name=".biodiv.HomeDashboard" android:launchMode="singleInstance" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> Abbildung 23: Deklarierung der Main-Activity HomeDashboard 6.2. Erfassung eines Fundes Zur Erfassung eines Fundes wurde die RecordNewActivity erstellt, über die die benötigten Informationen, wie in Kapitel 5.3.1 beschrieben, erfasst und in der diese dargestellt werden (siehe Abbildung 24). Die Activity wird über den Button „Neuer Fund“ aufgerufen. Realisierung 66 Abbildung 24: RecordNewActivity Der Fund wurde in mehrere Java-Klassen abgebildet (siehe Abbildung 24). Innerhalb dieser Klassen werden die für die Erfassung eines Fundes benötigten Informationen gespeichert. Bei der Modellierung wurde an dieser Stelle die logische Einheit der Messung (Klasse Measurement) mit berücksichtigt. Sie bildet hier die Verknüpfung zwischen einem Datum und dem Fundort. Eine weitere Besonderheit ist das Interface RecordQuality. Dieses definiert die Werte für eine direkte Sichtung und einen indirekten Nachweis. Die Klasse Record implementiert dieses Interface und überschreibt die Methoden zum Setzen des jeweiligen Wertes. Die Klassen liegen sowohl dem Client als auch dem Server vor. Dadurch ist es möglich, dass der Client dem Server diese Objekte direkt zuschickt. Es wird dazu innerhalb der ServiceKlasse RecordHandler ein statisches Record-Objekt initiiert und verwaltet. Der Service wird durch den ersten Aufruf der RecordNewActivity gestartet. Jede Information, die der Nutzer innerhalb der RecordNewActivity zu einem Fund ermittelt, wird in diesem Objekt gespeichert. Realisierung 67 Es wurde ein Service für diese Aufgabe gewählt, da durch den getrennten Lebenslauf des Services zur Activity der Fund über die Anwendung hinweg als instanziiertes Objekt bestehen bleibt. Erst nachdem der Nutzer den Fund abgeschickt hat, wird der Service gestoppt und das Record-Objekt ist nicht mehr vorhanden. Abbildung 25: Strukturierung eines Fundes mittels Java-Klassen 6.3. Auswahl einer Spezies Eine Spezies wird über die SpeciesListActivity ausgewählt. Diese visualisiert eine scrollbare Liste, aus der Elemente ausgewählt werden können. Über die Service-Klasse ClientHandler des Pakets hsb.mobile.android.services wird die Kommunikation mit dem Server gesteuert. Der ClientHandler liefert für die Auswahl einer Spezies nach Anfrage an den Server ein Species-Array (siehe Abbildung 25, Klasse Species) zurück. Mittels eines Adapters werden die Namen der Spezies in die Liste eingefügt. Daraus kann anschließend eine Spezies zu einem Fund daraus ausgewählt werden. Die Listenansicht für Fundorte wird ebenfalls auf diese Weise umgesetzt. Realisierung 68 Abbildung 26: SpeciesLIstActivity Ferner wird der Nutzer in der Listenansicht durch eine Suchfunktion unterstützt. Diese filtert momentan die Anfänge der wissenschaftlichen Namen. Eine sinnvolle Ergänzung wäre die Suche nach Übereinstimmungen auch innerhalb der Wörter. 6.4. Einbindung von OSM Für die Visualisierung der Auswahl eines Fundortes mittels der GIS-Karte wurde die durch osmdroid gelieferte MapView-Widget durch die Klasse OSMBaseMap aus dem Paket hsb.mobile.android.maps überschrieben. Diese Klasse fügt einen Layer der OSM-Karte hinzu, in der die durch die Activity hsb.mobile.android.biodiv.location.LocationMapActivity ermittelte GPS-Koordinate angezeigt wird. Durch einen Klick auf diesen Marker wird ein Dialog zur Erfassung eines neuen Fundortes gestartet. Die Koordinate wird dabei über den Intent, mit dem die neue Activity aufgerufen wird, übergeben. Der Nutzer kann an dieser Stelle den neuen Fundort eintragen. Um neben der aktuellen Koordinate auch die vorhandenen Fundorte inklusive ihrer Namen anzuzeigen, wird die Klasse OSMLocationMap verwendet. Diese erbt von der Klasse OSMBaseMap und wird als Widget in die Layout-Datei der Activity eingebunden. Über sie wird ein weiterer Layer eingebunden, der die Marker und die dazugehörigen Namen anzeigt. Durch einen Klick auf einen dieser Marker wird der ausgewählte Ort dem Fund hinzugefügt. Realisierung 69 Abbildung 27: LocationMapActivity 6.5. Ermittlung der GPS-Koordinate Die GPS-Koordinate wird über den LocationManager abgerufen. Dieser wird mit dem Befehl getSystemService(Context.LOCATION_SERVICE) aufgerufen. Da die Positionsermittlung über Wifi schneller ist, als die über GPS, wird als erstes nach einer Koordinate über diese Dienst gesucht. Ist es nicht vorhanden, wird versucht, eine Koordinate über den GPS-Sensor zu empfangen. Dabei wird zuerst der LocationManager aufgefordert, nach neuen Koordinaten über GPS zu suchen. Solange dieser sucht, wird nachgesehen, ob die zuletzt abgerufene Position noch vorhanden ist. Ist sie es, erscheint ein neuer Marker auf der Karte. Sobald über den LocationManager eine neue Koordinate gefunden wurde, wird die Position des Markers geändert. Realisierung 70 public void initGPSCall() { this.locationManager.requestLocationUpdates(GPS, 0, 0, this); android.location.Location lastKnownLocation = this.locationManager.getLastKnownLocation(GPS); if (lastKnownLocation != null) { showCurrentPositionOnMap(lastKnownLocation); } ... } Abbildung 28: Initialisierung der Ermittlung der aktuellen Position über GPS 6.6. Meldung von Bildern Für die Aufnahme von Bildern steht ein Button auf dem Dashboard der Anwendung zur Verfügung, der die externe Kameraanwendung aufruft. Dies geschieht mittels eines impliziten Intents, welcher dem System anhand des Namens der Aktion mitteilt, welche Komponente aufgerufen werden soll. Implizite Intents werden für den Aufruf von Anwendungen außerhalb der eigenen Anwendung eingesetzt. Neben einer gewünschten Aktion können sie ebenfalls eine Anwendung anhand einer Kategorie oder bestimmten Daten (durch Uri und MIME-Typ) starten. Das System sucht daraufhin nach passenden Intent-Filtern, die die Aktion, die Kategorie oder die Daten filtern. Dadurch geben sie dem System zu verstehen, dass sie geeignet sind, die geforderte Aufgabe zu erfüllen. Die IntentFilter werden im Manifest der jeweiligen Anwendung für Activities, Services und Broadcast Receiver definiert. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); Abbildung 29: Aufruf der Kamerafunktion Um die Kameraanwendung aufzurufen, wird MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA dem Intent übergeben. Mit die Aktion dem Befehl startActivity(intent) wird der Intent an das System gesendet. Alternativ hätte die Aktion MediaStore.ACTION_IMAGE_CAPTURE verwendet werden können. Die Kameraanwendung würde dann jedoch lediglich ein Bild aufnehmen. Speichert man das Bild würde die Kameraanwendung beendet werden und der Dateipfad des Bildes an die Anwendung, die die Kameraanwendung aufgerufen hat, zurückgeschickt werden. Der Intent müsste in diesem Fall mit der Methode startActivityForResult(intent, REQUEST_CODE) abgeschickt werden. Ein Beispiel dafür zeigt der Aufruf der Bildergalerie für die Auswahl eines Bildes, um es dem Fund zuzuordnen. Realisierung 71 Mittels der Konstanten Intent.ACTION_GET_CONTENT wird eine Activity aufgerufen, in der der Nutzer eine Datei auswählen kann. Damit ausschließlich Bilder angezeigt werden, wird zusätzlich der MIME-Typ angegeben. Der Aufruf der Aktion verursacht auch, dass der Nutzer aus der Activity, über die ein Bild ausgewählt werden kann, die Kamerafunktion aufrufen kann, um neue Bilder zu erstellen. Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, REQUEST_CODE_IMAGE); Abbildung 30: Aufruf der Bildergalerie Wählt der Nutzer ein Bild aus, wird ein Intent erstellt, dem die Uri des Bildes übergeben wird. Der Intent wird an die RecordNewActivity zurückgesendet, die die Uri in der CallbackMethode onActivityResult() ausliest. Es wird daraufhin eine neue Datei angelegt, welche zentral im RecordHandler gespeichert wird. Anschließend wird das Layout erneut geladen, sodass das neue Bild angezeigt wird. if (requestCode == REQUEST_CODE_IMAGE && resultCode == RESULT_OK) { Uri selectedImageUri = data.getData(); String selectedImagePath = getPath(selectedImageUri); File file = new File(selectedImagePath); mService.addImage(file); createLayout(); } Abbildung 31: Auswertung des Intents (Bildergalerie) Das Füllen des GridViews, in dem die Bilder angeordnet werden, geschieht über einen Adapter, der für jede Datei in der ArrayList des RecordService ein ImageView-Widget instanziiert und diesem den Pfad der gespeicherten Datei zuweist. Nachdem dies durchgeführt wurde, kann der Nutzer das Bild in der Activity sehen (siehe Abbildung 3232). Einmal zugeordnete Bilder können durch langes Tippen auf das Bild wieder entfernt werden. Realisierung 72 Abbildung 32: Zuordnung von Bildern zu einem Fund Bilder werden, wie im Konzept beschrieben, unabhängig vom Fund versendet, da sie nacheinander als Datei gesendet werden. Das Senden geschieht ebenfalls über den ClientHandler. Für jedes Bild wird dafür die Verbindung zum Server aufgebaut und diesem zuerst ein String geschickt, anhand dessen er sich auf den Empfang des Bildes vorbereiten kann (siehe Abbildung 33). Dem festen String „sendImage“ wird direkt die vorher empfangene RecordID angehängt. Anschließend folgen jeweils nach einem Doppelpunkt der Dateiname sowie die Dateigröße. Konnte ein Bild erfolgreich übertragen werden, wird durch den ClientHandler eine „1“ zurückgeliegert, andernfalls eine „0“. Der Nutzer bekommt eine Meldung angezeigt, in der ihm mitgeteilt wird, wie viele Bilder gesendet werden konnten. „sendImage“ newRecordID : Dateiname : Dateigröße Abbildung 33: Struktur des Anforderungsstrings zum Senden von Bildern Realisierung 73 6.7. Datenbank Für die Speicherung von Funden, Spezies, Orten und den Nutzerinformationen wurde ein Datenbankmodell erstellt (siehe Abbildung 34). Dieses ist eine kleinere Version des Datenbankmodells des Biodiversitätsatlas, welches nur die Informationen abdeckt, die innerhalb der Anwendung verwendet werden und gespeichert werden sollen. SQLite kann nur mit einfachen Datentypen wird INTEGER oder TEXT umgehen. Daher wurden die Datentypen dementsprechend vereinfacht. Abbildung 34: Datenbankmodell Die Datenbank wird mit Hilfe der Klasse hsb.mobile.android.biodiv.db.BiodivDatabase angelegt. Diese ist von der Klasse SQLiteOpenHelper abgeleitet und muss dadurch eine onCreate-Methode, in der die Tabellen der Datenbank bei Instanziierung der Klasse angelegt werden, sowie eine onUpgrade-Methode implementieren, die aufgerufen wird, sobald sich die Versionsnummer der Datenbank ändert. Wird eine neue Version der Anwendung ausgeliefert, deren Versionsnummer der Datenbank mit der der noch installierten Realisierung 74 übereinstimmt, wird die Datenbank nicht überschrieben. Die dort gespeicherten Daten sind danach immer noch vorhanden. Für den Falls, dass es eine neue Datenbankversion gibt, wird die alte samt Daten gelöscht, sofern kein Mechanismus in der onUpgrade-Methode vorliegt, der die Daten überträgt. Dieser Mechanismus liegt der Anwendung bislang nicht vor. Außerdem konnte eine vollständige Umsetzung des in Abbildung 34 vorgestellten Datenbankmodells bislang aus zeitlichen Gründen nicht durchgeführt werden. Bereits gespeichert werden die Funde in der Tabelle bio_record. Für den Zugriff auf die Datenbank wurde die Klasse hsb.mobile.android.biodiv.db.BiodivDBProvider erstellt. Dieser ist ein ContentProvider, dem über in der Klasse definierte Uris mitgeteilt wird, auf welche Tabellen der Datenbank zugegriffen werden soll und ob Daten eingefügt oder abgerufen werden. Bspw. zeigt Abbildung 35 das Einfügen eines neuen Fund-Eintrages in die Datenbank. Mit dem letzten Aufruf wird die insert-Methode des Providers aufgerufen. Um Aufträge entgegennehmen zu können, muss der BiodivDBProvider dafür im Android Manifest deklariert werden. ContentValues recordData = new ContentValues(); // RecordID recordData.put( BiodivDatabase.COL_RECORDID, newRecord.id); ... getContentResolver().insert( BiodivDBProvider.CONTENT_URI_RECORD, recordData); Abbildung 35: Einfügen eines Datensatzes in die Datenbank In der Klasse RecordLIstActivity ist bereits eine Methode vorhanden, die gespeicherte Datensätze wieder abruft. Dazu müssen zuerst die zu ermittelnden Spalten definiert werden. Über die Konstante BiodivDatabase.COL_RECORD_COMBINE wird eine aus den Feldern recordid, speciesid, locationid und measurementdate generierte Spalte abgerufen.124 Mittels der Funktion managedQuery() werden die Spaltennamen dann an den ContentProvider geschickt, welche die abgerufenen Daten in einem Cursor-Objekt zurückliefert. 124 Die Felder speciesid und locationid werden in dieser Version als Textattribute erzeugt, sodass dort die Namen von Spezies und Ort abgespeichert werden. Diese sollten später in den Tabellen bio_species und bio_location hinterlegt werden. Realisierung 75 String[] projection = { BiodivDatabase.ID, BiodivDatabase.COL_RECORD_COMBINE }; ... Cursor records = this.managedQuery( BiodivDBProvider.CONTENT_URI_RECORD, projection, null, null, null); Abbildung 36: Abrufen von Datenbankeinträgen Zusammenfassung und Ausblick 76 7. Zusammenfassung und Ausblick Im Rahmen dieser Bachelorarbeit wurde ein erster Prototyp als native Anwendung für Android entwickelt, der die grundlegende Funktion – die Erfassung eines Fundes inklusive Bildern und unter Einsatz von GIS – ermöglicht und bereits für Arbeiten im Freiland eingesetzt werden kann. Dafür wurden in einem ersten Vorgang die Anforderungen an das System analysiert. Eine Recherche verhalf weiterhin dabei, die aktuellen technologischen Möglichkeiten zu validieren und in Kombination mit den Anforderungen ein umfassendes Konzept zur Realisierung des Systems zu erstellen. Neben der zentralen Funktion, Daten für einen Biodiversitätsatlas direkt nach der Sichtung zu erheben und an einen Server zu schicken, was vollständig umgesetzt wurde, wurden weitere Funktionen (wie die Verwaltung von Funden oder zum Einsatz der Anwendung im Offlinebetrieb) ebenfalls umgesetzt. Im zeitlichen Rahmen war die Realisierung weiterer Anforderungen wie der Nutzerauthentifizierung, die Darstellung von Populärnamen von Spezies und weiterführende Maßnahmen zur lokalen Datenspeicherung nicht möglich. Bei ihnen handelt es sich jedoch um wichtige Funktionen, die für den Produktivbetrieb der Anwendung benötigt werden. Anhand des Realisierungskonzeptes existiert dafür ein Vorgehen, welches weiterhin zur Umsetzung der mobilen Anwendung verwendet werden kann und sich in die bislang erstellte Lösung eingliedert. Daneben sind einige Möglichkeiten zur Weiterentwicklung des Biodiversitätsatlas entstanden. Darin eingeschlossen ist vor allem die Implementierung eines Servers, der Anfragen des neuen Clients bearbeitet. Der erstellte Testserver bietet dafür bereits erste Grundlagen. Wie jedoch auch angesprochen wurde, sollte die Kommunikation zwischen dem Client und dem Server eingehend geprüft und entsprechende Technologien validiert werden. Ein modularer Austausch wurde dafür bereits umgesetzt. Der neue Server sollte als Plugin für die bestehende Joomla!-Komponente entwickelt werden. Dadurch steht es jeder Redaktion eines Biodiversitätsatlas frei, den mobilen Client als zusätzliche Möglichkeit für die Erfassung von Funden anzubieten. Außerdem wird ein Konfigurationstool für die mobile Anwendung benötigt, wodurch sie individuell für die bestehenden Biodiversitätsatlanten eingesetzt werden kann. Ferner ist die Dokumentation von Funden mit Bildern bislang nicht für den Biodiversitätsatlas vorgesehen. Diese Möglichkeit besteht lediglich für die Dokumentation von Spezies. Anhand dieses Beispiels sollte jedoch eine zusätzliche Bilderverwaltung für Funde entwickelt werden. Dasselbe gilt für die Erfassung einer Koordinate zu einem Fund. Die Speicherung einer solchen ist bislang nicht im Datenmodell enthalten. Änderungen an der Datenbank erfordern 77 außerdem, dass die bestehende Joomla!-Komponente des Biodiversitätsatlas erweitert werden sollte. Dies ist insbesondere für das Backend sinnvoll, um neue Funde zu validieren. Anhang A Anhang A Datenträger 1. Bachelor-Thesis – Digitale Fassung der vorliegenden Arbeit 2. Biodiversity Atlas (Ordner) – Quellcode der mobilen Anwendung 3. SocketServer – Quellcode des SocketServers 78 Literaturverzeichnis 79 Literaturverzeichnis [Android Design-1] Android Design: Welcome. http://developer.android.com/design/index.html, zuletzt Online: aufgerufen am 30.01.2012. [Android Design-2] Android Design: Action Bar. Online: http://developer.android.com/design/patterns/actionbar.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-1] Android Developers: What is Android?. http://developer.android.com/guide/basics/what-is-android.html, Online: 27.01.2012, zuletzt aufgerufen am 29.01.2012. [Android Developers-2] Android Developers: Build.VERSION_CODES. Online: http://developer.android.com/reference/android/os/Build.VERSION_CODES.ht ml, 27.01.2012, zuletzt aufgerufen am 29.01.2012. [Android Developers-3] Android Developers: Platform Versions. Online: http://developer.android.com/resources/dashboard/platform-versions.html, zuletzt aufgerufen am 29.01.2012. [Android Developers-4] Android Developers: Publishing Overview. Online: http://developer.android.com/guide/publishing/publishing_overview.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-5] Android Developers: Android API Levels. Online: http://developer.android.com/guide/appendix/api-levels.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-6] Android Developers: Installing http://developer.android.com/sdk/installing.html, the zuletzt SDK. Online: aufgerufen am 30.01.2012. [Android Developers-7] Android Developers: Activities. Online: http://developer.android.com/guide/topics/ui/index.html, zuletzt aufgerufen am 30.01.2012. Literaturverzeichnis [Android Developers-8] 80 Android Developers: User Interface. Online: http://developer.android.com/guide/topics/fundamentals/activities.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-9] Android Developers: Activities - Tasks and Back Stack. Online: http://developer.android.com/guide/topics/fundamentals/tasks-and-backstack.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-10] Android Developers: Search. Online: http://developer.android.com/guide/topics/search/index.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-11] Android Developers: Designing for Responsiveness. Online: http://developer.android.com/guide/practices/design/responsiveness.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-12] Android Developers: Services. Online: http://developer.android.com/guide/topics/fundamentals/services.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-13] Android Developers: Localization. Online: http://developer.android.com/guide/topics/resources/localization.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-14] Android Developers: Locale. Online: http://developer.android.com/reference/java/util/Locale.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-15] Android Developers: Data Storage. Online: http://developer.android.com/guide/topics/data/data-storage.html, zuletzt aufgerufen am 30.01.2012. [Android Developers-16] Android Developers: Preference Activity. Online: http://developer.android.com/reference/android/preference/PreferenceActivity.h tml, zuletzt aufgerufen am 30.01.2012. [Android Open Source Project] Android Open Source Project: Licenses. Online: http://source.android.com/source/licenses.html, 29.01.2012. zuletzt aufgerufen am Literaturverzeichnis 81 [Android UI Patterns] Android UI Design Patterns: What Android Apps Should Look like?. Online: http://www.androiduipatterns.com/2011/12/how-should-android-apps- look-like_16.html, zuletzt aufgerufen am 30.01.2012. [Apple] Apple: iOS 5, Die neuen Features in iOS 5. Online: http://www.apple.com/de/ios/features.html, zuletzt aufgerufen am 29.01.2012. [Apple Developer-1] Apple Developer: Download Xcode 4. Online: http://developer.apple.com/xcode/index.php, zuletzt aufgerufen am 29.01.2012. [Apple Developer-2] Apple Developer: Register as an Apple Developer. Online: http://developer.apple.com/programs/register/, zuletzt aufgerufen am 29.01.2012. [Apple Developer-3] Apple Developer: iOS Dev Center. Online: http://developer.apple.com/support/ios/ios-dev-center.html, zuletzt aufgerufen am 29.01.2012. [Apple Developer-4] Apple Developer: Develop on your Mac, iOS Developer Program. Online: http://developer.apple.com/programs/ios/develop.html, zuletzt aufgerufen am 29.01.2012. [Apple Developer-5] Apple Developer: Test on your iPad, iPhone, and iPod touch, iOS Developer Program. Online: http://developer.apple.com/programs/ios/test.html, zuletzt aufgerufen am 29.01.2012. [Apple Developer-6] Apple Developer: Program Enrollment, iOS Developer Program. Online: http://developer.apple.com/support/ios/enrollment.html, zuletzt aufgerufen am 29.01.2012. [Apple Developer-7] Apple Developer: App Store Review Guidelines and Mac App Store Review Guidelines. Online: http://developer.apple.com/appstore/guidelines.html, zuletzt aufgerufen am 30.01.2012. [AppsLab] The AppsLab: Website vs. Web http://theappslab.com/2010/11/12/website-vs-web-app/, App?. Online: 12.11.2012, zuletzt aufgerufen am 30.01.2012. [Becker, 2009] Arno Becker, Marcus Pant: Android – Grundlagen und Programmierung. dpunkt.verlag GmbH, 1. Auflage Heidelberg 2009. Literaturverzeichnis [Bitkom] 82 Bitkom: Bitkom zum Handymarkt. http://www.bitkom.org/files/documents/BITKOM_Presseinfo_Handy_und_Smartphone-Markt_15_08_2011.pdf, 15.08.2011, zuletzt aufgerufen am 29.01.2012. [cocoate] cocoate.com, Hagen von Graf: Benutzer. Online: http://cocoate.com/de/joomla15/menue-site/benutzer, 18.12.2007, zuletzt aufgerufen am 30.01.2012. [Enough Software] Enough Software GmbH + Co. KG: Mobile Developer’s Guide to the Galaxy. Enough Software GmbH + Co. KG, 9. Auflage Bremen 2011. [Gartner-1] Gartner, Inc.: Gartner Says Sales of Mobile Devices Grew 5.6 Percent in Third Quarter of 2011; Smartphone Sales Increased 42 Percent. Online: http://www.gartner.com/it/page.jsp?id=1848514, 15.11.2011, zuletzt aufgerufen am 29.01.2012. [Gartner-2] Gartner, Inc.: Gartner Says Android to Command Nearly Half of Worldwide Smartphone Operating System Market by Year-End 2012. Online: http://www.gartner.com/it/page.jsp?id=1622614, 07.04.2011, zuletzt aufgerufen am 29.01.2012. [Genzel, 2011] Carl-Heinz Genzel: Web GIS Erweiterung des CMS Joomla! im Kontext der Biodiversität. Bremen 2011. [GFI] Gesellschaft für Ichthyologie e. V.: Digitaler Fischartenatlas von Deutschland und Österreich. Online: http://www.fischartenatlas.de/cms/, 24.01.2012, zuletzt aufgerufen am 30.01.2012. [Goldstein, 2011] Neil Goldstein, Tony Bove: iPadTM Application Development For Dummies©, Wiley Publishing, Inc., 2. Ausgabe Indiana, Indianapolis 2011. [Google] Google: Android Market for Developer, Developer Registration. Online: http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&ans wer=11346, zuletzt aufgerufen am 29.01.2012. [Google code] Google code: Google Projects for Android - Maps External Library. Online: http://code.google.com/intl/de-DE/android/add-ons/google-apis/mapsoverview.html, zuletzt aufgerufen am 30.01.2012. Literaturverzeichnis 83 [Google Project Hosting-1] Google Project Hosting: osmdroid - OpenStreetMap-Tools for Android. Online: http://code.google.com/p/osmdroid/, zuletzt aufgerufen am 30.01.2012. [Google Project Hosting-2] Google Project Hosting: osmdroid - How to include osmdroid source in your application. http://code.google.com/p/osmdroid/wiki/HowToUse, Online: 10.01.2011, zuletzt aufgerufen am 30.01.2012. [Google Project Hosting-3] Google Project Hosting: osmdroid - ModularTileProviderArchitecture. Online: code.google.com/p/osmdroid/wiki/ModularTileProviderArchitecture, zuletzt aufgerufen am 30.01.2012. [iOS Developer Library-1] iOS Developer Library: Introduction. Online: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Obje ctiveC/Introduction/introObjectiveC.html#//apple_ref/doc/uid/TP30001163, 12.10.2011, zuletzt aufgerufen am 29.01.2012. [iOS Developer Library-2] iOS Developer Library: What Is Cocoa?. Online: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Coco aFundamentals/WhatIsCocoa/WhatIsCocoa.html, 13.12.2010, zuletzt aufgerufen am 29.01.2012. [iOS Developer Library-3] iOS Developer Library: Getting Started., Online: http://developer.apple.com/library/ios/navigation/#section=Resource%20Types &topic=Getting%20Started, zuletzt aufgerufen am 30.01.2012. [Linnhoff-Popien, 2012] Claudia Linnhoff-Popien (Hrsg.), Stephan Verclas: Smart Mobile Apps – Mit Business-Apps ins Zeitalter mobiler Geschäftsprozesse. SpringerVerlag, Berlin Heidelberg 2012. [Louis, 2011] Dirk Louis, Peter Müller: Jetzt lerne ich Android – Der schnelle Einstieg in die Programmierung und Entwicklungsumgebung. Markt+Technik, München 2011. [MOBAC] Mobile Atlas Creator (MOBAC): Mobile Atlas Creator. Online: http://mobac.sourceforge.net/, zuletzt aufgerufen am 30.01.2012. [mobile Developer-1] mobile Developer, Oliver Brüning: jQuery Mobile, Teil 1: Einführung und Konzepte, jQuery macht mobil. Ausgabe 11/1011, S. 28-31. Literaturverzeichnis 84 [mobile Developer-2] mobile Developer, Rene Scholze: Vom Smartphone aufs Tablet. Ausgabe 11/1011, S. 56-61. [Mobile Joomla!] Mobile Joomla!: Take a tour. Online: http://www.mobilejoomla.com/tour.html, zuletzt aufgerufen am 30.01.2012. [Nielsen] Nielsen: Nielsen präsentiert erste Ergebnisse aus aktuellem Smartphone Insights Report für Deutschland. Online: http://www.nielsen.com/de/de/insights/presseseite/2011/nielsen-praesentierterste-ergebnisse-aus-aktuellem-smartphone-i.html, für das dritte Quartal 2011, Abruf: 29.01.2012. [Nokia-1] Nokia: Nokia Qt SDK. Online: http://doc.qt.nokia.com/nokia-qtsdk- 1.0.1/index.html, 2010, zuletzt aufgerufen am 29.01.2012. [Nokia-2] Nokia: We are Open!. Online: http://symbian.nokia.com/blog/2011/03/31/we-areopen/, 11.04.2011, zuletzt aufgerufen am 29.01.2012. [Nokia-3] Nokia: Terms and Conditions. Online: http://symbian.nokia.com/terms/, 2011, zuletzt aufgerufen am 29.01.2012. [Nokia-4] Nokia: Not Open Source, just Open for Business. Online: http://symbian.nokia.com/blog/2011/04/04/not-open-source-just-open-forbusiness/, 15.04.2011, zuletzt aufgerufen am 29.01.2012. [Nokia-5] Nokia: Nokia and Microsoft announce plans for a broad strategic partnership to build a new global ecosystem. Online: http://press.nokia.com/2011/02/11/nokia-and-microsoft-announce-plans-for-abroad-strategic-partnership-to-build-a-new-global-ecosystem/, 11.02.2011, zuletzt aufgerufen am 30.01.2012. [Nokia Developer-1] Nokia Developer: Symbian C++. Online: http://www.developer.nokia.com/Develop/Featured_Technologies/Symbian_C+ +/, zuletzt aufgerufen am 29.01.2012. [Nokia Developer-2] Nokia Developer: http://www.developer.nokia.com/Develop/Qt/, 29.01.2012. zuletzt Qt. aufgerufen Online: am Literaturverzeichnis 85 [Open Handset Alliance] Open Handset Alliance: What would it take to build a better mobile phone?. Online: http://www.openhandsetalliance.com, 18.07.2011, zuletzt aufgerufen am 29.01.2012. [OpenStreetMap] OpenStreetMap Wiki: Software/Mobile. Online: http://wiki.openstreetmap.org/wiki/Software/Mobilephones, 16.11.2011, , zuletzt aufgerufen am 30.01.2012. .[Qt Project] Qt Project: Contribution Agreement Version 1.1. Online: http://qt.project.org/legal/QtContributionLicenseAgreement.pdf, zuletzt aufgerufen am 29.01.2012. [Rodger, 2012] Richard Rodger: Beginning Mobile Application Development in the Cloud. John Wiley & Sons, Inc., Indianapolis, Indiana 2012. [Spiering, 2011] Markus Spiering, Sven Haiges: HTML5-Apps für iPhone und Android. Franzis Verlag GmbH, Poing 2011. [Symbian Blog] Symbian Blog: Can Symbian Operating System be used in Tablets?. Online: http://www.symbianblogs.com/symbian-blog/114-can-symbian- operating-system-be-used-in-tablets.html, zuletzt aufgerufen am 30.01.2012. [Symbian Foundation] Symbian Foundation: Symbian Foundation has transitioned to a licensing body. Online: http://licensing.symbian.org/, zuletzt aufgerufen am 29.01.2012. [Tanenbaum, 2009] Andrew S. Tanenbaum: Moderne Betriebssysteme. Pearson Studium, 3. Auflage München 2009. [Vision Mobile] Vision Mobile: Developer Economics 2011. Online: http://www.visionmobile.com/devecon.php, zuletzt aufgerufen am 29.01.2012. [W3C-1] W3C: Offline Web Applications. Online: http://www.w3.org/TR/offline-webapps/, 30.05.2008, zuletzt aufgerufen am 30.01.2012. [W3C-2] W3C: Geolocation API Specification. Online: http://www.w3.org/TR/geolocationAPI/, 07.09.2010, zuletzt aufgerufen am 30.01.2012. [W3C-3] W3C: Widget Packaging and XML Configuration. Online: http://www.w3.org/TR/widgets/, 27.09.2011, zuletzt aufgerufen am 30.01.2012. Literaturverzeichnis [Wikipedia] 86 Wikipedia: iOS version history. Online: http://en.wikipedia.org/wiki/IOS_version_history, 29.01.2012, zuletzt aufgerufen am 29.01.2012. Erklärung Erklärung Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig und ohne Benutzung anderer als der angegebenen Quellen angefertigt habe. Alle von mir wörtlich oder sinngemäß übernommenen Zitate wurden als solche gekennzeichnet. Die Arbeit hat in gleicher oder ähnlicher Form noch keiner anderen Prüfungsbehörde vorgelegen. Ort, Datum Unterschrift