Benutzer-Werkzeuge

Webseiten-Werkzeuge


de.bkp:intern:ipa:lv2018:ipa_lv2018

Inhaltsverzeichnis

Form1 Form2

Individuelle Praxis Arbeit


VASS LEON – ABSCHLUSSARBEIT 09. MÄRZ bis 26. MÄRZ 2018




Inhalt

1.1.1 AUFGABENSTELLUNG 3

1.1.2 Ausgangslage 3

1.1.3 IST-Zustand 3

1.1.4 SOLL-Zustand 3

1.1.5 Mathematik-Server 3

1.1.6 Datenbank 4

1.1.7 Website 4

1.1.8 Backup 5

1.1.9 Testen 5

1.1.10 Dokumentation 5

1.2.1 PROJEKTAUFBAUORGANISATION 6

1.3.1 VORKENNTNISSE 7

1.4.1 VORARBEITEN 8

1.5.1 FIRMENSTANDARDS 8

1.6.1 SOLL/IST SITUATION 8

1.6.2 IST-Situation 8

1.6.3 SOLL-Situation 9

1.7.1 ZEITPLAN 9

1.7.2 SOLL-Zeitplan 9

1.7.3 IST-Zeitplan 10

1.8.1 ARBEITSPROTOKOLL 10

1.8.2 09.03.2018 10

1.8.3 12.03.2018 11

1.8.4 14.03.2018 12

1.8.5 15.03.2018 13

1.8.6 16.03.2018 13

1.8.7 19.03.2018 14

1.8.8 21.03.2018 14

1.8.9 22.03.2018 15

1.8.10 23.03.2018 15

1.8.11 26.03.2018 16

1.9.1 MÖGLICHE RISIKEN 16

2.1.1 LINUX SERVER 17

2.1.2 Server Setup 17

2.1.3 Server Konfiguration 18

2.1.4 LAMP Installation 23

2.1.5 Apache Konfigurieren 24

2.1.6 MySQL Konfigurieren 27

2.1.7 PHP Konfigurieren 28

2.1.8 Evaluation Oberfläche 29

2.1.9 Webmin Installation 30

2.2.1 WINDOWS SERVER INSTALLIEREN 31

2.2.2 Server Setup 31

2.2.3 Server konfigurieren 32

2.2.4 Ordner/Volume für Backup freigeben 33

2.2.5 Filezilla installieren 36

2.3.1 MYSQL DATENBANK 38

2.3.2 IST Datenbank 38

2.3.3 Datenbank Planung 43

2.3.4 Datenbank ERM 44

2.3.5 Tabellen-Plan 45

2.3.6 XAMPP installieren 47

2.3.7 Datenbank mit XAMPP realisieren 48

2.3.8 Datenbank in Linux Server hinzufügen 50

2.4.1 MATHETEST REALISIEREN 51

2.4.2 Planung & Vorlage 52

2.4.3 Realisierung mit XAMPP auf lokalem System 54

2.5.1_Toc509849292BACKUP REALISIEREN 59

2.5.2 Backup Plan erstellen 60

2.5.3 Backup konfigurieren 60

2.6.1 BEDIENUNGSANLEITUNGEN 61

2.6.2 Benutzeranleitung 61

2.6.3 Admin-Anleitung 64

2.7.1 TESTFÄLLE 65

3.1.1 ANHANG 67

3.1.2 Reflexion 67

3.1.3 Quellenverzeichnis 68

3.1.4 Abbildungsverzeichnis 68

3.1.5_Toc509849303Glossar 69

3.2.1 LISTINGS 70

3.2.2 HTML/PHP Code 70

3.2.3 CSS Code 70

3.2.4 MySQL Code 70




































- AUFGABENSTELLUNG


1.1.2 Ausgangslage


Die Stiftung IFA wurde vor 8 Jahren gegründet und bildet Informatiker Lernende mit Autismus im EFZ und EBA Bereich aus.

Jedes Jahr kommen mehrere Schupperlernende für eine Woche zur Rafisa und werden hier beurteilt. Eines der Beurteilungskriterien ist das Wissen im Bereich Mathematik.

Die Mathematiktests wurden bis anhin ausgedruckt und vom Schnupperlernenden gelöst. In Zukunft soll dies nun elektronisch geschehen. Dazu wird eine Mathematikaufgaben-Datenbank erstellt und über einen Webbrowser dem Schnupperlernden zur Lösung zur Verfügung gestellt.

Detaillierte Aufgabenstellung


1.1.3 IST-Zustand

Analyse der bestehenden Mathematik-Access-DB.

Es soll eine ERM erstellt werden. Darin werden die Attribute, Primarykeys und Foreignkeys sowie die Beziehungen der Entitäten untereinander dargestellt. Die Daten werden dann auf die neue Datenbank migriert.


1.1.4 SOLL-Zustand

Der Aufbau des Mathematik-Servers und mindestens einem Client wird in einer Testumgebung realisiert. Migration in die produktive Umgebung ist nicht Teil dieser IPA und findet nach ausführlichen Tests zu einem späteren Zeitpunkt statt.


1.1.5 Mathematik-Server

Linux Server 16.04.3 LTS

Apache 2.4.29

MySQL 5.7.17

PHP 7.2.1

OpenSSH 7.6.1

Auf der zweiten Partition des Servers wird dann das Backup (siehe weiter unten) als Zwischenbackup erstellt.

Um die Administration des Linux Servers vereinfachen zu können soll ein entsprechendes GUI evaluiert und installiert werden. Folgende Punkte müssen dabei berücksichtigt werden:

• Benutzerverwaltung

• Datenbankverwaltung

• Freigaben ermöglichen

• Einfach und intuitiv zu benutzen

• Erweiterbar

• Das GUI soll möglichst nur die weiter unten beschriebenen Funktionen enthalten (kein Ballast)


1.1.6 Datenbank

Die Testaufgaben und die bisherigen Testpersonen werden von der bestehenden Mathetest Accessdatenbank übernommen.

Für das Einloggen in die Datenbank stehen zwei technische Accounts zur Verfügung:

User:

• Bearbeitung (ändern und speichern) der bestehenden Themengruppen

• Erfassen und speichern neuer Themengruppen

• Themen den neuen Gruppen zuweisen

• Lesen/Drucken der Resultate jeder Testperson (Guest)

Guest:

• Starten des Testes durch Klicken des Start-Buttons

• Navigieren innerhalb der Testseiten:

- vor: Möchte die nächste Aufgabe bearbeiten

- zurück: Möchte die vorherige Aufgabe überarbeiten

- auf: möchte eine andere Themengruppen bearbeiten

- ab: Möchte die ausgewählte Themengruppe bearbeiten

• Auswählen der auf der Seite vorgeschlagenen Lösungen (Single- / Multiple-Choice)


1.1.7 Website

Loginmaske,

anhand des Login wird verzweigt auf eine «User»seite oder «Guest»seite

Userseite:

Zwei Links: Einer zur Erfassung eines Guests (Guesterfassung) der andere zum Ändern einer bestehenden oder Zusammenstellen einer neuen Themengruppe (Themengruppenverwaltung)

Guesterfassung:

Erfassen des Nachnamens, des Vornamens und der Themengruppe für den Guest. Damit der Test mehrmals vom gleichen Guest durchgeführt werden kann wird die Guest-Erfassung mit einem Index versehen.

Themengruppenverwaltung:

Eine bestehende Themengruppe kann ausgewählt, oder eine neue erstellt werden. Alle Mathematik-Testthemen werden aufgelistet und können an oder abgewählt und so der Themengruppe hinzugefügt oder von ihr entfernt werden. Auch die maximale Testzeit der entsprechenden Themengruppe muss individuell angepasst werden können.

Guestseite:

Entsprechend der zugewiesenen Themengruppe des Gastes werden die Mathematik-Testthemen inaktiv aufgelistet. Erst nach dem Drücken des Startbuttons werden sie aktiviert und der Countdown der Testzeit gestartet. Die restliche Testzeit wird angezeigt. Der Guest kann nun das Mathematikthema auswählen, das er jetzt lösen möchte. Das führt ihn zur Aufgabenseite.

Aufgabenseite:

Hier wird jeweils eine Aufgabe gezeigt und die vier Lösungsvorschläge (Single- oder Multiple-Choice) zur Auswahl zur Verfügung gestellt. Ob Single- oder Multiple Choice, welche Aufgabe von wie vielen dieser Themengruppe z.B. «Sie sind bei der Aufgabe 2 von 10», wie auch die restliche Testzeit werden angezeigt. Navigieren kann der User vor zur nächsten Aufgabe oder zurück zur Vorherigen oder auch zurück zur Themenübersichtseite.


1.1.8 Backup

Es ist eine Backupstrategie zu entwickeln, diese beinhalten eine Sicherung des Servers und seiner Konfiguration sowie die Sicherung der Daten und Konfiguration der Mathematik-DB. Die Sicherung erfolgt auf der zweiten Partition des Servers und von dort dann wöchentlich auf einen externen Ordner, der den Backupordner auf dem Backupserver simuliert.


1.1.9 Testen

Die Aufgabe umfasst die Installation eines kompletten Systems das ausgiebig getestet wurde. Dazu ist ein Testkonzept zu erstellen.

Die Tests werden nach Konzept durchgeführt. Die Ergebnisse dienen auch als Basis für mögliche Verbesserungen. Folgende Testszenarien müssen vorhanden sein:

Desaster Recovery des Mathematik-Servers

Wiederherstellung der Mathematik-DB

Einrichten neuer Testkandidaten

Funktionskontrolle der Tests


1.1.10 Dokumentation

IPA Dokumentation (Ausgangslage, IST-Zustand, Soll-Zustand etc. gemäss der Aufgabenstellung)

Administrator-Anleitung für die Installation des Servers und der Datenbank und den Backup, Restore und Desaster Wiederherstellung

Anleitung für die User: Das Erstellen und Verwalten neuer/bestehender Themengruppen sowie für die Auswertung der Testergebnisse

Anleitung für die Guests: Durchführung der Tests und Navigation.

Mittel und Methoden


Linux, Apache2, MySQL, PHP, Webbrowser

Vorkenntnisse


Installation und Konfiguration von LAMP, Programmierung mit PHP, ERM und Normalisierungsprozess, Backup und Restore, Testszenarien, Dokumentieren

Vorarbeiten


Analyse der bestehenden Mathematik Access DB

Neue Lerninhalte


Keine

Arbeiten in den letzten 6 Monaten


Aufbau eines Linuxservers mit Apache2 ,MySql, PHP, Migration einer bestehenden Website inkl. Datenbank. Windows Server mit Printserver, AD


































1.2.1 PROJEKTAUFBAUORGANISATION

Dieses Projekt geschieht im Rahmen der Rafisa Informatik GmbH und wird in deren Arbeitsumgebung, wie auch Arbeitszeit ausgeführt.


Person: Leon Vass

Rolle: Kandidat


Aufgabe:

Der Kandidat erfüllt die Individuelle Praxis Arbeit, basierend auf einem Auftrag der im Vorhinein erstellt, von ihnen signiert und von der Prüfungskommission genehmigt wurde.


Verantwortung:

Der Kandidat trägt die Verantwortung die Individuelle Praxis Arbeit sauber, korrekt und in der ihnen gegebenen Zeit abzuschliessen.



Person: Roland Wunderlin

Rolle: Fachvorgesetzter


Aufgabe:

Der Ausbildner dient als einer der beiden Fachvorgesetzten, der die Arbeit evaluiert und überprüft. Weiterhin ist er dafür verantwortlich Arbeitsfortschritt –Umgang, -Effektivität, Selbständigkeit und Eigenplanung während der Arbeit zu überwachen und zu bewerten.


Verantwortung:

Der Fachvorgesetzte stellt sich ein realistisches Bild der Arbeitsweise des Kandidaten und übernimmt diese in die Bewertung der IPA. Diese Beobachtung soll ein klares Bild des Kandidaten darstellen. Er ist auch für die Endnote der IPA verantwortlich, zusammen mit dem Hauptexperten.



Fachkraft: Urs Gloggner

Rolle: Hauptexperte


Auftrag:

Der Experte arbeitet in Tandem mit dem Fachvorgesetzten bei der Bewertung der Individuellen Praxis Arbeit, wobei er auch über den Zeitraum der IPA den Kandidaten besuchen und etwaige Fortschritte beobachten kann.


Verantwortung:

Der Hauptexperte besucht den Kandidaten bei seiner Arbeitsstelle und macht sich ein Bild des Fortschrittes. Hierbei ist es seine Verantwortung sich selbst ein Bild des Kandidaten zu erstellen und diesen klar zu machen welche Schritte für die IPA folgen (erster Besuch). Weiterhin ist er für die Endnote verantwortlich.



Fachkraft: Thomas Schärer

Rolle: Berufsbildner


Auftrag:

Keine direkte Involvierung in der Individuellen Praxis Arbeit, da R.Wunderlin bereits als Fachkraft dient. Kann bei der Präsentation der IPA dabei sein, jedoch auf Wunsch des Kandidaten.


Verantwortung:

Der Berufsbildner kann auf Anfrage bei der Präsentation des Kandidaten dabei sein, spielt jedoch keine direkte Rolle bei der Auswertung des Endergebnisses. Weiterhin ist es seine Verantwortung ein brauchbares Arbeitsumfeld zu bieten auf dem der Kandidat seinen Auftrag erfüllen kann.

























1.3.1 VORKENNTNISSE

Die Vorkenntnisse des Kandidaten werden hier in einer Kurzgefassten Liste zusammengefasst. Dies sind alles Kenntnisse die im Kontext zur IPA stehen und relevant der gefragten Aufgabe gegenüber sind.


