Dienstag, Mai 24, 2005

Willkommen zur Projektseite des ExamMgr, dem Klausurverwaltungsprogramm!

Dieses Programm ist im Institut für System Engineering, System- und Rechnerarchitektur der Universität Hannover entwickelt worden, um den entstehenden Verwaltungsaufwand für schriftliche Prüfungen auf ein Minimum zu reduzieren. Dort wird es schon seit mehreren Jahren am Institut genutzt und getestet.

Es wurde auf Basis des Cross-Plattform Toolkits "Qt" von Trolltech entwickelt und steht für folgende Plattformen zur Verfügung:

Desktop: Windows, MacOS-X, Unix/X11 (incl. Linux)

PDA: QT/e basierte PDA's ( Trolltech, Opie, ..)

Nachdem Bundesweit die Prüfungsverwaltung auf "HIS-POS" der Hochschul-Informations-Systeme GmbH umgestellt wird, erschien der Moment günstig das Projekt jetzt zu veröffentlichen. Es ist anzunehmen, dass viele Institute eine Möglichkeit suchen, die vom HIS angebotenen Prüfungsdaten sinnvoll und effizient zu verarbeiten.

In der jetzigen Version bietet es den Import der Prüfungsdaten als Excel (xls) Datei, wobei der Export der Noten momentan noch als Character Separated Value (csv) erfolgt. Zum Zurückspielen der Noten ist somit noch das manuelle Umwandeln der Daten nötig, indem sie in Excel geladen und als xls geschrieben werden. Anschliessen können sie von HIS-POS importiert werden.

Mehr Informationen hierzu unter "ExamMgr? Wozu brauche ich den?"

Posted by Stefan Eilers at 1:00 PM
Edited on: Freitag, August 19, 2005 11:57 AM
Categories: Übersicht: ExamMgr

Dienstag, Juni 07, 2005

Roadmap für Version 0.6 und darüber hinaus..

Um die Entwicklung des ExamMgr's etwas zu klären, soll die geplante Roadmap vorgestellt werden. Als Deadline für jede Version gilt immer der nächste Prüfungszeitraum, was somit der 1.8.2005 hier in Hannover bedeutet. Da aufgrund der kurzen Zeit keine grossen Änderungen mehr in das Programm integriert werden sollen, ergibt sich somit folgender Plan:

Bis zum 1.8.2005:

  • Implementierung eines Plugin-Interfaces für die Notenberechung. Dies soll die Integration eigener Berechnungsalgorithmen ermöglichen, da jedes Institut/ jede Uni möglicherweise unterschiedliche Vorstellungen haben.
  • Stabilisierung des Codes.
  • Veröffentlichung der Version 0.6 zum 1.8.

Bis zum 1.3.2006 (Siehe auch "Projektplanung" rechts)

  • Integration neuer Features (Möchte da jemand helfen?)
  • Abstrahierung der Schnittstelle für die Projektdaten. Integration verschiedener Plugins für Binärformat, SQL-Datenbank, HISQIS-POS, CSV, XML, ... mit Konvertierung zwischen ihnen (siehe Opie PIM-Schnittstelle). Flexibilisierung durch den Einsatz von Komponenten. Das System wird auf das Plugin-Framework aufsetzen, dass mit Version 0.6 eingeführt wurde.
  • Implementation eines integrierten Zugangs zur HIS-Datenbank (hoffentlich in Zusammenarbeit mit der HIS GmbH)
  • Ermöglichung verschiedener Notenberechnungen für Teilnehmer verschiedener Studiengänge an einer Prüfung

Weitere Zukunft:

  • Umstellung der Visualisierung auf Komponenten unter Verwendung das Plugin-Frameworks.
  • Flexibilisierung des Noten-Hauptfensters (freie Positionierung der Komponenten, usw.)
  • Optimierung und Erweiterung der Exportfunktion. Echte Skriptingfähigkeit wäre cool.

Ich wäre sehr erfreut, wenn sich Entwickler für die Zusammenarbeit melden würden!

