Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung...

67
BACHELORARBEIT Herr Michael Jope Entwicklung eines Web und Android gestützten CRM Systems 2011

Transcript of Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung...

Page 1: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 2: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 3: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 4: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 5: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 6: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 7: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 8: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 9: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 10: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 11: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 12: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 13: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 14: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 15: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 16: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 17: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 18: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 19: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 20: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 21: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 22: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 23: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 24: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 25: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 26: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 27: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 28: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im

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
Page 29: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 30: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 31: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 32: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 33: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 34: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 35: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 36: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 37: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 38: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 39: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 40: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 41: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 42: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 43: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 44: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 45: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 46: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 47: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 48: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 49: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 50: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 51: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 52: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 53: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 54: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 55: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 56: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 57: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im
Page 58: Thema der Bachelorarbeit · 2015. 7. 23. · Referat Ziel dieser Bachelorarbeit ist die Entwicklung einesCRMSystems. Da für einzelne Abläufe die Mobilität und Flexibilität im