* MySQL: Gute Kenntnisse durch ÜK und Eigenanwendung

  • Linux: Normale Kenntnisse durch Gebrauch im privaten Umfeld
  • Apache: Minimale Kenntnisse durch schule und privaten Gebrauch
  • PHP: Gute Kenntnisse durch private Anwendung
  • HTML: Gute Kenntnisse durch private Anwendung und ÜK
  • VMware: Gute Kenntnisse durch privaten Gebrauch und Arbeit in der Rafisa
  • Backups/Restore über Linux: Minimale Kenntnisse durch Arbeiten in der Rafisa
  • Testszenarien: Grundkenntnisse durch Schule und Eigenanwendung


Viele dieser Vorkenntnisse wurden am Arbeitsplatz oder im privaten Gebrauch gesammelt. Die Themen die neu für den Kandidaten waren, wurden während den Vorarbeiten gelehrt.




1.4.1 VORARBEITEN

Vor dem Start der Individuellen Praxis Arbeit wurden vom Kandidaten vereinzelte Vorarbeiten getroffen; diese beziehen sich von Virtuellen Maschinen die im Voraus aufgestellt wurden, bis zum Selbst- und Literaturstudium, welches dazu gedacht ist bei der Durchführung der Arbeit zu helfen.


* Repetition PHP durch Schulmaterial, W3Schools und Selbststudie

  • Repetition HTLM durch W3Schools und Selbststudie
  • Repetition MySQL durch das Aufstellen von Dummy-Datenbanken
  • Kennenlernen der Umgebung durch das Aufstellen von Prototypen die eine vereinfachte Version der Aufgabe simulieren
  • Datensätze für das Testen der Datenbank erstellen












1.5.1 FIRMENSTANDARDS

Die Rafisa Informatik GmbH ist relativ offen in ihrem Umgang mit der Arbeit der Mitarbeiter, was bedeutet, dass klar vorgegebene Firmenstandards nicht vorhanden sind. Die Firma vertraut darauf dass ihre Mitarbeiter selbständig ihre Aufträge erfüllen können.

1.6.1 SOLL/IST SITUATION

Diese Zusammenfassung der IST-Situation und des erwünschten Ergebnisses soll einen Überblick über die Veränderungen der Umgebung, wie auch den vorgenommenen Arbeiten geben. Diese beiden Beschreibungen beziehen sich nur auf die beiden End-Situationen und zeigen keine Zwischenschritte, wie beim Zeitplan oder dem Arbeitsprotokoll.


1.6.2 IST-Situation

Der Mathetest als solches wurde bisher immer auf Papier ausgedruckt und von Kandidaten ausgefüllt. Der Test wurde danach vom zuständigen Ausbildner überprüft und ein Resultat wurde ausgerechnet.

Besagtes Resultat wurde in eine Microsoft Access Datenbank eingespeist, mit den Namen der Kandidaten, deren Resultate, dem Datum und dem Namen des Tests den sie abgeschlossen hatten. In diesem Setup mussten Ausbildner für jeden abgeschlossenen Test einen neuen Eintrag erstellen und die gesamten Daten manuell eingeben. Hierbei wurde Zeit verloren und Redundanzen entstanden in der Access Datenbank.


1.6.3 SOLL-Situation

Der Mathetest soll automatisiert auf einem Server im Netzwerk der Rafisa Informatik GmbH laufen, wobei man über einen beliebigen Computer im Lehrlings-Netzwerk auf ihn zugreifen kann. Hierbei ist es dem Ausbildner ermöglicht den gewünschten Test auszuwählen (welche alle aus entsprechenden Themengruppen zusammengestellt wurden), danach den vollständigen Namen des Lehrlings, oder Anwärters, einzugeben und den Test darauf zu starten. Der Ausbildner kann zu diesen Zeitpunkt den Anwärter verlassen, da der Test über einen Countdown, welcher startet sobald der Test begonnen wurde, von selbst beendet wird nachdem die entsprechende Zeit abgelaufen ist. Nach Abschluss des Tests wird das Ergebnis automatisch über PHP in eine Datenbank im Netzwerk gespeist, wo sie unter dem Namen der Testperson, deren Resultat und dem Datum gespeichert ist. Die neue Datenbank ist ausserdem so aufgebaut dass keine Redundanzen entstehen wenn ein neuer Test abgeschlossen wird.


1.7.1 ZEITPLAN

Der Zeitplan, ist ein Gantt-Diagramm und ist in eine Soll und Ist Variante aufgeteilt. Diese zeigen den anfangs gewählten Pfad, wie auch den allgemeinen Pfad den der Kandidat für die Aufgabe überlegt hat. Der IST-Zeitplan zeigt das tatsächliche Ergebnis.


1.7.2 SOLL-Zeitplan


Form3


1.8.1 ARBEITSPROTOKOLL

Das Arbeitsprotokoll verfolgt die täglichen Fortschritte der IPA und ist in jeweilige Inkremente aufgeteilt.


1.8.2 09.03.2018


Tagesziel Dokumentation beginnen & Teil 1 der Doku abschliessen. Inhaltsverzeichnis für gesamte Dokumentation erstellen Linux & Windows Server auf VMware aufstellen. Zeitplan für IPA-Zeitraum erstellen. Daten aus MSAccess DB extrahieren
Erledigte Arbeit Die Dokumentation wurde erfolgreich begonnen und alle zukünftigen Einträge im Inhaltsverzeichnis wurden erstellt um bessere Übersicht über die Dokumentation, wie auch die Arbeit im Allgemeinen zu erlauben. Diese können zwar später geändert werden, doch für den Moment dienen sie als Vorlage und Fundament. Dazu wurde der Zeitplan auch erstellt, die SOLL-Version steht, die IST Version wird am Ende der IPA hinzugefügt.
Weiterhin wurden beide Server erfolgreich aufgesetzt, die Konfiguration wird bei beiden bei nächster Gelegenheit folgen.
Reflexion Die Daten konnten aus der MSAccess Datenbank leider nicht mehr extrahiert werden, wegen Zeitproblemen; ansonsten verlief der Einstieg in die IPA wie geplant.
Arbeit Zuhause Daten aus MS-Access Datenbank zuhause extrahiert, nachdem Arbeitszeit vergangen war.
Arbeitszeit Dokumentation beginnen: 2h Inhaltsverzeichnis erstellen: 1h Zeitplan erstellen: 1h Linux & Windows Server installieren: 2h Daten aus MS-Access Datenbank notiert: 1h












1.8.3 12.03.2018


Tagesziel Nach Besuch von Experten Zeitplan überarbeiten und verbessern
Zeitplan erweitern/verbessern Datenbank Plan erstellen (Notizen zur Realisation) MS-Access DB dokumentieren ERM erstellen Tabellenplan erstellen Backupplan erstellen Testfälle planen
Erledigte Arbeit Nachdem Besuch des Experten hatte ich mich dazu entschieden meinen Zeitplan nochmals zu überarbeiten und die dort vorgegebenen Ziele zu verbessern. Den Zeitplan konnte ich fertigstellen und die Datenbank planen. Die Microsoft Access Datenbank wurde auch dokumentiert, sowie eine ERM für IST und SOLL erstellt. Der Tabellenplan wurde begonnen. GUI für HTML erstellt, Überarbeitung potenziell noch nötig.
Reflexion Mit der plötzlichen Umstrukturierung des Tagesplans mussten einige vorherige Aufgaben fallen gelassen werden. Dazu hatte die Planung der Datenbank Priorität, weswegen die Pläne für das Backup und die Testfälle noch nicht abgeschlossen wurden.
Arbeit Zuhause Vorlage für GUI überarbeitet
Arbeitszeit Zeitplan neu geschrieben: 1h Datenbank geplant: 2h MS-Access DB dokumentiert: 1h ERM erstellt: 3h Tabellenplan erstellt: 1h GUI erstellen: 1h














1.8.4 14.03.2018


Tagesziel Arbeit vom 12.03 nachholen: Software für DB Software für Backup
Geplante Arbeit: Linux & Windows konfigurieren LAMP installieren & konfigurieren Netzlaufwerk für Backup erstellen VSFTPD auf Linux installieren Filezilla auf Windows installieren
Erledigte Arbeit Arbeit vom 12.03 nachgeholt, Software für Datenbank auf Laptop ist XAMPP, DB auf Linux basiert auf InnoDB. für Backup auf Windows-Seite Filezilla gewählt, Linux benutzt VSFTPD. Linux & Windows habe ich konfiguriert und LAMP Stückweise auf Ubuntu installiert. Diese habe ich danach auch direkt konfiguriert und sie für späteren Betrieb vorbereitet. Auf Windows Seite habe ich das Netzlaufwerk für das Backup erstellt und das neue Volumen freigegeben. Filezilla konnte ich währenddessen auch auf Windows installieren. VSFTPD ist auf Linux auch installiert, muss jedoch noch konfiguriert werden.
Reflexion Die Konfiguration der beiden Server und vor allem LAMP hat etwas länger gedauert als erwartet, weshalb Filezilla und VSFTPD zwar installiert, aber noch nicht konfiguriert sind.
Arbeit Zuhause Keine
Arbeitszeit XAMPP installiert & konfiguriert: 1h Linux & Windows konfigurieren: 2h LAMP installieren & konfigurieren: 3h Netzlaufwerk für Backup erstellen & Filezilla installieren: 1h VSFTPD installieren: 30 min (verlängerte Wartezeit wegen langsamen Internet)












1.8.5 15.03.2018


Tagesziel Arbeit vom 14.03 nachholen: VSFTPD konfigurieren
Geplante Arbeit: Datenbank in XAMPP realisieren Datenbank mit Testdaten füllen (falls möglich)

Erledigte Arbeit Datenbank konnte nicht sofort realisiert werden da ERM nochmals etwas Überarbeitung benötigte, nachdem es nochmals genauer überprüft wurde. ERM wurde aktualisiert & verbessert. Arbeit an Datenbank wurde begonnen, jedoch nicht abgeschlossen.
Reflexion Da die ERM noch Fehler aufwies und nicht alle Anforderungen erfüllte, musste sie verbessert werden, was Zeit kostete. Die Realisierung der Datenbank konnte aus diesen Gründen nicht abgeschlossen werden. Konfiguration von VSFTPD musste wegen diesen Komplikationen noch warten und wird fürs Erste auf später verschoben.
Arbeit Zuhause Tabellenplan noch überarbeitet, damit es direkt der neuen ERM entspricht.
Arbeitszeit ERM überarbeiten/korrigieren: 3h Datenbank realisieren: 3h (hat sich wegen Fehlern in die Länge gezogen) Tabellenplan anpassen: 1h


















1.8.6 16.03.2018


Tagesziel Arbeit vom 15.03 nachholen: Datenbank realisieren
Geplante Arbeit: Tabellenplan fertigstellen Datenbank nach Fertigstellung mit Testdaten füllen Datenbank per Code in Linux einfügen Header für Mathetest erstellen CSS Datei für Mathetest erstellen
Erledigte Arbeit Datenbank wurde realisiert und funktioniert in der XAMPP Umgebung, wie auch in Linux nachdem es dort eingefügt wurde. Die XAMPP Kopie wurde gesichert als „jungfräuliche“ Version der DB bevor Daten eingefügt werden. Daten wurden zuerst auf XAMPP danach in Linux eingefügt und funktionierten ohne Probleme. Tabellenplan wurde auch komplett fertiggestellt.
Arbeit an Mathetest Realisierung wurde gestartet, doch konnte noch nichts wegen den Zeitproblemen mit der Datenbank realisiert werden.
Reflexion Die Datenbank funktioniert nach ihrer Realisierung nun einwandfrei, auf XAMPP und auf Linux. Dummerweise konnten auf Linux wegen der fehlenden FTP Software noch keine Bilder eingefügt werden (da die Aufgaben per Bilder dargestellt werden sollen).
Der Mathetest selber kommt wegen den obigen Zeitproblemen vermutlich etwas in Verzug.
Arbeit Zuhause VSFTPD konfiguriert (noch nicht fertiggestellt)
Arbeitszeit Datenbank realisieren: 2h Datenbank nach Fertigstellung in Linux einfügen: 1h Tabellenplan fertiggestellt: 1h Mathetest Header begonnen: :2h












1.8.7 19.03.2018


Tagesziel Arbeit vom 16.03 nachholen: VSFTPD konfigurieren
Geplante Arbeit: Datenbank in HTML/PHP realisieren
Erledigte Arbeit VSFTPD konfiguriert und fertiggestellt. Versucht Verbindung mit Windows Server aufzustellen. CSS Datei & Index für Mathetest erstellt
Reflexion VSFTPD konnte konfiguriert werden, doch leider traf ich auf Probleme beim Verbinden mit dem Windows Server. Bei beiden war der FTP-Dienst aktiviert, jedoch konnte keine Verbindung aufgebaut werden. Die Arbeit am Mathetest selbst verlief dafür noch gut, der Header konnte fertiggestellt werden, womit er eine Vorlage für das restliche Design darstellt.
Arbeit Zuhause Keine
Arbeitszeit VSFTP Konfiguriert: 1h Versucht FTP Fehler zu lösen: 1h Header für Mathetest fertiggestellt: 2h Index & CSS für Mathetest erstellt: 2h




1.8.8 21.03.2018


Tagesziel Geplante Arbeit: Index für Mathetest abschliessen PHP mit Datenbank verbinden Login erstellen
Erledigte Arbeit PHP konnte mit Datenbank verbunden werden. Ein direkter Datenaustausch wurde nicht organisiert, doch Code bestätigt dass die Verbindung steht und das Login funktionierte.
Reflexion Der Index und das Login konnten noch nicht abgeschlossen werden, doch eine Verbindung zwischen PHP und der Datenbank steht. Ich habe weiterhin die Dokumentation noch erweitert und einige Punkte noch nachgeholt.
Arbeit Zuhause Keine
Abeitszeit PHP mit Datenbank verbinden: 3h (wegen Syntax-Fehler) Dokumentation weitergeführt: 2h Index versucht abzuschliessen: 1h



