Programmierung der Datenbanksoftware

Allgemeine Problemformulierung

Die zu entwickelnde Applikation soll die Abfrage von „Multiple-Choice“-Arbeiten erleichtern. Dazu ist es notwendig, möglichst viele der Teilprozesse zu automatisieren. Die „Stift und Papier“-Methode soll mit dem Computer imitiert werden. Die Visualisierung kann über den Monitor und die Auswahl der richtigen Antworten per Maus erfolgen oder über fest angebrachte Digital Signage Hardware in den Lehrerräumen (diese können dann wiederum per Touchpad mit dem Finger bedient werden). Die Unternehmenssoftware unterscheidet zwischen den Benutzergruppen „Lehrer“ und „Schüler“. Dem Lehrer soll es möglich sein, Fragen in Datenbanken zu katalogisieren und dann in Arbeiten zusammenzustellen. Die Steuerung der „Schüler“-Programme soll über das Netzwerk erfolgen. Jeder Lehrer bekommt seine eigene Datenbank zur Verfügung gestellt. Die Manipulation durch den Schüler soll weitestgehend ausgeschlossen sein, um eine Chancengleichheit zu gewähren. Die Auswertung nach erfolgten „Multiple-Choice“-Arbeiten geschieht vollautomatisch.

Problemanalyse

Wahl der Programmiersprache

Die drei Datenbanken können nur als Grundgerüst für unsere „Multiple-Choice-Test“- Software dienen, denn die Datenbanken lassen sich bis jetzt nur umständlich über die „DOS-Box“ abrufen. Meine Aufgabe war es jedoch, eine benutzerfreundliche Datenbankanwendung zu programmieren.

Die Auswahl des Programmierwerkzeuges fiel mir nicht schwer, denn ich hatte in der Schule bereits gute Erfahrungen mit der objektorientierten Programmierumgebung „Delphi“ gemacht. Eine Lösung mit den Programmiersprachen „HTML“, „PHP“ oder „Java“ kam nicht in Frage, weil man mit ihnen nur schwer sicherstellen kann, dass der Schüler keine Hilfsmittel verwendet. In „Delphi“ ist es möglich, eine Chancengleichheit der Befragten zu ermöglichen.

Einzelne Teilprobleme und deren Lösung

Die Verbindung zur Datenbank

In der „Delphi“ Version 6.0 sind jede Menge fertige Komponenten für den Zugriff auf unterschiedlichste Datenbanksysteme vorhanden. Leider verwendet der Großteil der Komponenten dazu die „Borland Database Engine“ (BDE). Bei der Installation auf weitere PCs muss die „BDE“ immer als Ballast zusätzlich installiert werden. Das sind immerhin knapp 40 MB Daten. Die Microsoft „ADO“-Schnittstelle wird zusätzlich benötigt, um die Verbindung herzustellen. Das verlangsamt das gesamte System zusätzlich. Weil bei den späteren Arbeiten bis zu 45 Computer gleichzeitig auf den „MySQL“ Server zugreifen, ist es notwendig, die Kommunikation schneller zu lösen.

Einen ganz anderen Weg schlägt Christian Nicola(1) mit seinen kostenlosen „MySQL direct“- Units ein. Seine Komponenten ermöglichen es, direkt und ohne zusätzliche „Dynamic Link Libaries“ (DLL) auf „MySQL“-Datenbanken zuzugreifen. Dadurch erhält man einen enormen Geschwindigkeitsvorteil gegenüber den „BDE“-Komponenten.

Modularisierung

Die SQL Aufrufe werden in so genannte „Stored-Procedures“ eingebettet, um sich wiederholende Abfragen nicht mehrmals im Quelltext formulieren zu müssen. Dieser Aufbau ist für eine ökonomische Programmierung unumgänglich. Außerdem ist es von Vorteil, diese vorgefertigten Prozeduren noch einmal zu gliedern, um die Übersichtlichkeit zu erhalten. Deshalb erstelle ich pro Datenbank ein eigenes Datenmodul, in dem alle benötigten Abfragen enthalten sind. Eine weitere Modularisierung in die Teilgebiete „Generierung“, „Durchführung“ und „Auswertung“ ist sinnvoll. Die Teilprobleme werden simultan abgearbeitet und Engpässe schnell sichtbar. Zuletzt werden alle Moduleinheiten in einem Programm kombiniert.

Beispiel „Stored-Procedure“

Stored Prodcedure

Beispielaufruf der vorangegangenen „Stored-Procedure“

Stored Prodcedure Aufruf

Anbindung der Oberfläche an die Datenbank

Nachdem wir jetzt die Möglichkeit haben, mit Delphi auf die Datenbank zuzugreifen, müssen dem Anwender unsere Ergebnisse visualisiert werden. Hierbei ist es notwendig, zwischen zwei Benutzergruppen zu unterscheiden, den Schülern und den Lehrern. Für jede Gruppe wird ein eigenes, auf die Aufgaben zugeschnittenes Programm benötigt. Es ist nicht sinnvoll, den kompletten Funktionsumfang in eine Applikation zu integrieren. Deshalb erfolgt eine Modularisierung in ein Server- und ein Client-Programm. Bei dieser Differenzierung wird gleichzeitig auf die unterschiedlichen Rechte in der Datenbank Rücksicht genommen, um Manipulationen auszuschließen. Bei der Modularisierung gilt das Prinzip: „So wenig Rechte wie möglich, so viel wie nötig!“

Kommunikationsprotokoll für die Client-Steuerung

Zur Steuerung der Client-Applikation war es notwendig, ein Kommunikationsprotokoll zu entwickeln, welches später auch als Mobile Phone Software und ASP.NET Entwicklung zum Einsatz kommen soll. Für die Verbindung zwischen den Computern reichen die in Delphi 6 enthaltenen „Socket“-Komponenten völlig aus. Zur Kommunikation wird die Funktion „SendText“ genutzt, über die Nachrichten zwischen Server- und Client-Anwendung versandt werden. Dank der „Multiuser“-Funktion des Servers ist die gleichzeitige Steuerung mehrerer Clients möglich. Mein Protokoll ist vergleichbar mit dem altbewährten „File-Transfer-Protocol“ (FTP). Es werden Nachrichten versandt, die sich aus einem fünfstelligen Kommando (CMD) und einem darauf folgenden Parameter (PARAM) zusammensetzen. Da bei einigen Befehlen mehr als nur ein Parameter benötigt wird, zerstückelt man diesen durch das Zeichen „#“ in die gewünschte Parameteranzahl. >> Zu den Kommandos <<

Sicherheitsabfrage im Server-Programm (ausführlich)

Nähere Angaben zur Sicherheitsabfrage finden Sie auf einer seperaten Seite. >> Zur Sicherheitsabfrage <<