Posted by Stefan Eilers at 11:46 AM
Edited on: Dienstag, August 09, 2005 5:53 PM
Categories: Todo-Liste

Dienstag, Juli 12, 2005

ExamMgr - Wozu brauche ich den?

Der ExamMgr hat die Aufgabe, den administrativen Ablauf einer Prüfung für die verantwortlichen Personen so schmerzlos wie möglich zu gestalten.

Das Programm entwickelte sich aus einem einfachen Konvertierungstool, das die Anmeldedaten vom Prüfungsamt in das primitive, textbasierte Eingabeformat einer im SRA selbstgeschriebenen, unixbasierte Software ermöglichte (dem Ur-ExamMgr). Von diesem Startpunkt entwickelte es sich entlang den Bedürfnissen der Mitarbeiter schrittweise zu einer vollwertigen Prüfungshilfe mit den folgenden Features (für V 0.6):

  1. Importieren der angemeldeten Studenten aus verschiedenen Quellen (inkl. HISQIS-POS).
  2. Eingabe und Verwaltung der anwesenden Studenten (optional PDA basiert) auch für mehrere Räume.
  3. Speicherung der Teilpunkte pro Aufgabe.
  4. Automatische Berechnung der Noten anhand von Parametern mittels komfortabler Schieberegler für die Grenzen 1.0 und 5.0
  5. Statistik mit Durchfallquote, etc.
  6. Austauschbare Notenberechnung über Plugins.
  7. Volle Unterstützung von mehreren Prüfern pro Prüfung (verteilte Prüfungskorrektur).
  8. Gewichtete Berücksichtigung einer mündlichen Ergänzungsprüfung.
  9. Ausgabe der Prüfungsdaten über ein programmierbares Interface: Templates definieren das Format und den Inhalt der Ausgabe.

Das Programm ist plattformunabhängig programmiert und somit für alle relevanten Betriebssysteme verfügbar (Linux, Windows, Mac, und was sonst noch von Qt oder Qt/e unterstützt wird).

Das Programm ist noch längst nicht am Ende der Entwicklung angekommen, ist aber als stabil anzusehen, auch wenn die Versionsnummer 0.6 vielleicht etwas anderes suggeriert! Das liegt daran, dass OpenSource-Projekte in der Regel erst die 1.0 vergeben, wenn die Software alle Grundfeatures besitzt, also als fertig angesehen werden kann. Das dies noch nicht so ist, kann leicht anhand der ToDo-Liste gesehen werden.

Wann die folgenden ToDo-Items allerdings eingebaut werden, hängt von der Mithilfe weiterer Entwickler ab. Dies betrifft auch die Integration der Wünsche Dritter: Es ist aufgrund der verfügbaren Entwickerressourcen leider nicht möglich Spezialwünsche umzusetzen. Ich versuche das Tool in Zukunft sehr viel dynamischer zu gestalten um es somit leichter an den eigenen Wünschen anpassbar zu machen. Dies hat in der aktuellen Version (V 0.6) mit der Integration eines Plugin-Frameworks und der Pluginschnittstelle für die Notenberechnung begonnen. Der nächste Schritt wird eine Schnittstelle für Visualisierungskomponenten...