1.8.9 22.03.2018


Tagesziel Geplante Arbeit: Experten Besuch Vorlage für Aufgabe erstellen Mathetest abschliessen Vorlage für Testfälle erstellen Dokumentation gemäss Feedback von Experten aktualisieren
Erledigte Arbeit Experte war zu Besucht, Gespräch verlief erfolgreich. Nach aufgestellter Verbindung mit Datenbank konnte ich einige Daten über die Oberfläche auf PHP in die Datenbank einfügen (zum Beispiel einen neuen Benutzer). Darstellung wurde etwas von mir überarbeitet, benötigt jedoch noch etwas Arbeit. Die Dokumentation habe ich entsprechend dem Feedback des Experten auch etwas verbessert und ausführlicher gestaltet (beispielsweise bin ich mehr auf die Normalisierungen eingengangen)
Reflexion Der Mathetest wurde noch nicht abgeschlossen, da Zeit für den Experten Besuch und die Dokumentation investiert werden musste.
Arbeit Zuhause Vorlage für Testfälle erstellt
Arbeitszeit Besuch vom Experten: 1h Dokumentation verbessert: 3h An Mathetest weiter gearbeitet: 4h Vorlage für Testfall-Drehbuch erstellt: 1h


1.8.10 23.03.2018


Tagesziel Geplante Arbeit: Mathetest fertigstellen Testfälle erstellen (Mathetest/DB) Verbindungsprobleme mit FTP lösen
Erledigte Arbeit Mathetest realisiert und getestet. Beim Mathetest besteht eine Verbindung zur Datenbank, Benutzer können erstellt werden und ich war in der Lage die Anforderungen auf der rein technischen Seite zu erfüllen. Die Testfälle konnte ich auch grösstenteils erstellen, für Datenbank, Datenaustausch zwischen PHP und Datenbank, den Test selber und das Erstellen von neuen Usern.
Reflexion Der Test funktioniert, jedoch braucht er noch eine anständige Darstellung, da momentan alles über sehr simple Darstellung verfügt.
Arbeit Zuhause Keine
Arbeitszeit Mathetest realisieren: 5h Testfälle erstellen: 2h


1.8.11 26.03.2018


Tagesziel Abschluss der Arbeit dokumentieren. Dokumentation rechtzeitig abgeben
Erledigte Arbeit Dokumentation überarbeitet, Glossar überprüft etwaige Fehler oder Lücken korrigiert.
Reflexion Letzter Tag der Arbeit. Es war definitiv hektisch, vor allem wegen der Menge an Arbeit die mir präsentiert wurde. Doch es hat am Ende noch geklappt, wenn auch nur knapp.
Arbeit Zuhause Keine
Arbeitszeit Dokumentation: 6h





1.9.1 MÖGLICHE RISIKEN

Bei jedem Projekt bestehen Risiken, die die Arbeit verhindern oder gar stoppen können. Besagte Risiken, wie auch die Methoden dagegen, sind hier aufgelistet.


Risiken:

  • Datenverlust
  • Menschliches Versagen
  • Fehlerhafte Zeitplanung
  • Versagen der Virtuellen Maschine


Gegenmassnahmen:

  • Sicherung der Daten, auf externes Speichermedium
  • Tägliche Sicherung der technischen Dokumentation
  • Aktualisierung der VMware Software, um Fehler zu verhindern


Darunter wird die Dokumentation auch inkrementell gespeichert, wobei frühere Versionen als Rückfallpunkt bestehen, sollte etwas passieren. Diese Dateien werden auch auf einem USB-Stick und einem separaten PC gespeichert.









2.1.1 LINUX SERVER

Der Server auf dem der Mathetest platziert wird und worauf die Datenbank platziert ist, wird wie laut dem Auftrag ein Linux Ubuntu Server sein (Version 16.04.4 LTS). Für den Zweck dieser IPA wird der Server in einer virtuellen Umgebung realisiert, wonach er, nach Abschluss der Praxis Arbeit, für den weiteren Gebrauch der Firma auf Hardware platziert wird, damit man ihn später in das Netzwerk integrieren kann.


Login Informationen

Benutzername: user

Password: test


Version: Linux Ubuntu Server - 16.04.4 LTS


2.1.2 Server Setup

Der Server basiert als solches auf Ubuntu (wegen Anfrage durch den Auftraggeber und dem Fakt dass der Kandidat mit diesem System bereits vertraut ist), weswegen das Setup für den Server eine einfache und Benutzerfreundliche Sache ist.


Form4Der Grossteil der Installation besteht daraus zu warten bis sie tatsächlich abgeschlossen ist. Was passieren kann, ist dass der Name der in der Einstellungen von VMware bestimmt wurde vom System nicht angenommen wird. Bekannte Fälle hierfür sind Benutzernamen wie root oder admin.

In solchen Fällen sollte der Installer einen davon wissen lassen und einen neuen Benutzernamen verlangen (dies alles hat mit einigen Grundeinstellungen von Ubuntu zu tun, die bestimmen dass der originale root Account geschlossen ist. Der genaue Grund dafür kann auf der Homepage von Ubuntu gefunden werden.)

Form5Sobald jedoch diese Anfrage erfüllt ist, kann die Installation ohne weitere Einschränkungen abgeschlossen werden.


2.1.3 Server Konfiguration

Bevor alle LAMP Pakete heruntergeladen und installiert werden können, müssen noch einige Konfigurationen am Linux Server vorgenommen werden, um die Benutzung dieses zu erleichtern und ihn später mit dem Backup Server zu verbinden.


Als erstes muss man das Tastatur-Layout auf dem Ubuntu Server umändern. An sich ist dies nicht tatsächlich obligatorisch, da man auch mit dem Englischen Setup (QWERTY) arbeiten kann; doch um die Benutzung zu vereinfachen und Zeit zu sparen sollte dieser Schritt auch durchgeführt werden.


Der erste Befehl hierbei ist:

sudo dpkg-reconfigure keyboard-configuration


Dies holt ein Menü herauf, welches die Konfiguration der Tastatur erlaubt: Wichtig hierbei ist auf dem Menü stets auf <OK> zu drücken, anstatt auf die Auswahl, da dies einen wieder zur Command-Line zurückbringt, ohne die Änderungen zu übernehmen.


Form6
Zuerst wird das Modell der Tastatur abgefragt; hierbei kann man die Standard-Auswahl bei belassen, da diese auf die meisten Tastaturen zutrifft die im normalen Umfeld benutzt werden.


Form7Als nächstes wird das Land ausgewählt, auf die sich die Layouts basieren die man danach auswählen kann. In diesem Fall wählt man Switzerland aus, um das folgende QWERTY Layout auswählen zu können.


Form8Das Layout selbst wird nun hier ausgewählt. Es ist empfehlenswert gleich die legacy Option auszuwählen, da diese keine Tasten eliminiert (auch wenn das System sie als „tot“ wahrnimmt).


Form9Das System bietet einem hier noch weitere Optionen für AltGr auf der Tastatur. Die einfachste Option hierbei ist es, bei der Auswahl stets Standard auszuwählen, vor allem da bei diesem Auftrag in der Linux Umgebung nicht viele besondere Sonderzeichen benutzt werden.


Nach diesem und einen weiteren Bildschirm, kann man wieder die <OK> Taste betätigen und das System initialisiert nun das neue Layout. Auch wenn das System dies nicht direkt anspricht, sollte man nun zur Sicherheit einen Neustart mit sudo reboot ausführen.


Nach dem Neustart kann man das neue Layout kurz testen; falls alles stimmt, ist die Konfiguration der Tastatur damit abgeschlossen.

Der nächste Schritt besteht daraus, die Netzwerkkonfiguration des Servers zu verändern, um ihn später realistisch mit dem Backupserver kommunizieren zu lassen (ausserdem soll die Interaktion der beiden virtuellen Maschinen den echten Gebrauch der Server im Netzwerk der Rafisa simulieren).

Hierbei bietet sich aber an, diesen Schritt erst nach der Installation vom LAMP durchzuführen. Das kommt davon dass die Standardeinstellung bei VMware eine NAT-Konfiguration ist, was bedeutet dass sie direkt die Host-IP des Computers übernimmt und so mit dem Netzwerk kommuniziert. Dies ist von Vorteil da es den Download der folgenden Pakete vereinfacht.


Daher können die nächsten Befehle auch erst nach der Installation von LAMP durchgeführt werden.


sudo nano /etc/network/interfaces


Dieser Befehl greift mit der Nano-Applikation (welche vergleichbar mit Notepad ist) auf die Netzwerkkonfigurationsdatei von Linux zu. In dieser lässt sich eine statische IP Adresse für den Server einstellen. Andererseits kann man hier auch für spätere Zwecke auch wieder auf eine automatische umstellen, sollte wieder NAT benutzt werden.

Die Konfiguration der Datei sollte folgendermassen aussehen


Form10
Da der Server auf einer virtuellen Maschine läuft, wird das Protokoll ens33 benutzt (ein Standard der von Vmware gesetzt wurde). Mit der Angabe static kann man alle erforderlichen Konfigurationen selbst in der Datei vornehmen und diese so speichern. Darunter ist noch die Option auf eine automatisierte Option umzusteigen, wobei die IP durch das DHCP Protokoll geholt wird.


Als letztes muss noch Netz-Adapter Einstellung auf VMware selbst geändert werden, da diese die Adapter simuliert. Dies lässt sich leicht in den Einstellungen des VMware-Players erledigen. Hierbei ist wichtig zu notieren dass die Einstellungen nur auf eine einzelne Virtuelle Maschine angewendet werden. Müssen die Einstellungen bei mehreren Maschinen verändert werden, muss man dies jeweils bei jeder einzelnen machen.


Form11
Form12
Sobald der Netzwerkadapter entsprechend eingestellt ist (hierbei auf VMnet0), kann der Linux Server mit dem Windows Server kommunizieren, nachdem beim Letzteren diese Änderungen auch vorgenommen wurden.














2.1.4 LAMP Installation

Die Installation von LAMP geschieht nicht als eine einzelne Installation eines Pakets, sondern besteht aus mehreren aufeinanderfolgenden Installationen der einzelnen Systeme. Dasselbe Prinzip gilt auch für das spätere Konfigurieren der jeweiligen Programme.


Apache installieren:


* sudo apt-get update
Dies soll als ein schneller Check dienen um sicherzustellen dass alle anderen Systeme vor den folgenden Installation auf dem neuesten Stand sind.

  • sudo apt-get install apache2
    Dies installiert Apache als Dienst auf dem Server. Der Installer wird nach einigen Sekunden abfragen ob der User einverstanden ist, dies kann man mit einem Y (für YES) bestätigen.

Damit ist Apache für den Moment installiert und kann später konfiguriert werden.


MySQL installieren:


* sudo apt-get install mysql-server
Mit diesem Befehl wird MySQL installiert. Die Installation selbst kann etwas dauern, nachdem sie wieder den User gefragt hat die Aktion mit einem Y zu bestätigen.


Form13Nach dem Grossteil der Installation erwartet MySQL ein Passwort für den Datenbank Zugriff. Hierfür wird ein ähnliches Passwort wie beim Server selbst ausgewählt, in diesem Fall test1.


PHP installieren:

  • sudo apt-get intall php libapache2-mod-php php-mcrypt php-mysql
    Dieser Befehl installiert PHP, wie auch einige weiteren Pakete, die dabei helfen sollen dass PHP mit Apache und der MySQL Datenbank interagieren kann.

PHP verfügt noch über einige weitere Module, welche die Funktionalität zwischen PHP und anderen Diensten verbessern sollen. Die restlichen dieser zu installieren, ist jedoch optional und nicht vonnöten.




2.1.5 Apache Konfigurieren

Nachdem alles installiert wurde, müssen noch die einzelnen Dienste konfiguriert werden. Hierbei muss man für Apache erstmal eine einzelne Veränderung in der Konfigurationsdatei von Apache vornehmen, um zu verhindern dass stetig eine Fehlermeldung auftaucht. Denn falls der ServerName nicht global gesetzt wird, gibt das System dem Benutzer eine Fehlermeldung aus, dass der Dienst den vollständigen, qualifizierten Servernamen nicht herausfinden konnte.


* sudo nano /etc/apache2/apache2.conf
Die Konfigurationsdatei ist im erstellen Ordner von Apache zu finden.


Die Änderung in der Konfigurationsdatei besteht daraus den Servernamen anzugeben. Hierbei kann man entweder die Domain oder die IP des Servers angeben.


* sudo apache2ctl configtest
Mit diesem Befehl lässt sich nach der Änderung testen, ob sie funktioniert und die Fehlermeldung nicht mehr auftaucht. Falls die Ausgabe Syntax OK ausgibt, stimmt alles.

Hiernach kann man Apache neustarten (sudo systemctl restart apache2) um die bisherigen Veränderungen korrekt zu implementieren. Diese Taktik einen Dienst nach Änderungen in der Konfiguration neu zu starten ist für alle folgenden Dienste empfehlenswert und wird in den nächsten Malen erwähnt (aber nicht vollständig ausgeschrieben).


Als nächstes wird sichergestellt dass Apache Berechtigungen für die Firewall hat, mit freiem Zugang nach aussen.

  • sudo ufw app list
  • sudo ufw app info „Apache Full“
    Der erste Befehl zeigt die Informationen an welche Applikationen verfügbar sind (um sicherzustellen dass Apache auch vom System erkannt wird). Darauf zeigt der folgende Befehl detailliertere Informationen über das Programm, darunter auf welche Ports Apache zugreift. Diese sollten standardmässig 80 & 443 sein.


