NotenDB Besondere Lernleistung - Technikwissenschaft Planung, Implementierung, Test und Einführung eines web-basierten Notenerfassungssystems Werner-von-Siemens-Schule Wetzlar 2012 bis 2013 Betreut von: A. Rohde, B. Meuser Max Weller und Moritz Willig Inhalt 1. Einleitung Ziele Aufteilung 2. Planung Datenbankdesign MVC-Framework Backend & Klassenstruktur 3. Umsetzung MVC-Framework Datenbankdesign & Klassenstruktur Benutzeroberfläche Integration in das Schulnetzwerk 4. Fazit Einführung - Planung - Umsetzung - Fazit Einleitung ● ● ● ● Aufgabe: Erfassung der Zeugnisnoten Bisherige Lösung: Handschriftliche Listen oder Excel-Dateien Fehleranfällig durch mehrfache manuelle Übertragung Excel-Dateien per E-Mail: Datenschutz! Einführung - Planung - Umsetzung - Fazit Historie ● ● ● Wunsch nach einem automatischen, bequemeren, papierlosen Verfahren besteht schon länger Ende 2011 - Anregung von Herrn Rohde Erster Entwurf: notendb1 ○ ○ Datenbankschema Benutzeroberfläche Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Historie ● ● ● ● ca. Mai 2012 - Eigentlicher Projektbeginn Besprechungen mit Lehrern, Vorstellung des Entwurfs Planung der Softwarearchitektur Datenbankschema konnte grundsätzlich übernommen werden ○ Entitätstypen "Datei" und "Tutor" wurden hinzugefügt https://github.com/max-weller/notendb2/commits/ Einführung - Planung - Umsetzung - Fazit Historie ● Probeläufe zunächst mit Tutoren, später mit einigen Kurslehrern ○ ● sonst schwer auffindbare Fehler zeigen sich frühzeitig Kontinuierliches Benutzer-Feedback ○ Umsetzung von Wünschen der späteren Anwender ■ Benutzerfreundlichkeit ■ z.B. Einführung von Kursvorlagen Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Aufgabenverteilung ● ● Entwicklung als Gemeinschaftsprojekt Planung Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Struktur der Anwendung ● Ziele: ○ ○ ○ ● Jederzeit Zugriff auf aktuellsten Datenbestand Verwendbar von Schulcomputern; evtl. auch von Lehrernotebooks und von zu Hause aus Möglichst wenig Aufwand für die Arbeitsplätze Daher: Client-Server-System ○ ○ Client: Webbrowser ■ keine Installation/Wartung Server: Apache-Webbrowser, PHP ■ Sehr weit verbreitet -> Verfügbarkeit von Modulen und Updates ■ Absicherung durch Transport Layer Security Einführung - Planung - Umsetzung - Fazit Planung - Datenbankdesign ● Anforderungen 1-11 ● Auswahl der Datenbanksoftware ○ ○ ○ ○ Schnittstelle zu PHP Schnelle Implementierung & Anwendung Sicherheit Verfügbarkeit auf dem System Einführung - Planung - Umsetzung - Fazit Planung - Datenbankdesign Kriterien: ● Zuordnung der Schüler nach Jahrgang ● Zuordnung der Schüler zu Kursen ● Zuordnung von Lehrern zu Kursen ● Kurse pro Halbjahr ○ ● ● ● Diese fassen wir als Datei zusammen Reproduzierbarkeit der Zeugnisse Tutoren müssen Dateien zugeordnet werden Import von Daten aus der LUSD Einführung - Planung - Umsetzung - Fazit Planung - Datenbankdesign ● 3. Normalform ○ ○ Mit "Ausnahmen" ■ Mehrfachspeicherung der Schülerdaten Kein Nichtschlüsselattribut darf von Schlüssel transitiv abhängig sein Quelle: http://de.wikipedia.org/wiki/Normalisierung_%28Datenbank%29#Dritte_Normalform_.283NF.29 Einführung - Planung - Umsetzung - Fazit Erhaltung der Struktur während der Entwicklung ○ Hinzufügen der Tabelle "Kursvorlage" Einführung - Planung - Umsetzung - Fazit Planung - Datenbankdesign ● ● Zusammenfassung Jahrgang/Halbjahr Zwischentabellen ○ ● Lehrer-Kurs / Schüler-Kurs Namensgebung ○ ○ ○ Prefix: "Rel" ■ RelLehrerKurs Primary Keys: ■ Anfangsbuchstabe der Tabelle +"id" Foreign Keys: ■ Prefix: "r_" Einführung - Planung - Umsetzung - Fazit Planung - Datenbankdesign Einführung - Planung - Umsetzung - Fazit Planung - Datenbanktabellen ● Datei ○ ○ ○ ● Logischer Zusammenschluss der Daten Grundlegende Verbindung von Schülern und Kursen Zuordnung der Daten für die jeweiligen Halbjahre Kurs ○ ○ ○ Für das Zeugnis benötigte Daten Zuordnung der Lehrerberechtigungen Zuordnung über ■ RelLehrerKurs ■ RelSchuelerKurs Einführung - Planung - Umsetzung - Fazit Planung - Datenbanktabellen ● Schueler ○ ○ ○ ● Schülerdaten für den Zeugnisdruck ■ Import aus der LUSD Eindeutige Identifikation über ID pro Datei Mehrfachspeicherung der Daten ■ Reproduktion älterer Zeugnisse Lehrer ○ ○ Logindaten für Zugangsberechtigungen Rechteverwaltung über Dateien und Kurse ■ rel_lehrer_kurs ■ Administratorberechtigungen Einführung - Planung - Umsetzung - Fazit Planung - Datenbanktabellen ● Tutor ○ ○ ● Relation Lehrer-Datei ■ Abweichende Benennung Rechte für Kurszuordnungen kurs_template ○ ○ Nachträgliche Einführung Kursvorlagen ■ Wiederholte Dateneingabe wird erleichtert Einführung - Planung - Umsetzung - Fazit Planung - Datenbanktabellen Verbindungstabellen: ● RelLehrerKurs ○ ● Rechte zur Notenvergabe RelSchuelerKurs ○ ○ Kurszuordnungen der Schüler Speicherung der Noten, Fehlstunden und unentschuldigten Fehlstunden Einführung - Planung - Umsetzung - Fazit Planung - Datenbanktabellen Einführung - Planung - Umsetzung - Fazit Benutzergruppen ● Administrator ○ ○ ● Tutor ○ ○ ○ ● Gültig Systemweit Weitreichende Berechtigungen zu Verwaltungszwecken ■ Einrichten von Dateien ■ Vergabe von Tutorenrechten Gültig pro Datei Zugriff auf alle Noten, Zeugnisdruckassistent Kann Kurse anlegen, bearbeiten und löschen Fachlehrer ○ ○ Gültig pro Kurs Kann eigenen Kurs selbst anlegen Einführung - Planung - Umsetzung - Fazit Dateien ● Dateiname besteht aus ○ ○ ○ ○ ● Kreuztabelle ○ ○ ● Jahr (2012/13) Jahrgang (13.) Halbjahr (2) Schulform (BG) Zeilen: Schüler Spalten: Kurse Zusätzliche Verwaltungsinformation: ○ Tutoren Einführung - Planung - Umsetzung - Fazit MVC-Framework ● Verwendete Programmiersprache: PHP ○ ○ ○ ● ausgereifte Sprache für Webanwendungen Freie Software (kostenfrei + open source) fortgeschrittene Sprachkenntnisse vorhanden Model-View-Controller-Architektur ○ ○ ○ seit über 30 Jahren bewährt Aufteilung in logische Schichten Erleichtert Erweiterung und Wartung der Software Einführung - Planung - Umsetzung - Fazit MVC-Framework SQL Queries Model Data Datenbank (MySQL) $ViewData Controller HTML Code HTTP Request HTTP Response Web Browser Views (HTML & PHP) Einführung - Planung - Umsetzung - Fazit Back-End & Klassenstruktur "Back-End" ● Datenverarbeitender Teil der Anwendung ● "Näher" am System ○ ● Interaktion mit System-Schnittstellen Controller- und Teile des Model-Parts des MVC-Frameworks Einführung - Planung - Umsetzung - Fazit Sessionverwaltung ● Anforderung 19 & 20 ● Userinteraktion mit initialer Authentifizierung ○ ○ ○ ● Gespeicherte Session Eindeutige Userzuordnung Schutz der Lehreraccounts ■ Sensible Daten ■ Abwehr von Angriffen Rechteverwaltung ○ ○ Session-Klasse Authentifizierung über Passwort-Datenbank Einführung - Planung - Umsetzung - Fazit Sicherheit ● One-Way Verschlüsselung ○ ○ ● unumkehrbare Verschlüsselung Passwortsicherheit auch bei Datenverlust Salt ○ ○ Einbeziehung des Nutzernamens ■ Rainbowtables werden unbrauchbar Erraten des Passworts noch durch Brute-forceAngriff Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Modelle ● Kapselung von Objekten und Schnittstellen ○ ○ ○ ● Session Verwaltung Anbindung an die MySQL-Datenbank Zeugnis PDF- & XML-Export Basisklasse "Model" ○ Database-Gruppe ■ Grundlegende Anbindung an die Datenbank ■ Kapselung der Tabellen ● ■ "database" Ableitung für Verbindungstabellen ● "databaseRel" Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Modelle Umsetzung der Tabellen als Modelle: ● ● Database DatabaseRel Umsetzung Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit MVC-Framework SQL Queries Model Data Datenbank (MySQL) $ViewData Controller HTML Code HTTP Request HTTP Response Web Browser Views (HTML & PHP) Einführung - Planung - Umsetzung - Fazit MVC-Framework ● Entwicklung eines eigenen Frameworks ○ ○ ○ ● Lerneffekt, besseres Verständnis Minimalismus, Reduktion auf nötige Funktionen -> bessere Wartbarkeit "MVC_Framework" ○ ○ ○ ○ Trennung von Datenhaltung, Logik, Darstellung Routing Datenbankabstraktion Konfiguration und Installation MVC-Framework Controller Struktur des Frameworks spiegelt sich in Ordnern Model Grundgerüst kann für neue Anwendungen kopiert werden Views (HTML & PHP) Einführung - Planung - Umsetzung - Fazit MVC-Framework Einführung - Planung - Umsetzung - Fazit MVC-Framework - Routing ● Routing = Zuordnung einer HTTP-Anfrage zum auszuführenden Programmteil Beispiel: Aufruf des Login-Formulars Einführung - Planung - Umsetzung - Fazit MVC-Framework - Routing http://mars/notendb2/user/login *---* *--**------------------* Protokoll Host Pfad /notendb2/user/login 1: URL-Präfix 2: Controller -> user.php, class UserController 3: Methode -> login Einführung - Planung - Umsetzung - Fazit Datenbankdesign - Umsetzung Erweiterungen durch die GUI Kurs ● editlocked_by_lid ● editlocked_since ○ ● ● Überschreiben verhindern display_position export_position ○ Zeugnisdruck Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Implementierung Erweiterungen der Funktionalität Datei ● archiviert Kurs ● eingereicht Sperren der Daten, um nachträgliche Änderungen zu verhindern Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Implementierung Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Beispiele Session ● isRoot ● isAdmin DatabaseRel ● var idLCol/idRCol ● getAllByLId Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Modelle DatabaseRelModel ... Einführung - Planung - Umsetzung - Fazit Klassenstruktur - Modelle SessionModel Einführung - Planung - Umsetzung - Fazit Benutzeroberfläche ● Webanwendung - daher verwendete Techniken: ○ ○ ○ HyperText Markup Language (HTML) JavaScript (JS) Cascading Style Sheets (CSS) Einführung - Planung - Umsetzung - Fazit Integration ins Netzwerk der WvSS ● Server-Hardware: ○ ○ ● Entwicklung: umfunktionierter Desktop-PC Produktiv: HP (19"-Rack) im Serverraum Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Integration ins Netzwerk der WvSS ● Server-Hardware: ○ ○ ● Entwicklung: umfunktionierter Desktop-PC Produktiv: HP (19"-Rack) im Serverraum Netzwerkanbindung über zwei NICs: ○ ○ Verbunden mit internem Netz -> Erreichbar aus dem Schulnetz über http://mars bzw. 10.34.0.25 Verbunden mit DMZ / Fritzbox -> Zeitweise erreichbar aus dem Internet über externe IP der Schule Einführung - Planung - Umsetzung - Fazit Internes Netz DMZ / Internet Einführung - Planung - Umsetzung - Fazit Integration ins Netzwerk der WvSS ● Server-Hardware: ○ ○ ● Netzwerkanbindung über zwei NICs: ○ ○ ● Entwicklung: umfunktionierter Desktop-PC Produktiv: HP (19"-Rack) im Serverraum Verbunden mit internem Netz -> Erreichbar aus dem Schulnetz über http://mars bzw. 10.34.0.25 Verbunden mit DMZ / Fritzbox -> Zeitweise erreichbar aus dem Internet über externe IP der Schule Halbautomatische Datenübernahme (Lehrer/Schüler) Fazit Einführung - Planung - Umsetzung - Fazit Einführung - Planung - Umsetzung - Fazit Fazit - Planung & Ablauf ● Planung ○ ○ ○ ● Erkennen der Problemstellung Klären der Anforderungen ■ Gespräche mit Administratoren ■ Gespräche mit Lehrern Frühzeitige Festlegung der Projektstruktur ■ Einigung auf verwendete Systeme Umsetzung ○ Gute Kommunikation ■ Im Team ■ Mit den Lehrern Einführung - Planung - Umsetzung - Fazit Fazit - Offene Punkte ● Passwortverschlüsselung durch md5 ○ ○ ● LDAP-Anbindung für den Login ○ ● Nicht mehr sicher Ersetzen durch bcrypt keine Standardpassworte nötig, keine vergessenen Passworte Keine externe Datensicherung ○ Daten werden auf dem lokalen Rechner gesichert Einführung - Planung - Umsetzung - Fazit Fazit - Ausblick ● Abiturzeugnis ○ Anbindung an die Lernleistung von Manuel Groh: "Abitur-Rechner" ● Login für Lehrer über LDAP Login für Schüler zur Einsicht der Noten ● Verwendung in anderen Schulformen ● ○ ○ Anpassung der Zeugnisvorlagen Modifikation der GUI Einführung - Planung - Umsetzung - Fazit Fazit - Fragen Vielen Dank für ihre Aufmerksamkeit Die Quellen dieser Präsentation können den entsprechenden Abschnitten der Dokumentation entnommen werden