Bei Fragen und Anregungen freue ich mich über eine E-Mail (<http://sourceforge.net/users/eilers/>)

Posted by Stefan Eilers at 3:56 PM
Edited on: Donnerstag, August 18, 2005 10:05 AM
Categories: Übersicht: ExamMgr

Donnerstag, November 24, 2005

Zwischenbericht

Da es eher mühsam ist die Änderungen im CVS zu beobachten und zu verstehen, möchte ich an dieser Stelle eine kurze Übersicht über die bisherige Entwicklung und die Ziele des ExamMgrs präsentieren.

Motivation und Anforderungen

Die Motivationen der Entwicklungen seit Version 0.6 sind vielfältig und haben mit der Veröffentlichung und mit den Anforderungen zu tun, die sich durch die Integration der Applikation in andere Services (wie dem Hochschul Informationssystem, HIS) ergeben haben. Hierzu gehören:

  1. Um Fremdentwickler zur Mitarbeit an dem Programm zu motivieren, müssen Erweiterungen einfach und ohne großes Verständnis der Gesamtarchitektur möglich sein. Dies führt zwangsläufig zu einer Plugin- oder Komponentenarchitektur, bei der ein Entwickler nur noch die Funktionalität einer mehr oder weniger einfachen API zu implementieren muss, um das Programm funktional zu erweitern.
  2. Verschiedene Nutzer haben verschiedene Vorlieben und Anforderungen. Dies verlangt ein hohes Maß an Rekofigurierbarkeit der Applikation. Vor allem die Funktionalität der Notenberechnung mit seinen Statistiken muss dynamisch und flexibel sein. Auch dies führt zu einer Komponentenarchitektur.
  3. Bei den Gesprächen mit HIS ist aufgefallen, dass neben den erweiterten Import- und Exportfunktionen ebenfalls die Forderung relevant ist, dass eventuell der Speicherort der Projektdaten auf zentralen Servern gewünscht ist, anstatt die sensiblen Daten lokal als Datei abzulegen. Dies verlangt die kompette Abstrahierung der Projektzugriffsmechanismen um den Speicherort für die Applikation irrelevant zu machen (siehe ProjectAccess unten).
  4. Die Programmstruktur des Hauptprogramms wurde zunehmend komplexer und hatte zu viele ähnliche Methoden, die sich nur in Details unterschieden. Dies erhöhte die Fehleranfälligkeit, da die Zusammenhänge zunehmend verschleiert wurden. Komplexität kann zwar nicht in Luft aufgelöst werden, aber sie kann verteilt werden. Der Datenfluss in der Hauptapplikation wird somit wieder klarer.

Im folgenden sollen die entsprechenden Bereiche der Applikation kurz beleuchtet werden, die auf diese Anforderungen eingehen

Plugin Framework

Das Plugin Framework wurde schon in der Version 0.7 integriert und ermöglicht den plattform und compilerunabhängigen Zugriff auf Plugins, indem es die Methoden für das Laden und Instanzieren der enthaltenen Klassen ermöglicht. Dieses Framework stellt das Fundament fast aller folgenden Erweiterungen dar.

In der aktuellen Version wurde es dahingehend erweitert, dass es die Möglichkeit bietet, auch grafische Objekte (hier als Komponenten bezeichnet) zu erzeugen. Weiterhin bestitzt es jetzt einen Mechanismus, der die in C++ oftmals auftretenden binärinkompatibilität von Plugins und der somit resultierenden Gefahr von Instabilitäten des Gesamtprogramms zu vermeiden. Hierzu gibt es ein Validierungsmechanismus, der momentan sehr stark eingestellt ist und schon bei der Verwendung verschiedener Kompilerversionen das Laden eines Plugins ablehnen wird. In Zukunft wird dies wahrscheinlich deutlich abgeschwächt werden.

Eine weitere Eigenschaft dieses Frameworks ist, dass es alle Plattformeinflüsse komplett vom Entwickler abschirmt und somit das schreiben von Plugins kinderleicht macht.

ProjectAccess

Wie schon erwähnt, ist es notwendig, dass die Art der Speicherung von Projektdaten unabhängig von der Programmlogik wird (Punkt 3 oben). Und somit wurde die Klasse "ProjectAccess" geschrieben, welches genau die hierzu benötigten Abstrahierungen und Services zur Verfügung stellt. Die eigentliche Art der Speicherung (Binär als File oder in einer Datenbank, usw.) wird über ein Backend-Plugin realisiert, welches mittels des Plugin Frameworks verwaltet wird. Diese Plugins defnieren evenfalls, was für Informationen für den Zugriff auf die Projektdaten nötig sind. Dies ist natürlich höchst unterschiedlich, je nachdem ob es sich um einen einfachen Dateizugriff handelt oder um einen Datenbank-Zugriff bei der IP-Adresse, Username und Passwort usw. verlangt werden. Der ExamMgr erkennt diese Unterschiede vollautomatisch und stellt entweder ein einfaches FileDialog für den Zugriff dar, oder ein komplexes Dialogfenster mit einer editierbaren Parameter-Tabelle. Das Backend-Plugin muss hierzu lediglich die benötigten Parameter bekannt machen, alles Weitere geschieht automatisch.

Import/Export

Hier kommen wird zu einem sehr wichtigen Teil der Applikation. Über die Import- und Exportfunktionen wird die Verbindung zur Aussenwelt ermöglicht.

Bisher waren die Funktionen monolithisch im Hauptprogramm integriert. Logischerweise waren die hierzu zuständigen Routinen zum Aufruf der Funktionen zueinander sehr ähnlich, aber nicht so ähnlich, dass eine Funktion für alle Aufrufe ausreichte. Sie unterschieden sich meist in der Anforderung unterschiedlicher Parameter/Dateien. Dies führte zu unnötigen Komplexitäten und somit zur Verschleierung der Programmstruktur.

Dieses Problem wurde ebenfalls über die Verwendung von einer Plugin-API gelöst. Aus Sicht des Hauptprogramms gibt es nur noch die Unterscheidung zwischen Import- oder Export-Plugin. Die Plugins müssen anschliessend selbst über entsprechende Dialoge die notwendigen Parameter anfordern. Somit wird dieser Teil von Komplexität aus dem Hauptprogramm ausgegliedert.

ConfigAccess

Überall im Hauptprogramm und in den Plugins und Komponenten ist die Sicherung von Parametern notwendig. Um dies einfach zu ermöglichen wurde ein generischen Konfigurations-Framework integriert, welches das Abspeichern und Anfordern von Daten ermöglicht, ohne dass der Nutzer sich Gedanken über das "wie" und "wann" der Speicherung machen muss. Diese Daten werden als Qt-Kontainerobjekte übergeben (QString, QMap, QStringList) und über numerische ID's identifiziert. Diese Daten sind Programmübergreifend verfügbar (also auch für die Plugins) und werden vollautomatisch bei der Beendigung der Applikation gespeichert.

Der Zugriff erfolgt über ein Singleton-Pattern. Somit ist sicher gestelllt, dass das die Konfigurationsdaten für alle gleichzeitig sichtbar und aktuell sind.

Sonstiges (Interessante Erweiterungen)

Auch wenn die meisten Veränderungen eher "unter der Haube" erfolgten und dem Benutzer nicht sichtbar sind, so sind doch einige Erweiterungen und Verbesserungen zu verzeichnen:

  1. Darstellung der Studentendaten: Während bei der Version 0.6 lediglich die Attribute einsehbar und veränderbar waren, die von dem ExamMgr "verstanden" werden (non-costum data), so können jetzt alle Attribute eingesehen und verändert werden. Diese zusätzlichen Attribute entstehen dann, wenn bei einem Import Attribute existieren, die für die eigentliche Arbeit des Programms gar nicht benötigt werden. Diese Attribute werden trotzdem gespeichert und können beim Export weider ausgegeben werden (z.B. über <CUSTOM="key"> im Template-Export).
    Diese Attribute sind nun im Programm auch sichtbar und können verändert werden.
  2. Die Konfigurationen wurden in ein zentrales Fenster zusammengefasst. Dies machte es übersichtlicher und ermöglicht die Integration in das MacOS-X Look-And-Feel (aufruf durch Menü "Programmname->Preferences"). Das Konfigurationsfenster ermöglicht auch die Einsicht in die gespeicherten Einstellungen der ProjectAccess Backends (nur für Backends, die komplexere Parametersätze verwenden), die automatisch angelegt werden. Auch die Veränderung ist dort möglich.

Zukunft und noch einmal ProjectAccess

Das Notenberechungs-Modul ist noch monolithisch. Geplant ist, dass die grafischen Elemente (Tabellen, Statistiken, ...) als Komponenten aus einer Library ausgewählt werden können und der User sich somit seinem eigenen Geschmack oder den eigenen Bedürfnissen folgen kann.

Auch, wenn diese Funktionalität noch nicht in der nächsten Version verwirklicht wird (jetzigen Änderungen sollen bis März stabilisiert und abgeschlossen werden), so sind wenigstens schon einmal die Grundvorraussetzungen getroffen worden:

  • Das existierende Plugin-Framework ist bereit, grafische Komponenten zu unterstützen
  • Projektaccess ist so implementiert, so dass eine Kopie des Objekts nicht zu einer Verdopplung der internen Strukturen führt (Qt nennt das Shallow Copy). Somit erlaubt eine Kopie eines Projekts immer noch den Zugriff auf das gleiche Projekt.

    Dies ermöglicht eine einfache Art des Kommunikation: Werden von einer Komponente Daten gespeichert, so muss die Änderung über die Funktion "commit()" abgeschlossen werden. Erfolgt dieses, so wird in Zukunft über das Signal "projectChanged()" alle angeschlossenen Komponenten über die Änderungen informiert und können die eigene Visualisierung aktualisieren.

    Alle grafischen Komponenten haben somit die Infrasturktur zur Verfügung, um immer den aktuellen Datensatz darzustellen und sich somit zu synchronisieren.

Da Stabilität der Applikation über neue Funktionen geht, wird diese Erweiterung erst in der übernächsten Version integriert werden.

Abschließend noch ein kleiner Hinweis auf die geplante Integration in das Hochschul Informationssystem:

HIS plant die Verfügbarkeit einer Schnittstelle, an die Applikationen andocken können. Dies wird aber noch auf sich warten lassen, so wird es erstmal bei der Excelbasierten Import/Export Lösung bleiben. Sobald sich hier etwas verbessert, wird es in die folgende Version des ExamMgr's integriert!

Posted by Stefan Eilers at 2:10 PM
Edited on: Samstag, März 25, 2006 7:33 PM
Categories: News, Übersicht: ExamMgr

Sonntag, Januar 15, 2006

Was so passiert ist: Jahreswechsel.. Neuer Job..

Hallo!

Die letzten Wochen ist bei der Entwicklung des ExamMgr nicht wirklch viel passiert. Das liegt daran, dass sich privat in den letzen Wochen einiges verändert hat.

Ich bin inzwischen von Hannover nach Darmstadt (genau genommen nach Griesheim) umgezogen, wo ich seit Januar für die Firma basysKom (www.basyskom.de) arbeite. Meine Zeit als wissenschaftlicher Mitarbeiter der Uni-Hannover ist somit beendet, was mir in Zukunft sicherlich nicht unbedingt mehr Zeit für die Entwicklung des ExamMgr's verschaffen wird. Aber die schlimmsten Dinge sind bereits abgeschlossen (das interne Redesign für die Zukunft) und die nächste Release wird es ganz sicher im März geben. Aber Enwickler sind aufgerufen an der Weiterentwicklung teilzuhaben, vor allem weil jetzt eine Dokumentation der Plugin-API existiert (siehe: http://exammgr.sourceforge.net/ExamMgr_Plugin_API.pdf) und somit keine tieferen Einblicke in die Sourcen des Systems mehr nötig sind um das Progamm zu erweitern.

Was mir momentan ziemliche Kopfschmerzen bereitet, ist die Kompilation der Windows-Version. Es gelingt mir momentan nicht, eine DLL der common-library zu erzeugen, die funktioniert. Und dieses dämliche Visual Studio sagt immer nur "Ist kaputt" ohne mir zu sagen, wo das Problem liegt. Unter Linux und Mac funktioniert es dabei tadellos.. :( Falls dies ein Windows-Freak liest, möge er sich bitte bei mir melden! Ich verschwende momentan jedenfalls wertvolle Zeit auf dieser Baustelle, obwohl ich lieber andere (und eigentlich wichtigere) Dinge machen müsste. Naja.

In Kürze werden jedenfalls weitere Alpha-Versionen für den Mac und für Linux veröffentlicht, um das Testen bei den Usern zu ermöglichen.

Stefan

Posted by Stefan Eilers at 7:02 PM
Edited on: Samstag, März 25, 2006 7:34 PM
Categories: News

Sonntag, März 12, 2006

Version V 0.7 ist online!

Ab sofort steht die Version 0.7 in der finalen Release im Download-Verzeichnis zur Verfügung! Diese Fassung steht für Windows (NT, 2000, XP) und MaxOS-X (10.4.5, alias Tiger) zur Verfügung. Binärversionen Linux werden diesemal wohl nicht veröffentlicht! Unter Linux ist die Kompilation des Projekts kinderleicht, sofern Qt3-Developerpakete installiert sind. Sollte jemand hierfür Hilfe benötigen, so stehe ich dafür gerne zur Verfügung!

HIS stellt leider noch keine automatische Import-/Exportschnittstelle zur Verfügung, daher muss leider noch immer der manuelle Vorgang über Excel-Dateien erfolgen. Lesen Sie hierzu bitte die beigelegte Datei "Introduction.rtf"!

Sobald HIS die Möglichkeit bereitstellt, die Daten eleganter zu importieren/exportieren, werden wir die hierfür notwendigen Plugins nachliefern!

Falls es beim Import der HIS-Excel Files zu Problemen kommt, so sind die erzeugten Excel-Dateien mit Excel zu öffnen und unter einem anderen Namen - aber dem gleichen Format! - wieder zu speichern. Dann sollte der Import funktionieren.

Neu in V 0.7:

  • Verbesserung des User-Interfaces. Insgesamt logischere Bedienung vor allem der Exportfunktionen, da die Export-Plugins eigene Dialoge besitzen.
  • Das Plugin "Template-Export" ermöglicht nun eine Gruppierung nach verschiedenen Kriterien. Somit können Ausgabedateien erzeugt werden, die z.B. nur Studenten enthält, welche die gleichen Prüfungsnummern haben.
  • Custom-Einträge werden nun auch im Dialog der Studenten dargestellt und können editiert werden.
  • Umfangreiche Erweiterbarkeit durch Plugins (Import, Export, Notenberechnung und Speicherung der Projektdaten)
  • Gemeinsames Konfigurationsfenster, das alle Einstellungen übersichtlicher darstellt.
  • Zugriff auf Konfigurationsdaten, die von Plugins abgespeichert werden.
  • Unterstützung von variablen Notenintervallen, die je nach Prüfungsnummer individuell vergeben werden können. Hierzu ist das Notenplugin "Dynamic Intervals" zu verwenden.
  • Neues Plugin für die variable Notenberechnung "Dynamic Intervals". Dieses Plugin ist noch experimentell und bietet noch keine Berücksichtigung von mündlichen Ergänzungsprüfungen!
  • Das im Hauptfenster einzustellende Datum wird als "Bewertungsdatum" exportiert. Dies war vorher das Prüfungsdatum.
  • Update des Plugins "Template-Export": <LABNR> ist durch <CUSTOM="labnr"> zu ersetzen

Bei Problemen/Fragen stehe ich gerne unter stefan <at> eilers-online.net zur Verfügung, soweit meine Zeit das zulässt.!

Ansonsten hoffe ich, dass das Programm hilfreich ist! :)

Posted by Stefan Eilers at 7:38 PM
Edited on: Sonntag, April 02, 2006 3:35 PM
Categories: News, Übersicht: ExamMgr

Samstag, März 25, 2006

Wechsel von CVS zu Subversion

Da Sourceforge nun SVN anbietet, habe ich das CVS Repositorio zu Subversion übertragen lassen. Es bietet einige Vorteile, die ich gerne nutzen möchte.

Ab sofort werden alle Änderungen nur noch in Subversion vorgenommen! Es wird somit empfohlen, lokale CVS-Kopien entsprechend zu ersetzen.

Posted by Stefan Eilers at 7:55 PM
Edited on: Samstag, März 25, 2006 7:58 PM
Categories: News