* sudo ufw allow in „Apache Full“
Mit diesem Befehl werden diese beiden Ports geöffnet und Verkehr durch sie erlaubt.


Danach kann man durch Eingabe der vollen Serveradresse, die Default Page von Apache erreichen. Damit weiss man genau dass der Service funktioniert. Zur Sicherheit wurde dieser Test auch nach der Neu-Konfiguration des Servers gemacht, um zu sehen ob die Apache Seite auch ausserhalb der NAT-Einstellung erreichbar wäre. Es war beide Male erfolgreich erreichbar.




Nachdem sichergestellt wurde das Apache als solches funktioniert, muss noch eine kleine Veränderung in Form einer Konfiguration der Datei dir.conf vorgenommen werden. Dies ist in Konjunktion mit PHP, um dessen Funktionalität etwas zu verbessern.


* sudo nano /etc/apache2/mods-enabled/dir.conf
In der Konfigurationsdatei muss eine kleine Änderung vorgenommen werden, wobei die Bezeichnung index.php grössere Priorität erlangt, damit Apache zuerst nach diesen Datentypen sucht.


Form14
Form15
Dies sorgt vor allem dafür dass Apache index.php über index.html priorisieren wird, was Fehler vermeiden kann bei denen Apache nicht in der Lage wäre die Dateien zu finden.


Hiernach kann man Apache wieder neu starten: sudo systemctl restart apache2

2.1.6 MySQL Konfigurieren

Nach der Installation von MySQL sind noch einige Faktoren zu konfigurieren um den zukünftigen Gebrauch von MySQL zu ermöglichen, wie auch die Sicherheit der zukünftigen Datenbank bereits zu versichern.


Daher ist das Erste dass man machen sollte, einige Sicherheitsoptionen von MySQL mit einem Befehl zu konfigurieren

  • mysql_secure_installation
    Dieser Befehl startet eine Abfrage von MySQL, bei der man mehrere Funktionen aktivieren oder deaktivieren kann.


Die erste Funktion hierbei ist ein Plugin, welches die Stärke des gesetzten Passwortes für eine Datenbank evaluieren soll. Dies ist sehr praktisch falls man sicherstellen will das gesetzte Passwörter stets einem gewissen Standard entsprechen (wie beispielsweise eine Mindestanzahl an Zeichen, wie viele Sonderzeichen dabei sein sollen oder ob Klein-und Grossschreibung erlaubt ist).


In diesem Fall ist eine Funktion wie diese aber nicht nötig. Die weiteren Abfragen hingegen, sind praktisch selbst bei einer Test-Datenbank.


* Remove Anonymous users?

Diese Abfrage ist die erste nach dem Passwort Plugin. Hier sollte man mit Ja [Y] antworten, da anonyme User auf die jeder Zugriff hat ein Sicherheitsrisiko sind. Vor allem in einem Fall wie diesem Auftrag, bei dem ein Login direkt mit der Datenbank interagiert.

  • Disallow root login remotely?
    Diese Anfrage kann man auch mit Ja beantworten, dass diese Funktion auch die Sicherheit der Datenbank gefährden kann. Hiermit kann der root nun nur noch über localhost zugreifen.

  • Remove test database an access to it?
    Da die Test Datenbank für jeden frei zugreifbar ist, stellt sie auch ein Risiko dar und sollte entfernt werden. Für das Testen in diesem Fall, ist sie auch nicht vonnöten.

  • Reload privilege tables now?
    Diese Frage erlaubt es die Privlege-Tabelle, also die bestehenden Regeln und Konfigurationen von MySQL, neu zu laden um alle Änderungen zu übernehmen. Hier kann man auch mit Ja antworten.


Damit ist die Sicherheitseinstellung von MySQL abgeschlossen.


2.1.7 PHP Konfigurieren

An PHP an sich gibt es nicht viel zu konfigurieren, da PHP als sich vor allem nur als Skript-Sprache handelt und nicht Funktionen enthält wie man sie bei Apache finden würde.


Daher macht es hier Sinn die simple Funktionalität von PHP zu versichern, damit man sich sicher sein kann, dass PHP als solches von Apache dargestellt werden kann.

Hierdurch kann man ein sehr simples PHP-Skript erstellen, welche eine Standard Informationsseite über PHP darstellen wird. Dies dient dazu, um zu sehen ob Apache die Datei erkennt und ob sie von aussen erreichbar ist. Dies ist ähnlich wie Standardseite bei Apache.


* sudo nano /var/www/html/info.php
Mit diesem Befehl wird die Datei info.php dort erstellt wo Apache darauf zugreifen kann und sie danach darstellen kann. Die Datei selbst braucht nicht mehr als den folgenden Code.

HForm16 iermit wird einfach ein Info-Page erstellt, die Apache auf dieser Adresse ausgeben kann:


http:////Server-IP-Adresse///info.php


In diesem Fall, da die ist die Adresse:

http:192.168.152.131/info.php

Die Seite selbst besteht aus einer langen Webseite, mit mehreren Tabellen die Informationen zu PHP, dem Server und Apache geben.
Form17























2.1.8 Evaluation Oberfläche

Auch wenn viele Administratoren es präferieren bei der Administration von Servern die Konsole zu benutzen (da diese oft mehr Freiheiten bietet und weniger Leistung verbraucht), verlangt der Auftrag eine Oberfläche zu installieren. Diese kann im Falle des IPA Auftrages zu jeder Zeit installiert werden, doch im Rahmen dieser Dokumentation wurde gewartet bis alle anderen Konfigurationen und Installationen bei dem Server abgeschlossen waren, bevor die Oberfläche installiert wird.
Die Evaluation besteht aus drei verschiedenen Optionen die selbst vom Kandidaten ausgewählt wurden, da man keine direkten Anforderungen für die Oberfläche angegeben hat, abgesehen von Benutzerfreundlichkeit für zukünftige Administrationen. Form18
Als erstes steht eine einfache Präferenzmatrix da, die die fünf Kriterien darstellt, welche vom Kandidaten definiert wurden. Diese konzentrieren sich auf die realistischen Anforderungen die in der Umgebung IPA-Durchführung zu erwarten wären, wie auch für weitere Administrationen sobald das System vollständig realisiert wurde.
Form19
Zwischen den Kandidaten hat sich auch diesen Präferenzen eine klare Meinung zum Favoriten gebildet. Mit der höchsten Punktzahl bei Webmin laut durchgeführter Evaluation, wird das System auf dem Server installiert.




2.1.9 Webmin Installation

Webmin hat nebst seinen anderen Vorteilen noch die Gunst dass es einfach zu installieren und zu konfigurieren ist.



Zuerst muss man aber in der Quell-Liste von Linux definieren von wo Webmin seine Installationspakete erhalten soll. Der Eintrag :
deb http://download.webmin.com/download/repository sarge contrib ermöglicht den sicheren Download der Oberfläche und darauf die Installation. Davor muss jedoch der PGP-Schlüssel von Webmin im System platziert werden, um sicherzustellen dass es der neuen Download-Quelle vertraut.
wget http://www.webmin.com/jcameron-key.asc//


Mit dem obigen Befehl wird der neue Schlüssel im System installiert. Mit diesen Konfigurationen und einem Neustart um sicherzustellen dass alle Änderungen korrekt übernommen wurden, kann die Oberfläche installiert werden.


Ab diesem Punkt ist Webmin an sich einsatzbereit und über den Port: 10‘000 mittels der Server Adresse des Linux Systems erreichbar.



















2.2.1 WINDOWS SERVER INSTALLIEREN

Der Backup-Server der eigentlich eingesetzt werden soll besteht noch nicht und soll später im Netzwerk der Rafisa Informatik GmbH implementiert werden. Aus diesen Gründen wird ein Backup Server für die IPA simuliert. Laut dem Auftrag und Wünschen der Auftraggeber soll dieser Server auf Windows basieren (da der richtige auch auf Windows laufen wird). Aus diesem Grund und weil der Kandidat mit Windows Server 2016 aus seiner Vorarbeit vertraut ist, wird besagter benutzt.


2.2.2 Server Setup

Ähnlich wie beim vorherigen Setup von Linux Ubuntu, ist auch die Installation von Windows sehr simpel. Hier muss man vor allem einfach auf die Installation selbst warten. Form20


Sobald Windows mit dem Prozess abgeschlossen ist, startet die virtuelle Maschine neu und der Windows Server ist bereit für den Gebrauch. Weitere Konfigurationen folgen dann auf der Windows Oberfläche selbst.


Form21

2.2.3 Server konfigurieren

Ähnlich wie beim Ubuntu Server müssen auch auf Windows Konfigurationen vorgenommen werden. Doch wegen dem Fakt dass die Werkseinstellungen des Windows Servers von Anfang brauchbar sind, halten sich diese in Grenzen.


Was jedoch von Nöten ist, ist die entsprechenden Dienste zu installieren um zukünftige Funktionalitäten, wie auch die Verbindung mit dem Linux Server, zu ermöglichen. Diese finden sich beim Server-Manager unter Verwalten und dann bei Rollen & Features hinzufügen. Dies öffnet den Assistenten zum Installieren von Features.

Unter den Features geht es vor allem darum Datei & File-Server Einstellungen vorzunehmen. Die Features eines Dateiservers ermöglichen Zugriff auf das Netzlaufwerk. Form22


Form23
Wobei FTP und TCP Features und Einstellungen, die Kommunikation wie auch den Datenaustausch zwischen den beiden Server ermöglichen sollten.


Form24
Mit diesen Konfigurationen ist der Server in der Lage später mit seinem Gegenüber zu kommunizieren. Doch davor muss dem Server auch noch eine statische IP gegeben werden.

Hierbei ist zu vermerken dass es Sinn macht mit diesem Schritt zu warten bis alle notwendigen Downloads abgeschlossen sind, da bei diesen Einstellungen kein Internet-Zugang mehr bestehen wird. Standardmässig sind Virtuelle Maschinen bei VMware auf NAT eingestellt. Dies lässt sich (wie bereits beim Linux Server gezeigt) in den Einstellungen des VMware Players verändern.


Lokal auf Windows sehen diese Einstellungen etwas anders aus. Hierbei muss man auf das Netzwerk- & Freigabecenter von Windows zugreifen und dort den benutzten Internetadapter auswählen. Im Falle einer virtuellen Maschine ist dies meistens








2.2.4 Ordner/Volume für Backup freigeben

Windows hat eine Funktion bei der Volumen und Ordner für das Netzwerk freigegeben werden können, damit man auf diese zugreifen kann. Genau dies ist als Vorbereitung für das spätere Backup von Nöten, da dies auf den Windows Server abgespielt werden soll.


Form25















Unter der Funktion Festplattenpartitionen erstellen und formatieren, unter der Systemsteuerung, kann man existierende Volumen verkleinern und damit partitionieren. Idealerweise würde man eine andere Festplatte als Backup-Volume benutzen wollen, doch im Falle der digitalisierten Umgebung kann man es auch bei der Partition der C: Platte belassen.


Sobald die Partition erstellt wurde, kann man aus dieser ein neues Volume mit dem Assistenten erstellen.


Form26

Form27
In diesem Fall ist es nicht von Belang welcher Buchstabe zugeteilt wird, es sollte einfach einer sein der frei ist (bestünde die Interaktion aus zwei Windows-Maschinen, müsste man noch sicherstellen dass der Buchstabe bei keinem von beiden in Benutzung ist). Was eine Rolle spielt ist das Dateisystem, da man hier darauf achten sollte dass diese kompatibel sind.

Der Assistent zum Erstellen eines neuen Volumens bringt einen schnell durch diese einzelnen Schritte und erlaubt es, nebst dem Laufwerkbuchstaben, auch eine Volumenbezeichnung festzulegen.

Nachdem das neue Laufwerk erstellt wurde, muss noch eine Netzfreigabe dafür erstellt werden, damit man von aussen darauf zugreifen kann. Hierfür muss ein Rechtsklick auf das Laufwerk gemacht werden, worauf man auf die Auswahl Freigabe klickt. Dort kann man unter Erweiterter Freigabe, das Laufwerk oder auch eine einzelnen Ordner freigeben. Man hat auch die Option eine neue Bezeichnung festzulegen die im Netzwerk sichtbar wäre.


Form28








2.2.5 Filezilla installieren

Der gegebene Auftrag besagt dass ein Backup vom Linux Server auf einen Windows Server möglich sein soll. Ein erster Schritt in diese Richtung ist es auch auf Windows Seite Filezilla zu installieren.

Erstens können damit Daten direkt auch Daten vom Windows Server zur Datenbank gesendet werden und die Interaktion auf beiden Seiten ermöglicht ein erfolgreiches Backup, wobei man die Daten bei der Wiederherstellung direkt wieder über FTP einspeisen kann, falls man möchte.


Die Installation auf Windows ist dank dessen Oberfläche etwas anders als auf Linux, was damit anfängt dass man über einen beliebigen Browser auf die Webseite von Filezilla zugreift und von dort aus das Setup-Programm herunterladet.

(Hierbei ist noch wichtig dass, falls Internet Explorer verwendet wird, die erweiterten Sicherheitseinstellungen verändert werden, da diese standardmässig keine Downloads zulassen. Eine andere valide Option ist es, einen anderen Browser wie Google Chrome oder Mozilla Firefox zu verwenden)


Form29Der Download sollte nicht allzu lang dauern, wonach man das Setup-Programm im Download Ordner von Windows öffnen kann (falls nicht ein anderer Speicherort als Standard gesetzt wurde).


