Ein Schnittstellen-Datenmodell der Variabilität in automatisch bewerteten Programmieraufgaben Robert Garmann Fakultät IV – Wirtschaft und Informatik Hochschule Hannover 30459 Hannover, Germany robert.garmann@hs-hannover.de Zusammenfassung—Automatisch bewertete, variable Pro- reichung hinsichtlich korrekter Funktion und hinsichtlich grammieraufgaben stellen besondere Schnittstellenanforderun- weiterer Qualitätsaspekte untersucht. gen an Autobewerter (Grader) und Lernmanagementsysteme (LMS). Um Wiederverwendung von Aufgaben über Es spricht einiges dafür, Aufgaben als Aufgabenschablonen Systemgrenzen hinweg zu begünstigen, schlagen wir vor, mit variablen Stellen, sog. Variationspunkten (Vp) zu konzipie- Aufgabenschablonen durch eine von allen beteiligten Systemen ren. Durch Einsetzen individueller Variablenwerte entstehen genutzte Middleware zu instanziieren und dabei automatisch sehr viele Aufgabeninstanzen, deren Schwierig- Variabilitätsinformationen in einem Schnittstellen-Datenmodell keitsgrad2 je nach Zielsetzung entweder vergleichbar ist oder zu transportieren. Wir stellen ein solches Datenmodell vor, intentionsgemäß variiert. So lassen sich etwa Zusatzaufgaben welches für die Grader-unabhängige Kommunikation mit LMS gleicher Schwierigkeit für intensives Üben generieren oder ausgelegt ist und beispielhaft im Autobewerter Graja aber am individuellen Lernstand ausgerichtete Aufgabeninstan- implementiert wurde. Zudem wird eine Dialogkomponente für zen unterschiedlicher Schwierigkeit. Im summativen Assess- die manuelle Werteauswahl vorgestellt, die auch bei großen ment können Aufgabenvarianten gleicher Schwierigkeit indivi- Wertemengen effizient und Grader-unabhängig einsetzbar ist. duell jedem Studierenden zugeordnet werden und so helfen, Die Eignung des Dialogs und des Datenmodells wird anhand Plagiate zu unterbinden. eines typischen Bewertungsszenarios diskutiert. Die variablen Stellen einer Aufgabe und deren konkrete Abstract—Automatically graded, variable programming tasks Werte müssen an den Schnittstellen zwischen LMS, Middle- put special interface requirements on auto-graders and learning ware und Grader übertragen werden (Abschnitt IV). Dieser management systems (LMS). To promote reuse of tasks across Beitrag stellt ein hierfür geeignetes Datenmodell vor (Abschnitt system boundaries, we propose that all involved systems should V) und plausibilisiert dieses anhand einer Beispielaufgabe (Ab- instantiate task templates through a middleware, while schnitt III). Das Datenmodell wurde in einer unabhängig von transporting variability information in an interface data model. einem konkreten Grader implementierten Klassenbibliothek We present such a data model, which is designed for grader- realisiert. Die grundsätzliche praktische Eignung konnten wir independent communication with LMS and was implemented anhand einiger variabler Programmieraufgaben für den Grader exemplarily in the Graja auto-grader. In addition, a dialogue Graja belegen (Abschnitt VI). component for manual value selection is presented, which can be used efficiently and grader-independently, even with large value sets. We discuss the suitability of the dialogue and the data model II. VERWANDTE ARBEITEN for a typical grading scenario. Insbesondere in den Fachgebieten Mathematik und Physik werden individualisierbare Aufgaben schon länger eingesetzt Stichwörter—individuelle Programmieraufgaben; Grader; Autobewerter; E-Assessment; Variabilität (s. etwa [8]). Aber auch in der Informatik gibt es Ansätze. Die im Folgenden beispielhaft genannten Lösungen sind allerdings entweder nur in einem eingeschränkten Systemumfeld einsetz- I. EINLEITUNG bar oder fokussieren auf einfache Codeanalyse-Aufgaben. Der Im formativen E-Assessment bearbeiten Studierende ver- Beitrag [12] beschreibt ein sehr einfaches System zur Generie- pflichtende Programmieraufgaben1 im Selbststudium. Die über rung von Varianten für C++-Programmieraufgaben. In [9] wird ein Lernmanagementsystem (LMS) eingereichten Lösungen ein Ansatz zur Generierung individueller Aufgaben für ein werden entweder direkt oder über eine spezielle Middleware Teilgebiet der Programmierung (Auswertung von Ausdrücken) [6] an einen Autobewerter (Grader) gegeben, der die Ein- diskutiert. Der Aufsatz [1] berichtet über das QuizPACK-Sys- tem für parametrisierte Aufgaben für die Sprache C, das später 1 für Java portiert wurde. Dieses System stellt „parameterized Mit Programmieraufgaben bezeichnen wir Aufgaben, in denen ein code-execution exercises“, bei denen Studierende ein gegebe- Programm in einer Programmiersprache erstellt werden muss (Synthese). Einfachere Aufgaben, die sich mit der Analyse eines gegebenen Quelltextes 2 befassen, sind für das hier betrachtete unüberwachte Selbststudium nur Für Ideen zur systematischen Ermittlung der Variantenschwierigkeit bedingt geeignet. s. z. B. [10]. SEELS 2018: Software Engineering für E-Learning-Systeme @ SE18, Ulm, Germany 52 nes Programm durchdenken müssen und dann Fragen wie Einige Vp verändern intentionsgemäß die Schwierigkeit der „Welchen Wert hat die Variable x?“ beantworten müssen. Aufgabe. Z. B. fordert set=„A-Z, Œ“ im Gegensatz zu „A-Z“ Codesynthese-Aufgaben werden nicht unterstützt. i. d. R. die Berücksichtigung von Zeichenkodierungen. Andere Vp wie precision dienen der möglichst zahlreichen Varianten- In der Produktlinienentwicklung werden Variabilitätsmo- bildung bei gleichbleibender Schwierigkeit. Weitere Vp wer- delle genutzt, um Varianten und deren sog. Constraints dar- den je nach Wahl anderer Vp sogar überflüssig: der letzte Satz zustellen. Beispielhaft seien die Common Variability Language der Aufgabe, der die Behandlung von Kleinbuchstaben fordert, (CVL, [7]) und das Orthogonal variability model [11] genannt. ist bei set=„0-9“ zu streichen3. Die Tabelle enthält auch einen Die Produktlinienentwicklung hat mit individualisierbaren Pro- achten „versteckten“ Vp countLower, der zwar nicht im Auf- grammieraufgaben gemeinsam, dass Variablen, Wertausprä- gabentext, aber in weiteren Artefakten auftaucht [4]. gungen und teilweise komplexe Randbedingungen formuliert werden müssen. Die Möglichkeiten solcher Ansätze gehen weit über die Erfordernisse einer variablen Programmieraufgabe IV. SYSTEMUMFELD UND ANFORDERUNGEN hinaus. Das verwundert nicht, da in der Produktlinienentwick- In einem typischen Szenario lädt die Lehrkraft im LMS lung Modelle mit hunderten von Variablen keine Seltenheit eine im ProFormA-Format vorliegende Aufgabenschablone sind [11], während wir in variablen Programmieraufgaben mit hoch und reicht zum Test eine Musterlösung ein. In einem Dia- kaum mehr als einer kleinen zweistelligen Anzahl von log gibt sie für jeden Vp Werte ein, die zur Musterlösung pas- Variablen rechnen. sen. Der Dialog leitet die Lehrkraft und verhindert die Eingabe ungültiger Vp-Wertkombinationen. Das LMS erstellt mit den III. BEISPIELAUFGABE Werten eine Aufgabeninstanz, sendet diese und die Musterlö- sung an eine Grading-Middleware bzw. an den Grader und Die in Abb. 1 gezeigte Programmieraufgabe liege im Pro- zeigt abschließend das zurück erhaltene Feedback an (Abb. 2). FormA-Format [13] als automatisch bewertete Java-Aufgaben- schablone vor. Zur Aufgabe gehören weitere Artefakte. Bei- Für einen Studenten erstellt das LMS im Moment des erst- spielsweise definiert der Grader Graja [3] u. a. JUnit-Testme- maligen Aufrufs eine individuelle Aufgabeninstanz. Es nimmt thoden, Regeln zur statischen Codeanalyse und Bewertungs- eine zufällige, die Vp-Abhängigkeiten berücksichtigende Wert- vorschriften als Teil einer Aufgabe. belegung vor und lässt ggf. weitere Faktoren wie die Lernhisto- rie des Studenten in die Auswahl einfließen. Das LMS spei- Die grauen Stellen in Abb. 1 definieren sieben sog. Varia- chert die für den Studenten geltende Variante persistent ab. Der tionspunkte (kurz Vp), deren Wertemengen in TAB. I. gelistet eigentliche Einreichungs- und Bewertungsvorgang über die sind. Ein wichtiger Parameter ist die domain (werden Buchsta- Middleware unterscheidet sich nicht von einer „normalen“ ben oder Ziffern gezählt?), von der weitere Vp-Wertemengen Aufgabe. Ggf. kann das LMS, wenn die Aufgabe gelöst wurde, abhängen. Bspw. hängt der className von domain ab. eine individuelle neue Variante zu Übungszwecken anbieten. Write a main method in class %vp{className} in the default package In dem Szenario ist das LMS für die Auswahl von Wertbe- that reads a series of characters from user input. Your program should legungen und Aufgabeninstanziierungen alleine verantwortlich. output a statistic of %vp{domain} in the input, i. e. the percentage of Das LMS wird jedoch kaum ohne die Unterstützung des Gra- characters in { %vp{set} }. Example (user input is highlighted): ders auskommen. Ggf. liegen die von den Vp betroffenen Auf- Give me characters, please: %vp{input} gabenartefakte in proprietären Binärformaten vor. Nur der Gra- %vp{output} % are %vp{domain} der wird letztverantwortlich aus einer Aufgabenschablone eine Your program should print %vp{precision} decimal places of the per- centage value. %vp{lowerSentence} Instanz erzeugen können. Einfache Aufgabenteile wie den Auf- gabentext kann ggf. das LMS autark instanziieren. Abb. 2 stellt Abb. 1. Beispielaufgabe mit variablen Stellen (Variationspunkte) dar, wie das LMS auf einen sog. Instanziierungsdienst zurück- greift, welcher aus einer Aufgabenschablone und einer vorge- gebenen „Auflösung“ der Variationspunkte (cvr) eine Aufga- TAB. I. VARIATIONSPUNKTE DER BEISPIELAUFGABE beninstanz erzeugt. Ggf. bedient sich der Instanziierungsdienst Name: Typ Sinnvolle Werte dabei weiterer Unterstützung des betroffenen Graders, der Die Beispieleingabe {„x.ÜL:0€ÁHDú/7Ú“}. Hier nicht hierfür eine spezielle Instanziierungsfunktion anbietet. input: String variiert aus Platzgründen. tt + cvr tt + cvr Instantiation service Grader domain: String {„letters“, „numbers“} middleware ti Instantiation className: {„Letters“}, falls domain=„letters“ ti engine String {„Digits“, „Numbers“, „Figures“}, sonst LMS {„A-Z“, „A-Z, Ä, Ö, Ü“, „A-Z, Œ“}, für domain=„letters“ ti + sm ti + sm set: String Grading {„0-9“, „0-9, I, V, X, L, C, D, M“}, sonst fb Grading service engine countLower: {null}, falls set=„0-9“ middleware fb Boolean {true, false}, sonst {„“}, falls countLower=null, Abb. 2. Nutzung eines Instanziierungsdienstes. Abkürzungen: tt = task lowerSentence: template (Aufgabenschablone), ti = task instance (Aufgabeninstanz), {„Lowercase should be counted.”}, falls countLower=true String cvr = composite variation resolution (Auflösung aller Variationspunkte {„Lowercase should not be counted.”}, sonst precision: zu konkreten Werten), sm = submission (Einreichung), fb = Feedback. {1-9} Integer 3 output: String Die erwartete Ausgabe wie sie im Aufgabentext steht. Die in [11] beschriebene Abhängigkeit „Variant excludes variation point“ ist hiermit vergleichbar. SEELS 2018: Software Engineering für E-Learning-Systeme @ SE18, Ulm, Germany 53 Der Instanziierungsdienst entscheidet auch über den Zeit- Der Benutzer arbeitet sich oben beginnend durch alle Vp punkt, in dem variable Artefakte einer Aufgabe in konkrete durch. Wenn zu einer getätigten Auswahl Abhängigkeiten zu Artefakte überführt werden. Diese sog. binding time kann von weiter unten stehenden Vp bestehen, schränkt der Dialog die Artefakt zu Artefakt variieren. Details und weitere Szenarien, unten auswählbaren Werte geeignet ein. Vp, die keine Auswahl in denen ein Instanziierungsdienst nutzbringend eingesetzt erlauben (bspw. output) werden ohne Eingabemöglichkeit werden kann, sind in [4] beschrieben. dargestellt. Abb. 3 zeigt, wie nach Wechsel der domain zu „numbers“ der Regler für className mit drei Auswahloptionen Wir wollen im ProFormA-Format vorliegende Aufgaben erscheint (erkennbar an den Einrastpositionen), während set LMS- und Grader-unabhängig individualisieren. Wir benötigen nur noch zwei statt drei Optionen anbietet. Wir haben einen dazu eine Grader-unabhängige Sprache zur Beschreibung der Schieberegler als Interaktionselement gewählt, weil dieser Vp, die es LMS in verschiedenen technischen Umgebungen ressourcenschonend auch bei großen Wertemengen zu Beginn erlaubt, das oben beschriebene Szenario umzusetzen. Die Be- lediglich die Anzahl der Optionen kennen muss, um dann bei schreibung soll Wertemengen und gegenseitige Vp-Abhängig- jedem Schiebeereignis den zur aktuellen Reglerposition keiten enthalten und dabei sowohl komplexe als auch geringe zugehörigen Wert on-the-fly zu berechnen. Abhängigkeiten redundanzarm abbilden. Die Auswahl gültiger Vp-Wertkombinationen muss effizient unterstützt werden. Bedingung für die Eignung des Schiebereglers ist, dass sich die Werte jedes Vp durch einen fortlaufenden Index aufzählen V. EIN DATENMODELL DER VARIABILITÄT lassen und dass der zu einem gegebenen Index gehörige Wert effizient ermittelbar ist. Die im weiteren Verlauf beschriebene Wir haben ein in XML repräsentierbares Datenmodell ent- Spezifikation der Wertemenge erfüllt diese Bedingung. wickelt, welches eine Teilmenge des von mehreren Vp aufge- spannten mehrdimensionalen Raums beschreibt. Neben Grund- B. Variabilitätsmodell der Beispielaufgabe operationen wie kartesisches Produkt und Vereinigungsmenge werden weitere Operationen unterstützt, die es erlauben, die Vp In Abb. 4 veranschaulichen wir für die obige Beispielauf- redundanzarm und damit wartbar zu spezifizieren. Kontinuier- gabe das im nachfolgenden Abschnitt C allgemein spezifizierte liche Wertebereiche werden mit einer vorzugebenden Datenmodell. Schrittweite diskretisiert. Zudem kann man Vp-Werte von an- deren Vp-Werten ableiten4, indem eine Javascript-Funktion in die XML-Beschreibung eingebettet wird. Wir wählten Java- script wegen der weiten Verbreitung auf Serverplattformen und im Browser. A. Benutzersicht Wir beginnen mit der Benutzersicht des weiter unten be- schriebenen Datenmodells, um dessen effiziente und Grader- unabhängige Einsetzbarkeit zu plausibilisieren. Abb. 3 zeigt die Benutzersicht für die Werteauswahl. Abb. 3. Dialog in zwei verschiedenen Zuständen zur Auswahl einer den Abb. 4. AND-XOR-Baum zur Beschreibung der Vp der Beispielaufgabe. Abhängigkeiten genügenden Wertbelegung AND-Knoten repräsentieren kartesische Produkte, XOR-Knoten stehen für Vereinigungsoperationen und Einzelwertangaben. 4 Ableitungen ähneln dem Konzept der VSpec derivations in [7] SEELS 2018: Software Engineering für E-Learning-Systeme @ SE18, Ulm, Germany 54 Die fünf Kinder des Wurzel-AND-Knotens (Nr. 1) besagen, dass sich alle Werte aufzählen lassen, wenn man Wertemengen für die Vp (input), (domain, className, set, countLower), (lowerSentence), (precision) und (output) aufzählt und diese geeignet zu achtdimensionalen Tupeln zusammensetzt. Die Zusammensetzung muss alle Kindknoten einbeziehen, da es sich um einen AND-Knoten handelt. Sie beginnt links mit einer einelementigen und eindimensionalen Menge S2 für input (XOR-Knoten 2). Die Menge S2 wird (da Knoten 1 ein AND- Knoten ist) kartesisch mit der vierdimensionalen Menge S4 für (domain, className, set, countLower) multipliziert (S2×S4). Der Inhalt von S4 entsteht als Vereinigungsmenge (XOR) der Mengen S9 S19, die ihrerseits kartesische Produkte sind. Besonders sind die Knoten 18 und 33, die ihren Wertebereich S18=S33={true, false} durch Verweis auf die Wertemenge des Knotens 5 erhalten, der die Wertemenge vorab unter dem Sym- bol „id1“ definiert5. Bewegen wir uns zu den Geschwistern des Knotens 4 nach Abb. 5. UML-Diagramm des Datenmodells. Die Menge unterstützter Daten- rechts weiter. Der XOR-Knoten 34 repräsentiert eine Opera- typen (VpT) ist beliebig erweiterbar. tion, die S2×S4 mit dem folgenden Javascript-Fragment (Kno- ten 35) für lowerSentence „kombiniert“: Um Redundanz und lange Auflistungen zu vermeiden, function apply(o) { ergänzen wir spezielle Definitions- und Referenzierungsknoten if (o.countLower===null) return ""; (Def, Ref), Bereichsknoten (Range) und Ableitungsknoten if (o.countLower===true) (Derivation6). Der Wurzelknoten besitzt mit dem Attribut cvp return "Lowercase should be counted."; eine Spezifikation aller Vp der Aufgabe. Nachfolgerknoten return "Lowercase should not be counted."; speichern die für den jeweiligen Teilraum geltenden Vp7. }; Um alle Vp zwecks Erzeugung einer Aufgabeninstanz (ti, Die Vorschrift zur Bildung der resultierenden sechsdimen- Abb. 2) aufzulösen, wird ein CVr-Objekt (composite variant sionalen Menge ist kein einfaches kartesisches Produkt, da die resolution) benötigt. Dieses beinhaltet einen Vektor vom Typ Menge S34 nicht vorab bekannt ist. Die Bildungsvorschrift, die CV, der je Vp die gewählte Variante speichert. wir als ⓓerivation-Operation notieren, ist wie folgt: Für jedes Element e aus (S2×S4), füge (e, apply(e)) zum Ergebnis D. XML-Fragment (S2×S4)ⓓS4 hinzu. Weiter geht es mit dem XOR-Knoten 36. Die hierin als Wertebereich definierte eindimensionale Menge Um einen Implementierungseindruck zu zeigen, skizzieren S36={1, …., 9} für precision wird wieder kartesisch multipli- wir in Abb. 6 einen Teil der XML-Repräsentation des Daten- ziert (S2×S4ⓓS4×S36). Die letzte Operation für Knoten 38 modells der Beispielaufgabe aus Abschnitt III. Das vollstän- gleicht der für lowerSentence mit einer hier aus Platzgründen dige Beispiel wird in [4] besprochen. nicht wiedergegebenen Javascript-Funktion für output 9: (S2×S4ⓓS4×S36ⓓS38). : : : : C. UML-Klassenmodell : : Nachdem wir das Beispiel durchgesehen haben, stellen wir 10: nun das Datenmodell als UML-Klassendiagramm vor (Abb. 5). 11: : Wo inhaltlich Parallelen bestehen, haben wir uns bei der Be- 12: nennung von Entitäten an [11] und [7] orientiert. Ein Varia- 13: : tionspunkt (Vp) besitzt einen Namen (key) und einen Datentyp 14: (VpT) mit optionaler Vergleichsgenauigkeit (accuracy). Eine 15: 16: Ausprägung des Vp ist eine Variante (V) mit einem Wert. Alle 17: Vp einer Aufgabe zusammen sind in einem composite variation : 18: point (CVp) zusammengefasst. Eine Aufgabenschablone (tt, : Abb. 2) enthält eine Komposition der Spezifikationen aller Vp der Aufgabe (CVSpec, composite variation specification). Ein Abb. 6. Fragment der XML-Repräsentation der CVSpec der Beispielaufgabe. CVSpec-Objekt ist Wurzelknoten einer Hierarchie von Die führenden Zeilennummern korrespondieren mit den rautenförmig umrandeten Ziffern der Abb. 4. CVSpecNode-Objekten. Die Hierarchie beschreibt alle Vp- Werte durch geschachtelte Vereinigungsmengen (Collect…), 6 Details zum DerivativeAggregateType: s. [4]. kartesische Produkte (Combine…) und Wertangaben (Val). 7 Das cvp-Attribut ist optional, da jeder Knoten die zugehörigen Vp leicht vom Mutterknoten ermitteln lassen kann. Verpflichtend ist cvp, wenn 5 Mit dem Define-Knoten verwandt ist das Konzept von feature lokale Umordnungen von Vp in Kindknoten gewünscht sind, um die model references [2]. Spezifikation kompakter zu gestalten. Mehr Details: s. [5]. SEELS 2018: Software Engineering für E-Learning-Systeme @ SE18, Ulm, Germany 55 VI. EINSATZ variabler Stellen in Artefakten könnte zumindest für einige Das Datenmodell wurde bereits für mehrere Java-Aufgaben häufig in Programmieraufgaben vorkommende Artefakte stan- für den Grader Graja prototypisch eingesetzt. Dabei wurden dardisiert werden. aus unserer bisherigen Lehrpraxis entnommene Aufgaben mit Der derzeit in JavaFX realisierte Auswahldialog (Abb. 3) Vp ausgestattet und deren Wertemengen und Constraints als soll nach Javascript portiert werden, um einen breiten Einsatz AND-XOR-Baum beschrieben. Das entsprechende, den Baum in verschiedenen LMS zu erleichtern. Zudem soll er um die repräsentierende XML-Dokument wurde in die Graja-Aufgabe Möglichkeit einer manuellen Texteingabe erweitert werden, aufgenommen, die damit zu einer Aufgabenschablone wurde. damit auch solche Vp effizient manuell aufgelöst werden kön- Um einem „proof of concept“ nahe zu kommen, wurden Auf- nen, die auf große, nur dem Grader bekannte, proprietäre Wer- gaben unterschiedlichen Umfangs umgesetzt: Programmierung temengen zurückgreifen. eines einzelnen Ausdrucks, einer (main-)Methode sowie einer ganzen Klasse. Dabei wurden alle in Abschnitt V beschriebe- Schließlich sollen sukzessive weitere Aufgaben aus unserer nen Konzepte praktisch eingesetzt: Wertebereich, Werteauf- Lehrpraxis auf der Basis des hier beschriebenen Datenmodells zählung, kartesisches Produkt, Vereinigungsmenge, Ablei- variabel umgestaltet und im Feld erprobt werden. Dabei sollen tungsvorschrift, Definition und Referenzierung. andere Grader und Programmiersprachen einbezogen werden. Zur dialogbasierten Eingabe (vgl. Abb. 3) sowie zur zu- REFERENCES fallsbasierten Auswahl einer gültigen Wertebelegung (cvr) wurde eine eigens implementierte, kleine Bibliothek eingesetzt, [1] Brusilovsky, P.; Sosnovsky, S.: Individualized exercises for self- assessment of programming knowledge: An evaluation of QuizPACK, die unabhängig von der in der Aufgabe geforderten Program- ACM Journal of Educational Resources in Computing, Vol. 5, No. 3, miersprache und dem Grader ist. Die Bibliothek implementiert 2005. effiziente Datenstrukturen: Intervallbäume für intervallskalierte [2] Czarnecki, K.; Kim, C.H.P.: Cardinality-based feature modeling and Vp, balancierte Suchbäume für ordinalskalierte Vp. Unter der constraints: a progress report. In: Proceedings of the International praxisnahen Annahme, dass die Anzahl der Knoten im AND- Workshop on Software Factories at OOPSLA, San Diego, California, XOR-Baum deutlich kleiner als die Anzahl gültiger Vp-Wert- USA, 2005. kombinationen ist, diskutiert [4] ausführlich die Effizienz die- [3] Garmann, R.: Der Grader Graja. In (Bott, O. J. et. al. Hrsg): Automatisierte Bewertung in der Programmierausbildung. Waxmann, ser Datenstruktur und liefert damit einen Hinweis auf die prin- Münster, 2017. zipielle Eignung des vorgeschlagenen Datenmodells für die [4] Garmann, R.: Spezifikation von Variabilität in automatisch bewerteten effiziente Eingabe bzw. Auswahl von Vp-Werten. Programmieraufgaben, Bericht, Hochschule Hannover, http://nbn- resolving.de/urn:nbn:de:bsz:960-opus4-11893, 2018. Um die Aufgaben praktisch einsetzen zu können, wurde [5] Garmann, R.: Eine Java-Bibliothek zur Spezifikation von Variabilität in eine speziell auf Graja zugeschnittene „Instantiation engine“ automatisch bewerteten Programmieraufgaben. Bericht, Hochschule implementiert [4]. Diese erzeugt derzeit Aufgabeninstanzen (ti) Hannover. http://nbn-resolving.de/urn:nbn:de:bsz:960-opus4-11874, u. a. durch einfache Such- und Ersetzungsoperationen. Die 2018. Graja-„Grading engine“ bewertet Einreichungen zu Aufgaben- [6] Garmann, R.; Heine, F.; Werner, P.: Grappa – die Spinne im Netz der instanzen i. w. wie gewöhnliche Aufgaben. Autobewerter und Lernmanagementsysteme. In (Pongratz, H. et. al. Hrsg.): DeLFI 2015: Die 13. e-Learning Fachtagung Informatik. Derzeit liegen Einsatzerfahrungen mit Graja im Labor vor, Gesellschaft für Informatik, Bonn, S. 169-182, 2015. die sich nach unserer Einschätzung unmittelbar auf einen Ein- [7] Haugen, Ø.: Common Variability Language (CVL) – OMG Revised satz im Feld übertragen lassen. Die Anbindung der Graja- Submission. OMG document ad/2012-08-05, 2012. Instantiation engine an das an der HS Hannover eingesetzte [8] Kashy, D.A.; Albertelli, G.; Ashkenazy, G.; Kashy, E.; Ng, H.-K.; LMS Moodle und damit der Einsatz der variablen Aufgaben in Theonnessen, M.: Individualized interactive exercises: A promising role for network technology. In: Proc. of the 31st ASEE/IEEE Frontiers in einer realen Lehrveranstaltung mit vielen Studierenden steht Education Conference (Reno, NV), 2001. noch aus. Ein dazu benötigter Grader-unabhängiger Instanziie- [9] Krishna, A.K.; Kumar, A.N.: A problem generator to learn expression: rungsdienst als Middleware soll demnächst entstehen. evaluation in CSI, and its effectiveness, Journal of Computing Sciences in Colleges 16.4, S. 34-43, 2001. VII. AUSBLICK [10] Otto, B.; Goedicke, M.: Auf dem Weg zu variablen Programmieraufgaben: Requirements Engineering anhand didaktischer Das vorliegende Datenmodell soll für Grader-spezifische Aspekte. In: Proc. of the ABP 2017. CEUR Workshop Proceedings, Erweiterungen geöffnet werden. LMS, Instanziierungsdienst ceur-ws.org/Vol-2015/#ABP2017_paper_12, 2017 und Grader könnten auf dieser Grundlage die Verantwortung [11] Pohl, K.; Böckle, G.; van der Linden, F.: Software Product Line für die variation resolution (Vr) jedes Vp aushandeln. So könn- Engineering: Foundations, Principles, and Techniques. Springer, 2005. te das LMS die zufallsbasierte Vr eines Vp, dessen Werte- [12] Radosevic, D.; Orehavocki, T.; Stapic, Z.: Automatic On-line menge installationsabhängig nur dem Grader bekannt ist, Generation of Student's Exercises in Teaching Programming. In: Central European Conference on Information and Intelligent Systems, Varazdin, jenem überlassen. S. 87-93, 2010. Zudem sind die Auswirkungen von Vp auf instanziierte [13] Strickroth, S.; Striewe, M.; Müller, O.; Priss, U.; Becker, S.; Rod, O.; Artefakte derzeit noch „ad hoc“ realisiert. Die Notation Garmann, R.; Bott, O.J.; Pinkwart, N.: ProFormA: An XML-based exchange format for programming tasks, in: eleed, Nr. 11, 2015. SEELS 2018: Software Engineering für E-Learning-Systeme @ SE18, Ulm, Germany 56