als PDF - Hilfe und Dokumentation zur Notendb

Werbung
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
Herunterladen