Das Programm wird den Installations-Assistenten öffnen, mit dem Schritt für Schritt durch die Installation begleitet wird. Darunter kann man Speicherort, Zusatzkomponenten und den Gebrauch von Desktop Icons verändern, doch standardmässig kann alles so belassen werden wie es ist, da Filezilla alle Anforderungen erfüllt.


Form30
Nach der Installation ist die Oberfläche von Filezilla verfügbar. Jedoch werden weitere Schritte hier fürs Erste beendet, da Filezilla erst wieder bei der Realisierung des Backups eine Rolle spielt.


Form31

2.3.1 MYSQL DATENBANK

Die Datenbank auf die die Daten des Mathetests, deren Benutzer, Ergebnisse und das Datum an dem sie besagten Test abgeschlossen haben, soll eine MySQL Datenbank sein, die von neu auf erstellt und normalisiert wurde.

Diese Datenbank soll die gewünschten Funktionen erfüllen, alle Daten verwalten und Redundanzen so gut wie möglich verhindern. Eine minimale Sicherheit auf ihrer Seite ist gewährt durch das Festlegen eines Passworts und dem entfernen mehrerer Test-Funktionen die eine Sicherheitslücke darstellen könnten.


2.3.2 IST Datenbank

Die bestehende Datenbank die bisher von der Rafisa Informatik GmbH benutzt wurde, hat viele Gründe warum sie ersetzt werden sollte und welche Anforderungen sie nun nicht mehr erfüllen würde.


IST-Datenbank in Microsoft Access

Form32Darstellung der Datenbank direkt auf Microsoft Access


Form33Nachgestelltes ERM


Die grössten Probleme der alten Datenbank bestehen aus Redundanz und einer zu komplizierten Struktur die viel zu viele Informationen enthalten.


Nach genauerem Ansehen wird klar dass die grösste Menge an Informationen in der Tabelle tbl_LehrlingNamen abgelegt sind, nebst dem Fakt dass die Tabelle keinen Primärschlüssel angibt, wobei hier nicht ganz klar ist, ob dies ein Softwarefehler oder absichtliches Tun ist (aus reiner Logik müsste lnID der Primärschlüssel sein, da es als einziger Eintrag automatisch aufgezählt wird). Der Tabelle fehlt Normalisierung und Organisation, da man Informationen wie den Namen der Lehrlinge, deren erreichten Lösungen und Rang, allesamt voneinander trennen kann. Beim jetzigen Aufbau ist die Tabelle mit Informationen gefüllt die sich mehrmals wiederholen, nicht direkt auf irgendetwas referenzieren und unorganisiert sind.


Die existierende Namenskonvention weist Lücken in ihrer Brauchbarkeit und Lesbarkeit auf, nebst dem Fakt dass sich nicht alle Einträge in der Datenbank an diese halten.

Als Beispiel kann man einen Eintrag aus tbl_LehrlingNamen nehmen. Dies wäre lnVorname (ln ist in diesem Fall eine Abkürzung für Lehrling); diese Konvention ist aber überflüssig. Der Eintrag wird in der Tabelle selbst erkannt und ausserhalb interagieren nur die Fremdschlüssel mit anderen Tabellen, was voraussetzt dass diese eine sinnvolle Konvention haben (wie zum Beispiel FK_Schlüssel oder FS_Schlüssel). Im Falle der Fremdschlüssel hält sich diese Datenbank auch daran, doch bei allen anderen Einträgen ist es nicht nötig.

Weiterhin macht die Bezeichnung „asw“ keinen Sinn, da die allgemein bekannte Konvention für Zwischentabellen folgendermassen aussieht: ttbl_Tabelle1_Tabelle2.

TTBL markiert die Tabelle direkt als Zwischentabelle und ermöglicht vereinfachte Navigation sobald die Datenbank realisiert wird. Und die Benützung beider Tabellennamen die referenziert werden, macht auf einen Blick klar mit welchen Tabellen diese interagiert.

Stattdessen wird bei der MS-Access Datenbank asw_FunktionAuswahl oder asw_AufgabenAuswahl


Form34
Wie auf dem Bild oben zu sehen ist, hat die Datenbank zwar detaillierte Einträge der

einzelnen Aufgaben, was dabei helfen könnte gewisse Schwachpunkte eines Lehrlings genauer zu erkennen, doch dieses Prinzip und deren Umsetzung weisen weitere Hindernisse auf.

Die Menge an Daten die für so eine detaillierte Liste gebraucht wird, sorgt nicht nur für Unübersichtlichkeit bei einer nicht gut organisierten Datenbank, sondern kann auch ein Problem darstellen wenn der Prozess digitalisiert werden muss. Mehr Details zu diesen Herausforderungen werden später bei der tatsächlichen Realisierung aufkommen. Doch was hier bereits sichtbar ist, ist der Fakt, dass um jedes einzelne Resultat zu speichern, entweder jede Aufgabe einzeln durch PHP zur Datenbank geschickt werden muss, oder ein einzelnes riesiges Formular durch das Netzwerk gesendet werden muss.

Beide Lösungen weisen grosse Probleme auf, bei der Realisierung wie auch der Auslastung der Systeme. Entweder muss der Benutzer ständig darauf warten dass die Datenbank dem lösen des Tests hinterherhinkt und ein Formular nach dem anderen verarbeitet, oder es gibt extrem lange Wartezeiten am Ende des Tests weil alle gesammelten Daten auf einmal versendet werden müssen.


Nebst dem kommt das vorher genannte Problem dass eine einzelne Tabelle viel zu viele Informationen enthält. Auf dem unteren Bild ist ein Ausschnitt der Tabelle tbl_LehrlingName zu sehen, bei dem die Redundanz bei Namen zu sehen ist.

Form35
Wie auch hier zu sehen ist, wurden mehrere Benutzer einfach mit Zahlen wiederholt eingetragen. Diese Redundanz ist einer der Hauptpunkte die bei der neuen Datenbank gelöst werden soll, wie auch das rationalisieren der Datenbank um sie zu verkleinern, ohne dabei Grundfunktionen zu verlieren.








Um die genannten Punkte zusammenzufassen:


| Bisher benutzte MS-Access Datenbank ||

Vorteile Nachteile
Detaillierte Einträge aller Aufgaben Kreislauf Beziehung
Alle Aufgaben-Einträge sind eingetragen, was detaillierte Beurteilung des Kandidaten ermöglicht Redundanz in mehrere Tabellen

Keine Normalisierung
Fehlender Primärschlüssel in tbl_LehrlingName
Fehlender Primärschlüssel in tbl_LehrlingLösung
Drei Primärschlüssel in tbl_AufgabeFunktion
Nichtexistente oder unnütze Namenskonvention
Fragwürdige Zwischentabellen (asw_AufgabenAuswahl & asw_FunktionAuswahl)



2.3.3 Datenbank Planung

Die Planung der Datenbank beinhaltet noch kein ERM (also auch keine detaillierte Darstellung aller Tabellen und wie sie miteinander interagieren), sondern hierbei geht es darum welche Funktionen es erfüllen soll, wie viele Tabellen verwendet werden sollten, wie man es am besten normalisiert und welche Aufteilung am meisten Sinn macht.


Zuerst besteht die Frage, was die Datenbank erfüllen soll und was von ihr laut Auftrag erwartet wird:


* Keine Redundanzen.

  • Jede Tabelle verfügt über einen Primärschlüssel.
  • Rationalisierte Struktur, mit nur so vielen Informationen wie nötig um übermässige Informationsmenge wie in MS-Access Datenbank zu verhindern.
  • Garantierte Erweiterbarkeit durch neues Erstellen von Tests und dem Hinzufügen von Aufgaben.
  • Kann sich mit PHP verbinden und Informationen einnehmen, wie auch ausgeben.


Mit diesen Voraussetzungen ist klar dass die Datenbank funktionell, geordnet und überschaubar sein muss, mit der Option fehlerfrei mit der späteren PHP-Oberfläche zu interagieren, sei es nun beim Einnehmen von Informationen oder beim Ausgeben von Daten.

Weiterhin soll die Datenbank, wie bereits bei der ERM definiert wird, über eine sinnvolle Namenskonvention verfügen, die es ermöglicht die Struktur der Datenbank problemlos zu navigieren und ein schnelles Verständnis der Daten ermöglicht.


2.3.4 Datenbank ERM

Das Entity-Relationship-Modell dient dazu eine umfassenden und schnell verständlichen Plan einer Datenbank darzustellen, mit allen Tabellen, deren Inhalten (jedoch ohne genauere Angaben zu denen) und den Beziehungen zwischen besagten Tabellen.


In der Datenbank Planung ist das ERM eine Notwendigkeit und Hilfe bei der Realisierung der Datenbank, da damit zu jeder Zeit klar ist welcher Fremdschlüssel mit welcher anderen Tabelle interagieren soll und wie die Beziehung Datenaustausch zulässt.

Für diesen Auftrag wurde ein ERM in Microsofts Visio erstellt und stellt die Datenbank dar wie sie später geplant aussehen soll.


Form36
Jede ERM folgt an sich einem Baum Design, wobei eine Entität im Mittelpunkt steht, während alle anderen sich von ihr abzweigen. In diesem Fall wurde diesem Prinzip nicht zu hundert Prozent gefolgt, da ein kleiner Kreislauf zwischen tbl_Lehrlinge und tbl_Test besteht.

Dieser Kreislauf ist aus der Notwendigkeit entstanden den Gebrauch von Abteilungen zu normalisieren, da diese beim Test, wie auch bei den Lehrlingen notwendig sind. Dadurch ist die Zwischentabelle tbl_Abteilung entstanden (hierbei ist zu erwähnen dass tbl_Abteilung nicht eine Zwischentabelle im traditionellen Sinn ist und daher nicht wie eine beschrieben ist, wie beispielsweise ttbl_Test_Aufgabe. Doch ihre Position und Beziehung zu zwei anderen Tabellen lässt sie wie eine Pseudo-Zwischentabelle fungieren).


Doch abgesehen davon folgt der Rest der Tabelle dieser Baum-Logik, wobei alle Äste ihren Ursprung bei tbl_Test haben. Die einzige Ausnahme hierzu ist tbl_Benutzer, welche keine Beziehung mit irgendeiner Entität hat, da sie bloss zur Identifikation bei einem Login notwendig ist.

Mit der etablierten Baum-Topologie umgeht diese Datenbank bereits eine der grösseren Probleme der MS-Access Datenbank: den Kreislauf. Zwar ist ein kleinerer Vorhanden, dieser schadet jedoch nicht da der Datenaustausch zwischen den Entitäten sinnvoll ist. Eine klare Namenskonvention wurde auch angewendet die es ermöglicht die Daten und deren Funktionen einfach zu identifizieren. Auch die Beziehungen wurden mit den richtigen Beschriftungen bezeichnet, wie 1 zu m oder 1 zu mc (Zweiteres ist jedoch nicht vorhanden), anstatt 1 zu ∞.


Mit der realisierten Datenbank-ERM ist es noch nötig die einzelnen Datentypen der Tabellen zu definieren, wie auch deren Inhalte und ob sie zwingend Inhalte enthalten müssen. Diese und andere Konfigurationen werden im Tabellenplan dargestellt.

















2.3.5 Tabellen-Plan

Der Tabellenplan dient dazu genauestens Datentypen, Werte, Inhalte und Konfigurationen der einzelnen Entitäten in einer Datenbank im Voraus zu planen und diese dann darzustellen.


Legende:

  • Name
    Der Name des Eintrages, so wie es in der ERM sichtbar ist
  • Datentyp
    Welcher Datentyp dieser Eintrag ist
  • Einmalig
    Ob der Inhalt dieses Eintrages nur einmal in der Tabelle vorkommen darf
  • Null
    Ob der Eintrag leer sein darf
  • PS (Primärschlüssel)
    Ob der Eintrag ein Primärschlüssel ist
  • FK (Fremdschlüssel)
    Ob der Eintrag ein Fremdschlüssel ist.


| tbl_Lehrlinge Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
Lehrling-ID int auto_increment Ja Nein Ja Nein
Nachname varchar Nein Nein Nein Nein
Vorname varchar Nein Nein Nein Nein
FK_Abteilung-ID int Nein Nein Nein Ja


| tbl_Test Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
Test-ID int auto_increment Ja Nein Ja Nein
FK_Abteilung-ID int Nein Nein Nein Ja
Ersteller varchar Nein Nein Nein Nein
FK_Aufgabe-ID int Nein Nein Nein Ja


| tbl_Abteilung Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
Abteilung-ID int auto_increment Ja Nein Ja Nein
Abteilung varchar Nein Nein Nein Nein





| tbl_Abgeschlossener Test Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
AbgTest-ID int auto_increment Ja Nein Ja Nein
Datum date Nein Nein Nein Nein
Resultat int Nein Nein Nein Nein
FK_Lehrling-ID int Nein Nein Nein Ja
FK_Test-ID int Nein Nein Nein Ja


| ttbl_Test_Aufgabe Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
ttbl-ID int auto_increment Ja Nein Ja Nein
FK_Test-ID int Nein Nein Nein Ja
FK_Aufgabe-ID int Nein Nein Nein Ja


| tbl_Aufgabe Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
Aufgabe-ID int auto_increment Ja Nein Ja Nein
Name varchar Ja Nein Nein Nein
Bild blob Nein Nein Nein Nein
Lösung-Option 1 int Nein Nein Nein Nein
Lösung-Option 2 int Nein Nein Nein Nein
Lösung-Option 3 int Nein Nein Nein Nein
Lösung-Option 4 int Nein Nein Nein Nein
Schwierigkeit int Nein Nein Nein Nein
Punkte int Nein Nein Nein Nein
FK_Themen-ID int Nein Nein Nein Ja


