Anhang - Thomas Büsser
Anhang - Thomas Büsser
Anhang - Thomas Büsser
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Mobile Anwendung zur<br />
Kommunikation von<br />
schulrelevanten Informationen<br />
Abschlussarbeit Gymnasium 2012<br />
Verfasser:<br />
Kevin Stierli, P13<br />
Raphael Haslebacher, NP12<br />
Schwerpunktfach:<br />
Physik und Anwendungen<br />
der Mathematik<br />
Betreuende Lehrperson:<br />
<strong>Thomas</strong> <strong>Büsser</strong><br />
Lehrer für Informatik<br />
Schulische Institution:<br />
Kantonsschule Sargans<br />
Datum:<br />
3. Februar 2012
Inhaltsverzeichnis II<br />
Inhaltsverzeichnis<br />
Inhaltsverzeichnis ................................................................................................................ II<br />
1 Einleitung ...................................................................................................................... 1<br />
1.1 Ziele der Arbeit ...................................................................................................... 1<br />
1.2 Motivation .............................................................................................................. 1<br />
1.3 Methodik ................................................................................................................ 1<br />
2 Einführung ..................................................................................................................... 3<br />
2.1 Begriffserklärung .................................................................................................... 3<br />
2.1.1 Kommunikation ....................................................................................................3<br />
2.1.1.1 Allgemeines ..........................................................................................................3<br />
2.1.1.2 Computervermittelte Kommunikation .................................................................3<br />
2.1.2 Android ................................................................................................................3<br />
2.1.3 Programmiersprachen ...........................................................................................4<br />
2.1.3.1 Java .......................................................................................................................4<br />
2.1.3.2 C ...........................................................................................................................4<br />
2.1.3.3 C# .........................................................................................................................5<br />
2.1.4 Client-Server-Modell ...........................................................................................5<br />
3 Umfrage und deren Resultate ...................................................................................... 6<br />
3.1 Ziel und Methodik der Umfrage .............................................................................. 6<br />
3.2 Auswertung der Umfrage ....................................................................................... 6<br />
3.2.1 Bedürfnisabklärung ..............................................................................................6<br />
3.2.2 Mobile Betriebssysteme .......................................................................................7<br />
3.2.2.1 Unsere Wahl: Android .........................................................................................8<br />
3.3 Fazit ....................................................................................................................... 9<br />
4 Arbeiten des praktischen Teils .................................................................................. 10<br />
4.1 Vorgehensmodelle zum Softwareentwicklungsprozess ........................................ 10<br />
4.1.1 Analyse und Vergleich verschiedener Modelle ..................................................10<br />
4.1.1.1 Wasserfallmodell ................................................................................................10<br />
4.1.1.2 Spiralmodell .......................................................................................................11<br />
4.1.1.3 V-Modell ............................................................................................................12<br />
4.1.1.4 Extreme Programming (XP) ...............................................................................12<br />
4.1.1.5 Scrum .................................................................................................................13<br />
4.1.2 Unsere Wahl: Scrum ..........................................................................................14<br />
4.1.3 Bearbeitungsablauf .............................................................................................15<br />
4.2 Produktanforderungen und Tests ......................................................................... 15<br />
4.2.1 Produktanforderungen ........................................................................................15<br />
4.2.2 Use-Cases ...........................................................................................................15<br />
4.2.3 Test-Cases ..........................................................................................................16<br />
4.3 Probleme, und wie sie gelöst wurden ................................................................... 17<br />
5 Architektur und Prozessschema des Gesamtsystems ............................................ 18<br />
5.1 Funktionsweise des Systems ............................................................................... 18<br />
5.1.1 Infrastruktureinheiten .........................................................................................18<br />
5.1.1.1 Sekretariats-Computer ........................................................................................18
Inhaltsverzeichnis III<br />
5.1.1.2 Server .................................................................................................................18<br />
5.1.1.3 Mobiles Endgerät ...............................................................................................19<br />
5.1.1.3.1 Android System Design .....................................................................................19<br />
5.1.2 Softwareanforderungen ......................................................................................20<br />
5.1.3 Datenübertragung ...............................................................................................21<br />
5.1.3.1 Verbindungsauf- und -abbau ..............................................................................21<br />
5.1.4 Sicherheit ............................................................................................................22<br />
5.1.4.1 Risikoanalyse .....................................................................................................22<br />
5.1.4.2 Angemessenes Sicherheitsniveau .......................................................................22<br />
5.1.4.3 Funktionsweise ...................................................................................................23<br />
5.2 Benutzeroberfläche .............................................................................................. 23<br />
5.2.1 Sekretariatsanwendung .......................................................................................24<br />
5.2.1.1 Bedienung der Anwendung ................................................................................24<br />
5.2.1.2 Aufgaben der Sekretärin .....................................................................................26<br />
5.2.2 Mobile Anwendung ............................................................................................26<br />
5.2.2.1 Bedienung der Anwendung ................................................................................27<br />
5.2.2.2 Funktionen der Anwendung ...............................................................................27<br />
6 Zusammenfassung ..................................................................................................... 28<br />
7 Literatur-/Quellenverzeichnis ....................................................................................... V<br />
8 Abbildungsverzeichnis ................................................................................................ IX<br />
<strong>Anhang</strong> ...............................................................................................................................A1<br />
1 Umfrage-Formular .......................................................................................................A1<br />
2 Rohdaten der Umfrage ...............................................................................................A2<br />
2.1 Bedürfnisabklärung .............................................................................................. A2<br />
2.2 Mobile Betriebssysteme ....................................................................................... A3<br />
3 Codebeispiele .............................................................................................................A4<br />
3.1 C# ........................................................................................................................ A4<br />
3.2 Java ..................................................................................................................... A5<br />
3.3 C .......................................................................................................................... A6
Einleitung 1<br />
1 Einleitung<br />
1.1 Ziele der Arbeit<br />
Die Arbeit soll am Schluss als Produkt eine IT-Infrastruktur (bestehend aus einer mobilen Applikation,<br />
Anwendung für das Sekretariat und Server) bereitstellen, mit der die Schüler der Kantonsschule<br />
Sargans (KSS) schulrelevante Informationen bequem auf ihrem mobilen Endgerät abrufen können. So<br />
soll der Schüler beispielsweise am Morgen vor der Schule eine Meldung bekommen, falls eine Stunde<br />
im Verlaufe des Tages ausfallen wird. Es ist natürlich wünschenswert, dass dieses Projekt schlussend-<br />
lich auch wirklich eingesetzt wird.<br />
Zuerst wollten wir aufgrund einer Umfrage abklären, welche mobilen Betriebssysteme bei den Schü-<br />
lern der KSS im Einsatz sind und ob unsere geplante mobile Anwendung auch Verwendung finden<br />
würde.<br />
Nicht zuletzt würden wir uns freuen, wenn dieses Projekt auch ein paar andere Schüler der KSS für die<br />
Informatik begeistern würde, denn Nachwuchs in dieser Branche ist Mangelware und wird in naher<br />
Zukunft bzw. schon heute stark gefragt sein.<br />
1.2 Motivation<br />
Den Grundstein dieses Projekts bildet das beiderseitige Bedürfnis zweier Schulkollegen, gemeinsam<br />
eine Anwendung schreiben zu wollen, die nützlich ist für den Alltag. Wir haben generell ein sehr gros-<br />
ses Interesse an Informatik, zudem stören wir uns zunehmend an der analogen Kommunikation an der<br />
Schule. Des Weiteren haben wir sehr viele sich ergänzende Interessen, einerseits besteht ein grosses<br />
Interesse an Smartphones allgemein, Google-Produkten wie z. B. Android, Dokumentengestaltung und<br />
grundsätzlich allen neuen IT-Produkten, auf der anderen Seite am Programmieren, Internetkommuni-<br />
kation, Verschlüsselungstechnik und Betriebssystemfunktionsweise. Zudem ist es für uns sehr profita-<br />
bel, da wir durch dieses Projekt viel Neues lernen, was sich später in einem angestrebten Informatik-<br />
Studium sicher als nützlich erweisen wird.<br />
1.3 Methodik<br />
Nach einer generellen Einleitung werden einige wichtige Begriffe erklärt, die durch die ganze Arbeit<br />
begleiten. Anschliessend wird kurz auf einige Programmiersprachen eingegangen, mit denen wir den<br />
grössten Teil unserer Anwendungssoftware programmiert haben. Diese mussten wir zum Teil zuerst<br />
noch mithilfe von Büchern erlernen.<br />
Im wissenschaftlichen Teil der Maturaarbeit wurde aufgrund einer Umfrage eine Bedürfnisabklärung<br />
für den Kommunikationsdienst sowie eine Bestandsaufnahme der genutzten mobilen Plattformen er-<br />
stellt. In diesem Teil wird auch noch genauer auf unsere Wahl von Android als mobiles Betriebssys-<br />
tem eingegangen.
Einleitung 2<br />
Bei der Softwareentwicklung wollten wir uns auf eines der zahlreichen vorhandenen Modelle zum<br />
Softwareentwicklungsprozess stützen; dieses musste allerdings zuerst noch durch einen aufwendigen<br />
Vergleich mehrerer Modelle ausgewählt werden.<br />
Danach folgt ein umfangreicher Teil über die ganze Infrastruktur. Im ersten Teil davon geht es um die<br />
Funktionsweise im Hintergrund der Anwendungen, im zweiten um die Funktionsweise auf der Ober-<br />
fläche. Im erstgenannten Teil soll u. a. auch erklärt werden, wie das Betriebssystem Android funktio-<br />
niert.<br />
Abgeschlossen wird die Arbeit mit einer kurzen Zusammenfassung über das gesamte Projekt.
Einführung 3<br />
2 Einführung<br />
Durch eine Begriffserklärung am Anfang soll der Einstieg in das Thema erleichtert werden.<br />
2.1 Begriffserklärung<br />
Mehrere Begriffe sind in der ganzen Maturaarbeit von grosser Bedeutung, einige davon werden an<br />
dieser Stelle erklärt.<br />
2.1.1 Kommunikation<br />
2.1.1.1 Allgemeines<br />
Unter Kommunikation versteht man die Verständigung untereinander, bzw. der zwischenmenschliche<br />
Verkehr besonders mithilfe von Sprache und Zeichen (Bibliographisches Institut GmbH, 2011). Bei<br />
diesem Informationsaustausch braucht es immer einen Sender und einen Empfänger, das ist auch bei<br />
unserer praktischen Arbeit nicht anders (vgl. 2.1.4). Der Begriff stammt ursprünglich vom lateinischen<br />
Wort „communicatio“ für „Mitteilung“ (Bibliographisches Institut GmbH, 2011). Infolge der neuen<br />
Medien gewinnt er zunehmend an Bedeutung. In dieser Arbeit ist v. a. die computervermittelte Kom-<br />
munikation relevant.<br />
2.1.1.2 Computervermittelte Kommunikation<br />
Mit „Computervermittelte Kommunikation“ (cvK) ist die Kommunikation über das Internet (oder<br />
Intranet 1 ) gemeint, also die Kommunikation mithilfe von digitalen Medien 2 . Einige ältere Formen der<br />
cvK sind E-Mail-Nachrichten, Blogs und Foren, neuerdings setzen sich aber Chats, Internettelefonie<br />
(VoIP 3 ) und Videokonferenzen 4 immer mehr durch. Der Grösste Vorteil der cvK ist mit Sicherheit die<br />
Unabhängigkeit von Raum und Zeit.<br />
2.1.2 Android<br />
Android ist in erster Linie ein Betriebssystem, vor allem für Smartphones und Tablets 5 . Es wird von<br />
der Open Handset Alliance 6 unter der Leitung von Google entwickelt (Google Inc., 2011) und baut auf<br />
einem Linux-Kernel auf. 7 Das erste Smartphone mit Android als Betriebssystem wurde im Oktober<br />
2008 veröffentlicht. Seit da an erlangte Android eine immer grösser werdende Beliebtheit, so ist And-<br />
roid unter den mobilen Betriebssystemen in den USA mit 53 % Marktanteil die Nummer eins, gefolgt<br />
von Apples iOS mit 29 % und RIMs Blackberrys mit 10 % (AOL Inc., 2011).<br />
1<br />
Internes Netzwerk von Unternehmen und Organisationen (siemax CMS Webdesign & Internetservice<br />
Feldkirchen, 2011)<br />
2<br />
Z. B. Mobiltelefonen<br />
3<br />
Voice over IP, IP = Internet Protocol<br />
4<br />
Z. B. über Skype<br />
5<br />
Tragbarer flacher Computer mit grossem Touchscreen<br />
6<br />
Konsortium von 80 Firmen (Stand: 1. Januar 2012)<br />
7<br />
Mehr zum Android System Design auf S. 14
Einführung 4<br />
2.1.3 Programmiersprachen<br />
Um sich in fremden Ländern zu verständigen, muss man die jeweilige örtlich gesprochene Sprache<br />
beherrschen. Beim Programmieren ist das nicht anders, und da sich unser Projekt in verschiedene Ge-<br />
biete hinein erstreckt, brauchen wir auch mehr als nur eine Sprache; jede davon hat ihre eigenen Stär-<br />
ken.<br />
2.1.3.1 Java<br />
Wenn es um plattformunabhängige Programmiersprachen geht, ist<br />
Java das Mass der Dinge. Mehr als 4.5 Milliarden Geräte werden un-<br />
terstützt (Oracle, 2011), alle Geräte, für welche eine sogenannte Java<br />
Virtual Machine (JVM) existiert, die dann wiederum das in Java ge-<br />
schriebene Programm ausführt. Neben der Hardwareunabhängigkeit ist<br />
die hohe Sicherheit ein weiterer wichtiger Vorteil von der Ausführung<br />
des Codes in einer JVM.<br />
Im Auftrag der Firma Sun Microsystems 8 wurde Oak 9 von James Gos-<br />
ling und seinem Team 1991 und 1992 ursprünglich zur Steuerung von<br />
Haushaltsgeräten entwickelt (Kersken-Canbaz, 2008). 1995 wurde<br />
Oak beerdigt, Teile davon aber unter dem heutigen Namen Java wei-<br />
tergeführt. Den Namen und das Logo erhielt Java aufgrund der Lieb-<br />
lings-Kaffeesorte seiner Entwickler (Infoworld, 2011). Bis heute wur-<br />
de die objektorientierte 10 , an C/C++ angelehnte Sprache Java<br />
(Kersken-Canbaz, 2008) ständig weiterentwickelt und ist derzeit mit<br />
fast 18 % Marktanteilen die beliebteste Programmiersprache bei den<br />
Programmierern (IDG Communications, 2011).<br />
Da für Android in Java programmiert wird, findet Java in unserem Projekt bei der Android-<br />
Applikation Verwendung (vgl. 5.2.2). Zur Veranschaulichung von Java-Code vgl. <strong>Anhang</strong> 3.2.<br />
2.1.3.2 C<br />
Abbildung 1: Die Kaffeetasse als<br />
Java-Logo (Wikipedia, 2006)<br />
C ist die zweitbeliebteste Programmiersprache hinter Java (IDG Communications, 2011). Im Gegen-<br />
satz zu Java ist C keine objektorientierte Programmiersprache, sondern eine imperative 11 , prozedurale.<br />
C findet vor allem Verwendung wenn es um hardwarenahe Programmierung und hohe Ausführungs-<br />
geschwindigkeit geht (Sommergut, 1997). Nur in Assembler geschriebene Programme werden schnel-<br />
ler ausgeführt, diese sind allerdings prozessorabhängig, somit also nicht portabel. Die Grammatik und<br />
Semantik von Assembler ist auch um einiges komplizierter als jene von C und somit noch fehleranfäl-<br />
8 Wurde Ende Januar 2010 von Oracle aufgekauft<br />
9 Object Application Kernel, engl. für „Eiche“ (in Anlehnung an die Eiche, die vor Goslings Fenster stand)<br />
10 auf der Idee, Verwendung von Objekten beruhend (Bibliographisches Institut GmbH, 2011)<br />
11 befehlend, zwingend, bindend (Bibliographisches Institut GmbH, 2011)
Einführung 5<br />
liger. Aus diesen Gründen werden Betriebssysteme, Compiler und auch Gerätetreiber meist in C pro-<br />
grammiert, so z. B. Linux oder auch Windows, grösstenteils.<br />
Erfunden wurde die im Jahre 1972 veröffentlichte Sprache C von Dennis Ritchie und Brian Kernig-<br />
han, sie ist eine Weiterentwicklung von BCPL und B. C wurde für die Entwicklung des Betriebssys-<br />
tems UNIX verwendet (Sommergut, 1997), dessen Erfolg wiederum C zum Durchbruch verhalf.<br />
In unserem Fall findet C aufgrund seiner Geschwindigkeit Einsatz beim Server (vgl. 5.1.1.2). Ge-<br />
schriebener Code dieser Programmiersprache befindet sich in <strong>Anhang</strong> 3.3.<br />
2.1.3.3 C#<br />
C# (see sharp) wurde von Microsoft entwickelt und im Jahre 2001 veröffentlicht. Es wird standard-<br />
mässig mit Microsofts Visual Studio 12 ausgeliefert. In Kombination mit dem .NET Framework 13 wer-<br />
den mit C# vor allem Windows-Anwendungen, Webdienste und z. B. Steuerelemente erstellt<br />
(Microsoft, 2011).<br />
C# ist eigentlich eine Weiterentwicklung von C++, so kam es auch zu seinem Namen 14 . Durch die<br />
Erhöhung um eine Stufe (++ in Programmiersprachen) von C++ entsteht ein vierfaches Plus, das als<br />
Doppelkreuz dargestellt wurde. C# weist enorme Ähnlichkeiten mit Java auf, so besitzt C# als Pendant<br />
zur JVM eine .NET Framework Common Language Runtime (Hinzberg).<br />
Zur Anwendung kommt bei uns C# beim Windows-Programm für das Sekretariat (vgl. 5.2.1). In An-<br />
hang 3.1 ist C#-Code zu sehen.<br />
2.1.4 Client-Server-Modell<br />
Ein Client-Server-System 15 besteht dem Namen entsprechend aus Server und Clienten, die durch ein<br />
Netzwerk verbunden sind. Der Server, der Dienste für die Clienten bereitstellt, wartet passiv auf eine<br />
Anforderung von einem Clienten. Kommuniziert wird dabei zwischen dem Client-Programm und dem<br />
Server-Programm. Das Client-Programm sendet dem Server-Programm Befehle, die vom Server-<br />
Programm ausgeführt werden, wodurch danach dem Client-Programm die angeforderten Daten über-<br />
mittelt werden (Dehmer, 2003).<br />
Im Gegensatz zum Peer-to-Peer-Modell 16 werden beim Client-Server-Modell die Ressourcen zentral<br />
auf dem Server gespeichert. Die Verwaltung der Ressourcen findet somit auf Ebene des Servers statt<br />
und gestaltet sich dadurch relativ einfach, die Clienten müssen dabei also nicht speziell beachtet wer-<br />
den (Kioskea, 2009).<br />
12 Vgl. http://www.microsoft.com/germany/express/<br />
13 eine Klassenbibliothek für Microsoft Windows<br />
14 Ausführliche Geschichte vgl. http://www.cul.de/data/csharppr2.pdf<br />
15 Auf Deutsch: Kunden-Diener-System<br />
16 Netzwerk ohne zentralen Server, alle Systeme sind Server und Client zugleich
Umfrage und deren Resultate 6<br />
3 Umfrage und deren Resultate<br />
3.1 Ziel und Methodik der Umfrage<br />
Mithilfe einer schulinternen Umfrage (siehe <strong>Anhang</strong> 1) an der Kantonsschule Sargans wollten wir<br />
einerseits herausfinden, wie gross die Nachfrage für eine App ist, die z. B. über Stundenausfälle in-<br />
formiert, und andererseits wollten wir in Erfahrung bringen, wie es mit den Marktanteilen der mobilen<br />
Betriebssysteme bei uns an der Schule steht.<br />
Die Umfrage wurde persönlich an die Klassenchefin/den Klassenchef geschrieben, die/der dann die<br />
Umfrage für die ganze Klasse ausfüllen sollte, nach Rücksprache mit den einzelnen Schülern. Wir<br />
erhofften uns dadurch eine grössere Teilnehmeranzahl. Die Gefahr, dass das Umfrageblatt umgehend<br />
ohne Beachtung entsorgt wird ist unserer Ansicht nach kleiner, wenn eine Person die Verantwortung<br />
für die ganze Klasse trägt, als wenn jede Schülerin/jeder Schüler selbst ein Blatt bekommt. Ferner<br />
konnten wir dank dieser Taktik zudem eine sinnlose Papierverschwendung vermeiden. Damit wir auch<br />
für den zweiten Teil der Umfrage mit einer hohen Teilnehmeranzahl rechnen konnten, baten wir die<br />
Klassenchefin/den Klassenchef, diesen Teil von einer Person der Klasse ausfüllen zu lassen, die sich<br />
besonders gut mit Handys auskennt.<br />
3.2 Auswertung der Umfrage<br />
3.2.1 Bedürfnisabklärung<br />
Bei der Bedürfnisabklärung handelte es sich - wie schon gesagt - um die Frage, ob die befragten Per-<br />
sonen eine App, wie sie von uns geplant war, herunterladen und installieren würden, falls sie für ihr<br />
jeweiliges Handy verfügbar wäre. Als Antwort standen „Ja“, „Nein“, „Vielleicht“ oder „kein Handy“<br />
zur Auswahl.<br />
Von den ca. 710 Schüler/innen der Kantonsschule (Kantonsschule Sargans, 2011), die maximal an der<br />
Umfrage hätten teilnehmen können, wirkten ansehnliche 490 mit, was einer Beteiligung von knapp<br />
mehr als zwei Dritteln (69 %) entspricht. 12 Personen gaben an, kein Handy zu besitzen. Dieser Anteil<br />
von gut 2 % stimmt erfreulich exakt mit dem Ergebnis der sogenannten JAMES 17 -Studie überein, bei<br />
der 2010 über 1000 Jugendliche von der ZHAW 18 befragt wurden (Willemse Isabel, 2010).<br />
„Vielleicht“ haben 11 % der Befragten als Antwort angegeben, „Nein“ 8 % und erstaunliche 78 %<br />
gaben an, die App herunterladen und installieren zu wollen. Ob sie das auch wirklich tun würden ist<br />
wiederum eine andere Frage. Aber grundsätzlich kann man sicherlich sagen, dass ein grosses Interesse<br />
vorhanden ist.<br />
17 Jugend, Aktivitäten, Medien – Erhebung Schweiz<br />
18 Zürcher Hochschule für Angewandte Wissenschaften
Umfrage und deren Resultate 7<br />
Kein Handy<br />
Vielleicht<br />
Abbildung 2: Diagramm zum Marktpotenzial einer Kommunikations-App an der KSS<br />
3.2.2 Mobile Betriebssysteme<br />
Beim zweiten Teil der Umfrage wollten wir vor allem herausfinden, wie gross der Marktanteil von<br />
Android bei uns an der Schule ist, denn eine App für ein Betriebssystem, das niemand nutzt, wäre<br />
nicht sinnvoll. Aus diesem Grund mussten die befragten Personen angeben, welches Betriebssystem<br />
auf ihrem Handy installiert ist. Zur Auswahl gaben wir „Android“ von Google, „iOS“ von Apple,<br />
„Windows Phone 7“ von Microsoft, „Symbian“ von Nokia und „Sonstiges“ vor, zu dem wir alle ande-<br />
ren mobilen Betriebssystem und sämtliche individuellen Eigenproduktionen von den Handyherstellern<br />
zählen.<br />
Nein<br />
Ja<br />
0% 10% 20% 30% 40% 50% 60% 70% 80% 90%<br />
Logischerweise konnten alle Schüler, die nicht im Besitze eines Handys sind, sich bei diesem Teil<br />
nicht beteiligen. Somit ergab sich eine Teilnehmeranzahl von 478 Personen. Der grösste Anteil geht an<br />
die Kategorie „Sonstiges“. Dies ist nicht weiter erstaunlich, da zu dieser Kategorie beispielsweise alle<br />
alten, beliebten Handys von Sony Ericsson und alle Blackberrys dazugezählt werden. Des Weiteren<br />
haben wir zu dieser Kategorie auch alle Antwortenden dazugerechnet, die nicht wussten, welches Be-<br />
triebssystem auf ihrem Handy installiert ist. Diese Kategorie ist allerdings auch nicht von allzu grosser<br />
Bedeutung, da sich für diese Handys keine App mit solchen Funktionen, wie wir sie verwenden woll-<br />
ten, programmieren lässt. Symbian, das vor ein paar Jahren bei den Smartphones noch dominierend<br />
war, kommt noch auf einen bescheidenen Anteil von knapp 7 %. Noch weniger Marktanteile verbuch-<br />
te Windows Phone 7, immerhin steht es im Gegensatz zu Symbian nicht auf dem absteigenden Ast.<br />
Mit gut 1 % Anteil konnte sich Microsofts neues mobiles Betriebssystem allerdings auch bei uns in<br />
der Schule noch überhaupt nicht behaupten.<br />
Marktpotenzial<br />
142 Teilnehmer nutzt iOS, dies entspricht einem beträchtlichen Anteil von 30%, es besitzt also fast<br />
jeder dritte Schüler ein iPhone! Mit bemerkenswerten 26% (126 Geräte) liegt Android erstaunlich
Umfrage und deren Resultate 8<br />
knapp hinter iOS. Dieses Resultat ist für uns doch ziemlich erstaunlich, da Android noch ein relativ<br />
junges Betriebssystem ist und wir iOS dominierender erwartet hätten. Zudem ist das iPhone in der<br />
Schweiz traditionell sehr beliebt. So lief im Jahre 2010 in der Schweiz auf jedem zweiten Smartphone<br />
(52%) iOS, mit knapp 23% lag Android deutlich auf dem zweiten Rang (20 Minuten AG, 2012).<br />
Windows Phone 7<br />
Marktverteilung der mobilen Betriebssysteme<br />
Sonstiges<br />
Symbian<br />
iOS<br />
Android<br />
Abbildung 3: Diagramm zur Marktverteilung der mobilen Betriebssysteme an der KSS<br />
3.2.2.1 Unsere Wahl: Android<br />
Wenn man für iOS entwickeln will stösst man als Windows-, bzw. Linux-User, wie wir es sind,<br />
schnell auf die erste Hürde. Man benötigt dazu einen Mac mit Intel-Prozessor, auf dem OS X Snow<br />
Leopard oder neuer läuft (Apple Inc., 2011). Zusätzlich fallen noch Kosten von 99$/Jahr an (Apple<br />
Inc., 2011), damit man Member beim iOS Developer Program ist. Ohne diese Mitgliedschaft kann<br />
man keine Apps im App-Store veröffentlichen. Auch um für Android zu entwickeln kommt man nicht<br />
kostenlos davon, allerdings gibt es hier nur eine einmalige Registrierungsgebühr in Höhe von 25$<br />
(Google, 2011). Apple überprüft im Gegensatz zu Google alle eingereichten Apps, bevor sie im App-<br />
Store veröffentlicht werden. Das ist natürlich mit einer gewissen Wartezeit verbunden und somit für<br />
uns auch nicht optimal.<br />
Der für uns entscheidende Grund ist die Tatsache, dass wir beide weder ein iPhone noch ein iPad be-<br />
sitzen, sondern beide ein Android-Smartphone. Theoretisch wäre es schon möglich eine App für ein<br />
iPhone zu entwickeln, ohne eines zu besitzen, aber es ist nicht gerade empfehlenswert. Für uns wäre es<br />
also eine kostspielige Angelegenheit geworden, für iOS zu entwickeln. Abgesehen davon liegt uns die<br />
Philosophie von Google besser als jene von Apple. Android ist ein offenes Betriebssystem, kommt auf<br />
einer Vielfalt von Geräten mehrerer Hersteller zum Einsatz, und man ist nicht wie bei iOS von iTunes,<br />
iPhone etc. abhängig.<br />
0% 5% 10% 15% 20% 25% 30% 35% 40%
Umfrage und deren Resultate 9<br />
Der wichtigste Punkt, den es bei unserer Entscheidung zu beachten gab, sprach allerdings gegen And-<br />
roid: die Anzahl der Benutzer. Es muss ja ein Ziel sein, dass unser Endprodukt von möglichst vielen<br />
Schülern verwendet werden kann. Es wäre also aufgrund der Umfrage naheliegender, eine App für<br />
iOS zu schreiben. Aber nicht zuletzt deswegen sind wir hocherfreut über das Resultat der Umfrage,<br />
die zeigt, dass Android nur knapp dahinter am Zweitmeisten angewendet wird. Unsere Angst, eine<br />
App nur für ein paar wenige Schüler zu entwickeln, hat sich glücklicherweise nicht bestätigt. Und<br />
auch die Tatsache, dass Android im Aufschwung ist, stimmt uns positiv. Es wäre nicht erstaunlich,<br />
wenn in einem Jahr mehr Schüler der Kantonsschule Android als iOS nutzen würden. (Vgl. z. B. Arti-<br />
kel: Android überholt Apple iOS in Deutschland (SPIEGELnet GmbH, 2011))<br />
3.3 Fazit<br />
Die Umfrage werten wir als vollen Erfolg, da zum einen eine überwältigende Mehrheit von 78 % der<br />
Kantonsschüler Interesse an unserer App gezeigt hat und da zum anderen unsere Wahl Android nicht<br />
widerlegt wurde. Gestützt auf diese Umfrage könnten wir ohne schlechtes Gewissen das Sekretariat<br />
der KSS bitten, unsere Infrastruktur zumindest für eine gewisse Testphase einzusetzen. Voraussicht-<br />
lich wird es die mobile Applikation allerdings nur für Android geben, eine Version für iOS wird even-<br />
tuell zu einem späteren Zeitpunkt noch folgen, abhängig davon ob die Android-App schlussendlich<br />
wirklich Anklang findet.
Arbeiten des praktischen Teils 10<br />
4 Arbeiten des praktischen Teils<br />
4.1 Vorgehensmodelle zum Softwareentwicklungsprozess<br />
Softwareentwicklungsprojekte werden oft rasch sehr komplex. Damit man nicht den Faden verliert, ist<br />
es ratsam, eines der zahlreichen, möglichen Vorgehensmodelle anzuwenden. Sie umfassen je nach<br />
Modell den ganzen Prozess von der Analyse der Anforderungen für eine Anwendung bis hin zur War-<br />
tung des Endprodukts (Informatik Forum Simon GmbH, 2011).<br />
4.1.1 Analyse und Vergleich verschiedener Modelle<br />
Hier folgend werden einige bekannte Vorgehensmodelle etwas genauer erklärt.<br />
4.1.1.1 Wasserfallmodell<br />
Anforderungen<br />
Schritt<br />
Phase<br />
Einstufige Iteration<br />
Analyse<br />
Entwurf<br />
Programmierung<br />
Implementierung<br />
Test<br />
Abbildung 4: Die einzelnen Schritte des Wasserfallmodells, gemäss (TEIA AG, 2009)<br />
Inbetriebnahme<br />
Wartung<br />
Wie ein Wasserfall geradlinig nach unten fällt geht man bei diesem Modell Schritt für Schritt in Rich-<br />
tung Ziel. Man fängt beim ersten Schritt an, schliesst ihn vollständig ab und geht zum nächsten. Ein-<br />
stufige Iterationen 19 sind grundsätzlich möglich, aber häufig nicht erwünscht. In der Geschäftswelt ist<br />
dieses Modell nicht stark verbreitet, da auf Kundenwünsche im Nachhinein nicht mehr reagiert werden<br />
kann (Baur, 2011). Allerdings liefert es im Grunde genommen eine gute Basis, weshalb viele andere<br />
Modelle vom Wasserfallmodell her abgewandelt und weiterentwickelt worden sind (Software Quality<br />
Lab, 2003, S. 4).<br />
19 Lat. iteratio = Wiederholung
Arbeiten des praktischen Teils 11<br />
4.1.1.2 Spiralmodell<br />
Abbildung 5: Das Spiralmodell von Barry W. Boehm (Wikipedia, 2004)<br />
Das Spiralmodell ist ein Beispiel einer Weiterentwicklung des Wasserfallmodells. Im Gegensatz dazu<br />
aber ist es iterativ, da die einzelnen Schritte mehrmals durchlaufen werden. Das Softwareprodukt<br />
wächst spiralförmig, wobei die Entwicklung in vier Quadranten 20 unterteilt ist. Ein vollständiger Um-<br />
lauf ergibt dabei den nächsten Prototyp (Baur, 2011), nach dem letzten Durchlauf ist das Produkt fer-<br />
tig.<br />
Im Gegensatz zu vielen anderen Modellen besitzt das Spiralmodell eine umfassende Risikoanalyse,<br />
wodurch das Flop-Risiko beträchtlich abnimmt. Dadurch wird es aber auch zeitintensiv und kostspie-<br />
lig.<br />
20 Je ein 90°-Sektor
Arbeiten des praktischen Teils 12<br />
4.1.1.3 V-Modell<br />
Anforderungsdefinitionen<br />
Grobentwurf<br />
Feinentwurf<br />
Modulimplementation<br />
Modultest<br />
Abbildung 6: Schichten des (vereinfachten) V-Modells, gemäss (Bürger, 2003)<br />
Integrationstest<br />
Systemtest<br />
Abnahmetest<br />
Für die deutschen Bundesbehörden ist das V-Modell 21 der Entwicklungsstandard. Es bekam seinen<br />
Namen durch die schematische Darstellung, bei dem es für jede Phase auf dem Weg zur Modulimple-<br />
mentation auch entsprechend eine Phase auf dem Weg zur Abnahme gibt (Golesny, 2006, S. 40). Die-<br />
ses Modell ist je nach Ausführung sehr umfangreich und berücksichtigt abgesehen vom eigentlichen<br />
Entwicklungsprozess auch weitere Bereiche wie Projektmanagement und Qualitätsmanagement<br />
(Software Quality Lab, 2003, S. 4). Im Jahre 2005 wurde dieses Modell überarbeitet und durch das V-<br />
Modell XT 22 ersetzt. So lässt sich dieses Modell nun durch Tailoring 23 an die eigenen Bedürfnisse und<br />
an die Umstände anpassen. Somit ist es für Grossprojekte, aber auch für kleine, gut anwendbar.<br />
4.1.1.4 Extreme Programming (XP)<br />
Geschichten<br />
(Anforderungen)<br />
Architekturtreffen<br />
Funktionstests<br />
Fehler<br />
Metapher Versions- Versionsplan akt. Version<br />
plan<br />
Iteration<br />
Akzeptanz- vollständige<br />
tests<br />
Release<br />
Version<br />
geänderte<br />
Anforderungen<br />
Abbildung 7: Ablauf eines XP-Projekts (FHS St. Gallen, 2011)<br />
21 Das V-Modell baut ebenfalls auf dem Wasserfallmodell auf.<br />
22 V-Modell Extreme Tailoring, engl. to tailor = schneidern<br />
23 wegschneiden bzw. anpassen von Teilen des V-Modells<br />
Nächste Iteration
Arbeiten des praktischen Teils 13<br />
Bei XP, der bekanntesten Methode der agilen 24 Entwicklungsprozesse, geht es vor allem um die Er-<br />
stellung des Quellcodes und den kürzesten Weg dorthin (FHS St. Gallen, 2011), es wird also zu Be-<br />
ginn der Entwicklung auf einen umfassenden Anforderungskatalog verzichtet (Golesny, 2006, S. 45).<br />
Alle denkbaren Phasen der Softwareentwicklung laufen in kurzen Schritten nacheinander, also fast<br />
parallel ab, das hat den Vorteil, dass man sehr schnell auf neue Kundenwünsche eingehen kann. Für<br />
XP eignen sich nur kleine Teams, häufig wird auch zu zweit programmiert, wodurch die Fehlerrate<br />
massiv abnimmt und komplexe Sachverhalte sich in kürzester Zeit lösen lassen. Nachteilig bei dieser<br />
Methode sind, dass ständig ein Kunde vor Ort sein sollte und dass Festpreisprojekte und fixe Fertig-<br />
stellungstermine kaum möglich sind (FHS St. Gallen, 2011).<br />
4.1.1.5 Scrum<br />
Abbildung 8: Grafische Darstellung von Scrum (it-agile, 2008)<br />
Scrum 25 ist mittlerweile ebenfalls eine der bekanntesten agilen Entwicklungsmethoden. Es folgt den<br />
Prinzipien Transparenz, Überprüfung und Anpassung, d. h., dass immer alle Beteiligten über den aktu-<br />
ellen Entwicklungsstand informiert sind, dass verschiedene Aspekte des Prozesses immer wieder auf<br />
inakzeptable Abweichungen inspiziert werden und dass, falls solche vorhanden sind, der Entwick-<br />
lungsprozess schnell angepasst wird.<br />
24 agil = von großer Beweglichkeit zeugend (Bibliographisches Institut GmbH, 2012)<br />
25 Der Begriff stammt vom Rugby-Sport und bezeichnet das sogenannte „Angeordnete Gedränge“.
Arbeiten des praktischen Teils 14<br />
In Scrum gibt es drei Rollen für am Prozess beteiligte Personen: den ScrumMaster, den Product-<br />
Owner und das (Entwicklungs-) Team. Der ScrumMaster beseitigt Hindernisse und schaut dafür, dass<br />
Scrum möglichst gut angewendet wird. Der Product-Owner erstellt die Anforderungen an das System<br />
und priorisiert sie (Kriegisch, 2010). Das Team entwickelt das eigentliche Produkt.<br />
Die vom Product-Owner erstellte Liste mit allen Anforderungen an das Produkt nennt sich Product<br />
Backlog. Es ist veränderlich, es wird also ständig durch neue bzw. veränderte Anforderungen aktuali-<br />
siert. Aus dem Product Backlog werden in regelmässigen Abständen (z. B. vier Wochen) mehrere<br />
Aufgaben herausgenommen und zu einer neuen Liste, dem Sprint Backlog, zusammengefügt. Dieses<br />
Sprint Backlog wird danach vom Team in einem sogenannten Sprint (z. B. vier Wochen) ungestört<br />
abgearbeitet. Nach jedem Sprint ist ein Teil des Produkts fertiggestellt, es wäre also potenziell auslie-<br />
ferbar. Zu Beginn von jedem Arbeitstag findet ein Daily Scrum statt, das dem Informationsaustausch<br />
zwischen den Team-Mitgliedern dient.<br />
Scrum basiert also v. a. durch seine Sprints auf einem iterativen, inkrementellen 26 Ansatz.<br />
Für mehr Informationen über Scrum bzw. über weitere Elemente von Scrum verweisen wir an dieser<br />
Stelle auf den offiziellen Scrum-Guide: http://www.scrum.org/scrumguides/ (Schwaber & Sutherland,<br />
2011).<br />
4.1.2 Unsere Wahl: Scrum<br />
Scrum haben wir gewählt, weil es unseren Vorstellungen mit seinen Sprints relativ gut entsprach, es<br />
uns mehrfach empfohlen wurde und wir ein Entwicklungsmodell anwenden wollten, das in der Reali-<br />
tät auch häufig eingesetzt wird. Es könnte also durchaus sein, dass zumindest einer von uns dieses<br />
Modell später allenfalls in professionellem Umfeld einsetzen wird. Als weiterer Punkt zur Wahl von<br />
Scrum hat die Aussage beigetragen, Scrum sei verhältnismässig einfach zu lernen und lasse sich<br />
schnell einsetzten (it-agile, 2008), was wir nun allerdings nur teilweise bestätigen können.<br />
Da wir lediglich ein Zweier-Team sind und der ScrumMaster nicht gleichzeitig auch den Product-<br />
Owner verkörpern darf, waren die Rollen in unserem Fall schnell verteilt. Da unser Projekt nicht von<br />
riesiger Komplexität ist, ist es auch kein Problem, dass sowohl der ScrumMaster als auch der Product-<br />
Owner selbst Entwickler sind. Wir mussten das Prozessschema anbelangend einige Anpassungen vor-<br />
nehmen, so z. B. aufgrund der geringen Produktgrösse die Dauer eines Sprints etwas herabsetzen. Wir<br />
haben allgemein aufgrund der Grösse der Arbeit alles etwas verkleinert und gekürzt.<br />
Im Nachhinein ist an dieser Stelle zu ergänzen, dass wir uns sehr schwer taten mit dieser Methode. Die<br />
ersten Wochen klappte das Ganze noch recht gut, mit der Zeit ging jedoch Element um Element verlo-<br />
ren. Nur das Daily-Scrum konnte sich bis zum Schluss durchsetzen. Unser effektiv angewendetes Mo-<br />
dell entwickelte sich selbstständig immer mehr in Richtung von XP, sodass wir das nächste Mal an-<br />
statt auf Scrum auf XP setzen würden.<br />
26 inkrementell = schrittweise erfolgend, aufeinander aufbauend (Bibliographisches Institut GmbH, 2012)
Arbeiten des praktischen Teils 15<br />
Unserer Meinung nach ist Scrum für ein solch kleines Projekt wie das unsrige etwas zu komplex und<br />
verkompliziert die Sache mehr als dass es ihr nützt. Wir können uns gut vorstellen, dass es ein sehr<br />
gutes Entwicklungsmodell ist für eine Gruppe von etwa zehn Personen, aber für ein Zweierteam<br />
scheint es nicht geeignet zu sein.<br />
4.1.3 Bearbeitungsablauf<br />
Nach der Wahl eines Software-Entwicklungsmodells ging es an das eigentliche Werk, das Program-<br />
mieren der Anwendungen und das Erklären im schriftlichen Teil. Diese Arbeiten waren sehr umfas-<br />
send und zogen sich über mehrere Monate hin. Speziell das Programmieren war sehr zeitraubend; man<br />
sieht sich, v. a. als nicht professionelle Entwickler, laufend mit irgendwelchen Problemen konfrontiert.<br />
Kaum einer wird die Anzahl Stunden erahnen, die unser Endprodukt verschlungen hat.<br />
Damit wir möglichst viel von der Arbeit profitieren konnten, wollten wir zuerst beide sowohl pro-<br />
grammieren als auch beschreiben. Aufgrund der unterschiedlichen Ausgangslage und Kenntnisse kam<br />
es allerdings relativ rasch zu einer Aufteilung der beiden Bereiche. Durch intensiven Austausch über<br />
den Werdegang, den Stand der Arbeiten sowie über Probleme und deren Lösungen konnten wir den-<br />
noch parallel vorwärtsarbeiten. Die Qualität der Arbeit hat dadurch sicher profitiert.<br />
4.2 Produktanforderungen und Tests<br />
Damit man bei der Software-Entwicklung nicht vom Weg abkommt, sollte man sein Ziel immer vor<br />
Augen haben, sprich: man sollte am Anfang die Produktanforderungen festlegen, damit immer klar ist,<br />
was erreicht werden will. Zudem ist es auf dem Weg zum Endprodukt wichtig, kontinuierlich Tests<br />
durchzuführen, damit gravierende Fehler rasch aufgedeckt werden können. Vor Veröffentlichung des<br />
Produkts wird es eingehend ausgetestet, damit selbst kleine Schönheitsfehler vermieden werden kön-<br />
nen.<br />
4.2.1 Produktanforderungen<br />
Unsere eigenen Anforderungen an das Produkt sind, dass es den einzelnen Schüler mindestens über<br />
Stundenausfälle informieren kann. Die App soll den Benutzer selbständig über einen Ausfall informie-<br />
ren, damit der Endnutzer nicht jeden Morgen selbst nachschauen muss. Zudem sollte die App den<br />
Schüler auch nur relevante Informationen liefern, d. h. nur für diejenigen Lehrer eine Benachrichti-<br />
gung ausgeben, bei denen er auch wirklich Schule hätte. Zudem legen wir grossen Wert auf die Si-<br />
cherheit, so müssen z. B. Passwörter unabdingbar verschlüsselt übertragen werden. Die Benutzerober-<br />
fläche der App sollte so einfach wie möglich aufgebaut sein, damit sie auch jeder versteht. Für erfah-<br />
renere Benutzer sollte es zusätzlich eine Möglichkeit geben, einige Parameter wie z. B. die Aktualisie-<br />
rungshäufigkeit selber zu verändern.<br />
4.2.2 Use-Cases<br />
Aus den Produktanforderungen können die Anwendungsfälle direkt abgeleitet werden. In unserem Fall<br />
sind sie sehr kurz gefasst, es handelt sich somit vielmehr um sogenannte User-Stories.
Arbeiten des praktischen Teils 16<br />
Unsere drei wichtigsten User-Stories:<br />
Absenz erstellen<br />
Benachrichtigung<br />
Sicherheit<br />
4.2.3 Test-Cases<br />
Die Sekretärin erstellt mittels Windows-Programm eine Absenz, damit die Basis<br />
zur digitalen Benachrichtigung gelegt ist.<br />
Die Android-App gibt eine Benachrichtigung aus, sobald für den Schüler eine<br />
relevante Information vorliegt, damit er frühzeitig informiert ist.<br />
Das ganze System muss sicher sein, damit keine persönlichen Daten verloren<br />
gehen können und damit keine Rückgriffe auf das EDV-System der KSS mög-<br />
lich sind.<br />
Testen ist im Grunde genommen eine sehr mühselige Angelegenheit, denn fertig ist man damit eigent-<br />
lich nie. Es kann durchaus auch vorkommen, dass man dabei Fehler findet, die man gar nicht gesucht<br />
hat. Ab einer gewissen Komplexität der Anwendung wird es praktisch unmöglich, alle Fehler zu fin-<br />
den. So wird davon ausgegangen, dass durchschnittlich etwa 3 Fehler pro 1000 Zeilen geschriebenem<br />
Softwarecode existieren (Ezunov & Grundmeier, 2011).<br />
Aufgrund unserer sehr abstrakt abgefassten Use-Cases ergeben sich aus einem einzelnen Anwen-<br />
dungsfall sehr viele kurze Test-Cases. Sie werden zudem unterteilt in Positiv- und Negativ-Testfälle.<br />
Es wird also einerseits untersucht, ob die Anforderungen erfüllt sind, andererseits werden durch be-<br />
wusst falsche Benutzereingaben Fehler erzwungen. Ziel dabei ist es, dass das Programm am Schluss<br />
auf jede noch so falsche Eingabe des Benutzers stabil reagiert, z. B. in Form einer hilfreichen Fehler-<br />
meldung.<br />
Einige Beispiele für Testfälle zum Anwendungsfall „Absenz erstellen“:<br />
Schritt: Erwartetes Ergebnis:<br />
Sekretärin klickt auf den Button „Absenz hin-<br />
zufügen“<br />
Sekretärin wählt in den Dropdown-Feldern<br />
„Von“ bzw. „Bis“ „Lektion 1“ bzw. „Lektion<br />
8“ aus (jeweils gleiches Datum)<br />
Sekretärin wählt in den Dropdown-Feldern<br />
„Von“ bzw. „Bis“ „Lektion 8“ bzw. „Lektion<br />
1“ aus (jeweils gleiches Datum)<br />
Dialogfenster „Absenz erstellen…“ öffnet sich<br />
Die Absenz wird erfolgreich mit der Absenz-<br />
Gültigkeit von Lektion 1 bis Lektion 8 gespei-<br />
chert<br />
Auswahl von „Lektion 1“ ist nicht möglich (auf-<br />
grund des gleichen Datums und „Lektion 1“<br />
„Lektion 8“)
Arbeiten des praktischen Teils 17<br />
Nach der Durchführung eines Testfalls erfolgt die Testauswertung; wenn das erwartete Ergebnis ein-<br />
trifft, ist er somit erledigt, wenn nicht, bleibt er offen. Der Test muss nach der notwendigen Bearbei-<br />
tung des Codes erneut ausgeführt werden.<br />
4.3 Probleme, und wie sie gelöst wurden<br />
Während des Programmierens stösst man ab und zu auf ein Problem, das sich in den nächsten Stunden<br />
nicht lösen lassen wird. Einige uns widerfahrene Probleme dieser Art werden hier beispielhaft etwas<br />
genauer erläutert.<br />
Eines der ersten Probleme stellte die Kommunikation über das Internet dar. Wie kann mit einem ande-<br />
ren Computer via Internet kommuniziert werden, bzw. wie kann eine Verbindung von Smartphone zu<br />
Server aufgebaut werden? Gelöst wurde dies mittels KSSP/TCP/IP 27 (vgl. 5.1.3).<br />
Durch die Lösung dieser Frage entstand bereits ein zweites Problem, und zwar folgendes: Die Daten<br />
werden primitiv übertragen, und theoretisch könnte somit jedermann diese abfangen und manipulie-<br />
ren. Dies wollten wir natürlich nicht zulassen. Deshalb verwenden wir Verschlüsselungen und andere<br />
Schutzmassnahmen.<br />
Während der Bewältigung des zweiten Problems sahen wir uns im Rahmen der Absicherung der Da-<br />
tenübertragung bereits mit einem weiteren konfrontiert. Ein Prozessor kann „nur“ mit Zahlen bis zu<br />
einer durch ihn begrenzten Grösse direkt rechnen (z. B. mit Zahlen im Bereich von 0 bis für<br />
vorzeichenlose Zahlen oder von bis für vorzeichenbehaftete Zahlen). Um jedoch ext-<br />
rem grosse Zahlen (z. B. Zahlen im Bereich von 0 bis ) zu berechnen, braucht es mathemati-<br />
sche Funktionen aus dem Gebiet der Algorithmischen Zahlentheorie 28 . Wir bedienten uns Funktions-<br />
Bibliotheken, da das Thema zu komplex ist und den Umfang der praktischen Arbeit sprengen würde.<br />
Wie man sieht, hört das nie auf. Ein Problem entsteht durch das andere.<br />
27 KSSP steht für das von uns genutzte, eigene Protokoll<br />
28 U. a. Primzahltests, Logarithmusberechnungen und Faktorisierungs-Algorithmen, vgl.<br />
http://www.kuertz.name/files/Zahlentheorie.pdf
Architektur und Prozessschema des Gesamtsystems 18<br />
5 Architektur und Prozessschema des Gesamtsystems<br />
5.1 Funktionsweise des Systems<br />
Der grösste Teil der Zeit, die die Erstellung eines Programms verschlingt, wird in den Programm-Code<br />
gesteckt. Beim fertigen Produkt sieht man allerdings nur die Benutzeroberfläche und nicht, was sich<br />
im Hintergrund alles abspielt. Um diesen Sachverhalt zu erklären wurde dieser Berichts-Teil erstellt.<br />
5.1.1 Infrastruktureinheiten<br />
Für unser Projekt braucht es nicht nur das Android-Handy und die Android-Anwendung, sondern auch<br />
einen PC mit einer Windows-Anwendung für das Sekretariat und einen Server mit darauf ausgeführ-<br />
tem Programm.<br />
mobile<br />
Endgeräte<br />
Z. B. UMTS<br />
Wireless<br />
Haus eines Schülers<br />
Internet<br />
Abbildung 9: Infrastruktureinheiten: Sekretariats-PC, Server und zwei mobile Endgeräte<br />
5.1.1.1 Sekretariats-Computer<br />
KSS<br />
Server<br />
Sekretariats-PC<br />
Wenn ein Lehrer z. B. krank ist ruft er aufs Sekretariat an und gibt der Sekretärin Bescheid. Sie füllt<br />
anschliessend von Hand ein Absenzen-Formular aus und bringt es am Anschlagbrett an. Für unsere<br />
digitale Lösung füllt die Sekretärin ebenfalls ein Absenzen-Formular aus, allerding eines in digitaler<br />
Form. Dazu muss unser erstelltes Sekretariats-Programm auf ihrem PC installiert sein. Nachdem die<br />
Sekretärin das für Absenzen vorgesehene Formular ausgefüllt und gespeichert hat, wird vom Pro-<br />
gramm eine Verbindung zum Server aufgebaut (vgl. 5.1.3.1), die Absenz über die Verbindung über-<br />
mittelt und auf dem Server gespeichert. Die Sekretärin greift also via den Sekretariatscomputer auf<br />
den Server zu, um eine neue Datei darauf zu speichern, die gespeicherten Daten zu verändert oder zu<br />
löschen, dies z. B. wenn die Absenz wieder gelöscht werden muss.<br />
5.1.1.2 Server<br />
Der Server bzw. das darauf installierte Programm ist dafür verantwortlich, dass die vom Sekretariats-<br />
Programm erhaltenen Befehle und Daten ausgeführt bzw. richtig gespeichert werden. Des Weiteren<br />
muss der Server auch Anfragen von Seiten des Android-Handys bearbeiten und die angeforderten
Architektur und Prozessschema des Gesamtsystems 19<br />
Daten zur Verfügung zu stellen. Der Server wartet also passiv, dem Client-Server-Modell (vgl. 2.1.4)<br />
entsprechend, auf Anfragen und Befehle.<br />
5.1.1.3 Mobiles Endgerät<br />
Das Android-Handy kontaktiert (aktiv) in einem bestimmten Intervall 29 den Server. Falls neue Infor-<br />
mationen auf dem Server vorliegen, die für den Schüler des nachfragenden Handys von Bedeutung<br />
sind, wird der Schüler durch eine Benachrichtigung darauf aufmerksam gemacht.<br />
5.1.1.3.1 Android System Design<br />
Eine wichtige Rolle bei der App-Programmierung spielt natürlich das auf dem Handy installierte Be-<br />
triebssystem. Da dies in unserem Fall Android ist, wird an dieser Stelle die technische Basis von And-<br />
roid etwas genauer betrachtet.<br />
Android ist ein Linux-Betriebssystem 30 . Da es ein Smartphone-Betriebssystem ist, wurden typische<br />
Desktoperweiterungen weggelassen und es wurde v. a. für Telefonie-Funktionen optimiert, allerdings<br />
auch für das Zusammenspiel mit diversen Sensoren. Bedient wird ein Android-Smartphone über einen<br />
Touchscreen und die Tasten "Home", "Menü" und "Zurück".<br />
Abbildung 10: Architektur von Android (Google, 2011)<br />
29 In unserem Fall standardmässig alle fünf Minuten<br />
30 Linux-Kernel 2.6x
Architektur und Prozessschema des Gesamtsystems 20<br />
Die Architektur von Android besteht aus vier Schichten: die Apps, das Application Framework, die<br />
Bibliotheken neben der Android Runtime und der Linux-Kernel.<br />
Zur obersten Schicht gehört all das, was der Benutzer sieht, so z. B. ein Mailprogramm oder den<br />
Webbrowser.<br />
Das Application Framework 31 beinhaltet Anwendungen wie den Resource Manager, den Content Pro-<br />
vider (zuständig für den Austausch von Daten zwischen verschiedenen Anwendungen), den Telephony<br />
Manager (für alle Telefonie-Dienste) und den für uns v. a. wichtigen Notification Manager, durch den<br />
es möglich ist, Benachrichtigungen in der Statusleiste anzuzeigen.<br />
Eine Schicht darunter liegen die Bibliotheken und die Android Runtime 32 . Neben Java-Bibliotheken<br />
gibt es auch neue Android-Bibliotheken; sie stellen Entwicklern fertige Methoden für u. a. Datenban-<br />
ken, Multimedia und den Browser bereit. Die Core-Bibliotheken mit der Java-API 33 sowie Androids<br />
virtueller Maschine, der Dalvik Virtual Machine (DVM), stellt die Android Runtime zur Verfügung.<br />
Zuunterst liegt der Linux-Kernel, der für die Speicher- und Prozessverwaltung verantwortlich ist. Zu-<br />
sätzlich verwaltet er die Hardware-Treiber und kümmert sich um das Power-Management.<br />
Dieser Abschnitt wurde sinngemäss übernommen vom Artikel „Technik erklärt: Google Android-<br />
Architektur im Detail“ (PC Welt, 2010). Wir empfehlen den Artikel auch für zusätzliche Informatio-<br />
nen z. B. über die DVM oder den Lebenszyklus einer Android-App.<br />
5.1.2 Softwareanforderungen<br />
Um das Sekretariatsprogramm ausführen zu können, muss Windows XP oder höher 34 installiert sein.<br />
Da auf allen Computern der Schule Windows 7 zum Einsatz kommt, stellt dies überhaupt kein Prob-<br />
lem dar.<br />
Das Server-Programm wurde für Ubuntu 35 geschrieben, es läuft aber auch auf den anderen uns be-<br />
kannten Linux-Distributionen. Server, auf denen eine Linux-Distribution installiert ist, sind keine Sel-<br />
tenheit, daher gibt es im Internet auch genügend Angebote von Servern, auf denen Ubuntu bereits<br />
vorinstalliert ist, die man mieten kann.<br />
Die Android-Applikation haben wir auf Basis von Android 2.1 (Eclair 36 ) programmiert. Mit den vor-<br />
hergehenden Versionen wird sie also nicht kompatibel sein. Dazu gehören allerdings nur etwa 2 %<br />
aller Android-Geräte.<br />
31 Der Anwendungsrahmen<br />
32 Die Laufzeitumgebung<br />
33 application programming interface = Programmierschnittstelle<br />
34 D. h. Windows XP, Windows Vista oder Windows 7<br />
35 Eine bekannte Linux-Distribution, vgl. http://www.ubuntu.com/<br />
36 Die Android-Versionen werden üblicherweise mit dem Namen einer süssen Leckerei versehen
Architektur und Prozessschema des Gesamtsystems 21<br />
Android 4 (Ice Cream Sandwich)<br />
Android 2.3 (Gingerbread)<br />
Abbildung 11: Die Android-Versionen im Vergleich, Stand: 3. Januar 2012 (Google Inc., 2012)<br />
5.1.3 Datenübertragung<br />
Damit das Android-App und das Sekretariatsprogramm mit dem Server kommunizieren können, wird<br />
ein Protokoll zur Übertragung der Daten benötigt. Ein Protokoll regelt das Format und die Reihenfolge<br />
der gesendeten Daten. Bekannt ist z. B. das HTTP 37 , das dazu verwendet wird, um Webseiten aus dem<br />
WWW 38 in einen Webbrowser 39 zu laden. In unserem System kommt ein vergleichbares Protokoll<br />
zum Einsatz, das gleichermassen auf TCP 40 basiert und zur Anwendungsschicht 41 gehört. Allerdings<br />
ist es nicht so komplex wie HTTP, und es wurde darauf ausgelegt, dass möglichst einfach z. B. Ab-<br />
senzenformulare vom Server abgerufen werden können oder neue Lehrpersonen ins Lehrerverzeichnis<br />
hinzugefügt werden können.<br />
Die Android-Versionen im Vergleich<br />
Android 3 (Honeycomb)<br />
Android 2.2 (Froyo)<br />
Android 2.1 (Eclair)<br />
Android 1.6 (Donut)<br />
Android 1.5 (Cupcake)<br />
5.1.3.1 Verbindungsauf- und -abbau<br />
Um Daten zu übermitteln muss zuerst eine Verbindung zum Server aufgebaut werden. Dies geschieht<br />
in dem der Client, das Android-App oder das Sekretariatsprogramm, ein sogenanntes SYN-Paket 42 an<br />
den Server sendet. Wenn jener das Paket erhält, sendet er ein SYN/ACK-Paket 43 zurück, sowohl um<br />
den Erhalt des SYN-Pakets zu bestätigen, als auch um seinerseits eine Bestätigung des Erhalts anzu-<br />
fordern. Dies geschieht mit dem darauffolgend vom Client gesendeten ACK-Paket. Nachdem nun<br />
beide Seiten die Verbindung bestätigt haben, ist sie aufgebaut und kann verwendet werden.<br />
37<br />
Hypertext Transfer Protocol<br />
38<br />
World Wide Web<br />
39<br />
Z. B. Internet-Explorer, Google Chrome, Mozilla Firefox<br />
40<br />
Transmission Control Protocol<br />
41<br />
Vlg. dazu OSI-Modell, http://de.wikipedia.org/wiki/OSI-Modell<br />
42<br />
SYN für synchronize<br />
43<br />
ACK für acknowledgement = Bestätigung<br />
0% 10% 20% 30% 40% 50% 60%
Architektur und Prozessschema des Gesamtsystems 22<br />
Client<br />
SYN<br />
SYN/ACK<br />
ACK<br />
Server<br />
Abbildung 12: Verbindungsauf- und abbau<br />
FIN<br />
FIN/ACK<br />
ACK<br />
Server / Client Client / Server<br />
Ähnlich wie der Aufbau funktioniert auch der Abbau einer Verbindung. Statt des SYN- bzw. des<br />
SYN/ACK-Pakets wird ein FIN- bzw. ein FIN/ACK-Paket 44 gesendet, das dem Empfänger signali-<br />
siert, dass keine Daten mehr vom Sender kommen werden. Mit dem Abbau der Verbindung kann so-<br />
wohl der Client als auch der Server beginnen.<br />
5.1.4 Sicherheit<br />
Sicherheit wird immer wichtiger im Bereich der Informatik. Hacker-Angriffe sind an der Tagesord-<br />
nung. Viele Firmen lassen sich daher die Sicherheit einiges kosten. Auch wir wollen diesen Bereich<br />
nicht missachten.<br />
5.1.4.1 Risikoanalyse<br />
Jeder Schüler muss sich beim erstmaligen Starten der Android-App mit Benutzernamen und Passwort<br />
anmelden. Es wird also ein Passwort vom Smartphone an den Server übermittelt, auf Wunsch von der<br />
App gespeichert und auf dem Server auf Korrektheit überprüft. Ein Hacker kann sich theoretisch auf<br />
dem Smartphone, auf dem Server oder während der Übertragung des Passworts Zugriff darauf ver-<br />
schaffen 45 . Folglich muss es zwangsläufig verschlüsselt übertragen werden.<br />
Des Weiteren sind mehr oder weniger heikle Daten auf dem Server gespeichert. Eine Lehrerabsenz<br />
müsste nicht gross geschützt werden, da jede Person Zutritt zur KSS hat und sich diese Absenz auch<br />
vor Ort in Augenschein nehmen kann, schaden kann es jedoch nicht. In einem weiteren Stadium könn-<br />
ten aber durchaus auch persönlichere Daten auf dem Server gespeichert werden. Dies ist der Fall wenn<br />
die App um neue Funktionen wie z. B. einer Notentabelle erweitert werden sollte. Solche Informatio-<br />
nen müssen dann wiederum unbedingt verschlüsselt abgelegt sein.<br />
5.1.4.2 Angemessenes Sicherheitsniveau<br />
Die Passwörter anbelangend wollen wir keinen Aufwand scheuen und alles uns mögliche unterneh-<br />
men, um sie bestmöglich zu schützen. Das ist uns ein sehr wichtiges Anliegen, weil es viele Personen<br />
gibt, die ein und dasselbe Passwort für mehrere Accounts verwenden (IDG Communications AG,<br />
2008). Es muss hier nicht weiter ausgeführt werden, welche Folgen es also haben könnte, wenn es<br />
jemandem gelingen sollte, sich die Passwörter durch unser System anzueignen.<br />
44 FIN für finisch = Ende<br />
45 Genannt Phisphing
Architektur und Prozessschema des Gesamtsystems 23<br />
Was die restlichen Daten betrifft, ergibt es keinen zusätzlichen Aufwand auch diese verschlüsselt zu<br />
übermitteln, im Gegenteil. Es werden also auch jene Daten verschlüsselt versandt, die nicht notwendi-<br />
gerweise geschützt werden müssten.<br />
5.1.4.3 Funktionsweise<br />
Um eine sichere Übertragung der Daten zu garantieren nimmt die clientseitige Software zuerst mit<br />
dem Server eine Verbindung auf und fragt ihn nach dem öffentlichen Schlüssel 46 . Danach verschlüs-<br />
selt der Client einen Sitzungsschlüssel 47 mithilfe des erhaltenen öffentlichen Schlüssels und übermit-<br />
telt ihn dem Server. Da der Server den privaten Schlüssel 48 kennt, kann er den Sitzungsschlüssel ent-<br />
schlüsseln. Somit kennen nun beide Seiten den Sitzungsschlüssel. Mit ihm werden die Informations-<br />
Daten verschlüsselt.<br />
Um sicherzustellen, dass die verschlüsselten Daten unterwegs nicht manipuliert wurden, wird vor dem<br />
Versand ein Hashwert 49 erstellt und den Daten angehängt. Er wird bei Erhalt nach der Entschlüsselung<br />
nochmals erstellt und mit dem versandten verglichen. Stimmen beide Werte überein, sind die Daten<br />
aller Wahrscheinlichkeit nach nicht manipuliert worden.<br />
Dazu einige Code-Beispiele im <strong>Anhang</strong> (<strong>Anhang</strong> 3).<br />
5.2 Benutzeroberfläche<br />
Mit der Benutzeroberfläche ist das gemeint, was der Benutzer von einem Programm auch wirklich<br />
sieht. Die Sekretariats-Anwendung und das Android-App sind mit einer GUI 50 ausgestattet. Der Server<br />
wird vollständig über die Konsole 51 bedient, weil er keine solche grafische Oberfläche besitzt.<br />
46<br />
Bestandteil der implementierten RSA-2048-Verschlüsselung<br />
47<br />
Mittels AES-256-Methode<br />
48<br />
Bestandteil der implementierten RSA-2048-Verschlüsselung<br />
49<br />
Mittels der BLAKE-512-Methode, vgl. http://en.wikipedia.org/wiki/BLAKE_(hash_function)<br />
50<br />
Graphical User Interface<br />
51<br />
Auch Kommandozeile, Eingabeaufforderung oder Terminal genannt
Architektur und Prozessschema des Gesamtsystems 24<br />
5.2.1 Sekretariatsanwendung<br />
Abbildung 13: Hauptfenster der Sekretariatsanwendung<br />
5.2.1.1 Bedienung der Anwendung<br />
Die Anwendung wird gleich gestartet wie jede andere<br />
Windows-Anwendung, z. B. durch einen Doppelklick auf das<br />
Desktop-Icon. Beim erstmaligen Starten wird man nach dem<br />
Hostname 52 des Servers, dem zugewiesenen Port 53 , dem Be-<br />
nutzernamen und dem Passwort gefragt (vgl. Abbildung 14<br />
und Abbildung 15). Nach erfolgreicher Eingabe erscheint das<br />
normale Fenster der Anwendung, zu dem man ab jetzt bei<br />
Abbildung 15: Dialogfenster zur Abfrage der<br />
Benutzer-Daten<br />
jedem weiteren Starten direkt weitergeleitet wird (vgl. Ab-<br />
bildung 13). Diese Einstellungen lassen sich zu einem spä-<br />
teren Zeitpunkt im Menüpunkt „Extras“ verändern.<br />
Im Programmfenster sind von oben nach unten die Menü-<br />
Leiste, die Symbol-Leiste und eine Tab-Leiste platziert; sie<br />
sind permanent sichtbar. Darunter folgt dar Hauptbereich,<br />
der sich dem gewählten Tab entsprechend präsentiert.<br />
Die Menü-Leiste besteht aus den Schaltflächen „Datei“, „Extras“ und „Hilfe“. Unter „Datei“ befinden<br />
sich die Grundfunktionen der Anwendung 54 (vgl. Abbildung 16), die zusätzlich auch in der Symbol-<br />
Leiste sind. Eine ausführliche Bedienungsanleitung lässt sich unter „Hilfe“ finden (vgl. Abbildung<br />
18).<br />
52 Adresse zur eindeutigen Identifizierung eines Rechners im Internet<br />
53 „Türe“ durch die eine Verbindung hergestellt werden kann<br />
54 Wie z. B. „Absenz erstellen…“<br />
Abbildung 14: Dialogfenster zur Abfrage<br />
der Server-Daten
Architektur und Prozessschema des Gesamtsystems 25<br />
Abbildung 16: Untermenü von<br />
„Datei“<br />
entfernen…“ gelöscht werden.<br />
Um im Hauptbereich eine Liste der Benutzer oder der<br />
Stundenpläne zu sehen klickt man auf den entspre-<br />
chenden Tab. Aufgrund der allfällig enormen Länge<br />
der Benutzerliste befinden sich in der Symbolleiste<br />
ein Such- und ein Dropdown-Feld. Durch das<br />
Dropdown-Feld wird eine der Benutzer-Gruppen<br />
(Administrator/in, Sekretär/in, Lehrer/innen oder<br />
Schüler/innen) ausgewählt, die in Folge dessen im<br />
Hauptbereich angezeigt wird 55 . Durch das Such-Feld<br />
lässt sich die Auswahl noch genauer einschränken.<br />
Eine genaue Bedienungsanleitung befindet sich in der<br />
Sekretariatsanwendung selbst im Menü „Hilfe“ (vgl.<br />
CD-ROM auf der hinteren Umschlagseite).<br />
Abbildung 18: Hauptfenster der Hilfe<br />
55 Standardmässig ist die Gruppe Lehrer/innen ausgewählt<br />
In der Symbol-Leiste befinden sich die bereits erwähnten Buttons,<br />
um Benutzer, Absenzen und Stundenpläne hinzuzufügen bzw. wie-<br />
der zu entfernen. So öffnet sich beispielsweise nach Auswahl einer<br />
Lehrperson und einem Klick auf „Absenz erstellen…“ ein Dialog-<br />
fenster (vgl. Abbildung 17), in das die Sekretärin Start-, Endtermin<br />
und Grund der Absenz einträgt. Nach einem bestätigenden Klick auf<br />
„Erstellen“ wird die Absenz auf dem Server gespeichert und er-<br />
scheint nun in der Liste der Absenzen im Hauptbereich. Nach Ab-<br />
lauf der Absenz wird sie selbstständig entfernt, bei Bedarf kann sie<br />
aber auch manuell per Auswahl derselben und Klick auf „Absenz<br />
Abbildung 17: Dialogfenster zur Erstellung einer<br />
Absenz
Architektur und Prozessschema des Gesamtsystems 26<br />
5.2.1.2 Aufgaben der Sekretärin<br />
Die Aufgabe der Sekretärin besteht nun darin, die Listen der Benutzer, der Absenzen und der Stun-<br />
denpläne auf dem Laufenden zu halten. Der Schwerpunkt liegt dabei natürlich auf den Absenzen, die<br />
unter Umständen mehrmals täglich aktualisiert werden müssen. Benutzer müssen jeweils am Anfang<br />
des Schuljahres hinzugefügt werden, wenn neue Schüler/Lehrpersonen an die Schule kommen bzw.<br />
sie verlassen. Damit man nicht jede/n Schüler/in einzeln hinzufügen muss, besteht die Möglichkeit,<br />
alle Schüler/innen direkt aus einer Schülerliste im Excel 56 -Format, wie sie dem Sekretariat sowieso<br />
vorliegt, zu importieren. Die Stundenpläne müssen jeweils vor Semesterbeginn neu importiert werden.<br />
Dazu wird eine Textdatei verwendet, die zuvor aus dem Programm GP-Untis 57 , mit dem die Schullei-<br />
tung die Stundenpläne erstellt (Kantonsschule Sargans, 2011), exportiert werden muss.<br />
5.2.2 Mobile Anwendung<br />
Abbildung 19: Die Android-App, von der Installation bis zu den Details einer Absenz<br />
Die mobile Anwendung sieht eher unspektakulär aus. Sie besteht zum grössten Teil aus weisser<br />
Schrift auf schwarzem Hintergrund, sowie dem Kanti-Logo.<br />
56<br />
Tabellen- und Kalkulationsprogramm aus dem Hause Microsoft<br />
57<br />
Vgl. http://www.grupet.at/
Architektur und Prozessschema des Gesamtsystems 27<br />
5.2.2.1 Bedienung der Anwendung<br />
Nach einem Tippen auf das Icon unserer App erscheint beim erstmaligen Start ebenfalls ein Fenster,<br />
das den Anwender nach den Server- und Benutzer-Daten fragt. Danach folgt eine Übersicht mit allen<br />
Funktionen der Anwendung (vgl. Abbildung 19.3). Nach Betätigung der Menü-Taste kann man die<br />
App beenden oder weiter in die Einstellungen gelangen. Eine Funktion wählt man durch einfaches<br />
Antippen aus.<br />
Wenn eine Benachrichtigung (vgl. 5.1.1.3.1 und Abbildung 19.6) der App eintrifft, zieht der Schüler<br />
die Status-Leiste nach unten und tippt auf den entsprechenden Eintrag, die App startet und der Schüler<br />
bekommt die Informationen zur betreffenden Absenz (vgl. Abbildung 19.7).<br />
5.2.2.2 Funktionen der Anwendung<br />
Zum jetzigen Zeitpunkt besteht die Anwendung lediglich aus einer Funktion, der Absenzen-Funktion.<br />
Sie präsentiert dem Schüler übersichtlich alle zurzeit aktuellen Lehrer-Absenzen, dazu Anfangs- und<br />
Enddatum, den Grund und eventuell noch sonstige Informationen zu der jeweiligen Absenz.<br />
Weitere Funktionen wie z. B. eine Notentabelle oder ein Chat-Client sind in Planung und werden zu<br />
einem späteren Zeitpunkt lanciert, falls die App Anklang finden sollte und wirklich eingesetzt wird.<br />
Der Aufwand für die Programmierung solcher Funktionen würde sich in Grenzen halten, da die ganze<br />
Basis, bestehend aus Verbindungsprotokollen, Verschlüsselungstechnologien usw., bereits komplett<br />
implementiert ist. Die Anwendung ist somit beliebig erweiterbar und auf weitere Systeme portierbar<br />
(z. B. an anderen Schulen, etc.).
Zusammenfassung 28<br />
6 Zusammenfassung<br />
Durch diese Arbeit wurde klar aufgezeigt, dass von Seite der Schüler ein grosses Bedürfnis besteht,<br />
per Smartphone-Applikation über schulrelevante Informationen, wie z. B. Stundenausfälle, informiert<br />
zu werden. In einer Umfrage an der KSS gaben 78 % der befragten Personen an, dass sie eine mobile<br />
Applikation, die diesen Dienst bieten würde, auf ihr Smartphone herunterladen und installieren wür-<br />
den. Gegenüber dem jetzigen Informations-Medium der KSS, dem Anschlagbrett, bietet eine solche<br />
digitale Lösung enorme Vorteile. Die Informationen gelangen praktisch in Echtzeit zum Schüler, und<br />
sie können auf den Schüler spezifisch zugeschnitten werden.<br />
Für die Entwicklung einer App mit dazu benötigtem Serverprogramm und Anwendung für das Schul-<br />
sekretariat wurde als Hilfsmittel zuerst ein Vorgehensmodell für den Softwareentwicklungsprozess<br />
zugezogen. Dies bedurfte zuerst einer Analyse diverser Modelle. Anhand des gewählten Modells und<br />
verschiedener Programmiersprachen wurden nun die angestrebten Funktionen programmiert und op-<br />
timiert. Nun steht eine Infrastruktur bereit, zumindest für eine kurze Testphase, eingesetzt zu werden.<br />
Um den Entwicklungsprozess zu vereinfachen wurden zuerst diverse Vorgehensmodell zum Software-<br />
entwicklungsprozess analysiert, eines davon ausgewählt und danach mithilfe von diesem entwickelt.<br />
Zurzeit beschränkt sich die App ausschliesslich auf die Absenzen-Funktion, dafür wurde darauf geach-<br />
tet, dass diese auf einer soliden Basis aufbaut, sodass die Grundelemente und zahlreiche Sicherheits-<br />
vorkehrungen in vollem Umfang vorhanden sind. Die App kann somit ohne weiteres zu einem späte-<br />
ren Zeitpunkt und ohne grossen Aufwand mit neuen Funktionen erweitert werden.<br />
Aus Sicherheitsgründen darf auf einem Computer einer kantonalen Schule eine x-beliebige Anwen-<br />
dung nicht ohne weiteres ausgeführt bzw. installiert werden. Sie bedarf zuerst einer Zertifizierung<br />
durch den Kanton; für diesen Prozess muss mit einer Wartezeit von zwei Monaten gerechnet werden.<br />
Eine allfällige Testphase könnte demnach im April/Mai 2012 stattfinden.
Literatur-/Quellenverzeichnis V<br />
7 Literatur-/Quellenverzeichnis<br />
20 Minuten AG. (11. Januar 2012). 20 Minuten Online - Android im Sinkflug - News. Von<br />
http://www.20min.ch/digital/dossier/google/story/29298110 abgerufen<br />
AOL Inc. (14. Dezember 2011). Android leads US market share, iOS may have stopped growing, RIM<br />
is still falling -- Engadget. Von http://www.engadget.com/2011/12/14/shocker-android-grew-<br />
us-market-share-after-q2-ios-was-static/ abgerufen<br />
Apple Inc. (2011). Apple Developer Program Enrollment. Abgerufen am 21. Oktober 2011 von Apple<br />
Developer Program Enrollment: http://developer.apple.com/programs/start/standard/<br />
Apple Inc. (2011). iOS Developer Program - Apple Developer. Abgerufen am 21. Oktober 2011 von<br />
http://developer.apple.com/programs/ios/<br />
Aumasson, J.-P., Henzen, L., Meier, W., & Phan, R. C.-W. (16. Dezember 2010). SHA-3 proposal<br />
BLAKE.<br />
Baur, S. K. (16. Januar 2011). Entwicklungsmodelle. Abgerufen am 22. Juli 2011 von<br />
http://www.stefan-baur.de/cs.se.modelle.html?glstyle=print<br />
Becker, A., & Pant, M. (Mai 2009). Android - Grundlagen der Programmierung.<br />
Bibliographisches Institut GmbH. (31. Dezember 2011). Duden | imperativ | Bedeutung,<br />
Rechtschreibung, Synonyme, Grammatik. Von<br />
http://www.duden.de/rechtschreibung/imperativ abgerufen<br />
Bibliographisches Institut GmbH. (2011). Duden | Kommunikation | Bedeutung, Rechtschreibung,<br />
Synonyme, Grammatik. Abgerufen am 13. Juli 2011 von<br />
http://www.duden.de/rechtschreibung/Kommunikation<br />
Bibliographisches Institut GmbH. (31. Dezember 2011). Duden | objektorientiert | Bedeutung,<br />
Rechtschreibung. Von http://www.duden.de/rechtschreibung/objektorientiert abgerufen<br />
Bibliographisches Institut GmbH. (1. Januar 2012). Duden | agil | Bedeutung, Rechtschreibung,<br />
Synonyme, Herkunft. Von http://www.duden.de/rechtschreibung/agil abgerufen<br />
Bibliographisches Institut GmbH. (1. Januar 2012). Duden | inkrementell | Bedeutung,<br />
Rechtschreibung, Herkunft. Von http://www.duden.de/rechtschreibung/inkrementell abgerufen<br />
Bürger, R. (25. März 2003). V-Modell. Von http://www.ralfbuerger.de/sse/Vorgehensweise/Fenster/V-<br />
ModellSeite.htm abgerufen<br />
Dehmer, J. (4. Juli 2003). Informatik in der Oberstufe - Vernetzung von Rechnern (1). Abgerufen am<br />
25. August 2011 von http://www.lehrer.uni-<br />
karlsruhe.de/~za714/informatik/infkurs/vernetzung1.html
Literatur-/Quellenverzeichnis VI<br />
Ezunov, A., & Grundmeier, N. (15. März 2011). Fehler im Programmcode | Sicherheitslücken im<br />
Internet. Von http://www.informatik.uni-oldenburg.de/~iug10/sli/index01ce.html abgerufen<br />
FHS St. Gallen. (25. März 2011). Extreme Programming (altervative Beschreibung) – FHS Software<br />
Engineering Wiki. Abgerufen am 22. Juli 2011 von<br />
http://morpheus.fhsg.ch/~mw_swe/index.php/Extreme_Programming_(altervative_Beschreibu<br />
ng)<br />
Frauenhofer Institut Rechnerarchitektur und Softwaretechnik FIRST. (18. Juni 2004).<br />
Testfallerzeugung aus Use-Case-Beschreibungen. Von http://www.gm.fh-<br />
koeln.de/~winter/tav/html/tav21/TAV21F5Friske.pdf abgerufen<br />
Free Software Foundation. (2011). The GNU MP Bignum Library. Von http://gmplib.org/ abgerufen<br />
Golesny, D. (1. Februar 2006). 5.2.3 Vorgehensmodelle. Abgerufen am 22. Juli 2011 von<br />
http://www.golesny.de/bin/diplom/diplomarbeit.pdf<br />
Google. (2011). Anmeldung für Entwickler. Abgerufen am 21. Oktober 2011 von<br />
https://market.android.com/publish/signup<br />
Google. (27. Oktober 2011). What is Android? | Android Developers. Von<br />
http://developer.android.com/guide/basics/what-is-android.html abgerufen<br />
Google Inc. (2011). Philosophy and Goals | Android Open Source. Abgerufen am 16. Juli 2011 von<br />
http://source.android.com/about/philosophy.html<br />
Google Inc. (3. Januar 2012). Platform Versions | Android Developers. Von<br />
http://developer.android.com/resources/dashboard/platform-versions.html abgerufen<br />
Gummlich, W. (18. Januar 2007). Advanced Encryption Standard Rijndael.<br />
Hinzberg, H. (kein Datum). C# Übersicht. Abgerufen am 24. August 2011 von<br />
http://www.hinzberg.net/csharp/csharp/uebersicht.html<br />
IDG Communications. (11. Januar 2011). Java bleibt beliebteste Programmiersprache -<br />
computerworld.ch. Abgerufen am 25. Juli 2011 von<br />
http://www.computerworld.ch/news/software/artikel/java-bleibt-beliebteste-<br />
programmiersprache-55440/<br />
IDG Communications AG. (23. Januar 2008). Immer das gleiche Passwort - Sie auch? - PCtipp.ch -<br />
News. Von<br />
http://www.pctipp.ch/news/sicherheit/42015/immer_das_gleiche_passwort_sie_auch.html<br />
abgerufen
Literatur-/Quellenverzeichnis VII<br />
Informatik Forum Simon GmbH. (2011). INffORUM: Anwendungsentwicklung - Vorgehensmodell<br />
Software Engineering. Abgerufen am 13. Juli 2011 von<br />
http://www.infforum.de/themen/anwendungsentwicklung/thema_SE-vorgehensmodelle.htm<br />
Infoworld. (2011). So why did they decide to call it Java? - JavaWorld. Abgerufen am 25. Juli 2011<br />
von http://www.javaworld.com/javaworld/jw-10-1996/jw-10-javaname.html?page=3<br />
it-agile. (2008). it-agile: Was ist Scrum? Abgerufen am 21. August 2011 von http://www.it-<br />
agile.de/scrum.html<br />
Jürgen, W. (2009). C von A bis Z. Bonn: Galileo Press.<br />
Kantonsschule Sargans. (2011). Stundenplan. Von<br />
http://www.kantisargans.ch/home/service/stundenplan.html abgerufen<br />
Kantonsschule Sargans. (2011). Zahlen & Fakten. Abgerufen am 10. Oktober 2011 von<br />
http://www.kantisargans.ch/home/unsere_schule/zahlen___fakten.html<br />
Kersken-Canbaz, S. (2008). Geschichte | Programmieren in Java. Abgerufen am 25. Juli 2011 von<br />
http://programmieren-in-java.de/de/content/geschichte<br />
Kioskea. (1. April 2009). Client/Server Umgebung. Abgerufen am 25. August 2011 von<br />
http://de.kioskea.net/contents/cs/csintro.php3<br />
Kriegisch, A. (2010). Scrum - auf einer Seite erklärt. Abgerufen am 21. August 2011 von http://scrum-<br />
master.de/Was_ist_Scrum/Scrum_auf_einer_Seite_erklaert<br />
Kühnel, A. (2010). Visual C# 2010. Bonn: Galileo Press.<br />
Microsoft. (2011). Erste Schritte mit Visual C#. Abgerufen am 24. August 2011 von<br />
http://msdn.microsoft.com/de-de/vcsharp/dd919145.aspx<br />
Oracle. (7. April 2011). Lernen über Java-Technologie. Abgerufen am 25. Juli 2011 von<br />
http://www.java.com/de/about/<br />
PC Welt. (17. September 2010). Smartphone-Grundlagen - Technik erklärt: Google Android-<br />
Architektur im Detail - Smartphone - PC-WELT. Abgerufen am 14. September 2011 von<br />
http://www.pcwelt.de/ratgeber/Smartphone-Grundlagen-Technik-erklaert-Google-Android-<br />
Architektur-im-Detail-1005294.html<br />
Queins, D. S., & Rupp, C. (15. September 2003). Vom Use-Case zum Test-Case. Von<br />
http://www.gm.fh-koeln.de/~winter/tav/html/tav20/P7RuppQueinsTAV20.pdf abgerufen<br />
RSA Laboratories. (14. Juni 2002). RSA Cryptography Standard.<br />
Schwaber, K., & Sutherland, J. (Juli 2011). Scrum Guides - Scrum.org. Abgerufen am 22. August<br />
2011 von http://www.scrum.org/storage/scrumguides/Scrum%20Guide%20-%20DE.pdf
Literatur-/Quellenverzeichnis VIII<br />
siemax CMS Webdesign & Internetservice Feldkirchen. (2011). Glossar:: Begriffe wie Homepage,<br />
Website und WWW werden hier für den Internet-User erklärt. Abgerufen am 13. Juli 2011 von<br />
http://www.siemax.com/DE/h_computer.html<br />
Software Quality Lab. (8. November 2003). http://www.software-quality-lab.at/. Abgerufen am 22.<br />
Juli 2011 von http://www.software-quality-lab.at/swql/uploads/media/SWQL-Newsletter-<br />
200311.pdf<br />
Sommergut, W. (1. Oktober 1997). Was ist C ?: C im Vergleich zu anderen Programmiersprachen.<br />
Abgerufen am 23. August 2011 von http://c-buch.sommergut.de/Kapitel1/C-im-Vergleich-zu-<br />
anderen-Programmiersprachen.shtml<br />
SPIEGELnet GmbH. (9. Mai 2011). Smartphone-Studie: Android überholt Apple iOS in Deutschland -<br />
SPIEGEL ONLINE - Nachrichten - Netzwelt. Von<br />
http://www.spiegel.de/netzwelt/netzpolitik/0,1518,761434,00.html abgerufen<br />
Stein, S. (26. Mai 2004). 6.3.2 Vorgehensmodell Wasserfallmodell und V-Modell. Von<br />
http://emergenz.hpfsc.de/html/node42.html abgerufen<br />
TEIA AG. (1. Juni 2009). Projektplanung und Projektoptimierung mit MS Project 2003 - 2.2.3<br />
Vorgehensmodelle - TEIA AG. Von http://www.teialehrbuch.de/Kostenlose-<br />
Kurse/Projektplanung-mit-MS-Project-2003/31132-Vorgehensmodelle.html abgerufen<br />
Ullenboom, C. (2011). Java ist auch eine Insel. Bonn: Galileo Press.<br />
Wikipedia. (17. November 2004). Datei:Spiralmodel nach Boehm.png – Wikipedia. Von<br />
http://de.wikipedia.org/w/index.php?title=Datei:Spiralmodel_nach_Boehm.png abgerufen<br />
Wikipedia. (21. Dezember 2006). Datei:Java-Logo.svg – Wikipedia. Von<br />
http://de.wikipedia.org/wiki/Datei:Java-Logo.svg abgerufen<br />
Willemse Isabel, W. G. (2010). www.news.admin.ch - Medienmitteilungen und Reden. Abgerufen am<br />
11. Oktober 2011 von<br />
http://www.news.admin.ch/NSBSubscriber/message/attachments/24286.pdf
Abbildungsverzeichnis IX<br />
8 Abbildungsverzeichnis<br />
Abbildung 1: Die Kaffeetasse als Java-Logo (Wikipedia, 2006) ............................................................ 4<br />
Abbildung 2: Diagramm zum Marktpotenzial einer Kommunikations-App an der KSS ....................... 7<br />
Abbildung 3: Diagramm zur Marktverteilung der mobilen Betriebssysteme an der KSS ...................... 8<br />
Abbildung 4: Die einzelnen Schritte des Wasserfallmodells, gemäss (TEIA AG, 2009) ..................... 10<br />
Abbildung 5: Das Spiralmodell von Barry W. Boehm (Wikipedia, 2004) ........................................... 11<br />
Abbildung 6: Schichten des (vereinfachten) V-Modells, gemäss (Bürger, 2003)................................. 12<br />
Abbildung 7: Ablauf eines XP-Projekts (FHS St. Gallen, 2011) .......................................................... 12<br />
Abbildung 8: Grafische Darstellung von Scrum (it-agile, 2008) .......................................................... 13<br />
Abbildung 9: Infrastruktureinheiten: Sekretariats-PC, Server und zwei mobile Endgeräte .................. 18<br />
Abbildung 10: Architektur von Android (Google, 2011) ...................................................................... 19<br />
Abbildung 11: Die Android-Versionen im Vergleich, Stand: 3. Januar 2012 (Google Inc., 2012) ...... 21<br />
Abbildung 12: Verbindungsauf- und abbau .......................................................................................... 22<br />
Abbildung 13: Hauptfenster der Sekretariatsanwendung ...................................................................... 24<br />
Abbildung 14: Dialogfenster zur Abfrage der Server-Daten ................................................................ 24<br />
Abbildung 15: Dialogfenster zur Abfrage der Benutzer-Daten ............................................................ 24<br />
Abbildung 16: Untermenü von „Datei“................................................................................................. 25<br />
Abbildung 17: Dialogfenster zur Erstellung einer Absenz ................................................................... 25<br />
Abbildung 18: Hauptfenster der Hilfe ................................................................................................... 25<br />
Abbildung 19: Die Android-App, von der Installation bis zu den Details einer Absenz ...................... 26
<strong>Anhang</strong> A1<br />
<strong>Anhang</strong><br />
1 Umfrage-Formular<br />
Kantonsschule Sargans Kevin Stierli,<br />
Gymnasium Raphael Haslebacher<br />
Umfrage Abschlussarbeit 2012 Physik und Anwendungen der Mathematik<br />
Liebe/r Klassenchef/in<br />
Im Rahmen unserer Maturaarbeit mit dem Titel „Mobile Anwendung zur Kommunikation von<br />
schulrelevanten Informationen“ werden wir eine Applikation (App) für Handys erstellen, mit der es<br />
unter anderem möglich sein wird, sich über Stundenausfälle zu informieren, beispielsweise wenn<br />
eine Lehrperson krank ist. Die App soll also nicht zuletzt als digitales Anschlagbrett dienen.<br />
Wir bitten dich, den ersten Teil dieser Umfrage mit Hilfe deiner Klasse auszufüllen und uns dieses<br />
Blatt bis spätestens Freitag, 9. September 2011, ins Klassenfach der 3P oder der 4NP zu legen. Den<br />
zweiten Teil sollte eine Person der Klasse ausfüllen, die sich besonders gut mit Handys auskennt.<br />
1. Teil – Bedürfnisabklärung<br />
Angenommen es gäbe bereits heute eine App wie oben beschrieben, wie viele Personen der Klasse<br />
(jeweils Anzahl einsetzen) würden diese App herunterladen und auf ihrem Handy installieren, wenn<br />
diese App für ihr jeweiliges Handy verfügbar wäre; wie viele „vielleicht“ und wie viele „nicht“?<br />
Ja: ______ Nein: ______ Vielleicht: ______ kein Handy: ______<br />
2. Teil – Mobile Betriebssysteme<br />
In diesem Teil möchten wir erfahren, wie viele Personen der Klasse welches der folgenden mobilen<br />
Betriebssysteme auf ihrem Handy installiert haben.<br />
� Android von Google (z. B. Samsung Galaxy S, HTC Desire, Sony Ericsson Xperia)<br />
� iOS von Apple (iPhone)<br />
� Windows Phone 7 von Microsoft (z. B. HTC 7 Trophy, Samsung Omnia 7)<br />
� Symbian von Nokia (fast alle Nokia-Modelle)<br />
Viele vor allem ältere Handys, wie z. B. das Sony Ericsson W810i, besitzen<br />
individuelle Eigenproduktionen, die in dieser Umfrage unter „Sonstiges“<br />
einzutragen sind.<br />
Android-Geräte erkennt man beispielsweise<br />
durch die drei immer vorhandenen Tasten:<br />
Zurück, Menu und Home, eventuell zusätzlich noch Suchen.<br />
Für Windows Phone 7 ist die quadratische Menüführung (meist hellblau) und das<br />
Windows-Logo als Home-Button charakteristisch.<br />
Android: ______ iOS: ______ WP7: ______ Symbian: ______<br />
Sonstiges: ______<br />
Name der Klasse: ________ Vielen Danke für eure Teilnahme!<br />
29.08.2011 Seite 1/1
<strong>Anhang</strong> A2<br />
2 Rohdaten der Umfrage<br />
2.1 Bedürfnisabklärung<br />
n = 490<br />
Klasse Ja Nein Vielleicht kein Handy<br />
1bNPW 16 2 1 6<br />
1F 12 9 4 0<br />
1GM 15 2 7 0<br />
1LWA 19 2 0 2<br />
1NP 14 2 4 1<br />
1WB 15 1 1 0<br />
2bNPW 21 1 1 0<br />
2F 12 1 4 0<br />
2IWA 15 3 5 0<br />
2LS 16 0 1 1<br />
2NP 18 0 3 0<br />
2WB 15 0 0 0<br />
3EA 13 0 3 0<br />
3F 19 0 1 0<br />
3GM 10 7 1 0<br />
3IS 18 0 0 0<br />
3LN 17 0 3 0<br />
3P 16 0 0 1<br />
3WA 8 1 11 0<br />
3WB 18 0 0 0<br />
4FP 10 1 1 0<br />
4IL 12 6 0 0<br />
4NP 17 0 2 1<br />
4S 23 0 0 0<br />
4WA 15 3 0 0<br />
Summe 384 41 53 12<br />
Prozent 78.4 % 8.4 % 10.8 % 2.5 %<br />
Abweichungen zu 100 % sind rundungsbedingt.
<strong>Anhang</strong> A3<br />
2.2 Mobile Betriebssysteme<br />
Klasse Android iOS WP7 Symbian Sonstiges<br />
1bNPW 7 9 0 0 3<br />
1F 5 4 0 4 12<br />
1GM 6 1 0 4 13<br />
1LWA 12 7 0 2 0<br />
1NP 5 6 0 3 6<br />
1WB 3 11 0 1 2<br />
2bNPW 9 5 1 1 7<br />
2F 9 2 1 3 2<br />
2IWA 10 4 0 0 9<br />
2LS 5 5 0 0 7<br />
2NP 7 8 0 2 4<br />
2WB 4 6 0 0 5<br />
3EA 2 9 0 0 5<br />
3F 4 7 0 0 9<br />
3GM 5 5 1 0 7<br />
3IS 1 4 0 0 13<br />
3LN 2 8 0 1 9<br />
3P 8 3 1 4 0<br />
3WA 4 5 0 0 11<br />
3WB 5 8 0 2 3<br />
4FP 0 3 1 0 8<br />
4IL 3 2 0 1 12<br />
4NP 2 8 1 3 5<br />
4S 2 6 0 1 14<br />
4WA 6 6 0 0 6<br />
Summe 126 142 6 32 172<br />
Prozent 26.4 % 29.7 % 1.3 % 6.7 % 36.0 %<br />
n = 478<br />
Abweichungen zu 100 % sind rundungsbedingt.
<strong>Anhang</strong> A4<br />
3 Codebeispiele<br />
Die folgenden drei Codebeispiele sind dazu da, um in der schriftlichen Arbeit, neben der Benutzer-<br />
oberfläche der Anwendungen (vgl. 5.2), einen weiteren Eindruck der praktischen Arbeit zu vermitteln.<br />
Es soll einem bewusst werden, was wirklich hinter der Oberfläche steckt. Wir haben für jede von uns<br />
verwendete Programmiersprache einen Ausschnitt aus dem Quellcode als Beispiel zur Veranschauli-<br />
chung des jeweiligen Code-Bilds ausgewählt. Die nachfolgenden 184 Programmier-Zeilen stellen nur<br />
etwa 1.5 % der beinahe 12‘000 Code-Zeilen dar. Die vollständigen Quellcodes der erstellten Pro-<br />
gramme befinden sich auf der beiliegenden CD-ROM.<br />
C# findet bei der Sekretariatsanwendung Verwendung. Als Beispiel dazu wird beschrieben, wie eine<br />
Absenz zum Server hochgeladen wird. Durch das Java-Beispiel wird veranschaulicht, wie die benut-<br />
zerspezifischen Absenzen durch das Android-Smartphone vom Server heruntergeladen werden. Wie<br />
sie aus Sicht des Servers dem Android-Client übertragen werden, ist im dritten Beispiel dargestellt.<br />
3.1 C#<br />
/*<br />
Funktion: bool addAbsence(PAddAbsence abs);<br />
Beschreibung: Lädt eine Absenz abs zum Server hoch.<br />
Rückgabewert: true bei Erfolg, false bei Fehler<br />
*/<br />
private static bool addAbsence(PAddAbsence abs)<br />
{<br />
SecureSocket ssock = new SecureSocket(Config.getHostname(), Config.getPort(),<br />
RSAPUBLICKEY); // sicheres Socket erstellen<br />
}<br />
if (!ssock.connect()) // Verbindung zu Server herstellen<br />
{<br />
return false;<br />
}<br />
KSSPRequest req = new KSSPRequest(Const.VERSION, Cmd.ADD_ABSENCE, Config.getUsername(),<br />
Config.getPassword(), abs.getBytes());<br />
// Anfrage mit Benutzername, Passwort und Absenz erstellen<br />
ssock.send(req.getEncryptedBytes()); // Anfrage senden<br />
byte[] buf; // Puffer<br />
if ((buf = ssock.receive(KSSPResponse.bytelength, TIMEOUT)) == null)<br />
// Antwort empfangen<br />
{<br />
ssock.close();<br />
return false;<br />
}<br />
ssock.close(); // Verbindung schliessen<br />
KSSPResponse resp = new KSSPResponse(buf); // Antwort erstellen<br />
return resp.successful();
<strong>Anhang</strong> A5<br />
3.2 Java<br />
/*<br />
Funktion: ArrayList getAbsences();<br />
Beschreibung: Lädt alle benutzerspezifischen Absenzen herunter.<br />
Rückgabewert: Eine Absenzenliste(ArrayList) mit allen<br />
heruntergeladen Absenzen bei Erfolg, null bei Fehler<br />
*/<br />
private ArrayList getAbsences(){<br />
KSSPRequest req=new KSSPRequest(Const.VERSION,<br />
Cmd.GET_PERSONAL_ABSENCES, this.username, this.password, null);<br />
// Anfrage mit Benutzername und Passwort<br />
try{<br />
SecureSocket ssock=new SecureSocket(this.hostname, this.port, RemoteService.RSAPUBLICKEY,<br />
getApplicationContext());<br />
// sicheres Socket erstellen<br />
ssock.connect(); // Verbindung zu Server herstellen<br />
ssock.send(req.getBytes()); // Anfrage senden<br />
ArrayList absl=new ArrayList(); // Absenzenliste<br />
Absence abs; // Absenz<br />
KSSPResponse resp; // Antwort<br />
byte[] buf; // Puffer<br />
}<br />
for(;;){<br />
if((buf=ssock.receive(KSSPResponse.bytelength, RemoteService.TIMEOUT))==null){<br />
// Antwort empfangen<br />
ssock.close();<br />
return null;<br />
}<br />
}<br />
resp=new KSSPResponse(buf); // Antwort erstellen<br />
if(resp.getState()==KSSPResponse.STATE_FIN ||<br />
!resp.successful()){ // Status überprüfen<br />
break;<br />
}<br />
if((buf=ssock.receive(Absence.length, RemoteService.TIMEOUT))==null){<br />
// Absenz empfangen<br />
ssock.close();<br />
return null;<br />
}<br />
abs=new Absence(buf); // Absenz erstellen<br />
absl.add(abs); // Absenz der Absenzenliste hinzufügen<br />
ssock.close(); // Verbindung schliessen<br />
if(absl.size()==0){ // Absenzenliste überprüfen<br />
absl=null;<br />
}<br />
return absl;<br />
}<br />
catch(Exception e){<br />
return null;<br />
}
<strong>Anhang</strong> A6<br />
3.3 C<br />
/*<br />
Funktion: int _getpersabss(int clnd, struct _usr *usr, char *aeskey);<br />
Beschreibung: Alle Absenzen, die für den Benutzer usr bestimmt sind,<br />
werden mithilfe des AES-256-Schlüssels aeskey<br />
AES-256-verschlüsselt an den Clienten mit dem Deskriptor<br />
clnd übertragen.<br />
Rückgabewert: 0(SUC) bei Erfolg, -1(ERR) bei Fehler<br />
*/<br />
int _getpersabss(int clnd, struct _usr *usr, char *aeskey){<br />
int fd; // Datei-Deskriptor<br />
if((fd=open(ABSFILE, O_RDONLY|O_CREAT, ACC_RIGHTS))==ERR){<br />
// Absenzen-Datei mit Leserechte öffnen<br />
return ERR;<br />
}<br />
struct _abs abs; // Absenzen-Variable<br />
struct _usr tchr; // Lehrer-Variable<br />
struct _sched sched; // Stundenplan-Variable<br />
int ret;<br />
resp.state=STATE_MORE; // Status für Client<br />
for(;;){<br />
_zero((char*)&abs, sizeof(struct _abs));<br />
// Absenzen-Variable leeren<br />
if((ret=read(fd, &abs, sizeof(struct _abs)))==ERR){<br />
// Absenz einlesen<br />
break;<br />
}<br />
if(ret
<strong>Anhang</strong> A7<br />
}<br />
}<br />
if(abs.strtdw6 || abs.enddw6){<br />
// Absenz überprüfen<br />
continue;<br />
}<br />
strtless=(abs.strtdw-1)*LESS_PER_DAY+abs.strtl;<br />
// Lektionsstart berechnen<br />
endless=(abs.enddw-1)*LESS_PER_DAY+abs.endl;<br />
// Lektionsende berechnen<br />
int yes;<br />
yes=0;<br />
if(strtless
Selbstständigkeitserklärung<br />
Wir, Kevin Stierli und Raphael Haslebacher, bestätigen hiermit, dass wir diese Maturaarbeit unter<br />
Verwendung der angegebenen Quellen selbstständig entwickelt, gestaltet und geschrieben haben.<br />
Sargans, 3. Februar 2012 _________________________________<br />
_________________________________