Anleitung für den ProFormA-Editor

Der ProFormA-Editor ermöglicht es, eine XML-Datei für Programmieraufgaben komplett neu zu erstellen. Außerdem kann eine existierende XML-Datei (ggf. auch in einer abweichenden Formatversion) eingelesen werden, geändert und im aktuellen Format 2.0 exportiert werden. Das XML-Format entspricht dem Standard für den Austausch von Programmieraufgaben entsprechen.

Die Programmieraufgaben bestehen im Wesentlichen aus einer Aufgabenbeschreibung und geeigneten Testfällen. Diese sollen üblicherweise die Funktionaität der studentischen Einreichung überprüfen. Es können aber je nach Zielsetzung auch andere Kriterien hinzugezogen werden (Compilierbarkeit, Stil, Robustheit, Performance...).

Die Testfälle nutzen bekannte Standards, die je nach gewählten Programmiersprache zur Verfügung stehen (z.B. JUNIT und Checkstyle bei Java).

Der Editor nutzt Funktionen, die nicht jeder Browser in der benötigten Form unterstützt. Chrome (getestet mit Version 72.0.3626.96 (64-bit)) und Firefox (getestet mit 65.0 (64-Bit)) sind hier die Browser der Wahl.
In Internet Explorer und Safari funktioniert der Export nicht. In Edge funktioniert der Export vermutlich, ist aber nicht getestet.

Aufbau des Editors

Der Editor gliedert sich in mehrere Reiter (auch als Tabs oder Registerkarten bezeichnet), die jeweils unterschiedliche Bestandteile einer Aufgabe beinhalten:

Erstellen einer neuen Aufgabe

Zunächst wird unter dem Main-Reiter die Aufgabenbeschreibung erstellt. Damit wird vor allem die studentische Sicht auf die Aufgabe festgelegt. Sie besteht aus:

Dazu muss weiterhin die Programmiersprache aus einer Liste ausgewählt werden.

In einem weiteren Abschnitt kann die studentische Einreichung eingeschränkt werden, um bereits auf Client-Seite einige Fehler abfangen zu können (z.B. maximale Dateigröße).

Hier können auch ein oder mehrere Templates (Code-Schablonen) angegeben werden. Diese erleichtern dem Studierenden den Einstieg in die Aufgabe und helfen, lange Schnittstellenbeschreibungen zu vermeiden.
Bei Verwendung des Editors im Lernmanagementsystem wird dieser beim ersten Darstellen der Aufgabe mit der Schablone vorbelegt. Der Lernende kann dann seinen Code direkt in die Schablone tippen.
Wird der Filepicker eingesetzt, wird die Code-Vorlage als Download angeboten.

Wichtig ist im gesamten Formular: Alle mit einem roten Stern (*) gekennzeichneten Felder müssen ausgefüllt sein, damit eine Aufgabe exportiert werden kann.

Musterlösung

Die Musterlösung wird im Reiter Musterlösung eingegeben. Sie besteht aus dem Quellcode, der sinnvollerweise in einem externen Editor bzw. einer entsprechenden Entwicklungsumgebung erstellt und vorab getestet wird.

Die Datei wird entweder über die [open...]-Option der Filename-Auswahlliste oder am einfachsten per Drag&Drop in den Editor geladen.

Wichtig: Wenn die studentische Eireichung nur aus Text in einem Editor (im Gegensatz zu einer hochgeladenen Datei) besteht, so wird dieser Text im Grader in einer Datei gespeichert, die denselben Namen wie die Musterlösung trägt. Es ist daher auf den korrekten Namen der Musterlösung zu achten.

Tests

Die Tests bilden den Kern der Aufgabe. Sie werden vom Grader ausgeführt, um eine Bewertung der studentischen Einreichung zu ermitteln. Hier müssen entprechend der Programmiersprache und der Aufgabenstellung geeignete Tests definiert werden. Der Editor bietet abhängig von der Programmiersprache unterschiedliche Testmöglichkeiten an: Bei Java gibt es z.B. JUnit- oder Compiler-Tests.

Testskripte werden analog zur Musterlösung hinzugefügt.

Anhand der verschiedenen Knöpfe unten auf der Test-Seite können weitere Tests hinzugefügt werden.

Dateien

Jede Datei muss einen Namen mit einer entsprechende Endung (z.B. .java) erhalten. (Werden die Dateien über die [open...]-Option oder per Drag&Drop geladen, so wird der Original-Dateiname automatisch übernommen.)

Eine Besonderheit gibt es für Java-Dateien. Hier wird der Dateiname aus dem Dateiinhalt ermittelt (Package und Klassenname). Stimmt er nicht mit dem echten Dateinamen überein, so erscheint eine Warnung.

Alle Dateien sollten mit Tests, der Musterlösung oder auf der Hauptseite (Template, ...) verknüpft sein.

Dateien haben je nach Anwendungszweck eine unterschiedliche Sichtbarkeit:

Anzeige (interne Bezeichnung)BedeutungBeispielNutzung durch Gradersichtbar für Studierende
Downloadable File(s)enthält enthält weitere Details zur Aufgabenstellung (z.B. pdfs) oder Code, den der Studierende benötigt, um seine Lösung zu entwickeln.
Gleichzeitig kann die Datei auch in einem der Tests beim Compilieren/ Linken eingebunden werden.
pdf, Java-Interface-Klasse, jar-Datei, c-Header nur, falls zusätzlich in Test eingebundenx
Code-Schablone Code-Schnipsel (skeleton), der vom Studierenden bis zur vollständigen Lösung ergänzt werden soll. Klassenrahmen mit Funktionsrümpfen -x
TestTestskripte, Bibliotheken u.ä., die entsprechend dem Testtyp in der Sandbox oder aber ausgeführt werden JUNIT-Dateien, Checkstyle-Dateien xnur, falls zusätzlich in Liste der Downloadable Files
MusterlösungMusterlösung(en) x (i.allg. aber nicht benutzt)abhängig vom LMS und dessen Einstellungen

Sichtbar für Studierende bedeutet, dass sie die Dateien zumeist als Download angeboten bekommen.

Die Musterlösung wird dem Studierenden nur nach der Einreichung angezeigt und auch nur dann, wenn der Lehrende dies im LMS einschaltet. Der Grader sieht die Musterlösung, nutzt sie im Normalfall aber nicht.

Dateien beinhalten zumeist Tests, zum Beispiel Unittests, Blackbox Tests oder statische Tests. Der Zweck jeder Datei wird dadurch angegeben, dass sie mit einem Test oder einer Musterlösung verknüpft wird. Die Verbindung zwischen der Datei und ihrem Zweck erfolgt über den Dateinamen.

Exportieren und Zippen

Sobald alle gewünschten Dateien und Tests hinzugefügt wurden, kann die Aufgabe als Zip-Datei exportiert werden. Dazu wird der Save Zip File-Knopf verwendet.

Importieren einer bestehenden XML-Datei

Eine XML-Datei oder eine Zip-Datei, welche eine task.xml enthält, können auch zu Bearbeitungszwecken eingelesen werden. Dazu wird über den Load Task...-Knopf eine Datei gesucht und geladen. Die Aufgabe kann nun wie oben beschrieben verändert und auch wieder exportiert werden.