| tbl_Themengruppe Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
Themen-ID int auto_increment Ja Nein Ja Nein
Themengruppe varchar Nein Nein Nein Nein


| tbl_Benutzer Datenbank Mathetest ||||||

Name Datentyp Einmalig Null PS FK
Benutzer-ID int auto_increment Ja Nein Ja Nein
Name varchar Nein Nein Nein Nein
Passwort varchar Nein Nein Nein Nein


2.3.6 XAMPP installieren

XAMPP, dessen Name nicht eine direkte Abkürzung ist, sondern für die verschiedenen Programme steht die es unterstützt (ähnlich im Prinzip wie LAMP), ist ein Programmpaket von freier Software dass zum Erstellen von Webseiten und Datenbanken eingesetzt wird.

Zwar ist klar dass auf Linux LAMP benutzt wird, was auch bei der Realisierung der Plan ist, bietet XAMPP dieselben Möglichkeiten, wodurch es perfekt ist zum Testen von Systemen, ohne die Linux Umgebung zu gefährden. Weiterhin hat es einige Optionen und Features die das Erstellen einer Datenbank erleichtern, womit der Realisierungsprozess verschnellert wird.


Form37XAMPP ist eine freie Software die von deren Webseite heruntergeladen und installiert werden kann.


2.3.7 Datenbank mit XAMPP realisieren

Mit der geleisteten Planung und nötigen Vorbereitungen (die Konfigurierung von MySQL) kann der Code für das Herstellen der Datenbank erstellt werden um damit Schritt für Schritt in XAMPP eingefügt werden kann.

Dies dient dem Zweck dass die Datenbank in einer sicheren Umgebung fertiggestellt wird wo rasch Änderungen vorgenommen werden können, falls das nötig ist. Ausserdem gilt die Kopie der Datenbank auf XAMPP, da sie ja später in Linux eingespeist wird, als eine jungfräuliche Version und daher auch als eine Datensicherung, sollte dem Original etwas passieren.


XAMPP, da es als Paket installiert wird, basiert seine MySQL Datenbank auf Maria DB, einer Standard Engine für MySQL die weit verbreitet ist. Auf Linux hingegen wird InnoDB verwendet. Diese beiden unterscheiden sich nicht fundamental, doch dieser Unterschied muss im Auge behalten werden um mögliche Fehler bei der Engine zu verhindern (da Unterschiede in der Syntax existieren können).


* DROP DATABASE Mathetest
Bevor die Datenbank überhaupt erstellt wird, ist es Standard dass ein Drop-Command durchgeführt wird der eine genannte Entität, in diesem Fall eine Datenbank, löscht. Dies ist dazu da um zu versichern dass eine ältere Version der Datenbank oder eine Test-Datenbank mit demselben Namen, gelöscht werden bevor die Neue realisiert wird.
Das Drop kann auch für einzelne Tabellen oder Zeilen eingesetzt werden.


* CREATE DATABASE Mathetest
Dieser Befehl erstellt eine neue Datenbank. Der Create-Befehl kann auch für Tabellen und andere Entitäten eingesetzt werden, ist aber der Erste Schritt im Erstellen einer Datenbank.

  • CREATE TABLE Abteilung
    Es wird jedoch nicht jede Instanz von Create dargestellt, ist es noch wichtig diese zu sehen, da hiermit eine neue Tabelle erstellt wird. Auf diesen folgen die einzelnen Parameter und Spalten die in der Tabelle danach vorhanden sein sollen.
    Ein voller Befehl sieht folgendermassen aus:

Form38Dies ist ein Ausschnitt aus Notepad++ und stellt den vollen Code-Ausschnitt dar um eine Tabelle, deren Inhalte und die Datentypen darzustellen. Nebst den wichtigeren Angaben die oben bereits erklärt wurden, sind diese Einträge Constraints, Regelungen und Konfigurationen für die einzelnen Tabellen gedacht.


NOT NULL - dies beschreibt die Regel dass der Eintrag in der Tabelle zwingend einen Eintrag haben muss.

AUTO_INCREMENT - dieser Befehl gibt an dass der Eintrag automatisch mit jedem weiteren steigen soll. Dies wird vor allem bei ID’s benutzt.

CONSTRAINT - Constraint wird benutzt um eine feste Verbindung zwischen zwei Entitäten zu erstellen, wodurch die etablierte Verbindung nicht gelöst werden darf.

PRIMARY KEY - Primary Key beschreibt den Primärschlüssel der als Identifikationswert des Eintrages benutzt wird. Dieser ist immer Unique, also einmalig (obwohl diese Qualität bereits in der Identifikation „Primary Key“ enthalten ist.)

FOREIGN KEY - Foreign Key beschreibt einen Fremdschlüssel, der benutzt wird um eine Beziehung zwischen zwei Tabellen aufzustellen. Die Regel besagt dass die Seite auf der der Fremschlüssel ist, die 1 enthält (zum Beispiel in einer 1 zu m Beziehung).

REFERENCES - Dies ist Teil des Fremdschlüssels und verweist auf die Tabelle, wie auch den Eintrag auf den der Fremdschlüssel referenziert.

ON DELETE CASCADE - Dieser Befehl besagt dass bei Löschung des Fremdschlüssels oder der gesamten Tabelle, alle damit verbundenen Entitäten auch gelöscht werden. Dies dient vor allem als ein Sicherheitsfeature. Wichtig hierbei ist natürlich ist, dass ein Backup der Datenbank existiert.

ON UPDATE CASCADE - Ähnlich wie der vorherige Eintrag, mit der Änderung dass es sich hier um gravierende Veränderungen handelt.


Mit diesen Einträgen lassen sich alle existierenden Tabellen, wie auch deren

Strukturen erstellen.

Der andere grosse Faktor sind die Datentypen selbst die in Gebrauch sind. InnoDB enthält die meisten bekannten und bietet viele Möglichkeiten Daten in einer Datenbank zu speichern.


integer - Standard Datentyp um normale Zahlen zu speichern. Dies macht Integers zu einem der weitverbreitetsten Datentypen, mit mehreren verschiedenen Versionen die grössere Datenmengen, Kommazahlen und mehr ermöglichen.


varchar - Eine Variation des normalen char, was benutzt wird um Strings, also Wörter, zu speichern. Der Unterschied bei varchar ist, dass die Grösse der Einträge variierbar ist, während char meist festere Grössen hat.


datetime - Datetime ist eine weitere Variation des Datentypen date, mit dem Unterschied, dass datetime sehr genaue Einträge erstellt, da auch bis zu der Millisekunde gerechnet wird. Dies ist ideal falls mehrere Einträge am selben Tag erstellt werden können.


blob - Dieser Datentyp wird benutzt um Binäre Byte-Daten zu speichern. Sein Gegenüber in dieser Hinsicht ist text. Beide erlauben es unterschiedliche Entitäten in der Datenbank zu speichern. Im Kontext des Mathetests erlaubt blob es Bilder zu speichern, welche später für die Aufgaben des Tests selbst verwendet werden sollen.


Form39
Nach der Erstellung der Datenbank, müssen danach auch noch Daten aus der MS-Access Datenbank hinzugefügt werden. Da rein aus Kompatibilitätsgründen ein direkter Transfer von einer Datenbank zur Anderen nicht möglich. Daher müssen die Daten manuell in die neue Datenbank eingespeist werden.

Über die Konsole funktioniert dies mit den obigen Befehlen. Der einzig wichtige unter diesen ist folgender:


INSTERT INTO - Wird benutzt um Daten in eine Entität zu speisen, meistens Tabellen, da man auch auf die einzelnen Spalten spezifizieren kann.


2.3.8 Datenbank in Linux Server hinzufügen

Mit der Realisierung der Datenbank in Notepad++, ist diese vollständig abgeschlossen, wie auch die Daten die eingefügt werden sollen. Hiernach bleibt noch übrig dies in Linux auf dem installierten MySQL Dienst umzusetzen.

Hierbei werden keine Änderungen an der Datenbank selbst mehr durchgeführt, sie wird stattdessen nur noch eins zu eins kopiert.


Form40
Form41
Form42
Mit den eingefügten Daten und der gesamten, realisierten Struktur, ist die Datenbank derseits abgeschlossen und einsatzbereit. Die Daten selbst bestehen aus Testdaten die zu grössten Teilen aus der alten Datenbank übernommen wurden. Diese dienen vor allem Testzwecken.

Die tatsächlichen Daten werden nach Abschluss des Auftrages vollständig in die neue Struktur integriert.

Mit der abgeschlossenen Datenbank, kann diese per PHP an den Mathetest verbunden werden, sobald letzterer realisiert wird.


















2.4.1 MATHETEST REALISIEREN

Der Mathetest selbst soll eine Digitalisierung eines bisher analogen Prozesses sein, bei dem immer eingreifen durch Ausbildner nötig war, wie auch der Gebrauch von Papier. Weitere Details dazu stehen in der Aufgabenstellung, doch was wichtig hierbei ist, ist die Idee hinter der Umsetzung des bisher verwendeten.

Dabei sollen auch viele Vereinfachungen des Prozesses möglich sein, wie die Auswertung des Testergebnisses oder auch die Erstellung eines neuen Tests, durch die Auswahl verschiedener Themengruppen (die genaue Oberfläche für diesen Vorgang wird nach der IPA realisiert, da er nicht Teil der Aufgabenstellung ist. Mit Zugang zur Datenbank ist dies jedoch durch manuelle Eingabe möglich, solange keine Oberfläche erstellt wurde).



2.4.2 Planung & Vorlage

Vor der Realisierung muss man zuerst sicherstellen dass ein Vorgang wie der Mathetest im Voraus geplant wird, damit beim Erstellen des Systems stets die Übersicht bewahrt werden kann.


Eine Option für diesen Vorgang ist ein einfaches Ablauf-Diagramm, das den Vorgang von einer Datei zur nächsten Beschreibt.


Form43Wie auf dem Plan zu sehen ist, funktioniert der Mathetest in einer Baum-Topologie, bei der verschiedene Pfade genommen werden, je nach Auswahl und Daten von einer Datei zur nächsten mittels Cookies oder HTML-Übermittelungen transportiert werden.

Die Darstellung selbst ist zwar simpel, wobei sie keine genauen Datentypen darstellt, ist jedoch praktisch beim Sicherstellen dass Dateien richtig benannt werden und deren Pfade dem geplanten Weg folgen.


2.4.3 Realisierung mit XAMPP auf lokalem System

Ähnlich wie bei der MySQL Realisierung, macht es auch Sinn wenn man die Arbeit am Mathetest, was sehr beschwichtig auf PHP und HTML ist. Daher ist es einfach dass auf einem lokalen System zu erstellen, um den ständigen Austausch von Dateien zu umgehen.


Da XAMPP bereits für die Realisierung der Datenbank installiert und konfiguriert wurde, kann es direkt für den Dienst beim Mathetest übernommen werden.


Form44
Wichtig hierbei ist jedoch, dass dieses Mal auch der Apache-Dienst aktiviert ist, damit PHP-Dateien auf dem Localhost dargestellt werden können. Denn anders als bei HTML-Dateien, oder auch PHP Dateien die bloss HTML enthalten, werden Code-Fragmente von PHP nur über den Zugang durch einen Server korrekt dargestellt.

Werden PHP Dateien nämlich über Code aktiviert, resultiert dies darin dass der Browser den puren Code darstellt.


Form45
Auf dem Bild ist genau zu sehen wie so ein Resultat aussehen würde, zusammen mit dem Fakt dass die Datei durch den Explorer geöffnet wurde und nicht durch einen Server: file:///D:/XAMPP/htdocs/mathetest/lehrlinglogin.php, ist ein klarer Hinweis darauf.

Soll der Code korrekt dargestellt werden, so ist es nötig dass Apache aktiviert ist und die Datei durch den Localhost besteuert wird.

Beispielsweise mit einer Adresse wie dieser:

