thema der bachelorarbeit · 2015. 7. 23. · referat ziel dieser bachelorarbeit ist die entwicklung...
Post on 16-Nov-2020
0 Views
Preview:
TRANSCRIPT
BACHELORARBEIT
HerrMichael Jope
Entwicklung eines Web undAndroid gestuumltzten CRM Systems
2011
Fakultaumlt MathematikNaturwissenschaftenInformatik
BACHELORARBEIT
Entwicklung eines Web undAndroid gestuumltzten CRM Systems
AutorMichael Jope
StudiengangInformatik
SeminargruppeIF08w1-B
ErstpruumlferProf Dr Mario Geiszligler
ZweitpruumlferDipl Ing(FH) Felix Traumlgner
Mittweida 2011
Bibliografische Angaben
Jope Michael Entwicklung eines Web und Android gestuumltzten CRM Systems 47 Seiten 17 Ab-bildungen Hochschule Mittweida (FH) Fakultaumlt MathematikNaturwissenschaftenInformatik
Bachelorarbeit 2011
Referat
Ziel dieser Bachelorarbeit ist die Entwicklung eines CRM Systems Da fuumlr einzelne Ablaumlufe dieMobilitaumlt und Flexibilitaumlt im Vordergrund steht sind sie auf der Android Plattform umzusetzenDas Hauptsystem jedoch ist als Web Anwendung konzipiert
Die Umsetzung der vorgegebenen Ablaumlufe sowie die vorherige Planung bildet einen groszligen Teilder Arbeit
Da das Programm private Kundendaten verarbeitet sind einige Sicherheitsaspekte zu beruumlck-sichtigen Diese werden in der Arbeit vom Serverbetriebssystem bis hin zur skriptgesteuertenErstellung der Webinhalte betrachtet
Es werden einige Teile der Implementierung vorgestellt Diese Codeabschnitte zeichnen sichdurch im hohen Maszlige fuumlr den Systemablauf wichtige Implementierungen von Funktionen aus
Danksagung
An dieser Stelle moumlchte ich mich bei allen bedanken die mich bei der Anfertigung dieser ArbeitunterstuumltztenAllen voran bei meinem Betreuern Herrn Professor Dr Geiszligler und Herrn Dipl Ing(FH) FelixTraumlgner die mich fachkundig unterstuumltzten
Ein weiterer Dank gilt Herrn Andreas Lux der mir viele Ablaumlufe erlaumluterte und neue Ideen zuden Modulen Beitrug In gleichen Atemzug moumlchte ich mich bei Frau Anna Povazhuk fuumlr ihrerussisch Uumlbersetzung bedanken
Ein groszliges Dankeschoumln gilt auch allen Korrekturlesern
I
I Inhaltsverzeichnis
Inhaltsverzeichnis I
Abbildungsverzeichnis II
Tabellenverzeichnis III
Abkuumlrzungsverzeichnis IV
Quellcodeverzeichnis V
Vorwort VI
1 Einleitung 1
11 Aufgabenstellung 1
12 Motivation 1
2 Grundlagen 3
21 CRM System 3
22 Android Plattform 4
23 Web Plattform 5
24 Kommunikationsprotokolle 6
25 Installation und Konfiguration der Entwicklungs und Produktivsysteme 7
3 Grundablaumlufe vor Systemeinfuumlhrung 15
31 Adressen Sammeln 15
32 Auswahl der Interessenten zur Kontaktaufnahme 15
33 Planen der Veranstaltungsorte 15
34 Terminierung 16
4 Sytemgestuumltzte Ablaumlufe 17
41 Adressen Sammeln 17
42 Planen von Veranstaltungsorten 18
43 Auswahl der Kunden zur Kontaktaufnahme 18
5 Sicherheitsaspekte 21
51 Betriebssystem des Servers 21
52 Webserver und angegliederte Programme 23
53 Scripte die auf dem Webserver laufen 25
I
6 Umsetzung 27
61 Bestehende Loumlsungen 27
62 Use Cases 27
63 Datenbank 30
64 Implementierung des Hauptsystems 31
65 Abschnitte 34
66 Implementierung des Android Systems 37
7 Fazit 43
Literaturverzeichnis 45
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Fakultaumlt MathematikNaturwissenschaftenInformatik
BACHELORARBEIT
Entwicklung eines Web undAndroid gestuumltzten CRM Systems
AutorMichael Jope
StudiengangInformatik
SeminargruppeIF08w1-B
ErstpruumlferProf Dr Mario Geiszligler
ZweitpruumlferDipl Ing(FH) Felix Traumlgner
Mittweida 2011
Bibliografische Angaben
Jope Michael Entwicklung eines Web und Android gestuumltzten CRM Systems 47 Seiten 17 Ab-bildungen Hochschule Mittweida (FH) Fakultaumlt MathematikNaturwissenschaftenInformatik
Bachelorarbeit 2011
Referat
Ziel dieser Bachelorarbeit ist die Entwicklung eines CRM Systems Da fuumlr einzelne Ablaumlufe dieMobilitaumlt und Flexibilitaumlt im Vordergrund steht sind sie auf der Android Plattform umzusetzenDas Hauptsystem jedoch ist als Web Anwendung konzipiert
Die Umsetzung der vorgegebenen Ablaumlufe sowie die vorherige Planung bildet einen groszligen Teilder Arbeit
Da das Programm private Kundendaten verarbeitet sind einige Sicherheitsaspekte zu beruumlck-sichtigen Diese werden in der Arbeit vom Serverbetriebssystem bis hin zur skriptgesteuertenErstellung der Webinhalte betrachtet
Es werden einige Teile der Implementierung vorgestellt Diese Codeabschnitte zeichnen sichdurch im hohen Maszlige fuumlr den Systemablauf wichtige Implementierungen von Funktionen aus
Danksagung
An dieser Stelle moumlchte ich mich bei allen bedanken die mich bei der Anfertigung dieser ArbeitunterstuumltztenAllen voran bei meinem Betreuern Herrn Professor Dr Geiszligler und Herrn Dipl Ing(FH) FelixTraumlgner die mich fachkundig unterstuumltzten
Ein weiterer Dank gilt Herrn Andreas Lux der mir viele Ablaumlufe erlaumluterte und neue Ideen zuden Modulen Beitrug In gleichen Atemzug moumlchte ich mich bei Frau Anna Povazhuk fuumlr ihrerussisch Uumlbersetzung bedanken
Ein groszliges Dankeschoumln gilt auch allen Korrekturlesern
I
I Inhaltsverzeichnis
Inhaltsverzeichnis I
Abbildungsverzeichnis II
Tabellenverzeichnis III
Abkuumlrzungsverzeichnis IV
Quellcodeverzeichnis V
Vorwort VI
1 Einleitung 1
11 Aufgabenstellung 1
12 Motivation 1
2 Grundlagen 3
21 CRM System 3
22 Android Plattform 4
23 Web Plattform 5
24 Kommunikationsprotokolle 6
25 Installation und Konfiguration der Entwicklungs und Produktivsysteme 7
3 Grundablaumlufe vor Systemeinfuumlhrung 15
31 Adressen Sammeln 15
32 Auswahl der Interessenten zur Kontaktaufnahme 15
33 Planen der Veranstaltungsorte 15
34 Terminierung 16
4 Sytemgestuumltzte Ablaumlufe 17
41 Adressen Sammeln 17
42 Planen von Veranstaltungsorten 18
43 Auswahl der Kunden zur Kontaktaufnahme 18
5 Sicherheitsaspekte 21
51 Betriebssystem des Servers 21
52 Webserver und angegliederte Programme 23
53 Scripte die auf dem Webserver laufen 25
I
6 Umsetzung 27
61 Bestehende Loumlsungen 27
62 Use Cases 27
63 Datenbank 30
64 Implementierung des Hauptsystems 31
65 Abschnitte 34
66 Implementierung des Android Systems 37
7 Fazit 43
Literaturverzeichnis 45
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Bibliografische Angaben
Jope Michael Entwicklung eines Web und Android gestuumltzten CRM Systems 47 Seiten 17 Ab-bildungen Hochschule Mittweida (FH) Fakultaumlt MathematikNaturwissenschaftenInformatik
Bachelorarbeit 2011
Referat
Ziel dieser Bachelorarbeit ist die Entwicklung eines CRM Systems Da fuumlr einzelne Ablaumlufe dieMobilitaumlt und Flexibilitaumlt im Vordergrund steht sind sie auf der Android Plattform umzusetzenDas Hauptsystem jedoch ist als Web Anwendung konzipiert
Die Umsetzung der vorgegebenen Ablaumlufe sowie die vorherige Planung bildet einen groszligen Teilder Arbeit
Da das Programm private Kundendaten verarbeitet sind einige Sicherheitsaspekte zu beruumlck-sichtigen Diese werden in der Arbeit vom Serverbetriebssystem bis hin zur skriptgesteuertenErstellung der Webinhalte betrachtet
Es werden einige Teile der Implementierung vorgestellt Diese Codeabschnitte zeichnen sichdurch im hohen Maszlige fuumlr den Systemablauf wichtige Implementierungen von Funktionen aus
Danksagung
An dieser Stelle moumlchte ich mich bei allen bedanken die mich bei der Anfertigung dieser ArbeitunterstuumltztenAllen voran bei meinem Betreuern Herrn Professor Dr Geiszligler und Herrn Dipl Ing(FH) FelixTraumlgner die mich fachkundig unterstuumltzten
Ein weiterer Dank gilt Herrn Andreas Lux der mir viele Ablaumlufe erlaumluterte und neue Ideen zuden Modulen Beitrug In gleichen Atemzug moumlchte ich mich bei Frau Anna Povazhuk fuumlr ihrerussisch Uumlbersetzung bedanken
Ein groszliges Dankeschoumln gilt auch allen Korrekturlesern
I
I Inhaltsverzeichnis
Inhaltsverzeichnis I
Abbildungsverzeichnis II
Tabellenverzeichnis III
Abkuumlrzungsverzeichnis IV
Quellcodeverzeichnis V
Vorwort VI
1 Einleitung 1
11 Aufgabenstellung 1
12 Motivation 1
2 Grundlagen 3
21 CRM System 3
22 Android Plattform 4
23 Web Plattform 5
24 Kommunikationsprotokolle 6
25 Installation und Konfiguration der Entwicklungs und Produktivsysteme 7
3 Grundablaumlufe vor Systemeinfuumlhrung 15
31 Adressen Sammeln 15
32 Auswahl der Interessenten zur Kontaktaufnahme 15
33 Planen der Veranstaltungsorte 15
34 Terminierung 16
4 Sytemgestuumltzte Ablaumlufe 17
41 Adressen Sammeln 17
42 Planen von Veranstaltungsorten 18
43 Auswahl der Kunden zur Kontaktaufnahme 18
5 Sicherheitsaspekte 21
51 Betriebssystem des Servers 21
52 Webserver und angegliederte Programme 23
53 Scripte die auf dem Webserver laufen 25
I
6 Umsetzung 27
61 Bestehende Loumlsungen 27
62 Use Cases 27
63 Datenbank 30
64 Implementierung des Hauptsystems 31
65 Abschnitte 34
66 Implementierung des Android Systems 37
7 Fazit 43
Literaturverzeichnis 45
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Danksagung
An dieser Stelle moumlchte ich mich bei allen bedanken die mich bei der Anfertigung dieser ArbeitunterstuumltztenAllen voran bei meinem Betreuern Herrn Professor Dr Geiszligler und Herrn Dipl Ing(FH) FelixTraumlgner die mich fachkundig unterstuumltzten
Ein weiterer Dank gilt Herrn Andreas Lux der mir viele Ablaumlufe erlaumluterte und neue Ideen zuden Modulen Beitrug In gleichen Atemzug moumlchte ich mich bei Frau Anna Povazhuk fuumlr ihrerussisch Uumlbersetzung bedanken
Ein groszliges Dankeschoumln gilt auch allen Korrekturlesern
I
I Inhaltsverzeichnis
Inhaltsverzeichnis I
Abbildungsverzeichnis II
Tabellenverzeichnis III
Abkuumlrzungsverzeichnis IV
Quellcodeverzeichnis V
Vorwort VI
1 Einleitung 1
11 Aufgabenstellung 1
12 Motivation 1
2 Grundlagen 3
21 CRM System 3
22 Android Plattform 4
23 Web Plattform 5
24 Kommunikationsprotokolle 6
25 Installation und Konfiguration der Entwicklungs und Produktivsysteme 7
3 Grundablaumlufe vor Systemeinfuumlhrung 15
31 Adressen Sammeln 15
32 Auswahl der Interessenten zur Kontaktaufnahme 15
33 Planen der Veranstaltungsorte 15
34 Terminierung 16
4 Sytemgestuumltzte Ablaumlufe 17
41 Adressen Sammeln 17
42 Planen von Veranstaltungsorten 18
43 Auswahl der Kunden zur Kontaktaufnahme 18
5 Sicherheitsaspekte 21
51 Betriebssystem des Servers 21
52 Webserver und angegliederte Programme 23
53 Scripte die auf dem Webserver laufen 25
I
6 Umsetzung 27
61 Bestehende Loumlsungen 27
62 Use Cases 27
63 Datenbank 30
64 Implementierung des Hauptsystems 31
65 Abschnitte 34
66 Implementierung des Android Systems 37
7 Fazit 43
Literaturverzeichnis 45
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
I
I Inhaltsverzeichnis
Inhaltsverzeichnis I
Abbildungsverzeichnis II
Tabellenverzeichnis III
Abkuumlrzungsverzeichnis IV
Quellcodeverzeichnis V
Vorwort VI
1 Einleitung 1
11 Aufgabenstellung 1
12 Motivation 1
2 Grundlagen 3
21 CRM System 3
22 Android Plattform 4
23 Web Plattform 5
24 Kommunikationsprotokolle 6
25 Installation und Konfiguration der Entwicklungs und Produktivsysteme 7
3 Grundablaumlufe vor Systemeinfuumlhrung 15
31 Adressen Sammeln 15
32 Auswahl der Interessenten zur Kontaktaufnahme 15
33 Planen der Veranstaltungsorte 15
34 Terminierung 16
4 Sytemgestuumltzte Ablaumlufe 17
41 Adressen Sammeln 17
42 Planen von Veranstaltungsorten 18
43 Auswahl der Kunden zur Kontaktaufnahme 18
5 Sicherheitsaspekte 21
51 Betriebssystem des Servers 21
52 Webserver und angegliederte Programme 23
53 Scripte die auf dem Webserver laufen 25
I
6 Umsetzung 27
61 Bestehende Loumlsungen 27
62 Use Cases 27
63 Datenbank 30
64 Implementierung des Hauptsystems 31
65 Abschnitte 34
66 Implementierung des Android Systems 37
7 Fazit 43
Literaturverzeichnis 45
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
I
6 Umsetzung 27
61 Bestehende Loumlsungen 27
62 Use Cases 27
63 Datenbank 30
64 Implementierung des Hauptsystems 31
65 Abschnitte 34
66 Implementierung des Android Systems 37
7 Fazit 43
Literaturverzeichnis 45
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
II
II Abbildungsverzeichnis
21 Uumlbersicht CRM Quelle [7 S 20] 3
22 Android Systemarchitektur Quelle [6] 4
23 NetBeans Plugin Konfiguration 10
24 Erstellen des Android Virtual Device 11
25 NetBeans Plugin Konfiguration 13
41 Use Case Diagramm fuumlr das Adressen Sammeln 17
42 Use Case Diagramm fuumlr Veranstaltungsplanung 18
43 Use Case Diagramm fuumlr Kundenauswahl 18
44 Use Case Diagramm fuumlr Terminierung 19
61 Datenbak Entity Relationship Diagramm 30
62 Aufbau des Framework 31
63 Abschnitt Mitarbeiter 34
64 Abschnitt Adresssammler 35
65 Abschnitt Veranstaltungsplanung Interessenten 36
66 Zustandsdiagramm Kunden 36
67 Abschnitt Callcenter 37
68 Abarbeitung Protokoll 41
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
III
III Tabellenverzeichnis
21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt 5
22 Programme die genutzt werden 12
51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3] 21
61 Uumlbersicht der Einsprungspunkte 32
62 Race Kondition der Kundeneingabe 34
63 Tabelle lokalisierte Zeichenketten in Android 42
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
IV
IV Abkuumlrzungsverzeichnis
ACL Access Control List dt Zugriffskontrolllisten 23
AJAX Asynchronous JavaScript and XML 35
apt advanced packaging toolkit 8
CRM Customer Relationship Mangement dt Kundenbeziehungsmanagement
CSS Cascading Style Sheets 9
DOS Denial of Service dt Ablehnung des Service 23
FLASK Flux Advanced Security Kernel 21
FTP File Transfer Protocol 24
HTML Hypertext Markup Language 9
HTTP Hyper Text Transfer Protokoll 6
HTTPS Hyper Text Transfer Protokoll Secured 6
JDK Java Development Kit 4
JSON Java Script Object Notation 35
LAMP Linux Apache MySQL PHPPerlPython 8
PHP Personal Homepage Tools V
SDK Software Development Kit 4
SELinux Security Enhanced Linux dt erweiterte Sicherheit fuumlr Linux 10
SFTP SSH File Transfer Protocol 24
SQL Structured Query Language 25
SSH secure shell 8
SSL Secure Sockets Layer
TLS Transport Layer Security
URL Uniform Resource Locator dt Einheitlicher Quellenanzeiger 6
USB Universal Serail Bus 9
XML Extensible Markup Language 7
XSS Cross Site Scripting 25
yum yellowdog updater modified 8
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
V
V Quellcodeverzeichnis
21 Konfiguration des Webservers in den Entwicklungssystemen 1061 Prepared Statements in Personal Homepage Tools (PHP) 3362 XML Beschreibung der grafischen Nutzerschnittstelle in Android 3863 Laden der XML Beschreibung in Java 3964 Klasse zum nutzen einer SQLite Datenbank in Android 4065 Nutzung von Shared Preferences in Android 41
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
VI
VI Vorwort
Diese Bachelorarbeit entstand in dem Unternehmen EASTCON Produktionsgesell-schaft Der Sitz des Unternehmens ist in Rochlitz wo es im Jahr 2003 als Tochter-unternehmen der EASTCON AG gegruumlndet wurde Es fertigt Guumlter wie beispielswei-se Ober- und Unterbetten aus Naturhaarmaterialien Die fertigen Produkte gehen andie 100igen Tochtergesellschaften der Eastcon AG in den verschiedenen osteuropaumli-schen Laumlndern Diese setzen sie dann in ihren lokalen Maumlrkten ab Im Vertriebsprozesswird der Kunde angesprochen die Ware praumlsentiert und die Verkaumlufe vertraglich fest-gehalten Kundendaten werden dabei in Listen festgehalten die allerdings nur fuumlr eineeinmalige Geschaumlftstransaktion verwendet werden Fuumlr qualifizierende Auswertungenist ein erheblicher manueller Mehraufwand noumltig Daten sind nicht systemisch erfasstund auswertbar
Diese Arbeit befasst sich mit dem Erstellen und Sichern des Prototyps eines CRM Sys-tems Hierbei werden erst einmal die Schritte von der Datengewinnung bis hin zur Teil-name des Interessenten an der ersten Verkaufsveranstaltung betrachtet Als Grundlagewurden Beschreibungen bestehender Ablaumlufe verwendet Diese lassen sich in drei Pha-sen einteilen
1 Sammeln von Kundenadressen
2 Planen von Veranstaltungen
3 Interessenten einladen
Diese werden in dem System abgebildet Weiter wird hier behandelt welche Maszlignah-men ergriffen werden sollten um das System zu schuumltzen Das System hat die Auflageleicht erweiterbar zu sein um neue Module erstellen koumlnnen Es ist dabei verantwortlichfuumlr das Pflegen einer Datenbank als Backend
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 1 Einleitung 1
1 Einleitung
11 Aufgabenstellung
Diese Arbeit entstand in einem Unternehmen welches groszlige Teile seines Gewinnesim Direktverkauf erziehlt Dies erfordert eine kundenbezogene Arbeitsweise Um sol-che Prozesse zu unterstuumltzen soll eine Software entwickelt werden die idealerweisefolgende Funktionalitaumlten besitzt
bull Stationaumlr ungebundene Adresssammlung Dem Adresssammler wird die Moumlglich-keit gegeben die Interessentendaten von stationaumlr gebundenen Systemen unab-haumlngig zu sammeln Jedoch sind dabei Sammlungen in Papierform nicht zulaumlssigso wie zur Zeit noch vorrangig durchgefuumlhrt
bull Multi User Eigenschaften Eine Praumlmisse die bei der Entwicklung zu beruumlcksich-tigen ist ist die Verfuumlgbarkeit des Systems fuumlr viele gleichzeitig angemeldete Mit-arbeiter rund um die Uhr
bull Webfaumlhigkeit Mitarbeiter wird damit ermoumlglicht Home Office zu betreiben
bull Sicherheit Das System muss bestmoumlglich gegen Eindringlinge und unsach-gemaumlszligeHandhabung geschuumltzt werden
bull Bedienbarkeit Es sind bestehenden Ablaumlufe abzubilden Die Orientierung an die-sen Vorgehensweisen gibt den Mitarbeitern einen schnellen Einstieg in den Um-gang mit dem System
bull Multilingualitaumlt Da das System in verschiedenen Laumlndern zum Einsatz kommtmuss es eine umfassende Sprachunterstuumltzung bekommen Dabei sind auch dieverschiedenen Eigenheiten der Laumlnder beruumlcksichtigt werden wie zum Beispielder Namenszusatz Vatersname in vielen osteuropaumlischen Laumlnder
In dieser Arbeit wird erklaumlrt wie die Umsetzung einer solchen Software mit den betrieb-lichen Vorgaben zu bewerkstelligen ist Die Erstellung soll dabei Iterativ erfolgen umVerbesserungsvorschlaumlge und Aumlnderungen im Ablauf schnell zu beruumlcksichtigen
12 Motivation
Die Neuerungen im Bereich der mobilen Endgeraumlte sowie die webbasierte Umsetzungdes Systems waren die Haupmotivationspunkte die zu dieser Arbeit veranlassten Auch
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
2 Kapitel 1 Einleitung
das Einbringen von Technologien zum einen zur Verbesserung der Bedienbarkeit zumanderen zum Bereitstellen von essenziellen Funktionen des Gesamtsystems war einweiterer Punkt Ein interessanter Aspekt war auch die Implementierung dieser Techni-ken Die betriebswirtschaftlichen Hintergruumlnde zu erfassen und einzubringen war einweiterer Problematik die das Interesse zur Bearbeitung dieses Themas weckte
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 2 Grundlagen 3
2 Grundlagen
Dieses Kapitel befasst sich mit den Grundlagen zu dem Begriff des CRM Systems deneingesetzten Bedienungsplattformen und den Uumlbertragungsprotokollen Zum Abschlusswird noch eine Anleitung zur Installation und Konfiguration von Entwicklungs und Pro-duktivsystemen vorgestellt
21 CRM System
Ein CRM System ist darauf ausgelegt die Beziehungen zwischen Kunden und der Fir-ma abzubilden Dabei soll es die Mitarbeiter bei dem Umgang mit den Kunden und denmit ihm in Beziehung stehenden Ablaumlufen unterstuumltzen
Abgrenzung von anderen Systemen Das Kundenbeziehungsmanagement entwickel-te sich direkt aus dem Beziehungsmarketing nicht zu verwechseln mit dem wasnoch horizontale (zB Vertriebsgemeinschaften) vertikale (zB Lieferanten) la-terale (zB Beziehungen zu Behoumlrden) und unternehmerische Beziehungen (zBzum Personal) mit einbezieht Kundenbindungsmanagement kann wiederum alsein Teil des Beziehungsmarketing verstanden werden es beschaumlftigt sich nur mitdem gegenwaumlrtigen Kundenstamm mit dem Ziel dass sie die Beziehungen zumUnternehmen beibehalten festigen oder gar weiter ausbauen Was zum Kunden-beziehungsmanagement noch fehlt sind Konzepte fuumlr die Neukunden- und Kun-denruumlckgewinnung CRM wurde im Marketing schon lange angewendet durchInternet und informationstechnische Unterstuumltzung wurde es mit elektronischenMitteln umgesetzt Dabei erfolgt die Umsetzung oft als Web-Anwendung[vgl S18-19 7 Kap 22]
Abbildung 21 Uumlbersicht CRM Quelle [7 S 20]
Durch das rasante Wachstum des Internet und der Etablierung der elektronischenDatenverarbeitung wurden diese Strukturen fuumlr Mehrnutzerprogramme immer at-traktiver In diesem Zusammenhang wurden auch die Methoden des Kunden-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
4 Kapitel 2 Grundlagen
beziehungsmanagement auf Software abgebildet Uumlberwiegend geschah dieseUmsetzung in Webanwendungen (vgl Abschnitt 23) Diese Programme werdenCRM-Systeme genannt
22 Android Plattform
Android ist ein freies Betriebssystem fuumlr Mobile Geraumlte als Solches ist es sehr daraufbedacht Ressourcen zu sparen
Abbildung 22 Android Systemarchitektur Quelle [6]
Durch den in Abbildung 22 dargestellten Aufbau ist das System komplett auf mobileEndgeraumlte abgestimmt und auch gegen Angriffe geschuumltzt Die Bestandteile und derenFunktion werden in Tabelle 21 umschrieben Die Java Laufzeitumgebung wird auchdurch Prozessoren unterstuumltzt welche den Bytecode nativ ausfuumlhren koumlnnen[vgl 1]
Die Dokumentation des Software Development Kit (SDK) ist vergleichbar mit der Doku-mentation des Java Development Kit (JDK) Mithilfe dieses SDK ist es moumlglich Softwa-re fuumlr das Android System zu entwickeln Die entstandenen Java Applikationen werdenhier nicht zwangslaumlufig uumlber den Android Market verteilt (vgl Abschnitt 25) Dem Ent-wickler bietet das System dabei folgende Funktionsmerkmale [vgl 6]
bull Anwendungs Framework Mit ersetzbaren und veraumlnderbaren Bestandteilen
bull Integrierter Browser Auf der Webkit Engine basierenter Browser
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 2 Grundlagen 5
bull Optimierte Grafik Eine selbst entwickelte 2D Bibliothek OpenGL ES Spezifikationfuumlr die 3D Bibliothek
bull SQLite Zum strukturierten Speichern von Daten
bull Multimedia Unterstuumltzung fuumlr die gebraumluchlichsten Formate(MP3 JPG usw)
bull Hardwareabhaumlngige Funktionen (zB GPS WLAN usw)
Tabelle 21 Systemkomponenten die Android laut GOOGLE SDK [6] zur Verfuumlgung stellt
Applications Sind Java-Applikationen ohne die Interaktion mit dem Ge-raumlt nicht denkbar waumlre Ein Beispiel hierfuumlr ist die App fuumlrdie Grundoberflaumlche Es sind aber auch andere von Drittenoder selbst verfasste Anwendungen moumlglich
Application Framework Sind Funktionalitaumlten die Android fuumlr jedes App bereitstelltunter anderem auch das Apps angeben welche Funktio-nen sie bereitstellen Diese koumlnnen dann von anderen Pro-grammen genutzt werden
Android Runtime Ist im Grunde die Dalvik virtuell Maschine die Java Pro-gramme auf Systemaufrufe abbildet und eine fast vollstaumln-dige Implementierung der Java Grund Bibliotheken Zu er-waumlhnen ist hierbei dass jede App eine eigene virtuelle Ma-schine bekommt welches das System sehr stabil macht
Libraries Sind ausgewaumlhlte Laufzeitbibliotheken wie von Linux Dis-tributionen bekannt jedoch fuumlr eingebettete Systeme opti-miert Es gibt auch direkt auf solche Systeme angepass-te Bibliotheken Die Funktionalitaumlten die sie bereitstellenwerden durch das Application Framework zugaumlnglich ge-macht
Linux Kernel Hardware naher Teil des Systems er laumldt Treiber und ver-waltet Ressourcen wie Speicher oder Prozessorzeit
23 Web Plattform
ldquoThe first Web site createt by Tim Berners-Lee and Robert Cailliau at CERN (EuropeanNuclear Research Center) consisted of a collection of documents from static contentencoded in HyperText Markup Language (HTML) Since then theWeb has evolved froman enironment hosting simple and static hypermedia documents to an infrastructure toan infrastructure for the execution of complex applicationsrdquoCasteleyn u a [2 Introduc-tion S 1]
Der Autor gibt hier einen Uumlberblick wie sich Webseiten von inhaltlich festen Hypertext-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
6 Kapitel 2 Grundlagen
Ressourcen bis hin zu dynamisch erzeugten Inhalten entwickelten Welche durch Pro-gramme bereitgestellt werden die auch untereinander Daten austauschen koumlnnen Die-se Anwendungen werden auch Web-Applicationen genannt Sie werden laut [2 Intro-duction S1-2] durch folgende Merkmale charakterisiert
bull Besserer Zugriff auf Informationen und Dienste Im Vergleich zu lokalen Loumlsun-gen die unflexibler und stationaumlr gebunden sind
bull Dokument zentriertes Hypertext-Interface Informationen werden uumlber Strukturier-te HTML-Dokumente angezeigt
bull Unterschiedliche Technologien zum Datenmanagement Die Daten werden in ver-schiedenen Formaten unter anderem XML JSON usw anderen Anwendungenals Datenquelle zur Verfuumlgung gestellt
bull Unterschiedliche Darstellungstechnologien und -engines Es koumlnnen verschiede-ne Ausgaben zum Beispiel fuumlr mobile Geraumlte angepasst werden
bull Komplexitaumlt der Architektur Die groszligen Datenmengen werden ansprechent undabgestuft dargestellt
Abschlieszligend ist zu sagen das Web Plattformen mit darauf Laufenden Web-Applikationengut dazu geeignet sind um Funktionalitaumlten einer groszligen Anwenderschaft zur Verfuuml-gung zu stellen Da hier nicht nur Ressourcen wie Rechenzeit sondern auch Speicher-platz fuumlr persoumlnliche Daten zur Verfuumlgung gestellt werden ist eine erhoumlhte Sorgfalt ge-genuumlber sicherheitsrelevanten Aspekten wie in Kapitel 5 beschrieben zu beachten
24 Kommunikationsprotokolle
Die Arbeit behandelt nicht die unteren Protokollschichten wie TCPIP da die daraufaufbauenden Protokolle Hyper Text Transfer Protokoll (HTTP) oder Hyper Text TransferProtokoll Secured (HTTPS) auch den Datenverkehr abbilden koumlnnen HTTPS ist hierbeidas HTTP welches uumlber SSLTLS verschluumlsselt und so gesichert wird Im weiteren wirdnun das HTTPS mit dem HTTP gleichgesetzt[23 vgl]
Das HTTP ist ein verbindungsloses Protokoll das heiszligt dass saumlmtliche Daten die beieinem folgenden Aufruf vorliegen sollen entweder uumlber den Client zuruumlckgegeben oderdurch einen eineindeutigen Schluumlssel auf dem Server gespeichert werden Es ist einClient Server Protokoll und arbeitet mit sogenannten Requests (dt Anfragen) und Re-sponses (dt Antworten) Als solch ein Protokoll laumldt es meist textbasierte Ressourcenvon einem Webserver die durch eine Uniform Resource Locator (URL) meist mit einemAnhang dem sogenannten Query String (dt Abfrage Zeichenkette) welche die Res-source erst erschaffen oder veraumlndern koumlnnen
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 2 Grundlagen 7
Uumlber dieses Protokoll kann man nun auch weitere Protokolle definieren zB auf XMLBasisDiese Protokolle werden meist auf beiden Seiten validiert Der Client beginnt understellt die erste Extensible Markup Language (XML) nach vorgegebenen Muster undsendet sie an den Server Dieser validiert die Datei und verarbeitet sie weiter und sendeteine Antwort zuruumlck die wiederum vom Client validiert und verarbeitet wird Mit diesenMitteln kann auch ein verbindungsorientiertes Protokoll erstellt werden Wie im Rahmendieser Arbeit entwickelt wurde Naumlheres dazu im Abschnitt 66
25 Installation und Konfiguration der Entwicklungsund Produktivsysteme
Sofern noch nicht geschehen muumlssen folgende Programme (vgl Tabelle 21) installiertwerden Fuumlr die Betriebssysteme gibt es natuumlrlich auch andere Moumlglichkeiten allerdingswerden sie in der Arbeit mit Verweis auf die jeweilige Fachliteratur nicht behandeltWarum hier die Entscheidung auf Systeme rund um den Linux Kernel fiel wird weiterunten erklaumlrt Die Systeme sind unterteilt in das Entwicklungssystem und zwei Produk-tivsysteme Letzteres soll hier ein entfernter gemieteter Linux Server ohne grafischeOberflaumlche sein Die Entwicklungssystem haben im Gegensatz dazu eine grafischenOberflaumlche
Gemeinsamkeit bei beiden Systemarten ist die Installation einer frei waumlhlbaren LinuxDistribution Im Rahmen der Arbeit fiel die Wahl auf Fedora 15 (Fedora) und Ubuntu1104 (Ubuntu) fuumlr die Entwicklungssysteme und openSUSE 103 (openSUSE) fuumlr dasProduktivsystem Das Betriebssystem der Produktivumgebung war schon laumlnger fuumlr an-dere Projekte der Firma in Gebrauch deshalb wurde es fuumlr dieses Projekt uumlbernommenDas Entwicklungssystem in der Ubuntu Variante wurde gewaumlhlt da schon im Studiummit diesem System gearbeitet wurde Fedora wurde genutzt da es viele Neuerungenwie die Ersetzung des SystemV init Mechanismus mit Upstart Ansatz und spaumlter mitSystemd [vgl 21] und neuere Softwareversionen nutzt [vgl 22] um moumlgliche Einfluumlsseauf das zu erstellende Programm absehen zu koumlnnen
Programme wie der Webserver mit PHP Unterstuumltzung und die SQL Datenbank sindnicht Teil des Betriebssystem und muumlssen nachinstalliert werden Dafuumlr sind natuumlrlichdie passenden Rechte noumltig dies kann uumlber Mechanismen wie su oder den Login alsroot1 sowie fuumlr einzelne Befehle sudo erreicht werden Wie sie im einzelnen Konfiguriertwerden ist nicht Gegenstand dieser Arbeit dafuumlr kann Fachliteratur zu Rate gezogenwerden Die Kommandozeilenbefehle an denen Super User Rechte noumltig sind werdenim weiteren durch ein gekennzeichnet die bei denen Nutzerrechte ausreichen mit $nach der uumlblichen UNIX Terminal Symbolik Die Installation ist fuumlr die einzelnen Distri-butionen folgendermaszligen zu bewerkstelligen
1 in einigen Distributionen aus Sicherheitsgruumlnden ohne entsprechende Konfiguration nicht moumlglich
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
8 Kapitel 2 Grundlagen
Fedora Es wird standardmaumlszligig yellowdog updater modified (yum) genutzt um Pro-gramme zu installieren Mit yum groupinstall rsquoWeb Serverrsquo werden auszliger demApache Server gleich einige Unterstuumltzungsprogramme wie PHP oder perl mitinstalliert Um nun den Server zu starten muss folgender Befehl eingegeben wer-den service httpd start Um den Server Prozess schon bei dem Systemstart au-tomatisch auszufuumlhren ist folgender Befehl notwendig chkconfig httpd on[vgl20]
Um den MySQL Server zu installieren ist nur der Befehl yum install mysqlser-ver erforderlich Wie der Apache Webserver muss auch dieser Server gestartetwerden Dazu sind die gleichen Befehle notwendig allerdings mit der Variationdas httpd durch mysqld ersetzt wird
Ubuntu In Ubuntu wird standardmaumlszligig das advanced packaging toolkit (apt) einge-setzt Um dabei einen Linux Apache MySQL PHPPerlPython (LAMP) Stack zuinstallieren sind folgende Schritte noumltig Zuerst die Installation von tasksel einProgramm um Programmgruppen die auf Aufgaben ausgerichtet sind zu instal-lieren [vgl 4] Dann die Installation des LAMP Stacks Folgende Befehle sind aus-zufuumlhren
bull um tasksel zu installieren apt-get install tasksel
bull um den LAMP-Stack zu installieren tasksel install lamp-server
Hier werden der mysql sowie der apache Services beim Systemstart gestartetund sollten auch sofort nach Installation laufen
openSUSE Auf dem angemieteten Produktivsystem ist normalerweise schon ein LAMPStack installiert Da diese Systeme meist uumlber ein Webfrontend konfigurierbarsind Sollte dies nicht der Fall sein so ist ein Zugang per secure shell (SSH)moumlglich Die Installation erfolgt hier uumlber yast Folgendermaszligen wird ein LAMPStack installiert yast2-install apache2 php5 php5-mysql apache2-mod_php5mysql mysql-tools Die Dienste muumlssen noch gestartet werden Dies geschiehtso rcapache2 start fuumlr den Webserver und rcmysql start fuumlr den MySQL Ser-ver Hier werden die fertigen Dateien des entwickelten Programms in den Ordnersrvwwwvhostsvirtual_hosthttpsdocs kopiert Es muss noch die vom Entwick-lungssystem exportierte Datenbankstruktur importiert werden damit es lauffaumlhigwird Dazu ist ein Programme noumltig welches meist schon installiert ist es nenntsich phpMyAdmin mit dem man die Datenbank administrieren kann
Um zu testen ob die Installation und das Starten erfolgreich war kann in einem belie-bigen auf dem System installierten Browser httplocalhost eingegeben werden wasdann nicht zu Fehlern fuumlhren sollte Aumlhnliches zur Folge hat Bei dem Produktivsys-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 2 Grundlagen 9
tem ist dies auf einem anderen System durchzufuumlhren dabei ist auch die Zeichenkettelocalhost durch die Server URL zu ersetzen
Es muss noch ein MySQL root Nutzer erstellt werden Das geschieht mit folgendemBefehl mysqladmin -u root -p rootpassword Letztendlich muss nur noch die Struk-tur der Datenbank erstellt sowie ein Nutzer der jeweiligen Rechte auf die Datenbankhat Dazu wird einfach das MySQL Workbench Programm installiert darin die erforder-liche Struktur (siehe 61) und ein dazugehoumlriger Nutzer erstellt und an die Datenbankgesendet
Um mit den Entwicklungsysteme arbeiten zu koumlnnen benoumltigt man noch eine Entwick-lungsumgebung Sie muss PHP Hypertext Markup Language (HTML) und CascadingStyle Sheets (CSS) unterstuumltzen so wie ein Plugin fuumlr das Android SDK bereitstellenIm Zuge der Entwicklung wurde hierfuumlr NetBeans in einer Version gt=70 eingesetzt Sieist unter httpnetbeansorgdownloadsindexhtml in unterschiedlichen Versionen dow-nloadbar Da es bei den meisten Distributionen noch kein Paket fuumlr diese gibt kann mansie einfach als bin-Datei herunterladen Diese Datei muss nur wie folgt in einer Konsoleausgefuumlhrt werden pathtofilenamebin Zu beachten ist hier dass sie als root aus-gefuumlhrt wird Im Installationsprozess werden die Features aufgefuumlhrt hier koumlnnen diezu unterstuumltzenden Programmiersprachen ausgewaumlhlt werden Es fehlt nur noch dasAndroid Plugin Man oumlffnet den NetBeans Menuumlpunkt Tools-gtPlugins und dan Settingsfuumlgt ein neues Update Center hinzu mit der URLhttpkenaicomprojectsnbandroiddownloadsdownloadupdatecenterupdatesxml(vglAbbildung 23) Danach kann man in Available Plugins nach Android suchen und dasAndroid Plugin installieren
Um Programme fuumlr Android Systeme zu entwickeln benoumltigt man noch das dazugehoumlri-ge SDK es ist uumlber die Website httpdeveloperandroidcomsdkindexhtml erhaumlltlichNachdem es gedownloaded ist kann es an beliebiger Stelle entpackt werden Im Zugeder Entwicklung ist es noumltig mit dem Programm ltSDK Verzeichnisgttoolsandroid einTestsystem ein sogenanntes Android Virtual Device zu erstellen(vgl Abbildung 24) Indieser Arbeit wird Android 22 als Testsystem verwendet Alternativ ist auch die Verwen-dung eines Androidgeraumltes ab Version 22 moumlglich Dieses muss dazu per UniversalSerail Bus (USB) angeschlossen sein und die Option USB Debugging aktiviert habenDas Testsystem wird mit Tastatur am Rand und Touchscreen emuliert der Touchscreenwird dabei per Maus bedient und alle Eingaben koumlnnen auch per Tastatur erfolgen(vglAbbildung 25)
Abschlieszligend sind Einstellungen in den Entwicklungssystemen vorzunehmen Das Net-Beans Android Plugin benoumltigt den Ort an dem das SDK entpackt wurde Das geht uumlberden Menuumlpunkt Tools-gtOptions-gtMiscelaneos-gtAndroid Weiter ist es zweckmaumlszligig dieKonfiguration des Apache Webserver so abzuaumlndern das er auf die Dateien der Net-Beans Projekte Zugriff hat In Fedora kann man das erreichen indem man eine Datei
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
10 Kapitel 2 Grundlagen
Abbildung 23 NetBeans Plugin Konfiguration
im Ordner etchttpdconfd erstellt Diese Datei muss mit root Rechten erstellt werdenund folgenden Aufbau haben
Listing 21 Konfiguration des Webservers in den Entwicklungssystemen
e tc h t tpd conf d dev confA l i as dev path to NetBeansProjectslt D i r e c t o r y path to NetBeansProjects gt
Order Deny Al lowDeny from A l lAl low from 1270 0 1Al low from 1
lt D i rec to ry gt
Allerdings ist hier auch Security Enhanced Linux (SELinux) aktiv was einen weiterenBefehl noumltig macht chcon -R reference=varwwwhtml pathtoNetBeansProjects Ersetzt die Regeln(vgl Abschnitt 51) des default Directorys auch fuumlr den Ordner in demdie NetBeans Projekte liegen Die Zeichenkette pathtoNetBeansProjects ist bei derDatei sowie dem Befehl woumlrtlich zu nehmen und mit dem Pfad zu dem Ordner in demdie NetBeans Projekte liegen zu ersetzen Zuletzt muumlssen noch die Rechte fuumlr die Datei-en veraumlndert werden dazu fuumlhrt man in dem NetBeansProjects Verzeichnis den Befehl$chmod a+xr ltWeb-Projektgt aus Die Zeichenkette Web-Projekt ist dabei mit dem Na-men derWeb Applikation zu ersetzen Damit hat der Apache Prozess Lese- und Ausfuumlh-rungsrechte fuumlr die Dateien in diesem Ordner und im Browser sollte dann nach Eingabevon httplocalhostdevltWeb-Projektgt das gewuumlnschte Projekt angezeigt werden
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 2 Grundlagen 11
Abbildung 24 Erstellen des Android Virtual Device
In einer Ubuntu Installation kann der SELinux-Schritt entfallen Auszligerdem liegen hierdie Webserver Konfigurationsdateien in dem Verzeichnis etcapache2confd Die rest-lichen Einstellungen koumlnnen fuumlr dieses System uumlbernommen werden
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
12 Kapitel 2 Grundlagen
Tabelle 22 Programme die genutzt werden
Programm System Bemerkung
Ubuntu 1104(x86-64)
Entwicklungssystem Betriebssystem fuumlr das ersteEntwicklungssystem
Fedora 15(x86-64)
Entwicklungssystem Betriebssystem fuumlr das zwei-te Entwicklungssystem
openSuse 103(x86-64)
Produktivsystem Betriebssystem fuumlr das Pro-duktivsystem
Apache (gt=22) EntwicklungssystemeProduktivsystem
Webserver der auf lokaleoder externe HTTP Anfragenreagiert
MySQL (gt=5) EntwicklungssystemeProduktivsystem
SQL Server der auf beidenSystemen nur lokale Anfra-gen entgegennimt
PHP (gt=5)apache_php module
EntwicklungssystemeProduktivsystem
Serverseitiger PHP-Scriptinterpreter zum erstel-len dynamischer WebseitenDiese Version muss genutztwerden da durch sie erstviele Techniken der Objekt-orientierung in PHP Einzughielt[vgl 18]
NetBeans 71 Entwicklungssysteme Entwicklungsumgebung dieeine Vielzahl von Program-miersprachen unterstuumltzt un-ter anderem JAVA und PHP
Android Plugin fuumlr Net-Beans
Entwicklungssysteme Erweitert NetBeans um dieFaumlhigkeit Android Program-me zu erstellen und testen
Android SDK Entwicklungssysteme Zusammenstellung von An-droid Entwicklungswerkzeu-gen unter anderem ein Ge-raumlteemulator und Steuerpro-gramme
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 2 Grundlagen 13
Abbildung 25 NetBeans Plugin Konfiguration
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
14
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung 15
3 Grundablaumlufe vor Systemeinfuumlhrung
Dieses Kapitel beleuchtet die vereinfachten Geschaumlftsablaumlufe vor dem Programmein-satz Die Darstellungen stuumltzen sich auf einen internen Bericht der Mitarbeiter aus Lett-land Sie werden in folgenden Abschnitten stark vereinfacht wiedergegeben
31 Adressen Sammeln
Die Mitarbeiter suchen Orte auf an denen eine groszlige Anzahl von Interessenten ver-mutet wird Dazu werden Lokalitaumlten aufgesucht an denen die Zielgruppen vermehrtanzutreffen sind Es sind zum Beispiel ausgesuchte Messen groumlszligere Kaufhallen oderbelebte Plaumltze Dort werden Passanten angesprochen und meist uumlber eine Gewinnspiel-teilnahme deren Adressen gesammelt Dies geschieht in Papierform Am Ende dieserSammelaktionen werden die Adressen dann haumlndisch oder halbautomatisch auf Voll-staumlndigkeit und Dubletten gepruumlft Wenn in der Niederlassung technische Ressourcenvorhanden sind werden die Daten stationaumlr eingepflegt Ziel ist es einen Stamm po-tentieller Kunden zu generieren der zu Produktpraumlsentationen oder Telefonverkaumlufenherangezogen werden kann
32 Auswahl der Interessenten zur Kontaktaufnahme
Der Telefonistenleiter selektiert die Daten Adressenkarten nach den Praumlmissen AlterFamilienstand usw die dann in Listen zusammengefasst weitergegeben werden Daten-saumltze die aufgrund von oben genannten Filterkriterien ausgefiltert wurden verbleiben inder Datenbank um Auswertungen durchfuumlhren zu koumlnnen Die Listen sind auszligerdemProduktgruppen und Wohngegenden zugeordnet sie sind gleichzeitig Veranstaltungenfest zugeordnet Diese Listen werden nun den operativen Telefonisten uumlbergeben
33 Planen der Veranstaltungsorte
Vor der Terminierung werden Raumlumlichkeiten in Cafeacutes und Restaurants gebucht Diesgeschieht auf der Grundlage der Veranstaltungsplanung Um den Aufenthalt der Gaumlstein den verschiedenen Produktvorfuumlhrungen angenehmer zu gestalten wird nach betrieb-lichen Vorgaben die Bewirtung geregelt
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
16 Kapitel 3 Grundablaumlufe vor Systemeinfuumlhrung
34 Terminierung
Der Telefonist informiert den Interessenten uumlber den Gewinn der Verlosung informiertund schlaumlgt den Besuch einer Produktpraumlsentation vor Sie sind zeitlich ungefaumlhr eineWoche von diesem Gespraumlch entfernt Auszligerdem wird nach moumlglichen weiteren Inter-essenten gefragt Es werden zwei weitere Gespraumlche gefuumlhrt um eventuelle Unpaumlss-lichkeiten seitens der Gaumlste auszuschlieszligen und sie an den Termin zu erinnern Dasletztendliche Ziel des Telefonisten ist 8 Gaumlste vorzugsweise aus vier Paaren bestehendauf einen Termin zu buchen Dazu sind nicht immer 3 Telefonate moumlglich zum Beispielwenn eine Veranstaltung durch Absprung einzelner Gaumlste drei Tage vor Termin unter-besetzt ist
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
Kapitel 4 Sytemgestuumltzte Ablaumlufe 17
4 Sytemgestuumltzte Ablaumlufe
In diesem Kapitel werden die durch das Programm optimierten Ablaumlufe widergespie-gelt Dazu werden Use Case Diagramme herangezogen Ablaumlufe fuumlr die einzelnen UseCases werden in Abschnitt 62 angegeben und erlaumlutert
41 Adressen Sammeln
Adresssammler
Android System
Senden der Daten
Eingabe der Kundendaten
Drucken des Gewinnloses
Haupt System
Einloggen
Abspeichern der Daten
Web Client
Eingabe der Kundendaten
Drucken des Gewinnloses
Abbildung 41 Use Case Diagramm fuumlr das Adressen Sammeln
Der Adresssammler kann hier mit zwei groumlszligtenteils voneinander unabhaumlngigen Syste-men interagieren Zum einen gibt es das Hauptsystem welches mittels einer Webober-flaumlche angesprochen wird Hier koumlnnen alle Kundendaten direkt in die Datenbank einge-pflegt werden Diese Daten liegen dann sofort fuumlr die Weiterverarbeitung vor Das zwei-te System stuumltzt sich auf Android Plattformen Hier koumlnnen alle Kundendaten lokal aufdem jeweiligen Geraumlt eingepflegt werden Es ist moumlglich Gewinnlose mit einer eindeuti-gen ID zu drucken welche spaumlter auch zu Verlosungen herangezogen werden koumlnnenDer Datenbestand wird dann durch Nutzerinteraktion auf das Hauptsystem uumlbertragenIm Fall von Uumlbertragungsfehlern werden die Daten in der Datenbank des mobilen Ge-raumltes zuruumlckgehalten und es wird eine Fehlermeldung erzeugt Die Uumlbertragung kann
18 Kapitel 4 Sytemgestuumltzte Ablaumlufe
spaumlter erneut durchgefuumlhrt werden Es ist angedacht dass jeder Adresssammler denUpload der Daten es handelt sich hierbei um 100-200 Datensaumltze taumlglich durchfuumlhrtDas Hauptsystem arbeitet die Daten dann automatisch in den Datenbestand ein
42 Planen von Veranstaltungsorten
Callcenterleiter
Haupt System
Login ins System
Daten speichern
Web Client
Hinzufuegen neuer Veranstaltungen
Zuweisen des Verkaeufers
Zuweisen des Telefonisten
Abbildung 42 Use Case Diagramm fuumlr Veranstaltungsplanung
Der Veranstaltungsort wird durch den Aktor Telefonistenleiter erstellt Diese Aufgabe istmonatlich durchzufuumlhren Es werden jedoch woumlchentlich Verfeinerungen vorgenommenum unvorhergesehene Probleme zu beruumlcksichtigen Die Telefonisten werden den zubetreuenden Veranstaltungsorten zugeordnet
43 Auswahl der Kunden zur Kontaktaufnahme
Callcenterleiter
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Sortieren der Kundendaten
Sortierte Kundendaten Telefonisten zuordnen
Abbildung 43 Use Case Diagramm fuumlr Kundenauswahl
Fuumlr die Kontaktaufnahme mit den Kunden ist nur das Hauptsystem vorgesehen Es wirdvon dem Telefonistenleiter bedient Alle Interaktionen werden uumlber eine Weboberflaumlchedurchgefuumlhrt Dem Leiter sollen hierbei Filtermethoden helfen dem Telefonisten Kundenzuzuteilen
Kapitel 4 Sytemgestuumltzte Ablaumlufe 19
431 Terminierung
Telefonist
Haupt System
Login ins System
Daten Aktualisieren
Web Client
Anzeigen der Kundenliste
Buchen des Termins undoder setzen des Status
Bearbeiten der Daten
Abbildung 44 Use Case Diagramm fuumlr Terminierung
Dem Telefonisten ist es nun moumlglich seine jeweilige Kundeliste abzutelefonieren und da-mit fuumlr die verschiedenen Produktvorfuumlhrungen zu werben Sie buchen auch die Plaumltzefuumlr die Veranstaltungen Die Farbgebung der einzelnen Veranstaltungstermine orientiertsich am Ampelsystem Die ungefuumlllten Veranstaltungstermine sind rot gekennzeichnetwenn sie gefuumlllt sind werden sie gruumln gekennzeichnet Wenn an einem Termin nur noch80 Prozent zur Verfuumlgung stehen soll dieser gelb hinterlegt sein Es sind drei Tele-fonate mit den Kunden bis zur Verkaufsveranstaltung vorgesehen Nach dem Erstensollte feststehen ob der Kunde die Einladung annimmt Daraufhin wird automatisch ei-ne schriftliche Einladung mit Anfahrtsbeschreibung und dem Namen des persoumlnlichenAnsprechpartners gedruckt und versandt Wenn der Kunde absagt wird er fuumlr eine be-stimmte Zeit gesperrt Im zweiten Gespraumlch wird zu erst noch einmal die Bestaumltigungdes Erscheinens abgefragt und dann die Anzahl der weiteren Gaumlste und gegebenen-falls deren Namen ermittelt Das letzte Gespraumlch soll nochmal der Erinnerung dienenund eventuelle Aumlnderungen der Personenzahl ergeben um dies fuumlr die Veranstaltungs-planung zu beruumlcksichtigen Diese Telefonate werden mithilfe der Status angezeigt undspaumlter und vom System automatisch wieder zur Vorlage gebracht
20
Kapitel 5 Sicherheitsaspekte 21
5 Sicherheitsaspekte
Da hier Kundendaten die fuumlr Unternehmen von groszliger wirtschaftlicher Bedeutung sindgespeichert werden Ist die Anforderung an die Sicherheit sehr hoch einzustufen Dasgilt sowohl fuumlr Auszligenstehende die gar keinen Zugriff auf das System haben sollenals auch fuumlr Mitarbeiter des Betriebes Letztere sollen nur Zugriff auf Daten habendie explizit fuumlr sie freigegeben wurden In diesem Kapitel werden sinnvolle Sicherheits-einstellungen des Systems vom Betriebssystem uumlber den Webserver bis hin zu denSkript-Sprachen fuumlr dynamische Inhalte und Client-System Android vorgestellt
51 Betriebssystem des Servers
Der Administrator sollte sich regelmaumlszligig uumlber Schwachstellen informieren um diesezeitnah zu beseitigen Weiter sollte darauf geachtet werden alle nicht noumltigen Komuni-kationskanaumlle zu schlieszligen
Hier wird speziell auf Linuxbasierte Server eingegangen Zuerst werden die Ports wel-che nicht benoumltigt werden gesperrt dies wird durch Kernel interne Mechanismen ipta-bles realisiert[16] Eine fuumlr den reinen Webserverbetrieb uumlber sichere Verbindung zuge-schnittene Konfiguration wuumlrde so aussehen2
Tabelle 51 Uumlbersicht uumlber die Konfiguration von IP-Tables[3]
Line Rule Funktion
1 -P INPUT DROP Alle einkommenten Packete wer-den verworfen
2 -P OUTPUT DROP Alle ausgehenden Packete werdenverworfen
3 -P FORWARD DROP Alle Packete werden fuumlr andereRechner werden verworfen
4 -A OUTPUT -p tcp ndashdport 443 -j ACCEPT Hier werden alle Packete dieauf port 443 (HTTPS) ankommenduchgelassen
5 -A OUTPUT -p tcp ndashdport 21 -j ACCEPT Hier werden alle Packete die aufport 22 (SSH und SFTP) ankom-men duchgelassen
Um die Sicherheit weiter zu erhoumlhen wurde das Projekt SELinux welches die Flux Ad-2 In Fedora 15 etcsysconfigiptables Ubuntu 1104 etciptablesuprules
22 Kapitel 5 Sicherheitsaspekte
vanced Security Kernel (FLASK) Architektur implementiert erstellt[vgl 14] Die Installa-tion erfolgt auf den in Abschnitt 25 Seite 7 eingefuumlhrten Systemen folgendermaszligen
bull Ubuntu apt-get install selinux
bull Fedora Hier wird SELinux schon mit dem Betriebssystem installiert
bull openSuse Wird erst ab Version 111 unterstuumltzt ist darin vorinstalliert und mussnur wie folgt aktiviert werden
Das Sicherheitssystem kann wie folgt de-aktiviert werden Die Datei etcselinuxcon-fig muss Konfiguriert werden dazu ist die Option SELINUX auf gewuumlnschten Wert zusetzen[vgl 5]
bull auf disabled fuumlr deaktiviert
bull auf enforcing fuumlr das erzwingen der Regeln
bull auf permissive um vor Verletzungen der Regeln zu warnen
Es bringt erweiterte Rechte fuumlr Programme und Nutzer Diese Restriktionen sind nichtnur auf das Dateisystem begrenzt sondern auch fuumlr Ressourcen wie das Netzwerkanwendbar Sie werden uumlber ein Regelwerk die sogenannten Policys festgelegt [vgl9] An der Einrichtung dieser Technik die von den Distributionen vorgegeben ist istmeist keine Aumlnderung noumltig Die Konfiguration beschraumlnkt Programme nur auf fuumlr sievorgesehene DateienVerzeichnisseRessourcen Zugriff haben Wie eine angepassteKonfiguration zu erstellen ist kann in den Dokumentationen der jeweiligen Distributionoder in der Fachliteratur nachgelesen werden
Es ist ratsam ein Intrussion Detection System zu installieren Diese Systeme analysie-ren den Datenverkehr und informieren den Administrator uumlber ungewoumlhnliche Ereignis-se Zu nennen ist in diesem Sektor Suricata es wird uumlber ein Regelwerk konfiguriert[vgl11] Hier sind die mit installierten Regeln auch voumlllig ausreichend Der Administratorkann dann auf geeignete Weise auf diese Benachrichtigungen reagieren Die Instal-lation er- folgt uumlber die fuumlr die Distribution uumlblichen Programme mit dem Paketnamensuricata
Um kompromittierten Konfigurationsdateien vorzubeugen ist es moumlglich diese unter ei-ne Versionsverwaltung zu stellen Eine moumlgliche Wahl waumlre hierbei Git So werden dieVeraumlnderungen uumlber laumlngere Zeitraumlume protokolliert Dies ist nicht nur ein sicherheits-relevanter Abschnitt er kann auch helfen die Downzeiten zu vermindern indem diegesamte Konfiguration ausgecheckt und auf einen anderen Server uumlbertragen werdenkann Ein Programm welches diesen Ansatz verfolgt ist Etckeeper [vgl 13] Die Konfi-guration wird in der Datei etcetckeeperetckeeperconf durchgefuumlhrt und die einzelnen
Kapitel 5 Sicherheitsaspekte 23
Punkte werden darin erklaumlrt
Fuumlr Neuentwicklungen in diesem Sektor sollte man dennoch immer offen sein jedochzwischen Performance und Sicherheit abwaumlgen
52 Webserver und angegliederte Programme
In diesen Rubrik fallen
bull Das Webserver Programm selbst hier der Apache Webserver der am haumlufigsteneingesetzte Webserver[vgl 15]
bull Das dahinter liegende Datenbank-Programm hier der Mysql-Server
bull Der Interpreter fuumlr die Server-seitige Skriptsprache hier speziell der PHP-Interpreter
bull Sekundaumlr Programme die nicht an der Primaumlr-Funktion des Servers beteiligt sind
Diese Applikationen verarbeiten oder speichern Daten von Nutzern Bei ihnen kann Mit-hilfe bestimmter Eingaben oder Eingabemengen ein vom Entwickler ungewolltes Ver-halten provoziert werden
Apache Webserver Hier empfiehlt es sich den Server unter einem eigenen Nutzer-konto mit wenigen Privilegien laufen zu lassen3 Nachdem er nun nur auf einigeVerzeichnisseDateien Zugriff hat kann man noch den Zugriff auf Unterverzeich-nisse oder Dateien mittels htaccess einschraumlnken Er muss gegen Denial of Ser-vice (DOS)-Attacken geschuumltzt werden Das sind Attacken wo der Serverprozessso uumlberlastet wird das er jeden weiteren Verbindungsaufbau ablehnt zu schuumlt-zen Um dies zu erreichen kann man erst einmal die Timeoutzeit verringern Sieist die Zeit die der Server fuumlr den Wiederaufbau der Verbindung wartet zu verrin-gern Um den gesamten Datenverkehr zum Beispiel vor Man in the Middle Angriffe(Angriffe wo ein System sich zwischen Server und Client schiebt und damit denganzen Datenverkehr Protokolliert) zu schuumltzen sollte man gerade bei sensiblenpersoumlnlichen Daten eine verschluumlsselte Uumlbertragung zB mit SSL3 oder houmlher inBetracht ziehen wie in [8 S 64ff] beschrieben
MySQL Server MySQL nutzt Access Control Lists (ACLs) zur Zugriffskontrolle Es istso aufgebaut das auch die SQL Benutzerkonten sowie das zugehoumlrige Pass-wort als Hashwert in einer Tabelle user gespeichert sind Diese Tabelle solltenur fuumlr root Konten das sind auch hier die Datenbankadministratoren einsehbarund veraumlnderbar sein Diese Zugaumlnge sollten natuumlrlich immer uumlber ein Passwort
3 ist bei den meisten Distributionen schon nach der Installation so zBwwwwww
24 Kapitel 5 Sicherheitsaspekte
geschuumltzt sein Da der Server hier nur lokal eingesetzt wird sollte auch nur derZugriff uumlber ein lokales Socket gestattet werden
Schritte um dies sicherzustellen sind
bull Auf der Serverkonsole mysql -u root einzugeben sollte dieser Aufruf oh-ne Passworteingabe zu einer MySQL Shell fuumlhren ist kein SQL-Passwortgesetzt
bull Die SQL Anweisung SHOW GRANTS zeigt welche Nutzer mit welchenRechten auf welche Tabellen Zugriff haben Hier kann man aufgrund derDaten abwaumlgen wie viel Rechte fuumlr jeden einzelnen Nutzer notwendig sindDie Rechte koumlnnen dann mit REVOKE gesetzt werden
bull In der Konfigurationsdatei4 sollte ein fester Nutzer eingestellt werden DieLoopback-Adresse sollte die einzige Adresse sein an die der MySQL Servergebunden ist Eine Beispielkonfiguration koumlnnte so aussehen
[ mysqld ]bindminusaddress =12700 1user=mysql
PHP Interpreter Der Interpreter wird hier als Apache Modul eingebunden Als solchesuumlbernimmt es den Nutzer und die Gruppe des Webservers Die Skriptdateienmuumlssen somit fuumlr diesen Nutzer lesbar sein Sollte es moumlglich sein das der NutzerDateien hoch laden kann sollte man diese nur in vordefinierten Verzeichnissenspeichern wo der Interpreter Schreibrechte hat Auch nur fuumlr einzelne durch PHPaumlnderbare Dateien sollten Schreibrechte erhalten Die restlichen Dateien und Ver-zeichnisse sind fuumlr Veraumlnderungen zu sperren Sekundaumlr Programme Program-me die insbesondere auch eine Verbindung nach auszligen darstellen sind oft auchein Risiko fuumlr die Sicherheit des Systems
bull File Transfer Protocol (FTP) Hier sollte wie auch bei HTTP das abgesicherteProtokoll SSH File Transfer Protocol (SFTP) genutzt werden Es werden un-terschiedliche Nutzer fuumlr die verschiedenen Webordner angelegt Keinesfallssollte er alle Verzeichnisse durchsuchen und gar jede Datei einsehen koumln-nen da so die genutzten Programme und auch Schwachstellen in der Kon-figuration ausgespaumlht werden koumlnnen Die Konfiguration kann in der Fachli-teratur nachgelesen werden
bull SSH Ist ein Standard welcher auf Servern zur Fernwartung eingesetzt wirdEs ist sicherer als das veraltete Telnet welches alle Daten unverschluumlsseltuumlbertraumlgt Man kann aber auch hier etwas mehr Sicherheit erzwingen So
4 Fedora 15 etcmycnf Ubuntu 1004 etcmysqlmycnf
Kapitel 5 Sicherheitsaspekte 25
kann man die Anmeldung des root Nutzers unterbinden Der Nutzer kanndann wenn die Programme dafuumlr konfiguriert sind entweder sudo fuumlr eineneinzelnen Befehl oder su fuumlr eine root Sitzung starten Auch hier ist stehtzum nachlesen der Konfiguration Fachliteratur bereit
53 Scripte die auf dem Webserver laufen
Hier gibt es eine klare Grundregel man sollte Nutzereingaben nicht trauen Das heiszligtdass man keine Eingaben ungepruumlft lassen soll Sicherheitsluumlcken welche entstehensind unter anderem Cross Site Scripting (XSS) und Structured Query Language (SQL)Injections XSS ist dabei ein Angriff in dem Inhalte wie Verlinkungen bis hin zu eingebet-tetem Javascript oder CSS in einer Internetseite eingefuumlgt werden um deren Funktionoder Aussehen zu aumlndern Dies kann unter Umstaumlnden auch rechtliche Konsequenzennach sich ziehen wenn rechtlich unzulaumlssige Inhalte eingebunden werden oder daraufverlinkt wird Um dem entgegenzuwirken sollte man entweder HTML- Tags ganz verbie-ten oder ausgewaumlhlte Tags durch andere Zeichenketten ersetzen SQL Injections sindnicht weniger schadhaft Der Ablauf fuumlr diese Schwachstelle ist folgendermaszligen
1 Der Angreifer gibt SQL Code in ein Formular ein
2 Er sendet es ab
3 Er pruumlft die Reaktion der Webapplikation
So kann er sich zum Beispiel ein Bild uumlber den Aufbau der Datenbank machen odergar fuumlr ihn sonst unzugaumlngliche Daten auslesen Hier gibt es mehrere Moumlglichkeitendiese Luumlcke vermindern zu koumlnnen Zum einen koumlnnen Zeichen die eine Sonderbe-deutung haben mit Hilfe von PHP Funktionen Escaped werden das heiszligt diese Zei-chen Programmiertechnisch zu entwerten Auf der anderen Seite kann man es mit Hilfevon prepared Statements die Daten mit Sonderzeichen ohne schaumldliche Seiteneffekteverarbeiten Die Uumlberpruumlfung uumlbernimmt hierbei der Datenbanktreiber Er ist die Ver-bindung zwischen Programm und Datenbank und kuumlmmert sich um die Kommunikationzwischen beiden [vgl 19]
26
Kapitel 6 Umsetzung 27
6 Umsetzung
Das Kapitel enthaumllt eine Dokumentation der Umsetzung Sie geht von den Usecasesuumlber die Datenbank bis hin zu Schwerpunkten der Implementierung
61 Bestehende Loumlsungen
Das System hat den Fokus auf den Ablauf von Kommunikation und Handelsbeziehun-gen zwischen Kunden und Firmen Ziel ist die Bedienung fuumlr viele Mitarbeiter bereit-zustellen Alle Interaktionen sollen protokolliert werden In diesem Zusammenhang istes wichtig das jeder Mitarbeiter der das System nutzt ein eigenes Nutzerkonto hatEs handelt sich dabei pro Filiale um rund 65 Mitarbeiter Andere Systeme wurden inBetracht gezogen Es existiert jedoch kein Ansatz welcher die Sammlung von Kunden-daten in der priorisierten Form verfolgt Als Resultat wurde dieses Programm entworfenda es einen erheblichen finanziellen Mehraufwand bedeutet andere Systeme anzupas-sen
62 Use Cases
Hier werden die Ablaumlufe der einzelnen Use Cases erklaumlrt um einen Uumlberblick fuumlr die zuimplementierenden Strukturen zu geben
Use Case Einloggen Das Einloggen ins Hauptsystem geschieht uumlber eine einfacheTexteingabe im Web Interface Die Logindaten werden an den Server uumlbermitteltder die Daten pruumlft Gleichzeitig werden die Rechte des Nutzers und dessen ID ineiner statischen Variable speichert Hier wird auch die Sprachauswahl getaumltigt dieder Server sofort annimmt und so die vom Nutzer definierte Sprache im gesamtenSystem bereitstellt
Das Android System benoumltigt den Login nur bei der Datenuumlbertragung Es wirdein MD5 Hash uumlber den Login Namen den Nutzer-ID und das Passwort gebildetund direkt als Attribut des Wurzelknotens des XML Protokolls gehangen
Use Case Eingabe der Kundendaten Der Nutzer gibt die Daten in die Weboberflauml-che ein dabei wird er durch Auswahllisten zB Land und Vorschlaumlge (zB Datumder Sammlung) vom System unterstuumltzt
Im Android System ist die Eingabe aumlquivalent zur Eingabe in die Weboberflaumlche
28 Kapitel 6 Umsetzung
mit dem Unterschied dass die Daten erst in der lokalen SQLite Datenbank abge-speichert werden
Use Case Abspeichern der Daten Die Daten koumlnnen einmal vom Webclient oder vomAndroidsystem kommen Dabei wird auch gleich die Zuordnung Kundendatensatzharr Adresssammler gesetzt Im Android System werden die Daten im Fehlerfall inder Datenbank gehalten um eventuellen Uumlbertragungsproblemen vorzubeugen
Use Case Drucken des Gewinnloses Nach erfolgreicher Eingabe kommt die Anzei-ge eines Gewinnloses Der Losschein kann direkt uumlber den jeweiligen zur Verfuuml-gung stehenden Drucker ausgegeben werden
Das Android System braucht dazu den Druckaufruf uumlber das Menuuml Es sucht ei-ne App welche die Funktionalitaumlt fuumlr den Ausdruck bereitstellt Dieser wird eineFormatierte Ausgabe der Daten uumlbergeben Die Kommunikation mit dem Druckererfolgt dann uumlber WLAN
Use Case Senden der Daten Das Android System fragt den Nutzer uumlber die Login-daten fuumlr das Hauptsystem ab und sendet sei zusammen mit dem NutzerID ver-schluumlsselt an das System Um den Overhead durch Protokolldaten moumlglichst ge-ring zu halten wird es direkt mit den Daten uumlbermittelt So ist uumlber die AndroidSystemgrenze hinaus die Zuordnung von Adresssammler zu Kundendaten ge-waumlhrleistet
Use Case Hinzufuumlgen neuer Veranstaltungen Der Nutzer kann das Datum sowiedie Laumlnge der Produktvorfuumlhrung einstellen Es werden auch die Daten zum Ortder Veranstaltung eingepflegt
Use Case Zuweisen des Verkaumlufers Zum Planen der Veranstaltung gehoumlrt auch dieAuswahl der geeigneten freien Verkaumlufer die sie leiten Sie werden mit der Ver-anstaltung verknuumlpft
Zuweisen des Telefonisten Der betreuende Telefonist wird auch mit der Veranstal-tung verknuumlpft Dazu wird er aus einer Liste von verfuumlgbaren Mitarbeitern gewaumlhlt
Use Case Sortieren der Kundendaten Die Kundendaten liegen im Hauptsystem vorder Nutzer kann nun mit ihm uumlber den Webclient Interagieren und die Daten nachvorgegebenen Kriterien filtern
Kapitel 6 Umsetzung 29
Use Case Sortierte Daten Telefonisten zuordnen Dem autorisierten Nutzer ist es moumlg-lich die gefilterten Daten oder auch Teilmengen davon Telefonisten zuzuordnenDiese werden dann in dem zustaumlndigen Modul weiterverarbeitet
Use Case Anzeigen der Kundenliste Die Telefonisten sehen nur die fuumlr sie erstellteListe von Kunden Sie sind nach den gefuumlhrten Gespraumlchen geordnet Die Kundendie einen Ruumlckruf erwarten werden in einer separaten Liste gefuumlhrt Es werdenMitteilungen ausgegeben wenn die Ruumlckrufzeit naumlher ruumlckt
Use Case Buchen des Termins undoder Setzen des Status Die Veranstaltungen koumln-nen direkt uumlber das Web Interface durch den Telefonisten gebucht werden Dabeiwerden die Kunden mit den Veranstaltungen verknuumlpft Es werden Zustaumlnde ge-setzt die zum Beispiel angeben ob eine feste Zusage gegeben wurde oder obder Interessent unentschlossen war
Use Case Bearbeiten der Daten Um eventuelle Aumlnderungen oder Fehleingaben zukorrigieren werden die Kundendaten noch einmal Editierbar angezeigt
30 Kapitel 6 Umsetzung
63 Datenbank
Abbildung 61 Datenbak Entity Relationship Diagramm
Die Datenstrukturen werden in einer MySQL Datenbank abgebildet Hier werden Grund-lagen der Normalisierung angewendet Das Prinzip dabei ist komplexe Beziehungenvon Tabellen in einfache Beziehungen zu bringen um Datenstrukturen zu erreichen diestabil und flexibel gegenuumlber Erweiterungen des Datenmodells sind [vgl 12 S 116]Die Datenstruktur der Tabelle Kunden wird so auch im Android System erstellt und ge-
Kapitel 6 Umsetzung 31
pflegt Um alle Aumlnderungen an den Daten nachzuvollziehen wird eine Tabelle historygepflegt die alle Verknuumlpfungen zu ausgefuumlhrten Aktionen aufweist und diese nachhal-tig speichert
64 Implementierung des Hauptsystems
Das System stuumltzt sich auf ein Framework welches Grundfunktionalitaumlten wie dem Auf-bau des Menuumls und dem Bereitstellen von sicherheitsrelevanten Funktionen wie demLogin und dem Rechtemanagement Es ist bis auf die Einsprungspunkte komplett ob-jektorientiert und nutzt Techniken wie Vererbung und Callbacks um ein dynamischesGrundgeruumlst zu schaffen Es gibt 3 Einsprungpunkte welche verschiedene Daten ent-gegennehmen und sie an die angegebenen Abschnitte weiterreichen Spaumlter werdensie noch ausfuumlhrlicher behandelt Jeder dieser Einsprungpunkte instantiiert zunaumlchstdie Klasse Main welche durch Manipulation des Objektes die gewuumlnschte Funktion be-reitstellt
Klasse Mainmainphp
Einsprungs-punkte
indexphp
AndroidConnector
php
AbstrakteKlasseSection
Sectionphp
Benutzer-definierterAbschnitt
KalenderCalendarphp
Mysqlverbindung
Mysql_connectionphp
KlasseSecurity
Securityphp
KlasseMultiLang
MultiLangphp
Abbildung 62 Aufbau des Framework
32 Kapitel 6 Umsetzung
Wie in der Mindmap (Abbildung 62) dargestellt besteht das Frameworks aus folgendenKomponenten
Einsprungspunkte Die Einsprungspunkte bieten Moumlglichkeiten zum Datenaustauschmit verschiedenen Techniken Protokollen oder Endgeraumlten Sie sind in der Mind-map blau dargestellt Zu ihnen gehoumlren die Knoten die in Tabelle 61 festgehaltensind Sie sind so aufgebaut dass sie die einzigen Interaktionspunkte mit der We-bapplikation sind
Tabelle 61 Uumlbersicht der Einsprungspunkte
indexphp Allgemeiner Einsprungspunkt zur Interaktion mit der We-bapplication
AjaxRequestphp Dieser Einsprungspunkt stellt die Ajax Funktionalitaumlten be-reit
AndroidConnectorphp Hier wird wie der Name schon sagt die Verbindung mitden Android Geraumlten aufgebaut und der Datenaustauschdurchgefuumlhrt
Hilfsklassen Zu ihnen zaumlhlen jene Klassen welche den einzelnen Abschnitten Funk-tionalitaumlten bereitstellen jedoch keine Verarbeitung von Daten die vom Nutzeroder der Datenbank bereitgestellt wurden vornehmen In der Mindmap gehouml-ren hierzu die Klassen Main MultiLang Security sowie Kalender Es gibt wei-tere dieser Klassen jedoch spielen sie nicht so eine vordergruumlndige Rolle fuumlr dasFramework Die Main-Klasse wird von allen Einsprunsgspunkten instantiiert DasObjekt wird dann fuumlr die gewuumlnschte Funktionalitaumlt beeinflusst Es laumldt auch alleAbschnitte je nachdem ob sie in der Rolleneinstellung des Nutzers zum Ladenvorgesehen sind
Unter Verwendung der MultiLang Klasse ist es moumlglich seinen hinzugefuumlgtenAbschnitt zu uumlbersetzen Dies geschieht folgendermaszligen fuumlr jede Sprache liegteine einfache Textdatei vor Eine dieser Dateien wird je nach Sprachwahl in einArray eingelesen Die Array Elemente sind uumlber definierte Konstanten abrufbarDie Textauswahl wird durch statische Methoden getaumltigt
Die Klasse Security implementiert den Login-Mechanismus der Nutzer Hier wer-den auch die rechte der Rolle geladen die der Nutzer hat Es werden statischeFunktionen bereitgestellt die zum Beispiel die Rollenrechte des Nutzers zuruumlck-geben
Kapitel 6 Umsetzung 33
Mit Hilfe der Kalender Klasse koumlnnen Wochen oder Monatskalender realisiert wer-den Die einzelnen Tage koumlnnen uumlber eine Callback Funktion mit eigenem Inhaltgefuumlllt werden
Abschnitte Sie werden in der Mindmap gruumln hervorgehoben Zu ihnen gehoumlren dieAbschnittsklassen die von der abstrakten Klasse Section abgeleitet werden undstellen die Aufbereitung Anzeige und Erfassung der Daten bereit Diese Klassestellt selbst schon einige Funktionen zur Verfuumlgung Zum Beispiel gibt es eineFunktion zur Anzeige von TabellenWobei auch hier die Zeilen mit Hilfe einer Call-backfunktion personalisiert werden koumlnnen Hier wird auch die Schnittstelle fuumlr dieAbschnitte beschrieben Sie muumlssen einige abstrakte Funktionen implementieren
Datenquellen Zu den in der Mindmap aufgezaumlhlten Klassen welche in diese Rubrikfallen zaumlhlt nur die Mysql_connection Klasse Das von PHP ab Version 50 bereit-gestellte Mysqli-Framework wurde in diese Klasse eingearbeitet Es uumlbernimmtden Aufbau der Datenbankverbindung Die Mysql_connection Klasse umfasst un-sichere Funktionen und sichere Funktionen zum Abschicken von Queries sowievorgefertigte Queries zum Einpflegen Aktualisieren oder Auslesen von DatenDer Unterschied zwischen unsicheren und sicheren Funktionen ist dass die si-cheren Funktionen uumlber prepared Statements realisiert werden Der Ablauf einersolchen Abfrage ist wie folgt In Zeile 1 wird ein neues Mysqli Objekt erstellt Nach
Listing 61 Prepared Statements in PHP
$db = new mysql i (SQL_CONNECTION SQL_USER SQL_PASSW SQL_DATABASE ) $stmt = $dbminusgtprepare ( rsquoQUERY rsquo ) $stmtminusgtbind_param ( rsquo s i rsquo $param1 $param2 ) $stmtminusgtexecute ( ) $stmtminusgtb i n d _ r e s u l t ( $ resu l t1 $ resu l t2 ) $stmtminusgtfe t ch ( )
dem die Verbindung erfolgreich hergestellt wurde kann man eine Anfrage stellenZu beachten ist das alle Eingaben durch rsquorsquo angegeben werden Mit bind_paramwerden dan Referenzen an die mit rsquorsquo definierten Parameter gebunden Der ers-te Parameter gibt hier die Art der Eingaben an s-Zeichenketten i-ganze Zahlenusw Die naumlchste Anweisung fuumlhrt die Anfrage aus Dann muumlssen die Ruumlckga-bewerte wieder als Referenzen gebunden werden Referenzen geben vereinfachtausgedruumlckt nur den Speicherbereich an in den die Werte geschrieben oder ausdem die Werte gelesen werden Durch diese Referenzen ist es moumlglich mehrereWerte in die Referenzierten Variablen zu schreiben und so das prepared State-ment mehrfach zum Einpflegen von Daten zu nutzen Am Ende werden durchfetch die in der Query abgefragten Daten in die gebundenen Ruumlckgabereferen-zen geschrieben
34 Kapitel 6 Umsetzung
65 Abschnitte
Im Rahmen des Projektes entstanden folgende Abschnitte auf Grundlage des Frame-works (vgl Abbildung 62)
Mitarbeiter Dieser Abschnitt dient der Konfiguration und dem Erstellen von RollenAuch das Zuordnen der Mitarbeiter zu einer Rolle ist hier moumlglich Er dient somitder Konfiguration der Rechte
Abbildung 63 Abschnitt Mitarbeiter
Adresssammler Hier koumlnnen Adressen durch den Nutzer direkt in das System ein-gegeben werden Da jeder Interessent eine eineindeutige Losnummer bekommensoll auch die uumlber das Android System eingepflegten musste hier eine Systemuumlbergreifende Loumlsung gefunden werden Sie ist folgendermaszligen aufgebaut
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸Immer 0 in der Webapplication
Die Losnummer soll bei der Eingabe schon sichtbar sein dazu ist es notwendigsie vorher zu erzeugen Bis auf die laufende ID der Kundentabelle liegen die an-deren Werte als Konstante oder seit dem Login vor Wie man sieht kommt es hierzu einer Race Condition Das bedeutet in dem Fall eine Resource die naumlchste
Tabelle 62 Race Kondition der Kundeneingabe
Mitarbeiter 1 wechselt zu AbschnittAdresssammler
Es wird eine Losnummer erzeugt Mitarbeiter 2 wechselt zu AbschnittAdresssammler
Eingabe der Interessentendaten Es wird eine Losnummer erzeugt
Absenden und Speichern der Daten Eingabe der Interessentendaten
Absenden und Speichern der Daten
Nummer wird von zwei Prozessen zur gleichen Zeit genutzt Allerdings muss hier
Kapitel 6 Umsetzung 35
die Resource nicht gesperrt werden Es sind genuumlgend freie Nummern uumlbrig Somuss nur eine Logik implementiert werden um auf die naumlchste Verfuumlgbare auszu-weichen Diese Zahl muss so erzeugt werden dass die Nummer fuumlr den geradeeingebenden Nutzer geblockt wird Dies wird folgendermaszligen erreicht
1 Eine Suche nach einen Kundendatensatz mit dem Status ldquoUngenutztrdquo undder Mitarbeiter ID des gerade aktiven Mitarbeiters
2 Wurde ein solcher Datensatz gefunden wird die ID dieses Datensatzes ge-nutzt
3 Wenn das nicht der Fall ist wird ein neuer Datensatz mit dem Status Uumlnge-nutztuumlnd der Mitarbeiter ID des gerade aktiven Mitarbeiters erstellt
Vor dem Senden der Daten soll zwingend der Ausdruck des Losscheines erfol-gen Dazu wird ein Druckbutton eingefuumlgt der zwingend vor dem Speicherbuttonbetaumltigt werden muss
Abbildung 64 Abschnitt Adresssammler
Veranstaltungsplanung Der Abschnitt beinhaltet auf der einen Seite das Zuordnenvon Interessenten zu Callcentermitarbeiter mit verschiedenen Filtern die gesetztwerden koumlnnen um die Auswahl weiter einzuengen Die Filter funktionieren aufder Grundlage von Asynchronous JavaScript and XML (AJAX) Fuumlr die Filter vonStraszlige und Ort wurde das JQuery Framework in Version 164 verwendet so wiedie Erweiterung Marco Polo 132 Seine Funktionsweise ist an die von GoogleSuggest angelehnt Hier werden per Java Script Object Notation (JSON) die Stra-szligen oder Orte zuruumlckgeliefert die mit eingegebenen Buchstaben anfangen Nach
36 Kapitel 6 Umsetzung
der Auswahl liegt dann die Liste vor Es koumlnnen auch einzelne Interessenten ab-gewaumlhlt werden Die tatsaumlchliche Anzahl wird mit angezeigt und durch AJAX oderreinem JavaScript aktuell gehalten Auf der anderen Seite die Planung fuumlr dieVeranstaltung sie beinhaltet einen Wochenkalender in dem Veranstaltungen pro
Abbildung 65 Abschnitt Veranstaltungsplanung Interessenten
Tag angezeigt werden Fuumlr jeden Tag koumlnnen Veranstaltungen geplant und fallsgewuumlnscht geaumlndert werden hier werden auch die Verknuumlpfungen zwischen Tele-fonist und Veranstaltung und Verkaumlufer und Veranstaltung gesetzt Der Kalenderwurde uumlber eine Callback-Funktion fuumlr die Funktionalitaumlt des Abschnittes ange-passt
Call Center In diesem Abschnitt werden die Interessenten am linken Rand angezeigtMittig ist der Kalender mit den Veranstaltungen die der jeweilige Telefonist be-treut angebracht Die Interessenten koumlnnen dabei verschiedene Status einneh-men nach den Oben genannten Ablaumlufen
UNUSED ASSIGNABLE BLOCKED
START_CALL
SECOND_CALL+[UNDECIDED|
INVITED]
THIRD_CALL+[UNDECIDED|
INVITED]BLOCKED+INVITED
Abbildung 66 Zustandsdiagramm Kunden
Wie in Abbildung 66 dargestellt gibt es teilweise Doppelzustaumlnde die zusaumltzli-che Informationen liefern Dazu werden die Zustaumlnde binaumlr verknuumlpft Der
Kapitel 6 Umsetzung 37
BLOCKED+INVITED Status gibt an dass der Kunde zwar fuumlr wiederholte Tele-fonate gesperrt ist jedoch zu einer Veranstaltung eingeladen ist Es wird spaumlterin einem Modul fuumlr die Verkaumlufer fortgefuumlhrt in diesem sollen die Verkaumlufer dannunter anderem Feedbacks zur Veranstaltung geben
Abbildung 67 Abschnitt Callcenter
66 Implementierung des Android Systems
Das Android System beinhaltet nur eine Eingabemaske fuumlr die Daten angelehnt andie aus Abbildung 64 und eine Uumlbersicht der bisher gesammelten Daten Um die Be-dienoberflaumlche zu erstellen gibt es zum Einen eine schwerer anpass- oder austausch-bare Moumlglichkeit welche zu groszligen Teilen dem aus Java Swing bekannten Konzeptenfolgt Zum Anderen ein auf XML basierendes Konzept womit sich die Anpassungen aufverschiedene Geraumltegroumlszligen vereinfacht Ein beispielhafter Auszug aus der Oberflaumlchedieses Projektes ist in Quellcode 62 gegeben
Diese Arbeit befasst sich nicht mit dem gesamten im Android moumlglichen Layout Ein-stellungen da dies sonst den Rahmen sprengen wuumlrde Hier wird ein relatives Layoutin ein ScrollLayout gekapselt Das ScrollLayout macht die Eingabe Scrollbar da sienicht auf das zum Testen vorgesehene Handydisplay passt Das relative Layout zeigtan dass in ihm liegende Elemente in diesem Fall eine einfach Textanzeige (TextView)und ein Auswahlfeld (Spinner) nur relativ zu anderen angegeben werden Das heiszligt indiesem Fall dass zuerst die Textanzeige mit an den Inhalt angepasster Houmlhe (andro-idlayout_height=ldquowrap_contentldquo ) und an die Fenstergroumlszlige angepasste Breite (andro-idlayout_width=ldquofill_parentldquo ) eingefuumlgt Um nun das Auswahlfeld darunter einzufuumlgen
38 Kapitel 6 Umsetzung
Listing 62 XML Beschreibung der grafischen Nutzerschnittstelle in Android
ltxml version= 10 encoding= u t fminus8 gtltScro l lV iew xmlnsandro id= h t t p schemas andro id com apk res andro id
a n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t andr o i d l a y o u t _ h e i g h t = f i l l _ p a r e n t gtltRela t iveLayouta n d r o i d o r i e n t a t i o n = v e r t i c a l and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = f i l l _ p a r e n t gt
ltTextViewa n d r o i d i d = + i d l abe l0 and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content a n d r o i d t e x t S i z e = 20px a n d r o i d t e x t C o l o r = 669 a n d r o i d t e x t S t y l e = bold a n d r o i d t e x t = Persouml n l i c h e In fo rma t i onen gtltSpinnera n d r o i d i d = + i d gender and ro id l ayou t_w id th = f i l l _ p a r e n t and ro i d l ayou t_he igh t = wrap_content androidbackground= androiddrawable editbox_background andro id layout_be low=id l abe l0 gt
lt Re la t iveLayoutgtlt Scro l lV iewgt
wird einfach ein Attribut androidlayout_below mit dem daruumlber (androidid=ldquo+idlabel0ldquo )erzeugten ID ldquoidlabel0ldquo angegeben Die IDrsquos sind spaumlter auch im Programm verfuumlg-bar Dadurch kann zum Beispiel die Wertabfrage realisiert werden Im Java Quellcodewird das Layout auf wie in Listing 63 gezeigt geladen
Weitere Besonderheiten der Android Implementierung sind die verschiedenen Speicher-mechanismen diese Arbeit geht auf zwei davon naumlher ein
bull SQLite Implementierung
bull Shared Preferences
Erstere ist ein Datenbanktreiber welcher eine SQLite Datenbankanbindung aufbautUm das zu erreichen wird zuerst einmal die Form der Datenbank angegeben Diesgeschieht wie in Quellcode 64 gezeigt
Kapitel 6 Umsetzung 39
Listing 63 Laden der XML Beschreibung in Java
public class I n p u t A c t i v i t y extends A c t i v i t y implements OnCl ickL is tener
lowastlowastCal led when the a c t i v i t y i s f i r s t created lowast Overridepublic void onCreate ( Bundle savedInstanceState )
super onCreate ( savedInstanceState )
Setzen der Ans icht ueber d ie id d ie aus dem Namen der XML erzeugt wi rdth is setContentView (R l ayou t main )
So wi rd das Spinner Objekt zur wei teren Verarbe i tung geho l tSpinner sp inner = ( Spinner ) f indViewById (R i d gender )
Zum Nutzen der Datenbank muss vorher feststehen in welcher Weise sie genutzt wirdOb zum Lesen oder Schreiben von Daten Danach koumlnnen verschiedene Funktionendieser Objekte ausgefuumlhrt werden um Daten zu aumlndern oder lesen Es gibt einerseitsFunktionen bei denen selbst SQL Queries angeben werden koumlnnen So zum BeispielexecSQL(lowastQuerylowast) allerdings sind SELECT Anweisungen also solche bei denen manDaten abfragt hier ausgeschlossen Auch so etwas aumlhnliches wie prepared Statementsnaumlmlich precompiled Statements sind moumlglich uumlber die FunktioncompileStatement(lowastStatementlowast) Sie gibt ein SQLiteStatement Objekt zuruumlck Uumlber die-ses koumlnnen Parameter gebunden werden Es ist zu sagen dass es im Unterschied zuprepared Statements keine Funktion gibt um Resultate zu binden deshalb sind fuumlr dieprecompiled Statements nur Aufrufe zum Einfuumlgen Loumlschen oder Aktualisieren von Da-ten gedacht
Auf der anderen Seite sind auch vordefinierte Funktionen vorhanden um zum Bei-spiel unter Angabe der Tabelle und der Daten eine gesamte Zeile einzufuumlgen zBinsert ( lowastTabellelowast lowastleere Zeilelowast lowastDatenlowast) Der Parameter leere Zeile gibt die Zeile andie im Falle einer leeren Datenliste auf Null gesetzt wird So kann eine leere Zeile ein-gefuumlgt werden Auch Funktionen um Daten auszulesen sind vorhanden wie zum Bei-spiel
query ( lowast Tabel le lowast lowast Spal te lowast lowast F i l t e r lowast lowastArgumente lowast lowastGruppierung lowast lowast G r u p p i e r u n g s f i l t e r lowast lowastGeordnet nach lowast )
Hier sind die Argumente folgendermaszligen zu interpretieren
bull Tabelle Die Tabelle aus der Daten angefordert werden
40 Kapitel 6 Umsetzung
Listing 64 Klasse zum nutzen einer SQLite Datenbank in Android
Ab le i t en e ine r Klasse von SQLiteOpenHelperpublic class AddressDB extends SQLiteOpenHelper
Beschreiben der Datenbank und angabe der Versionprivate s t a t i c f i n a l i n t DATABASE_VERSION=3public s t a t i c f i n a l S t r i n g ADDRES_TABLE_NAME = addresses private s t a t i c f i n a l S t r i n g ADDRES_TABLE_CREATE =
CREATE TABLE + ADDRES_TABLE_NAME+ ( i d i n t e g e r PRIMARY KEY AUTOINCREMENT + Vatersname t e x t NOT NULL + KartenID t e x t NOT NULL)
private s t a t i c f i n a l S t r i n g DATABASE_NAME=KundenDB
S o l l t e d ie Datenbank n i c h t vorhanden sein wi rd diese Funkt ion ausgefuehr tOverridepublic void onCreate ( SQLiteDatabase db )
db execSQL (ADDRES_TABLE_CREATE )
S o l l t e s ich d ie Datenbankversion aendern kann d ie Datenbankst ruktur h i e r geeandert werdenOverridepublic void onUpgrade ( SQLiteDatabase db i n t arg1 i n t arg2 )
throw new UnsupportedOperat ionExcept ion ( Not supported yet )
bull Spalte Angabe der auszulesenden Spalten
bull Filter Gibt Kriterien zur Auswahl von Zeilen an (zB row=rsquowertrsquo) Es wird als WHE-RE Klausel umgesetzt
bull Argumente In den Filterkriterien koumlnnen die Werte durch ersetzt werden Dannwerden die Werte dort eingesetzt
bull Gruppierung Gibt Spalte an nach denen die Ausgabe gruppiert wird Es wirduumlber eine GROUP BY Klausel abgebildet
bull Gruppierungsfilter Werden auf die gruppierten Daten angewendet zum Beispielsum(row1)gtrow2 Diese werden als HAVING Klausel abgebildet
bull Geordnet nach Gibt die Spalten an nach denen in angegebener Reihenfolgegeordnet wird Abgebildet wird dies durch eine ORDER BY Klausel
Um Konfigurationen zu speichern ist eine einfachere Form ausreichend Hier fiel dieEntscheidung hier fuumlr die Shared Preferences Schnittstelle entschieden Sie ist in fol-
Kapitel 6 Umsetzung 41
gender Weise (vgl Quellcode 65) verwendbar
Listing 65 Nutzung von Shared Preferences in Android
lowast Anfordern des SharedPrefences Objects welches fue r d ieApp p r i v a t e Daten b e r e i t s t e l l t lowast SharedPreferences con f i g = getPreferences (MODE_PRIVATE ) Sofern vorhanden wird d ie Praeferenz UserID a ls Datentyp i n t b e r e i t g e s t e l l t i s t d ies n i c h t moeglich wi rd Parameter 2 z u r u e c k g e l i e f e r tuserID = con f i g g e t I n t ( UserID 0 ) Das g le i che fue r Server Praeferenz diesmal Datentyp S t r i n gserver = con f i g g e t S t r i n g ( Server h t t p )
Um nun die Daten in das Websystem zu uumlberfuumlhren wird ein XML basierendes Pro-tokoll eingesetzt Dieses Protokoll arbeitet verbindungsorientiert Das heiszligt dass zweimiteinander kommunizierende Systeme eine Verbindung aufbauen dann Daten sendenund die Verbindung wieder abbauen Der Ablauf fuumlr das Senden der Daten des AndroidSystems sieht wie folgt aus Die blaue Linie zeigt an dass eine erneute Verbin- dung
Generierendes ID
Generierender XMLStruktur
Sendender
Anfrage
Verarbeitender Daten
Uumlberpruumlfendes IDrsquos
Validierender XMLStruktur
Bereitstellender Daten
Generierender XMLStruktur
Sendender
Antwort
Verarbeitender Daten
Validierender XMLStruktur
Abbildung 68 Abarbeitung Protokoll
aufgebaut werden kann jedoch nicht zwingend notwendig ist Die roten Pfade gebenan dass hier im Fehlerfall fortgesetzt wird jedoch hier mit vordefinierten Werten
Damit das Android Programm mehrere Sprachen unterstuumltzen kann sind weitere Schrit-te noumltig Zum Einen ist es eine Anpassung der XML-Darstellung 62 der Benutzerschnitt-stelle sie ist folgendermaszligen durchzufuumlhren Das Attribut androidtext=ldquotext_aldquo derTextview Elemente wird abgeaumlndert androidtext=ldquostringtext_a_idldquo Was den mit demtext_a_id ID verknuumlpften Text laumldt und an dieser Stelle einsetzt Nun werden pro unter-stuumltzter Sprache verschiedene XML Dateien (stringsxml) erstellt in Tabelle 63 Wie zusehen ist wird an die values Verzeichnisse zur Lokalisierung ein Bindestrich einer nachISO 369-1 vorgeschriebenen Sprachkennung Optional kann ihr eine nach ISO ISO3166-1-alpha-2 vorgeschriebene Regionalkennung in der Form bdquo-rltRegionalkennunggtldquofolgen um die definierten Zeichenketten im Java Quelcode nutzen zu koumlnnen wird die
42 Kapitel 6 Umsetzung
Tabelle 63 Tabelle lokalisierte Zeichenketten in Android
Sprache Verzeichnis Beschreibung
Englisch(default) resvalues Die Sprache welche in einem Android Geraumltwelches mit Standardeinstellungen konfiguriertist angenommen wird
Deutsch resvalues-de Deutsche Sprachdatei wird als Zeichenketten-quelle angenommen wenn das Geraumlt auf deut-sche Sprache konfiguriert ist
Russisch resvalues-ru Lokalisierte Zeichenketten die den russischenSprachraum abdecken
in der Klasse Context vorhandene Memberfunktion getResource() aufgerufen Das zu-ruumlckgelieferte Resource Object stellt nun die Funktion getString() mit dem Integerpara-meter id bereit die den mit Angabe des IDrsquos die gewuumlnschten lokalisierte Zeichenkettezuruumlck liefert
Die im Abschnitt 64 vorgestellte Racecondition wird im Android System folgenderma-szligen aufgeloumlst
1︸︷︷︸Mitarbeiter-ID
minus 234︸︷︷︸Laufende ID der Kunden Tabelle
minus 0︸︷︷︸wird Berechnet
Der berechnete Wert am Ende besteht aus der Summe der letzten drei zweistelligen He-xadezimalzahlen der MAC Adresse der WLAN-Schnittstelle des jeweiligen Geraumltes
Kapitel 7 Fazit 43
7 Fazit
Es entstand eine Software welche den Ablauf vom Sammeln der Adressen bis hin zurBefuumlllung der Veranstaltung abbildet Durch zeitliche Engpaumlsse und Anforderungen diesich erst im Verlauf der Entwicklung zeigten konnten nicht alle Funktionen eingebautwerden Auch ein umfassender Test der bisher implementierten Module war noch nichtmoumlglich
Die Zeit die fuumlr das Projekt und das Anfertigen dieser Arbeit war knapp bemessen Diesist zu groszligen Teilen dem Umfang der Implementierung zu schulden Es wurden teilwei-se viele zeitliche Ressourcen verbraucht um Kernfunktionen der Module zu erstellenEinige dieser Funktionen sind zur Zeit noch unzureichend in der Software implemen-tiert werden aber zu einem spaumlteren Zeitpunkt noch einmal uumlberarbeitet Im Ruumlckblickwar das Projekt zu umfangreich
Das betriebliche Umfeld beeinflusste mich positiv beim Erstellen dieser Arbeit Es wur-den auch staumlndig neue Anregungen gegeben die Software zu verbessern oder an be-stehende Ablaumlufe anzupassen
Ausblick
Die entstandene Software weiszligt noch Maumlngel auf sie ist nicht bereit fuumlr den produktivenEinsatz In weiteren Iterationen sind diese Maumlngel zu beseitigen Weitere Module (zBfuumlr Verkaumlufer) sind in Planung Das entstandene Framework sollte hinsichtlich Ober-flaumlchengestaltung uumlberarbeitet werden um groumlszligere Akzeptanz von Nutzern zu bekom-men Dabei sollten die Module sich diesen Designvorschriften anpassen Das entstan-dene System wird Fertiggestellt und soll spaumlter in den produktiven Einsatz kommenEine Anbindung an SugarCRM ist auch geplant
44
Literaturverzeichnis 45
Literaturverzeichnis
[1] ARM LTD (Hrsg) ARM Prozessor Architektur Jazelle abschnitt httpwwwarmcomproductsprocessorstechnologiesjazellephp Abruf28 Aug 2011
[2] CASTELEYN Sven DANIEL Florian DOLOG Peter MATERA Maristella Engi-neering Web Applications Springer-Verlag Berlin Heidelberg 2009 2009 ndash ISBN987
[3] CHRISTIAN HUumlGEL SEBASTIAN VAHL (Hrsg) Fedorawiki Iptables httpwwwfedorawikideindexphpIptables Abruf 28 Aug 2011
[4] CONTRIBUTORS TO THE UBUNTU DOCUMENTATION WIKI (Hrsg)Tasksel-Comunity Ubuntu Documentation httpshelpubuntucomcommunityTasksel Abruf 28 Aug 2011
[5] DAN WALSH (Hrsg) Manpage SELinux httplinuxdienetman8selinux Abruf 28 Aug 2011
[6] GOOGLE INC (Hrsg) Google Android Dev Guide httpdeveloperandroidcomguideindexhtml Abruf 28 Aug 2011
[7] HIPPE Hajo WILDE Klaus D Grundlagen des CRM Konzepte und Gestaltung2 Auflage Betriebswirtschaftlicher Verlag Dr Th GablerGWV Fachverlag GmbH2006 ndash ISBN 3ndash409ndash22518ndash8
[8] HOCKMANN Volker KNOumlLL Heinz-Dieter Profikurs Sicherheit von Web-Servern1 Auflage Vieweg+Teubner Verlag | GWV Fachverlag GmbH Wiesbaden 2008 ndashISBN 978ndash3ndash8348ndash0022ndash0
[9] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[10] JAMES MORRIS (Hrsg) SELinux Wiki httpselinuxprojectorgpageMain_Page Abruf 28 Aug 2011
[11] JEAN-PHILIPPE LANG (Hrsg) Suricata Wiki httpsredmineopeninfosecfoundationorgprojectssuricatawiki Abruf 28 Aug 2011
[12] KANNENGIESER Caroline KANNENGIESER Matthias PHP5MySQL5 MasterEdition Franzis Verlag GmbH 2007 ndash ISBN 987ndash3ndash7723ndash7110ndash3
46 Literaturverzeichnis
[13] LINUX NEW MEDIA AG (Hrsg) Etckeeper stellt System-konfiguration unter Versionskontrolle laquo Online Artikel laquo Linux-Magazin Online httpwwwlinux-magazindeOnline-ArtikelEtckeeper-stellt-Systemkonfiguration-unter-VersionskontrolleAbruf 28 Aug 2011
[14] NATIONAL SECURITY AGENCY (Hrsg) Security-Enhanced Linux - NSACSShttpwwwnsagovresearchselinux Abruf 28 Aug 2011
[15] NETCRAFT LTD (Hrsg) June 2010 Web Server Survey |Netcraft httpnewsnetcraftcomarchives20100616june-2010-web-server-surveyhtml Abruf 28 Aug 2011
[16] NETFILTER WEBMASTER (Hrsg) netfilterorg iumlptablespproject httpwwwnetfilterorgprojectsiptablesindexhtml Abruf 28 Aug 2011
[17] ORACLE CORPORATION ANDOR ITS AFFILIATES (Hrsg) MySQL Allge-meine Sicherheitsrichtlinien httpdevmysqlcomdocrefman51desecurity-guidelineshtml Abruf 28 Aug 2011
[18] PHP DOCUMENTATION GROUP (Hrsg) PHP Einfuumlhrung - Manual httpwwwphpnetmanualdeoop5introphp Abruf 28 Aug 2011
[19] PHP DOCUMENTATION GROUP (Hrsg) PHP Prepared State-ments und Stored Procedures httpwwwphpnetmanualdepdoprepared-statementsphp Abruf 28 Aug 2011
[20] RED HAT INC AND OTHERS (Hrsg) Administration Guide DraftApache -Fedora- Project httpfedoraprojectorgwikiAdministration_Guide_DraftApache Abruf 28 Aug 2011
[21] RED HAT INC AND OTHERS (Hrsg) Featuressystemd - FedoraProjecthttpfedoraprojectorgwikiFeaturessystemd Abruf 28 Aug 2011
[22] RED HAT INC AND OTHERS (Hrsg) Foundations - FedoraProject httpsfedoraprojectorgwikiFoundations Abruf 28 Aug 2011
[23] RESCORLA E HTTP Over TLS Internet Engineering Task Force Version Mai2000 httpwwwrfc-editororgrfcrfc2818txt 2000 (2818) ndash RFCndash 7 S
Erklaumlrung
Erklaumlrung
Hiermit erklaumlre ich dass ich die vorliegende Arbeit selbststaumlndig und nur unter Verwen-dung der angegebenen Literatur und Hilfsmittel angefertigt habe
Stellen die woumlrtlich oder sinngemaumlszlig aus Quellen entnommen wurden sind als solchekenntlich gemacht
Diese Arbeit wurde in gleicher oder aumlhnlicher Form noch keiner anderen Pruumlfungsbe-houmlrde vorgelegt
Mittweida 12 Dezember 2011
- Inhaltsverzeichnis
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Abkuumlrzungsverzeichnis
- Quellcodeverzeichnis
- Vorwort
- 1 Einleitung
-
- 11 Aufgabenstellung
- 12 Motivation
-
- 2 Grundlagen
-
- 21 CRM System
- 22 Android Plattform
- 23 Web Plattform
- 24 Kommunikationsprotokolle
- 25 Installation und Konfiguration der Entwicklungs und Produktivsysteme
-
- 3 Grundablaumlufe vor Systemeinfuumlhrung
-
- 31 Adressen Sammeln
- 32 Auswahl der Interessenten zur Kontaktaufnahme
- 33 Planen der Veranstaltungsorte
- 34 Terminierung
-
- 4 Sytemgestuumltzte Ablaumlufe
-
- 41 Adressen Sammeln
- 42 Planen von Veranstaltungsorten
- 43 Auswahl der Kunden zur Kontaktaufnahme
-
- 5 Sicherheitsaspekte
-
- 51 Betriebssystem des Servers
- 52 Webserver und angegliederte Programme
- 53 Scripte die auf dem Webserver laufen
-
- 6 Umsetzung
-
- 61 Bestehende Loumlsungen
- 62 Use Cases
- 63 Datenbank
- 64 Implementierung des Hauptsystems
- 65 Abschnitte
- 66 Implementierung des Android Systems
-
- 7 Fazit
- Literaturverzeichnis
-
top related