=Paper= {{Paper |id=Vol-2066/seels2018paper01 |storemode=property |title=Ein Schnittstellen-Datenmodell der Variabilität in automatisch bewerteten Programmieraufgaben (An Interface Data Model of Variability in Automatically Graded Programming Tasks) |pdfUrl=https://ceur-ws.org/Vol-2066/seels2018paper01.pdf |volume=Vol-2066 |authors=Robert Garmann |dblpUrl=https://dblp.org/rec/conf/se/Garmann18 }} ==Ein Schnittstellen-Datenmodell der Variabilität in automatisch bewerteten Programmieraufgaben (An Interface Data Model of Variability in Automatically Graded Programming Tasks)== https://ceur-ws.org/Vol-2066/seels2018paper01.pdf
        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