http://localhost/mathetest/loginoverall.php//.
Mit der Korrekten Darstellung sichergestellt, ist es nun wichtig dem gesetzten Plan zu folgen. Hierbei macht es Sinn sich von oben nach unten zu arbeiten, da jede Datei weiter abwärts, oftmals mit einer Variabel, Eingabe oder ID von einer oberen Datei agiert (ähnlich wie bei einer Datenbank, wo zuerst der Stamm der Datenbank erstellt werden muss, damit die Beziehungen zwischen Entitäten auch stimmen).
In dieser Hinsicht scheint die Arbeit am Mathetest selbst simpel zu sein. Man muss die Daten beziehen, anzeigen, Eingaben auswerten und am Ende ein Ergebnis zeigen. Doch so etwas ist einfach gesagt als getan. PHP ist an sich nur eine Skript-Sprache und HTML ist für das Design zuständig, dadurch passiert es schnell, dass ohne die Zusatzfunktionen von Javascript, die erforderlichen Funktionen sehr grosse Abfragen zwischen PHP und MySQL benötigen, die dabei auch noch variabel genug sein müssen, damit neue Funktionen oder Datensätze, das Bestehende nicht zerbrechen lassen. Daher dürfen Datensätze oftmals auch nicht statisch sein, vor allem beim Erfassen neuer Lehrlinge oder dem Anzeigen der bereits Erstellten. Form46
Auf dem ersten Bildschirm ist dies noch kein Problem. Wie bereits in der Planung zu sehen war, verbleibt dieser Bildschirm statisch in seiner Darstellung. Die beiden Optionen „Lehrling“ und „Ausbildner“ sind festgelegte Knöpfe die auf zwei Pfade führen. Was auch noch zu erwähnen ist, ist der Header der bei den meisten weiteren Seiten verfügbar sein wird. Dies ist Standard bei vielen Webseiten und ist eine Praxis die die Darstellung vereinfacht, während Navigationsoptionen verfügbar sind (in diesem Fall sind sie vor allem für zukünftige Funktionen gedacht, wie eine Rangliste). Dies wird leicht mit folgendem Code erreicht:
<?php include ‚header.php‘ ?>
Was zu beachten ist, ist dass dies ein PHP Skript ist und nicht mehr macht als die Datei
header.php zu greifen und sie auf der Webseite anzuzeigen, zusammen mit ihren Funktionen. Es werden so gesehen zwei Seiten miteinander verbunden.
Form47
Auf der nächsten Seite finden sich wieder viele statische Elemente die festgelegt sind und problemlos dargestellt werden können. Je mehr Informationen vom Benutzer gesammelt werden, desto mehr Variable Werte werden bei weiteren Seiten auftauchen. Was man aber auf dieser Seite beachten sollte, ist die Tabelle mit allen verfügbaren Benutzern.
DForm48 iese Tabelle ist das erste variable Element das auftaucht. Dies ist aus dem simplen Grund dass die Werte der Tabelle aus einer MySQL bestehen, bei der alle existierenden User auf der Seite angezeigt werden.
Dies wird durch ein
mysqli_query erstellt, welches Daten aus der verbundenen MySQL Datenbank zieht und in Arrays platziert.
Der genaue Code für diese Darstellung sieht folgendermassen aus:
$result = mysqli_query($conn, „SELECT * FROM Lehrlinge“); //Gefolgt von der Erstellung der Datenbank in HTML
while($row = mysqli_fetch_array($result)) //While Schlaufe die das Array mit den Namen der Lehrlinge in die Tabelle füllt
Die Darstellung der Tabelle selbst geschieht in HTML, worauf die eingespeisten Daten in ihr korrekt dargestellt werden. Dieses Query kommt über den Ablauf des Mathetests, wie auch dessen Abfragen, mehrmals vor und ist ein Grundpfeiler der Datenverwaltung in späteren Teilen.
Zwei Zwischenseiten folgen falls der Benutzer angibt dass er sich das Erste Mal anmeldet. Eine davon besteht aus einem Standard Formular zur Einnahme seiner Angaben.
Form49
Das Formular entspricht dem bisher etablierten Standard und führt zu einem weiteren Zwischenschritt nachdem die Daten eingegeben wurden. Die darauf folgende Zwischenseite besteht aus purem PHP-Code und stellt dem User nichts dar, macht aber mehrere Checks im Hintergrund, während es die Daten verarbeitet. Einer davon ist, ob der Name des Users tatsächlich noch nicht eingetragen ist. Falls alle Checks positiv zurückgeliefert werden und das System bestätigt dass der User nicht existiert (dies geschah wieder über dieselben mysqli_querys wie davor, bloss dieses Mal wurden sie benutzt um Daten miteinander zu vergleichen, anstatt Daten auszugeben), wird ein neuer Benutzer erstellt. Denn PHP ist in seiner Interaktion auch in der Lage Daten in die Datenbank einzufügen, sofern eine autorisierte Verbindung mit der Datenbank hergestellt wurde.
$conn = new mysqli($servername, $username, $password);
Dies passiert wieder mit eine mysqli Befehl, wobei über Variablen der Login erstellt wird (dies erleichtert Änderungen am Login, falls sie mal nötig wären).
$sql = „USE Mathetest;“;
Dazu kommt noch der Befehl die entsprechende Datenbank zu benutzen, damit man auch erfolgreich Zugang zu ihren Daten hat. Diese beiden Schritte ermöglichen eine erfolgreiche Verbindung mit der etablierten Datenbank und werden daher bei allen folgenden Schritten eine Notwendigkeit sein. Der Befehl einen Benutzer zu erstellen, sieht sehr ähnlich aus wie die oberen, da wieder einer Variabel ein MySQL Befehl zugeteilt wird, die danach zur Datenbank geschickt wird.
$sql = „INSERT INTO Lehrlinge (Nachname, Vorname, AbteilungID) VALUES ('“.$Nachname.„', '“.$Vorname.„','“.$AbteilungID.„')“;
Dieses Mal trägt der Befehl auch Variablen mit sich, die auf dem vorherigen Eintrag des Users entsprechen und so eine neue Person in die Datenbank einspeisen. Der Befehl selbst, der über $sql versendet wird, ist genau gleich wie man in manuell in der MySQL Konsole eingeben würde.
Hierauf folgt der Sammelpunkt beider Benutzer, ob sie nun bereits einen Eintrag in der Datenbank hatten oder nicht. Und auf dieser Seite geht es darum den entsprechenden Test auszuwählen. Dies geschieht ähnlich wie bei der Bestätigung ob der User über einen Eintrag verfügt oder nicht, indem alle verfügbaren Tests angezeigt werden. Der User muss darauf selbst den entsprechenden wählen. Design-Technisch wäre es empfehlenswert ein Dropdown-Menü zu benutzen, doch dies hält den Nachteil dass Interaktionen zwischen einem Dropdown-Menü und Arrays für Probleme sorgen. Wie oben beschrieben wurde, müssen Arrays über Schlaufen ihre Werte aufzählen, da diese variabel sind. Ein Dropdown Menü jedoch ist statisch in seinen Einträgen und führt zu visuellen Problemen, da das Menü selbst mehrmals angezeigt wird, anstatt allen Einträgen in einem Array. Daher ist die Lösung mit der Tabelle zwar objektiv weniger elegant aber sehr viel stabiler, da Tabellen problemlos mehr und mehr Einträge aufnehmen und anzeigen können.
Form50
Nachdem Daten, ID und die Testauswahl vom Benutzer gesammelt wurden, führt die Seite sie weiter zum Test selbst, der nun aus all diesen Variablen zusammengestellt wird. In dieser Hinsicht ist dies der herausforderndste Teil der Webseite, da alle Werte, Einträge und Namen aus Variablen und Cookies zusammengestellt werden, die entweder gesammelt oder übermittelt wurden. Hier ist auch aufzupassen dass man im Code selbst, welcher nun aus mehreren MySLQ Abfragen besteht, nicht die Übersicht verliert, wie es so einfach passieren könnte. Kommentare im Code selbst können bei dieser Einteilung helfen, doch man muss auch bereit sein selbst einen Überblick über das gesammelte zu behalten.
Auf diesem Test kann der Benutzer die einzelnen Themengruppen auswählen, in die die Aufgaben aufgeteilt sind. Die Identifikation welche Aufgabe in welcher Themengruppe ist, geschieht durch eine Identifikation die jede Aufgabe bei sich trägt und definiert zu welcher Themengruppe sie gehört. Dies ermöglicht zwar das Identifizieren zu welcher Gruppe einzelne Aufgaben gehören, bedeutet jedoch auch dass hier wieder mehr Identifikationen nötig sind um alles korrekt darzustellen und verfügbar zu machen.
Doch, nach dem Test selbst und den zugeteilten Aufgaben, ist die Seite am Ende angekommen, mit dem Resultats-Bildschirm der Punkte anzeigt. Damit ist ein Durchlauf des Tests beendet.

2.5.1 BACKUP REALISIEREN


2.5.2 Backup Plan erstellen

Als Teil des Auftrages besteht noch der Plan die erstellten System und den gesamten Linux Server, Sicherung vor Datenverlust zu bewahren. Hierfür ist ein detaillierter Plan nötig, der die festgelegten Bedienungen bei der Aufgabenstellung funktionell umsetzt und eine Möglichkeit bietet diese zu Realisieren. Solch ein Plan muss nicht einmal sehr detailliert sein, vor allem im Falle dieses Auftrages, bei dem einfach gesagt bloss zwei Server miteinander interagieren. Trotz der eher fragwürdigen Notation des Auftrages, die Daten des Mathetest-Servers auf eine eigene Partition zu verlegen (da dies nicht wirklich eine Sicherung vor Hardware Verlust bietet, vor allem nicht wenn die beiden Partitionen auf derselben Platte sind), wird dies durch das gesamte Backup auf einen anderen Server wieder geregelt. Dorthin ist die inkrementelle Sicherung auf die eigene Platte wieder einigermassen verständlich, wenn nicht wenigstens um eine bessere Ordnung bei den täglichen Backups zu bieten. Von der vorhin genannten Partition, wird ein gesamtes Backup auf einen anderen Server verlegt, im Falle des Auftrages, einem Windows Server. Dies ist um das zukünftige Gebiet der Realisierten Umgebung zu simulieren, bei der der aktive Backup-Server auch über Windows laufen wird.
Um diese Schritte zu realisieren wird das bereits installierte Protokoll VSFTPD auf dem Linux Server benutzt. Währenddessen benutzt Windows für seine Vorgänge das bereits etablierte FileZilla. Beide sind in der Lage für Datenaustausche durch FTP-Verbindungen.
Um das vorhin genannte kurz darzustellen, kann eine Tabelle wie die hiesige benutzt werden:
| Backup | Von | Auf | Zeitraum | | Inkrementelles Backup | Mathetest-Server
(Linux Ubuntu) | Mathetest-Server
Backuppartition | Täglich (am Abend zwischen 18:00 & 19:00 Uhr) | | Vollständiges Backup | Mathetest-Server Backuppartition | Backup-Server
(Windows Server 16) | Wöchentlich (Vollständiges Backup, wird am Wochenende durchgeführt) |
Weiter als diese beiden Schritte geht es nicht, da weitere Interaktionen mit dem Backup von den Backup-Systemen der Rafisa Informatik GmbH geregelt werden, sobald das realisierte System implementiert wurde.

2.5.3 Backup konfigurieren

Wie beim vorherigen Plan genannt wird der Erste Teil des Backups daraus bestehen, die wichtigen Dateien des Servers (LAMP Installationen, Datenbanken, PHP & HTML Dateien, wie auch Konfigurationen). Um Dinge zu vereinfachen kann hier gesagt werden, dass praktisch der gesamte Server wichtig ist, doch um nicht zu viel Speicherkapazität aufzubrauchen, werden die vitalen Systeme übernommen. Dienste, der Mahtetest, die Datenbank und Konfigurationsdateien. Zwar kann es dadurch sein dass der Server neu aufgesetzt werden müsste, doch mit der Dokumentation und den gesicherten Systemen, wird der Aufwand halbiert, wenn nicht sogar in ein Viertel geteilt. Für die Lösung Linux auf sich selbst speichern zu lassen, kann ein Bash-Skript erstellt werden, welches simpel in der Aufstellung und Umsetzung ist. Unix-Systeme haben Befehle die es erlauben gesamte Verzeichnisse zu bewegen oder zu kopieren. Dies ist vergleichbar zu der Robocopy-Funktion wie sie bei Windows zu finden ist, bei der man einen festen Dateipfad definiert und danach angibt dass Dateien aus dieser kopiert, ausgeschnitten oder gelöscht werden sollen. Dadurch kommt das Bash ähnlich ins Spiel mit Befehlen wie cp und mv, welche beide respektive für Copy und Move stehen (Kopieren und Bewegen).
Code Ausschnitte daraus würden generell wie folgt aussehen:
* cp -Rv /home/mysql backup/incremental/mysql
Der Code an sich ist nicht kompliziert und erfüllt seine Aufgabe, wobei Befehle wie
–Rv noch sicherstellen dass bereits existierende Dateien (also Inhalte die im ursprünglichen Ordner sind) in der neuen Kopie ersetzt werden. Dies stellt sicher dass das Backup inkrementell ist und immer die Neuesten Änderungen übernommen werden. Nebst dem obigen Befehl ist es noch von Nöten sicherzustellen dass eine klare Datenstruktur für das Backup präsentiert wird. Doch die Option die existierende zu übernehmen bietet sich hier gut an.
Für das wöchentliche Backup, wird dann VSFTPD verwendet, welches eine einfache FTP Verbindung zwischen den beiden Servern etabliert und die Daten transferiert. Mit den richtigen Konfigurationen (die bereits vorgenommen wurden), kann dies auch automatisiert werden.






2.6.1 BEDIENUNGSANLEITUNGEN


2.6.2 Benutzeranleitung

Als erstes muss ein Browser geöffnet werden. Vorteilhaft hier ist Google Chrome, doch Mozilla Firefox kann auch verwendet werden. Es wird stark davon abgeraten Internet Explorer zu verwenden. Funktionalität ist bei anderen Browsern nicht versichert, daher wird empfohlen bei Firefox oder Chrome zu bleiben. Im Browser wird die Adresse localhost/mathetest/loginoverall.php gewählt.

Sollte dieser nicht erreichbar sein oder ein Fehlercode wie 404 taucht auf, wird empfohlen einen Administrator zu kontaktieren, damit dieser überprüft ob der Apache-Dienst aktiviert ist. Tauchen keine Probleme auf, sollte dieser Bildschirm sichtbar sein:
Form51
Klicken sie hier bitte auf den Knopf „Lehrling“ um fortzufahren. Der Knopf „Ausbildner“ ist momentan nutzlos und führt sie zu einer funktionslosen Seite. Wenn sie den Knopf „Lehrling“ betätigt haben, sollte folgendes Sichtbar sein:
Form52
Hier wird gefragt ob sie ein neuer Benutzer sind, oder ob sie bereits in der unteren Liste vorhanden sind. Die untere Liste ist eine Aufzählung von Benutzern die für den Test bereits einmal angemeldet wurden.
FForm53 alls ihr Name in dieser Liste ist, wählen sei bitte die Identifikationsnummer und folgen sie den Anweisungen auf der Seite. Geben sie ihre Identifikationsnummer im weissen Feld an. Bitte beachten sie genau ihre eigene Nummer anzugeben, da das System sie sonst für Jemand anderes haltet.

