<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Frankfurt, Germany, September</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Integration von DevOps in Lernplattformen</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Paul Grimm</string-name>
          <email>paul.grimm@cs.hs-fulda.de</email>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <volume>10</volume>
      <issue>2018</issue>
      <abstract>
        <p>Die Weiterentwicklung in den Arbeitsstrukturen für die Softwareentwicklung sollten dazu führen, dass diese Entwicklungen auch in die Programmierausbildung integriert werden, indem beispielsweise vermehrt Aspekte von DevOps, einem aktuellen Ansatz in der Softwareerstellung, der sich insbesondere durch Automatisierung und eines geeigneten Monitorings auszeichnet, in die Lehre und den dazu genutzten Lernumgebungen integriert werden. Statt mit Lernumgebungen nur künstliche Lerninseln zu schaffen, in denen Lehrende Feedback an Lernende geben, könnten neuartige Lernumgebungen bereits umfassender auf Prozessen und Tools basieren, die im beruflichen Alltag eine große Rolle spielen. Ein direkter Vorteil könnte auch ein besseres und schnelleres Feedback für die Lernenden sein.</p>
      </abstract>
      <kwd-group>
        <kwd>Programmieren</kwd>
        <kwd>Programmierung</kwd>
        <kwd>DevOps</kwd>
        <kwd>Continuous Integration</kwd>
        <kwd>Lernumgebungen</kwd>
        <kwd>eLearning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Üblicherweise werden in der Programmierausbildung von den Lehrenden Aufgaben
herausgegeben, die dann nach der Bearbeitung durch die Lernenden abgegeben bzw.
vorgezeigt werden. Abschließend kann eine manuelle oder automatisierte Bewertung
erfolgen. Hierzu können Lernplattformen wie Moodle [Mo18] in Kombination mit
entsprechenden PlugIns wie CodeRunner [Co18] zum Einsatz kommen. Als Feedback
erhält der Lernende somit entweder eine Antwort des Lehrenden oder die automatisierte
Antwort. Konsequenterweise könnte ein Ansatz in der Programmierausbildung sein, dass
anstelle bisherigen Abgabemöglichkeiten über Lernplattformen ein
Versionsmanagementsystem (wie z.B. Subversion [Su18] oder Git [Gi18]) zum Einsatz kommt, über das alle
Abgaben zu erfolgen haben. Feedback könnte in diesem Sinne dank einem
Automatisierungstools wie Jenkins [Je18] mit Hilfe von Unit-Tests und anderen
Monitoringelementen erfolgen, die das toolgestützte manuelle Code Review unterstützen.
Ähnlich wie bei PlugIns wie CodeRunner erhalten die Lernenden direkt bei der Abgabe
durch die automatische Auswertung der Unit-Tests ohne Zeitverzögerung das Feedback
über die Qualität ihrer Abgabe. Zudem lernen die Studierenden direkt die Vorteile einer
testgetriebenen Entwicklung (Test-Driven-Developments, TDD) kennen.
Grundlegend muss betrachtet werden, welche Implikationen an die Didaktik durch die
vorgeschlagene Vorgehensweise resultieren und welche Anforderungen daraus wieder an
die technische Umsetzung abgeleitet werden können. Wenn für eine gesamte Gruppe ein
gemeinsames Codeverwaltungssystem eingesetzt wird, so führt dies beispielsweise dazu,
dass jeder Lernende Zugriff auf die Abgaben aller Anderen erhält. Der automatische
Reflex hierbei ist, dass dies nicht möglich sein darf, um Plagiate bei den Abgaben zu
verhindern. Andererseits wäre es wünschens- und erstrebenswert, dass Lernende die
Lösungen der anderen mit der eigenen Lösung vergleichen. Nicht nur erhält hierdurch
jeder Lernende gute Anregungen, er lernt auch, wie fremder Code betrachtet werden muss
bzw. wie man sicherstellt, dass der eigene Code von anderen gelesen werden kann.
Interessant ist die Vorstellung, dass es für einen gesamten Studiengang oder einen
Fachbereich ein einziges gemeinsames Versionsmanagementsystem gibt statt getrennte
für einzelne Kurse. Hierüber würden Studierende nicht nur erlernen, wie große
Repositories gut strukturiert werden können, es würden sich auch Synergieeffekte dadurch
ergeben, dass Lernende wie Lehrende nicht jedes Mal eine neue Umgebung kennen lernen
bzw. aufsetzen müssen und immer die gleiche zuverlässige
AutomatisierungsInfrastruktur vorfinden würden. Dies würde soweit führen, dass diese auch für Projekte
und Abschlussarbeiten der Lernenden genutzt werden könnten.</p>
      <p>Das Ergebnis einer Integration von DevOps in Lernumgebungen hätte auf jeden Fall den
Vorteil, dass Lernende von ersten Tag der Hochschulausbildung an langsam an die
Arbeitsorganisation im späteren Berufsleben herangeführt werden können. Während zu
Beginn das Feedback durch Code Review, Unit Tests und Monitoring die
Lerngeschwindigkeit positiv beeinflussen könnten, kann im Verlauf der
Programmierausbildung immer mehr erklärt werden, wie die eigentliche Lernumgebung aufgebaut ist und
wie die Arbeitsprozesse durch den Aufbau unterstützt werden können.
Dieser Beitrag gibt Anregungen für die Weiterentwicklung von Lernumgebungen für die
Programmierausbildung. Da die Programmierausbildung sehr vielfältig ist, konnten hierzu
nur einzelne Ideen vorgeschlagen werden bzw. nur einzelne Aspekte betrachtet werden
ohne dass daraus ein Anspruch auf Vollständig abgeleitet wird.</p>
      <p>Literaturverzeichnis
[Ha15]
[Mo18]
[Co18]
[Su18]
[Gi18]</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Hasselbring</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>DevOps: Softwarearchitektur an der Schnittstelle zwischen Entwicklung und Betrieb</article-title>
          ,
          <volume>10</volume>
          .7.
          <year>2015</year>
          , http://eprints.uni-kiel.de/29215/1/2015-07-10Architekturen.pdf,
          <source>Zugriff am 27.6</source>
          .2018 Moodle, https://moodle.org,
          <source>Zugriff am 27.6</source>
          .2018 CodeRunner PlugIn für Moodle, https://moodle.org/plugins/qtype_coderunner,
          <source>Zugriff am 27.6</source>
          .2018 Subversion, https://subversion.apache.org,
          <source>Zugriff am 27.6</source>
          .2018 Git, https://git-scm.com,
          <source>Zugriff am 27.6</source>
          .2018
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>