Sollten sie ein neuer Benutzer sein, dann betätigen sie bitte die Taste „JA“ in der Mitte des Bildschirmes, wie auf der Seite angewiesen. Dies führt sie zum nächsten Bildschirm.
Je nach ihrer vorherigen Auswahl kann der folgende Bildschirm anders aussehen.
Falls sie angegeben haben, dass dies ihre erste Anmeldung ist, sehen sie folgenden Bildschirm:
Form54
Hier werden sie aufgefordert, Namen, Vorname und Abteilung anzugeben. Falls sie bereits Teil der Rafisa Informatik GmbH sind, wurden sie einer Abteilung zugeteilt. Falls sie sich unsicher in dieser sind, suchen sie ihren Ausbildner auf und fragen sie ihn. Falls sie nicht Teil der Rafisa Informatik GmbH sind, wählen sie bitte „Schnupperlehrling“.
Danach wird ein neuer Bildschirm auftauchen. Falls sie angegeben haben dass sie bereits im System sind, sehen sie diesen Bildschirm direkt nach der Angabe ihrer Identifikationsnummer.
Form55
Hier können sie, wie auf dem Bildschirm angegeben, den Namen eines Tests eingeben um ihn durchzuführen. Wichtig hierbei ist dass sie den Anweisungen folgen und den tatsächlichen Namen des Tests eingeben, wie er dort auf der Liste zu sehen ist. Da der Mathetest sich momentan noch in der Testphase befindet, müssen sie „Testfall“ angeben um weiter zu gelangen.
Form56
Damit sind sie beim Test selbst angelangt. Herzlichen Glückwunsch. Falls sie wünschen ihn verfrüht abzuschliessen, können sie direkt den Knopf „abschliessen“ weiter unten am Bildschirm betätigen.

2.6.3 Admin-Anleitung

Aus Gründen dass nicht genug Admin Anwendungen in der momentanen Phase des Mathetests verfügbar sind, wurde gegen eine Administrator-Anleitung entschieden, da diese keinen Kontext in der momentanen Lage des Tests hätte. Falls sie wünschen einen neuen Lehrling über die Oberfläche in das System einzufügen, können sie einfach der obigen Anleitung folgen.
















2.7.1 TESTFÄLLE

Testfälle sind geplante Vorgänge bei denen etablierte Systeme getestet werden. Diese basieren auf vorgeschriebenen Drehbüchern die einen klaren Ablauf, ein erwartetes Ergebnis und das tatsächliche Resultat beschreiben.
* Testfall: Wiederherstellung der Mathematik-Datenbank Drehbuch:
Ein dump.sql, der den gesamten Code enthaltet, wird in MySQL geladen um die Datenbank eins zu eins wiederherzustellen. Erwartetes Resultat:
Der Code-Dump wird mittels mysqldump erstellt und in das Backup eingespeist. Von dort wird es mittels myslq Command-Line wieder in eine Datenbank eingespeist, via Create Database. Die Neue Datenbank ist exakt gleich wie die alte. Ergebnis:
Der Dump konnte problemlos mittels Befehl erstellt werden. Darauf hat man den Coda via Befehl einspeisen. Die daraus entstandene Datenbank ist genau gleich wie die vorherige.


















* Testfall: Benutzer über Mathetest Oberfläche erstellen Drehbuch:
Es wird auf die Oberfläche zugegriffen und „Lehrling“ beim Login ausgewählt. Bei der Frage ob dies die erste Anmeldung ist, wird mit „Ja“, geantwortet. Darauf wird auf der folgenden Seite der Name, Vorname und die Abteilung des neuen Lehrlings eingetragen. Erwartetes Resultat:
Der Lehrling wurde mittels PHP Code direkt in die Datenbank eingespeist, ohne Fehlermeldung von PHP dass seine Name bereits in Gebrauch wäre. Nachdem wird in MySQL mittels „SELECT * FROM Lehrlinge;“ überprüft ob der neue Eintrag sichtbar ist. Er ist der neueste, mit einer automatischen ID und den festgelegten Werten. Ergebnis:
Der Lehrling wurde mittels Oberfläche in die Datenbank eingespeist, PHP hat keinen Fehler gemeldet. Bei Überprüfung durch die MySQL Command-Line Oberfläche, ist sichtbar dass der neue Eintrag problemlos erstellt wurde.




















* Testfall: Funktionskontrolle des Tests – Korrekte Einträge Drehbuch:
Der Test wird Schritt für Schritt durchgearbeitet. Es werden dabei alle Eingaben und Knöpfe des Tests getestet, mit dem Ziel das Resultat des Tests zu erreichen. Auf dem ersten Login Screen wird Lehrling gewählt Auf dem nächsten wird „JA“ gewählt um einen neuen Benutzer zu erstellen Der neue Benutzer wird so erstellt dass er keinen Konflikt mit bereits existierenden Einträgen bietet und ist damit ein vollkommen neuer Eintrag in die Datenbank Es wird der Test „Testfall“ aus der unten gezeigten Liste gewählt. Der Test wird geladen, es wird auf Abschliessen gedrückt Die Seite mit dem Resultat taucht auf, der Test schliesst ab. Erwartetes Resultat:
Der neue Benutzer wird in die Datenbank eingespeist, erhält eine automatische ID, kann den Test „Testfall“ auswählen und schliesst diesen mit dem unteren Knopf „abschliessen“ ab. Er hat 0 Punkte. Ergebnis: Der neue Benutzer wurde erstellt und hat eine automatisierte ID erhalten. Darauf er den Test „Testfall“ gewählt, worauf dieser angezeigt wurde. Er hat den Knopf „abschliessen“ betätigt und mit 0 Punkten abgeschlossen.













* Testfall: Funktionskontrolle des Tests – Bereits eingetragener Benutzer Drehbuch:
Der Test wird Schritt für Schritt durchgearbeitet. Es werden dabei alle Eingaben und Knöpfe des Tests getestet, mit dem Ziel das Resultat des Tests zu erreichen. Auf dem ersten Login Screen wird Lehrling gewählt Auf dem nächsten wird nicht „JA“ gewählt, stattdessen wird der Name „Vass Leon“ aus der unteren Liste gewählt. Es wird der Test „Testfall“ aus der unten gezeigten Liste gewählt. Der Test wird geladen, es wird auf Abschliessen gedrückt Die Seite mit dem Resultat taucht auf, der Test schliesst ab. Erwartetes Resultat:
Der existierende User wird problemlos verwendet und der Test „Testfall“ wird ausgewählt. Dieser wird mit dem Knopf „abschliessen“ beendet. Der Test wird mit 0 Punkten abgeschlossen. Ergebnis: Der existierende Benutzer wurde erkannt und es wurde direkt die Testauswahl erreicht. Kein neuer Benutzer wurde erstellt. Der Test „Testfall“ wurde ausgewählt und der Test wurde erfolgreich geladen. Der Knopf „abschliessen“ wurde betätigt. Der Test schloss mit 0 Punkten ab.















3.1.1 ANHANG


3.1.2 Reflexion

Die Arbeit an der IPA war definitiv eine spannende, aber auch sehr mühsame Erfahrung. Das Planen und Erstellen einer neuen Datenbank war überaus spannend und ein guter Weidereinstieg in MySQL. Weiterhin war das Einrichten und Konfigurieren der beiden Server lehrreich, wenn auch hin und wieder holprig auf Seitens von Linux wegen Mühsamkeiten in der Syntax der Oberfläche. Doch die grösste Herausforderung war, ohne Frage, das Realisieren des Mathetests. Mit allen anderen Funktionen, wie der Erstellung einer Datenbank und deren Konfiguration, zu der detaillierten Dokumentation aller Schritte, war bereits viel Zeit vergangen. Dagegen schien die Realisierung eines vollständigen Mathetest in HTML und PHP wie beinahe zu viel. Deswegen ist der Mathetest auch in einer eher dürftig in Fragen und Extra-Funktionen. Es fehlte mir einfach an Zeit. Ich hatte oft das Gefühl dass 10 Tage einfach nicht reichen würden, auch wenn ich Teile meiner Freizeit aufopferte. Daher konnte ich zwar eine Grundlage des Tests realisieren, welche an sich auch funktioniert, doch sie ist nicht voll ausgerüstet oder konfiguriert wie sie sein sollte. Ich finde es daher schade dass ich nicht davor den Auftrag in Frage gestellt habe, da ich das hier hätte verhindern können. Vor allem da ich im Laufe meiner Arbeit einige Details beim Auftrag sah, die ich so nie angenommen hätte, hätte ich sie früh genug entdeckt. Doch am Ende bin ich froh dass ich den gesamten Auftrag realisieren konnte. Wenn auch nicht allen Funktionen, doch mit der Grundlage, auf der man in Zukunft weiterarbeiten kann.

3.1.3 Quellenverzeichnis

Während der Realisierung des IPA Auftrages wurden einige Quellen auf dem Internet beansprucht um Code Beispiele, Installationsangaben oder Troubleshooting Angaben nachzulesen. Diese sind alle hier aufgelistet.
PHP Manual: http://php.net/manual/de/index.php Das PHP Manual ist, wie es der Name schon sagt, eine Anleitung zu vielen verschiedenen Funktionen und Optionen der PHP-Skriptsprache. Sie bietet einige Beispiele, besteht jedoch grösstenteils aus verständlichen Erklärungen der Funktionen.
MySQL Developer Zone: https://dev.mysql.com/
Diese Seite der MySQL Webseite bietet viele verschiedene Erklärungen und Beispiele zu Funktionen von MySQL.
W3Schools: https://www.w3schools.com/ Webseite die extensive Tutorials und Beispiele zu HTML, CSS und PHP bietet, zusammen mit Übungen um das Gelernte umzusetzen.

3.1.4 Abbildungsverzeichnis

Abbildungen von aussen wurden in der IPA Dokumentation nicht verwendet, sondern bestehen nur aus Screenshots der einzelnen Programme, die als Beispiele, Hilfen oder Erklärungen benutzt wurden und Visio-Darstellungen für ERMs oder Ablaufdiagramme. Daher wird hier aufgelistet von welchen Programmen die meisten Screenshots im Laufe der Dokumentation genommen wurden:
Screenshots:
* Notepad++ * XAMPP * Google Chrome * Linux Ubuntu Webserver 16.04.4 LTS * Windows Server 2016 * MySQL InnoDB Dienst für Linux * Microsoft Access
Die restlichen Abbildungen sind Darstellungen die im Programm
Visio Professional von Microsoft, erstellt wurden.

3.1.5 Glossar


| Fachwort oder Software / Abkürzung
| Erklärung | | Apache | Apache ist eine Open-Source Applikation, die als Webserver benutzt werden kann. Sie ist sehr weit verbreitet.
| | Array | Ein Array ist ein variabler Datensatz der mehrere Einträge halten und diese wiedergeben kann. Man findet dies vor allem in der Objektorientierten Programmierung.
| | Auto-Increment | Englischer Begriff für eine sich steigernde Entität. Dies wird vor allem bei Identifikationen benutzt.
| | Backup | Backup ist der Englische Begriff für die Sicherung von Daten. Dies wird verwendet um Datenverlust zu verhindern.
| | Cookie | Temporärer Datenspeicher der in PHP verwendet wird um Eingaben und Variablen in Browsern zu speichern, um sie später wiederzuverwenden.
| | Dynamic Host Configuration Protocol / DHCP | Netzwerkprotokoll dass es erlaubt in einem geschlossenen Netzwerk IP-Adressen zu verteilen und zu verwalten.
| | File Transfer Protocol / FTP | Protokoll zum Übertragen von Daten zwischen verschiedenen Maschinen.
| | Gantt-Diagramm | Balkenbasiertes Diagramm zur Darstellung von Zeitplänen.
| | Hypertext Markup Language / HTML | Darstellungssprache wird für die Darstellung von Webseiten benutzt.
| | Internet Protocol /IP | Netzwerkprotokoll dass zur Identifikation von Entitäten und Geräten benutzt wird.
| | Javascript | Java ist eine bekannte Objektorientierte Programmiersprache. Java Script als solches wird oft bei Browsern für Zusatzfunktionen verwendet.
| | Linux / Unix | Open-Source Betriebssystem, welches weitverbreitet für Server verwendet wird.
| | Microsoft Access / MS-Access | Datenbank Software die Teil des Microsoft-Office Paketes ist. Bietet eine grafische Oberfläche zum Erstellen von Datenbanken an.
| | MySQL | Standard-System für Datenbanken dass zu den weitverbreitetsten Datenbank-Modellen gehört. Es ist sogar die Grundlage für Microsoft Access
| | Network Adress Translation / NAT | Netzwerkprotokoll das oftmals von Routern in Netzwerken eingesetzt wird.
| | PHP: Hypertext Preprocessor / PHP | PHP ist eine Skriptsprache die das Erstellen von dynamischen Webseiten erlaubt. Sie wird vor allem zusammen mit HTML und Javascript verwendet.
| | Query | Englisches Wort für Abfrage, hält dieselbe Bedeutung im Objektorientiertem Programmieren.
| | Reboot | Englisches Wort für Neustart.
| | Troubleshooting | Englisches Wort für Problemsuche/Fehlerdiagnose.
| | VMware | Gratis Software die das Erstellen von virtuellen Maschinen erlaubt.
| | Webmin | Freie Oberfläche für Linux Server die Administration ohne Gebrauch der Konsole ermöglicht.
| | XAMPP | Freies Software-Packet, dass es einem Benutzer ermöglicht eine Webseite und Datenbank zu hosten.
|

3.2.1 LISTINGS

3.2.2 HTML/PHP Code


3.2.3 CSS Code


3.2.4 MySQL Code

de.bkp/intern/ipa/lv2018/ipa_lv2018.txt · Zuletzt geändert: 2021/01/28 14:06 von 127.0.0.1