<!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 />
    <article-meta>
      <title-group>
        <article-title>Vermittlung von agiler Software- entwicklung im Unterricht</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Martin Kropp</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>martin.kropp@fhnw.ch</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Meier</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>meea@zhaw.ch</string-name>
        </contrib>
      </contrib-group>
      <fpage>79</fpage>
      <lpage>89</lpage>
      <abstract>
        <p>Über den Hype hinaus, der um agile Softwareentwicklung entstanden ist, zeigen verschiedene Umfragen, dass dieses Vorgehen in der Praxis in verschiedener Hinsicht tatsächlich zu Verbesserungen in der Durchführung von Software-Projekten führt. Firmen, die agile Methoden einsetzen, geben an, dass sie seither zufriedener mit ihrem Entwicklungsprozess sind und insbesondere der Umgang mit Anforderungsänderungen sich wesentlich verbessert hat. Andererseits sind entsprechend ausgebildete Fachleute jedoch Mangelware. In der Praxis sind deshalb Software Ingenieure mit Kompetenzen in agilen Methoden sehr gefragt. Was bedeutet dies für die Software-Technik Ausbildung an Hochschulen? Was sind die speziellen Herausforderungen? Wie kann agile Software Entwicklung, die neben konkreten Techniken und Praktiken auf der individuellen Ebene, auch auf Team-Ebene und Werte-Ebene spezielle Anforderungen stellt, überhaupt vermittelt werden? Wie kann die Ausbildung von agiler Softwareentwicklung in die Ingenieur-Ausbildung integriert werden?</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Zusammenfassung</title>
      <p>In diesem Artikel stellen wir unser Konzept zur
Ausbildung von agilen Methoden an Hochschulen
vor und berichten über unsere Erfahrungen als
Dozierende.</p>
    </sec>
    <sec id="sec-2">
      <title>Einleitung</title>
      <p>
        Jüngste Umfragen zeigen, dass agile Software
Entwicklungsmethoden in verschiedener Hinsicht zu
wesentlichen Verbesserungen in der Durchführung
von Software-Projekten führt [
        <xref ref-type="bibr" rid="ref1 ref2">1,2</xref>
        ]. Diese
Erfolgsmeldungen tragen wesentlich dazu bei, dass agile
Softwareentwicklungsmethoden in der IT-Industrie
eine immer grössere Akzeptanz finden.
      </p>
      <p>
        In der von den Autoren durchgeführten Studie
(Swiss Agile Study) über den Einsatz von Software
Entwicklungsmethoden in der Schweizer
ITIndustrie [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] wurden diese Aussagen bestätigt. Die
Studie liefert auch konkrete Zahlen über die
Verbreitung, den Nutzen, den Einsatz von konkreten
Praktiken, aber auch die Herausforderungen, die
mit agilen Methoden einhergehen.
      </p>
      <p>Um die Relevanz der agilen Methoden für die
Ausbildung zu ermitteln, war für uns unter anderem
die Beantwortung folgender Fragen wichtig:
1.</p>
      <p>Wie verbreitet ist agile Softwareentwicklung in
der Praxis?
2. Haben agile Methoden wirklich Vorteile
gegenüber den traditionellen, plan-getriebenen
Methoden?
3.</p>
      <p>Was sind die entscheidenden Erfolgsfaktoren
bei der agilen Softwareentwicklung?
Im nächsten Abschnitt werden wir die aus unserer
Sicht für die Ausbildung wichtigsten Resultate der
Studie vorstellen und danach einige Überlegungen
und Konsequenzen für die Ausbildung an (Fach-)
Hochschulen näher ausführen.</p>
      <p>Nach einer Übersicht über die wesentlichen
Elemente der agilen Methoden werden wir im
Anschluss unsere Konzepte vorstellen. Wir zeigen auf,
wie die erforderlichen Kompetenzen vermittelt
bzw. von den Studierenden erlernt werden können.
Anschliessend berichten wir über den konkreten
Umsetzungsstand und unsere Erfahrungen, die wir
gemacht haben.</p>
      <p>Den Abschluss bildet ein Ausblick über die
Weiterentwicklung der Konzepte und deren Umsetzung.</p>
      <sec id="sec-2-1">
        <title>Verbreitung und Nutzen von agilen Methoden</title>
        <p>In der Swiss Agile Study wurden mehr als 1500
ITFirmenmitglieder der teilnehmenden
ICTVerbände SwissICT, ICTnet und SWEN befragt, die
Rücklaufquote betrug knapp 10%. Dabei wurden
sowohl agil als auch nicht-agil arbeitende
Unternehmen einbezogen. Von den teilnehmenden
Unternehmen gaben 57% an, dass sie mit agilen
Methoden entwickeln.</p>
        <p>Auf die Frage, wie die agilen Methoden die
Entwicklung beeinflusst hat, gaben die Unternehmen
zu allen befragten Aspekten an, dass sich diese
verbessert (+) oder sogar sehr stark verbessert (++)
haben (siehe Tabelle 1). Dabei sind insbesondere
die Aspekte „Ability to manage changing
Requirements“ (89%), „Development Process“ (80%) und
„Time To Market“ (76%) zu nennen.</p>
        <p>Aspect
Time to market
1 Die Bewertungskriterien gehen von „Stark
verschlechtert (--) bis „stark verbessert“(++)
2 Sämtliche Angaben in Prozent; die fehlenden Prozent
auf 100 gaben an “Weiss nicht”.
3 Die Umfrage wurde auf Englisch durchgeführt, um alle
Sprachregionen der Schweiz abdecken zu können, daher
sind sowohl die Fragen als auch die Antwort-Optionen
auf Englisch.</p>
        <p>Kanban Pull System/Limited WIP
Tabelle 3. How important were the following agile
management and planning practices for your successful
agile projects?
Ein wichtiger Aspekt ist, dass die Zufriedenheit der
Unternehmen mit den agilen Methoden insgesamt
Aspect
Behavior Driven Development
(BDD)
Acceptance Test Driven
Development (ATDD)
Test Driven Development (TDD)
Coding standards
Collective code ownership
Pair programming
Unit testing
Refactoring
Automated builds
Continuous integration
Automated acceptance testing
Continuous delivery
Aspect
Release planning
Story mapping
On-site customer
Iteration planning
User stories
Daily standup
Taskboard
Burndown charts
Retrospective
Open work area
Tabelle 2. How important were the following agile
engineering practices for your successful agile
projects?3
Bei der Interpretation der Daten ist zu beachten,
dass gewisse agile Praktiken wie z.B. TDD, BDD,
ATDD auch bei agilen Unternehmen noch relativ
wenig im Einsatz sind, wie sich bei der Umfrage
gezeigt hat.</p>
        <p>Bei den Management Practices wurden als wichtigste
Aspekte Iterationsplanung (89%), User Stories
(83%) und Release-Planung (77%) genannt, dicht
gefolgt vom Einsatz eines Task Boards (74%).
-+
++
werden dabei insbesondere Kodierrichtlinien
(82%), Unit Testing (76%) und Continuous
Integration (70%) genannt.
-+</p>
        <p>++
24
22
16
9
12
32
17
25
14
16
26
23
18
26
27
7
10
25
20
38
28
25
23
17
20
29
40
33
25
25
35
26
32
28
38
37
41
33
36
40
32
45
22
34
40
13
21
18
10
4
12
20
2
3
8
4
20
12
11
3
4
0
0
4
2
5
11
12
27
8
17
30
42
30
18
51
28
40
38
14
17
40
21
24
53
43
33
29
24
30
11
4
deutlich höher ist als mit traditionellen
plangetriebenen Vorgehen (84% vs. 62%).</p>
      </sec>
      <sec id="sec-2-2">
        <title>Anforderungen an agile Ausbildung</title>
        <p>Im Rahmen der Studie haben wir auch erhoben, ob
agile Methoden überhaupt auf universitärer Stufe
unterrichtet werden sollten, und wie die
Kenntnisse der Bachelor- und Master-Absolventen von der
Industrie beurteilt werden. Dazu hatten die
Firmenvertreter der teilnehmenden IT-Firmen
folgende Aussage zu bewerten:
„Agile development should be an integral part of the
Computer Science curriculum“.</p>
        <p>Zur Auswahl standen folgende Antwort-Optionen
von “Stimme vollständig zu” bis “Stimme gar nicht
zu”.
95% der teilnehmenden Firmen stimmen der
Aussage zu („Stimme zu“: 49%, „Stimme vollständig
zu“: 46%).</p>
        <p>Andererseits geben die Unternehmen auf die Frage,
ob die Studienabgänger auf Bachelor- bzw.
Masterstufe genügend Kenntnisse in agilen Methoden
mitbringen mit klarer Mehrheit an, dass dies nicht
der Fall ist (Master-Stufe: 58%, Bachelor-Stufe:
68%).</p>
        <p>Somit sollte der Anspruch der Praxis an die
Hochschulen ernst genommen werden und die
Ausbildung an die neuen Anforderungen angepasst
werden. Dabei stellt sich die Frage, was die
Hochschulen in der Ausbildung ändern müssen, um den
neuen Anforderungen gerecht zu werden.
Dazu betrachten wir Anforderungen, die agile
Methoden an den einzelnen aber auch an das Team
und die Organisation stellt, auf drei verschiedenen
Ebenen:
1. Individuelle Ebene: Hier geht es vornehmlich
darum, welche agilen Engineering Practices
ein Software Ingenieur beherrschen sollte:
Clean Code, Test Driven Development,
Automation, Craftsmanship, um nur einige
Beispiele zu nennen.
2. Team Ebene: Die Team Ebene stellt vor
allem Anforderungen im Bereich
Management Practices: Selbstorganisierende Teams,
Schätzen und Planen, Continuous
Integration und Continuous Deployment, oder
Pair Programming. Selbstorganisierende
Teams wiederum verlangen eine hohe
soziale Kompetenz der Teammitglieder, wie
zum Beispiel hohe
Kommunikationsfähigkeit.
3. Werte Ebene: Auf dieser Ebene wird implizit
das Wertesystem der agilen
Softwareentwicklung betrachtet; wie die agilen Werte
wie Respekt, Offenheit, Ehrlichkeit, etc.
vermittelt werden können, so dass die
Absolventen „in der Wolle gefärbte“ Software
Ingenieure sind.</p>
        <p>
          Bei der Vermittlung der Anforderungen beziehen
wir uns schwerpunktmässig auf Scrum [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] und
eXtreme Programming (XP) [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], da diese in der
Schweiz (und auch international [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]) die am
weitesten verbreiteten agilen Methoden sind. Ausserdem
ergänzen sich diese Methoden aus unserer Sicht
sehr gut, da XP eher den Schwerpunkt auf die
Engineering Practices legt, während Scrum eher auf der
Management Ebene anzusiedeln ist.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Erfahrungen mit agiler Entwicklung im Unterricht</title>
        <p>
          Zum Thema der Integration von agilen Methoden
in den Unterricht liegen verschiedene
Erfahrungsberichte vor [
          <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
          ]. Die Autoren selbst
unterrichten seit über fünf Jahren zusammen die Vorlesung
Software Engineering and Architecture. Diese
Vorlesung ist Teil der Schweiz weiten gemeinsamen
Masterausbildung (Master of Science in
Engineering, MSE) der Schweizerischen Fachhochschulen
[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Die gemeinsame Masterausbildung betrachten
die Autoren als eigentlichen Glücksfall, da dadurch
Dozierende von verschiedenen Hochschulen
zusammen lehren und ihre Erfahrungen austauschen
können.
        </p>
        <p>Wir haben festgestellt, dass die Studierenden noch
relativ wenig Wissen über agile
Softwareentwicklungsmethoden mitbringen, wobei sich der
Wissenstand in den letzten Jahren leicht verbessert hat,
aber je nach Fachhochschule sehr unterschiedlich
ist. Dafür beobachten wir jedoch, dass das
Interesse der Studierenden an dem Thema umso grösser
ist.</p>
        <p>In unserer gemeinsamen Vorlesung haben wir den
Fokus ganz gezielt auf agile Softwareentwicklung
gelegt. Unter anderem unterrichten wir agile
Software Entwicklungsmethoden wie Scrum, eXtreme
Programming oder Kanban. Dabei haben wir die
Erfahrung gemacht, dass viele Studierende das
„Programmier-Handwerk“, welches eine der
Voraussetzungen für die erfolgreiche Durchführung
agiler Projekte darstellt, nicht beherrschen resp. nie
im Bachelor-Studiengang gelernt hatten. Unter
„Programmier-Handwerk“ verstehen wir das
Beherrschen von agilen Praktiken wie zum Beispiel
Clean Code, Refactoring, Test-Driven Development
oder Continuous Integration.</p>
        <p>
          Weiter halten die Autoren jeweils an ihrer
Fachhochschule [
          <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
          ] verschiedene Vorlesungen in
Programmieren und Software Engineering auf
Bachelor Stufe und haben damit begonnen, auch auf
dieser Stufe agile Software Entwicklungsmethoden
zu vermitteln.
Coding standards
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Agile Software Entwicklung</title>
      <p>Für ein besseres Verständnis der im Folgenden
vorgestellten Studienkonzepte und Lehr- und
Lernmethoden fassen wir hier die aus unserer Sicht
wichtigsten Eigenschaften der agilen
Softwareentwicklung zusammen.</p>
      <p>
        In erster Linie sind dabei natürlich die Werte und
Prinzipien des Agile Manifesto [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] zu nennen, die
auf der einen Seite zwar noch keine konkreten
Praktiken und Techniken vorgeben, aber mit Ihren
Prinzipien doch klare Anforderungen an eine agile
Vorgehensweise definieren.
      </p>
      <p>Aus diesen Prinzipien hat insbesondere extreme
Programming (XP) eine Anzahl ganz konkreter
Programmierpraktiken abgeleitet, ohne die aus
unserer Sicht eine agile Softwareentwicklung nicht
möglich ist.</p>
      <p>Auf Managementsicht gehört wohl Scrum zu den
Vorreitern der agilen Methoden. Scrum definiert
klare Regeln bzgl. Projekt- und Teamorganisation
sowie dem Requirements-Management.</p>
      <p>
        Neuere Ansätze wie Lean Software Development
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], die sich ebenfalls an den Prinzipien des Agile
Manifesto orientieren, zeigen weitere, interessante
Aspekte zur Umsetzung der agilen Software
Entwicklung auf.
      </p>
      <p>Die folgenden Tabellen fassen die aus unserer Sicht
wichtigsten Engineering und Management Practices
zusammen. Diese Einteilung wurde von uns für die
Studie entwickelt, um die Verbreitung der
genannten Praktiken in der Praxis zu ermitteln und hat
sich dabei als sehr zweckmässig erwiesen; wir
verwenden sie daher auch in diesem Artikel als
Grundlage für die folgende Diskussion über die
agile Ausbildung.</p>
      <p>Tabelle 4 gibt die Verbreitung der, vor allem von
XP definierten, konkreten Programmierpraktiken
in den befragten agilen Unternehmen wieder,
während Tabelle 5 die Verbreitung der Management
Praktiken aufzeigt. Besonders erwähnenswert
dabei ist, dass diese entsprechenden Werte bei
plangetrieben arbeitenden Unternehmen zwischen
10%-30% tiefer liegen. Dies ist doch umso
bemerkenswerter, als es sich bei vielen Engineering
Practices eigentlich nicht um spezielle agile Praktiken,
sondern um allgemeine Best Practices handelt. Es
lässt sich also sagen, dass die Anwendung von
agilen Methoden auch zur verstärkten Anwendung
von allgemeingültigen Best Practices führt.
Tabelle 4. Engineering Practices in der Praxis4
Management Practices
Verbreitung</p>
      <p>Kanban Pull System/Limited WIP
Tabelle 5. Management Practices in der Praxis5.
Die Werte zeigen deutlich, dass auch bei agil
entwickelnden Unternehmen erst relativ wenige der
erforderlichen bzw. empfohlenen Praktiken eine
breite Anwendung finden.</p>
    </sec>
    <sec id="sec-4">
      <title>Studienkonzept für agile Methoden</title>
      <p>Die Eigenschaften bzw. Anforderungen an eine
agile Software Entwicklung lassen sich nicht alle
auf die gleiche Art unterrichten, da sie
unterschiedliche Kompetenzen ansprechen. Für die
Entwicklung eines geeigneten Studienkonzeptes orientieren
wir uns daher an den zuvor eingeführten drei
Kompetenzebenen.
4 Den Firmen, die agile Methoden anwenden, wurde
folgende Frage gestellt: „Which of the following
engineering practices could be observed by someone visiting
your company in the next month“?
5 Den Firmen, die agile Methoden anwenden wurde
folgende Frage gestellt: „Which of the following
management and planning practices could be observed by
someone visiting your company in the next month“?</p>
      <sec id="sec-4-1">
        <title>Die drei Vermittlungsebenen</title>
        <p>Auf der individuellen Ebene werden insbesondere
die handwerklichen Grundlagen vermittelt. Ohne
das Beherrschen dieser fundamentalen Techniken
ist eine agile Entwicklung aus unserer Sicht nicht
möglich. Aus unserer Erfahrung sind die agilen
Techniken der individuellen Ebene am einfachsten
zu vermitteln. Dies liegt unserem Ermessen nach
daran, dass jeder Studierende einzeln daran
arbeiten kann.</p>
        <p>Darauf aufbauend können dann die Techniken der
agilen Entwicklung auf der Team-Ebene vermittelt
und erworben werden, die sich vor allem aus den
Management Praktiken zusammensetzen. Diese
Aspekte lassen sich aus unserer Erfahrung heraus sehr
gut in Gruppen- und Projektarbeiten vermitteln.
Die Konzeption, Organisation und Durchführung
solcher Arbeiten ist aufwendig.</p>
        <p>
          Sozusagen die Spitze der Kompetenzen der Agilen
Entwicklung bildet die Werte-Ebene. Diese agilen
Wertehaltungen wie sie im Agile Manifesto [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]
beschrieben werden, sind naturgemäss am
schwierigsten zu vermitteln. Wir versuchen die agilen
Werte punktuell immer wieder in den Unterricht
einfliessen zu lassen – oder ganz bewusst auch
vorzuleben.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Bachelor- und Master-Ausbildung</title>
        <p>
          Aufgrund der sich schon früh abzeichnenden
zunehmenden Bedeutung der agilen
Entwicklungsmethoden haben wir begonnen die grundlegenden
Methoden und Techniken der agilen Software
Entwicklung in Form der genannten Management und
Engineering Praktiken in das Bachelor-Programm
zu integrieren [
          <xref ref-type="bibr" rid="ref10 ref11">10,11</xref>
          ]. Dies wird im Folgenden
noch genauer erläutert.
        </p>
        <p>Auf Master-Stufe behandeln wir in unserem
gemeinsamen Kurs „Software Engineering and
Architecture“ fortgeschrittene Themen der agilen
Software Entwicklung wie Lean Development und
Kanban, Incremental Software Design und
Software Evolution.</p>
      </sec>
      <sec id="sec-4-3">
        <title>Unterrichtsmethoden</title>
        <p>Neben konventionellen Vorlesungen und
Programmierübungen verwenden wir als weitere
Unterrichtmethoden:




</p>
        <sec id="sec-4-3-1">
          <title>Case Studies (Fremde / Eigene)</title>
        </sec>
        <sec id="sec-4-3-2">
          <title>Gruppenarbeiten</title>
          <p>Gastreferate mit Referenten aus der
Software-Industrie</p>
        </sec>
        <sec id="sec-4-3-3">
          <title>Simulationen</title>
        </sec>
        <sec id="sec-4-3-4">
          <title>Medien: eBooks, Blogs, Internet.</title>
          <p>Wichtig ist die Repetition auf allen Ebenen, d.h.
regelmässiges Üben in verschiedenen Kontexten.
Deshalb kommen die verschiedenen Praktiken und
Techniken immer wieder in den verschiedenen
Vorlesungen vor. Nicht isoliertes Unterrichten der
einzelnen Praktiken steht im Vordergrund, sondern
die Verankerung an mehreren Stellen in der
Ausbildung. Das unterstützt insbesondere auch die
Werte Ebene, in dem die Dozierenden selbst im
Rahmen ihrer Möglichkeiten diese agilen Werte
vorleben.</p>
        </sec>
      </sec>
      <sec id="sec-4-4">
        <title>Beispiel Bachelor Programm</title>
        <p>Obwohl an den beiden Fachhochschulen, auch was
das Themengebiet Software Engineering angeht,
unterschiedliche Studienpläne existieren, haben
sich, unterstützt durch den intensiven Austausch,
viele Gemeinsamkeiten in der Vermittlung der
agilen Methoden ergeben.</p>
        <p>Abbildung 1 zeigt als ein mögliches Beispiel einen
Abbildung 1. Grundstudium Informatik
Ausschnitt des Informatik Bachelor-Programms der
Fachhochschule Nordwestschweiz.</p>
        <p>Das fachliche Grundstudium im
Bachelorstudiengang ist aufgeteilt in die vier Themenbereiche,
Modulgruppen genannt, Programmierung, Software
Engineering, sowie ICT Systeme und Mathematik.
Jede Modulgruppe besteht aus je 8 Modulen, die
spezielle Themen aus der jeweiligen Modulgruppe
abdecken. Jedes Modul hat einen Umfang von 3
ECTS Punkten.</p>
        <p>Begleitet wird die theoretische Ausbildung in den
Modulen durch eine vom ersten Semester an
beginnende Projektschiene, die sich bis in das 6.
Semester fortsetzt. In dieser setzen die Studierenden
in grossen Teams (7 bis 8 Studierende) und an
realen, d.h. von externen Kunden in Auftrag
gegebenen Projekten, die Theorie in die Praxis um. Dabei
werden in den beiden Jahresprojekten der ersten 4
Semester unterschiedliche Schwerpunkte gesetzt.
Die explizite Ausbildung in agilen Methoden wird
insbesondere in den Modulen Software
Konstruktion im 2. Semester und Software Projekt
Management im 3. Semester der Modulgruppe Software
Engineering vorgenommen. In den Projekten und
den sonstigen „programmierlastigen“ Modulen
wird darauf geachtet, dass auch hier die
vermittelten agilen Praktiken zum Einsatz kommen.
In den folgenden Kapiteln beschreiben wir, wie wir
an beiden Fachhochschulen die verschiedenen
Praktiken und Techniken im Unterricht vermitteln.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Engineering Practices</title>
      <p>Bei der Besprechung der Practices orientieren wir
uns an der Liste aus Tabelle 4.</p>
      <sec id="sec-5-1">
        <title>Coding Standards</title>
        <p>
          Bereits im ersten Semester führen wir Coding
Standards in der Einführungsvorlesung ins
Programmieren ein. Wir kombinieren Coding Standards mit
Clean Code [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], um so bei den Studierenden von
Anfang an auch das Bewusstsein für eine „saubere“
Programmierung zu wecken. Mit dem Einbezug
von Clean Code haben wir sehr gute Erfahrungen
gemacht, da dies den konkreten praktischen
Nutzen von Coding Standards sichtbarer macht.
Von nicht zu unterschätzender Wichtigkeit ist bei
der Einführung der Aspekt des Feedbacks. Das
wird wie folgt gehandhabt:
Normalerweise gehört zu jeder Vorlesung eine
Programmieraufgabe. Der Dozierende führt mit
jedem Studierenden einen Code Review durch und
gibt ein ausführliches Feedback. Das Feedback ist
im Allgemeinen mündlich, kann aber auch
schriftlich erfolgen.
        </p>
        <p>Das Feedbackgeben durch den Dozierenden ist
zwar mit einen grossem Aufwand verbunden, ist
aus unserer Erfahrung aber entscheidend für den
Lernerfolg.</p>
        <p>
          Coding Standards müssen natürlich durch die
verwendete integrierte Entwicklungsumgebung
(IDE) unterstützt werden. Minimal sollte die IDE
auch Unterstützung für einfache Refactorings wie
Rename Method oder Rename Variable bieten.
Ebenfalls gute Erfahrungen haben wir mit
Werkzeugen wie Checkstyle [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] gemacht, welches direkt
in der IDE anzeigt, falls die Coding Standards
verletzt werden.
        </p>
        <p>Sehr positive Erfahrungen haben wir mit dem
frühzeitigen Einsatz dieser Konzepte und
Werkzeuge (z.B. im 2. Semester im Rahmen des Modul
Software Konstruktion) zusammen mit Continuous
Integration Umgebungen gemacht. Durch eine frühe
Einführung werden die Studierenden animiert,
diese Praktiken auch in ihren Projekten
einzusetzen, was auch sehr häufig auf freiwilliger Basis
geschieht, da sie die Vorteile solcher Umgebungen
schon früh erkennen.</p>
      </sec>
      <sec id="sec-5-2">
        <title>Unit Testing</title>
        <p>Unit Testing wird im ersten Semester eingeführt.
Dabei ist besonders wichtig, dass diese Praktik
nicht nur in speziellen Modulen unterrichtet wird,
sondern, dass auch sonstige programmierlastige
Module Unit Tests einfordern oder vorgeben, um
so z.B. die erfolgreiche Implementierung einer
Programmieraufgabe zu überprüfen.</p>
        <p>So können zum Beispiel im ersten Semester
während der Einführung ins Programmieren Unit Tests
bei Übungen vorgegeben werden. Die Aufgabe gilt
als erfüllt, wenn das zu entwickelnde Programm
alle Unit Test besteht. Die Studierenden lernen so
spielend die Nützlichkeit von automatischen Tests
kennen und erleben nebenbei, wie wertvoll Tests
als Dokumentation sind.</p>
        <p>Anschliessend wird das automatische Testen mit
White-Box/Black-Box Tests und Äquivalenzklassen
formal eingeführt. Die Studierenden sind dann in
der Lage, einfache Testfälle selbstständig zu
schreiben. In den höheren Semestern werden mit
zunehmendem Know-how anspruchsvollere Testfälle mit
Mock-Objekten entwickelt und verschiedene
Testmuster eingeführt. Das automatische Testen sollte
sich durch möglichst alle programmier-nahen
Vorlesungen durchziehen.</p>
        <p>Ein anderer erprobter Weg ist, dass die
Studierenden schon vom ersten Semester an in den
Programmier-Modulen das Schreiben von einfachen
Unit-Tests mittels Unit Testing Frameworks
kennenlernen und in den Projekten anwenden.
Anschliessend erhalten sie im zweiten Semester im
Modul Software Konstruktion eine vertiefte
Einführung in das systematische Testen und
fortgeschrittene Themen wie Mock Testing kennen, die
sie dann wiederum in den Projektarbeiten für das
fortgeschrittene Testen einsetzen können.</p>
      </sec>
      <sec id="sec-5-3">
        <title>Refactoring</title>
        <p>Test Driven Development (TDD) baut auf
automatischen Unit Tests auf. Neben Kenntnissen in Unit
Testing brauchen die Studierenden auch
Kenntnisse in Refactoring. Mit anderen Worten sind gute
Kenntnisse in Refactoring eine Voraussetzung für
TDD.</p>
        <p>Die einfachsten Code-Refactorings werden bereits
am Anfang des Studiums zusammen mit den
Coding Standards und der IDE Unterstützung
eingeführt. Komplexere Design-Refactorings werden
in den folgenden Semestern eingeführt. Dazu wird
ein Katalog der verschiedenen Refactorings
abgegeben und mit den Studierenden durchgearbeitet.
Ergänzt wird dieses Thema durch die Anwendung
von komplexeren Refactorings wie Extract Class,
Extract Method, Move Method anhand von Case
Studies z.B. bei Überschreitungen von
Schwellwerten bei Qualitätsmetriken.</p>
      </sec>
      <sec id="sec-5-4">
        <title>Test Driven Development (TDD) und Refactoring</title>
        <p>TDD ist eine anspruchsvolle Engineering Practice.
Um TDD wirklich zu beherrschen, wäre es am
Besten, wenn die Studierenden einen erfahrenen
Software-Entwickler als Coach zur Seite hätten. Da dies
im Rahmen einer Vorlesung oder Übungsstunde
nicht wirklich realisierbar ist, sind alternative
Vorgehensweisen nötig:
Bewährt haben sich folgende Alternativen:
 Case Studies
 Programming Katas
 Experten Videos
 Bücher und Fachartikel
Während den Studierenden mittels Experten
Videos und Fachliteratur die konzeptionellen
Aspekte des TDD vermittelt werden können, sollen Case
Studies und Programming Katas den Studierenden
dazu dienen, den TDD Ansatz praktisch zu üben
und insbesondere dessen Einfluss auf Testbarkeit
und Software Design selbst zu erfahren.</p>
      </sec>
      <sec id="sec-5-5">
        <title>Automated Builds</title>
        <p>Automated Builds werden mit Hilfe von
AntSkripts und einem Code Versioning System (CVS) wie
zum Beispiel SVN oder GIT eingeführt. Um den
vollen Nutzen der Build-Automatisierung zu
erfahren, bauen die Studierenden anhand einer
konkreten Case Study über ein ganzes Semester ein
Automatisierungsskript kontinuierlich aus, so dass
das Kompilieren, Testen, Code Analysieren, als
auch das Packaging der Software vollständig
automatisiert durchgeführt werden kann.</p>
        <p>Automated Builds sind eine Voraussetzung für
Continuous Integration und werden im nächsten
Kapitel genauer angeschaut.</p>
      </sec>
      <sec id="sec-5-6">
        <title>Continuous Integration (CI)</title>
        <p>Automated Builds und Continuous Integration
werden mittels einer konkreten Fallstudie in einer
Gruppenarbeit vermittelt und ebenfalls schon
frühzeitig im Studium eingeführt (z.B. im Rahmen des
Moduls Software Konstruktion im 2. Semester). In
einem ersten Schritt wird das Beispielprojekt in ein
Code Versioning System importiert. Im zweiten
Schritt werden die Build-Skripts entwickelt, damit
das Beispielprojekt automatisiert gebaut werden
kann. Im dritten Schritt Konfigurieren die
Studierenden den CI-Server (Jenkins). Im vierten Schritt
werden verschiedene Jenkins-Erweiterungen
besprochen und ausprobiert. Dabei werden
verschiedene Metriken wie Code Coverage, Bindungsstärke
von Klassen, Code Complexity, aber auch Lines of
Code (LOC) behandelt.</p>
        <p>
          Fortgeschrittene Metriken werden in höheren
Semestern (Bewertung einer Software Architektur im
4. Semester Software Entwurf [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]) oder im
MasterStudiengang (Technical Debit [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]) behandelt.
Es hat sich als zweckmässig erwiesen, den ganzen
Bereich der Software Konstruktion in einer eigenen
Vorlesung zusammenzufassen. Da Kenntnisse in
Software Konstruktion eine wichtige
Voraussetzung für erfolgreiche Projekt- und Bachelorarbeiten
sind, sollte die Vorlesung bereits im zweiten oder
dritten Semester durchgeführt werden.
        </p>
        <p>Der nachhaltige Erfolg der frühzeitigen Einführung
dieser Praktiken zeigt sich unter anderem daran,
dass Studierende selbstständig eine solche
Infrastruktur für ihre Projektarbeiten anfordern und
einsetzen.</p>
      </sec>
      <sec id="sec-5-7">
        <title>Pair Programming</title>
        <p>Pair Programming üben wir nicht speziell. Es wird
zusammen mit den anderen Engineering Practices
eingeführt und die Studierenden werden
ermuntert, Pair Programming bei Gelegenheit gezielt
einzusetzen und für sich zu entscheiden, ob es für
sie eine Option darstellt oder nicht.</p>
        <p>Wir haben die Beobachtung gemacht, dass die
meisten Studierenden ganz automatisch eine Form
von Pair Programming einsetzten. Sehr oft setzten
sich zwei Studierende zusammen an einen
Computer und lösen eine Programmieraufgabe
gemeinsam. Es scheint also so etwas wie eine natürliche
Vorgehensweise beim Programmieren zu sein.</p>
      </sec>
      <sec id="sec-5-8">
        <title>Automated Acceptance Testing</title>
        <p>
          Auf Automated Acceptance Testing gehen wir
ebenfalls im Rahmen der Vorlesung Software
Konstruktion ein. Es wird ein Überblick über das
Konzept anhand des Test Frameworks Fit [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]
vermittelt und Akzeptanztests geschrieben. Diese Tests
werden auch in den CI-Build Prozess integriert.
        </p>
      </sec>
      <sec id="sec-5-9">
        <title>Collective Code Ownership</title>
        <p>Ebenso wie Pair Programming wird auch das
Thema der Collective Code Ownership nicht explizit
unterrichtet. Die Studierenden werden jedoch
durch Verwendung von Versionskontrollsystemen,
Anwendung von Coding Standards und Wechseln
der Verantwortlichkeiten in den Projekten dazu
ermuntert, diese Praktik auszuprobieren.</p>
      </sec>
      <sec id="sec-5-10">
        <title>Fortgeschrittene Engineering Practices</title>
        <p>Die weiteren Engineering Practices wie Continuous
delivery, Acceptance Test Driven Development
(ATDD) oder Behavior Driven Development (BDD)
sprengen unserer Ansicht nach den Rahmen eines
Bachelor Studiums. Denkbar, und aus unserer Sicht
auch sinnvoll, wäre es, diese weiteren Engineering
Practices zukünftig im Master Studium zu
behandeln, da wir davon ausgehen, dass diese Praktiken
in Zukunft an Bedeutung gewinnen werden.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Management Practices</title>
      <p>Wie aus Tabelle 5 zu entnehmen ist, sind bei den
Management Practices diejenigen am weitesten
verbreitet, welche sich direkt mit der Projektplanung
befassen. Nicht unerwartet wird die Planung
vorwiegend unter Verwendung von User Stories
gemacht. Überraschenderweise sind Retrospektiven
in der Praxis, trotz deren unbestritten hohem
Nutzen, nicht sehr weit verbreitet.</p>
      <p>
        Die Management Practices betreffen vorwiegend die
Team Ebene. Teamarbeiten sind im Gegensatz zu
den Engineering Practices, welche vorwiegend die
Individuelle Ebene betreffen, nicht einfach in den
Unterricht zu integrieren. Die meisten Management
Practices können nur sinnvoll in einem grösseren
Team im Rahmen eines „richtigen“ Projekts
sinnvoll geübt werden. Oft ist es aber nicht
zweckmässig oder aus zeitlichen Gründen unmöglich, ein
solches Projekt durchzuführen. In diesem Fall kann
die Situation mit einem der agilen Games wie zum
Beispiel dem XP-Game [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] oder Scrum-City-Game
[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] simuliert werden.
      </p>
      <sec id="sec-6-1">
        <title>Scrum</title>
        <p>Als agile Projektmethode verwenden wir Scrum.
Die verschiedenen Studien zeigen, dass Scrum am
weitesten verbreitet ist. Scrum bietet auch den
Vorteil, dass die Anzahl der roles, events und artifacts
klein ist.</p>
        <p>Wir haben die Erfahrung gemacht, dass die
Funktionsweise von Scrum schnell im Unterricht erklärt
werden kann. Der schwierige Teil kommt bei der
Einführung. Wenn die Studierenden Scrum (oder
eine andere Projektmethode) wirklich anwenden
sollen. Wie kann im Unterricht ein Klima
geschaffen werden, so dass die Studierenden sich wie in
einem „echten“ Projekt fühlen? Wenn sie das
Gefühl haben, dass es sich um ein „Alibi“-Projekt
handelt, setzten sie sich nicht ein und profitieren
entsprechend wenig.</p>
      </sec>
      <sec id="sec-6-2">
        <title>XP-Game</title>
        <p>
          Das XP-Game [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] simuliert ein agiles Projekt. In
drei bis vier Stunden werden drei Iterationen mit
Schätzen der Tasks, Planung der Iterationen,
Implementation und Abnahme der Tasks sowie einer
Retrospektive nach jeder Iteration durchgespielt.
Die Planung und Retrospektiven werden „richtig“
gemacht, die Implementationen dauern jeweils nur
zwei Minuten. In diesen zwei Minuten kann
natürlich kein Code entwickelt werden. Anstelle werden
kurze, einfache Tasks, wie zum Beispiel ein
Kartenhaus bauen oder etwas im Kopf ausrechnen,
durchgeführt.
        </p>
        <p>
          Das XP-Game wurde bis jetzt vier Mal mit je ca. 25
Studierende im Master-Studiengang im Rahmen
des Moduls „Software Engineering and
Architecture“ (3 ECTS) [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] durchgeführt.
        </p>
        <p>Interessant sind dabei folgende Beobachtungen:
Die erste Iteration ist typischerweise sehr
chaotisch. Die Schätzungen sind schlecht und die
Selbstorganisation der Teams funktioniert
nicht.</p>
        <p>Nach der Retrospektive am Anschluss an die
erste Iteration nimmt die Selbstorganisation der
Teams merklich zu. Ab der zweiten Iteration
funktionieren die Teams, die Schätzungen
werden viel besser.</p>
        <p>Die Velocity wird erstaunlich konstant.</p>
        <p>Der Lerneffekt in dieser kurzen Zeit ist sehr
gross. Die Studierenden sind aktiv am arbeiten.</p>
        <sec id="sec-6-2-1">
          <title>Das XP-Game macht grossen Spass!</title>
          <p>Das Feedback der Studierenden ist durchwegs
positiv. Die Studierenden schätzen es insbesondere
auf eine spielerische Art einen grossen Lerneffekt
zu erzielen.</p>
        </sec>
      </sec>
      <sec id="sec-6-3">
        <title>Scrum City Game</title>
        <p>
          Ein alternativer Ansatz um agile Management
Praktiken zu vermitteln und, insbesondere, zu
erfahren, ist das Scrum Lego City Game [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Hier
bekommen die einzelnen Teams die Aufgabe
gestellt in einem Mini-Projekt während vier 10
minütigen Sprints eine Stadt aus Lego-Bausteinen nach
vorgegeben User Stories zu realisieren.
        </p>
        <p>Wir führen das Scrum Lego City Game in Gruppen
von 6 bis 7 Studierenden in leicht abgewandelter
Form über mehrere Wochen durch:</p>
        <p>An Stelle von (teuren) Lego-Bausätzen wird die
Stadt aus Karton und Papier mit Farbstiften
Scheren und Klebstoff gebaut.</p>
        <p>Das Schreiben der User Stories ist Teil der
Aufgabenstellung. Um zu verhindern, dass die
Entwickler ihre eigenen Anforderungen
schreiben, bekommt der Product Owner (PO) eines
Teams die Entwickler eines anderen Teams als
Benutzer zugewiesen und definiert mit diesen
die Anforderungen für „sein“ Team.</p>
        <p>Auch die Priorisierung der User Stories durch
den PO und das Schätzen durch das
Entwicklerteam gehören zur Aufgabe.</p>
        <p>Danach werden in insgesamt 3-4 Sprints die
Aktivitäten wie Sprint-Planung, Task Breakdown, Sprint
Review, Retrospektive, Arbeiten am Scrum Board
in Mini-Sprints von 10 Minuten Dauer durchlaufen.
Aufgrund der kurzen Sprints entfällt der Daily
Scrum.</p>
        <p>Die dabei gemachten Erfahrungen decken sich
durchwegs mit jenen des XP Games. Ein weiterer
wichtiger Aspekt ist die Einprägsamkeit der
verschiedenen Konzepte durch das konkrete
Anwenden in dieser Spielform.</p>
      </sec>
      <sec id="sec-6-4">
        <title>Entwicklung eines Computerspiels mit</title>
      </sec>
      <sec id="sec-6-5">
        <title>Scrum</title>
        <p>In einem neuen Software Engineering Modul im 5.
Semester wird ein anderer Weg beschritten. Die
Studierenden sollen die Individuelle-, Team- und
Werte-Ebenen während einem Semester möglichst
intensiv erfahren und verinnerlichen. Die
Vorlesung ist als eigentlicher „Crash“-Kurs für „agile
Software Engineering“ konzipiert.</p>
        <p>In der ersten Hälfte des Semesters liegt der Fokus
auf der Individuellen Ebene. Es gibt eine
ausführliche Einführung in die Engineering Practices von
eXtreme Programming: Coding Standards, Unit
Testing, Continuous Integration (CI), etc. Die
Studierenden werden mit dem automatischen Build
Process bekannt gemacht und nach der Hälfte des
Semesters haben sie bereits einen kompletten
CIServer in Betrieb genommen.</p>
        <p>In der zweiten Hälfte liegt der Fokus auf der Team
Ebene. Die Studierenden sollen in Gruppen von
sechs bis acht Mitgliedern während den restlichen
sieben Wochen ein eigenes 2D-Computerspiel
entwickeln. Dazu bekommen sie eine ausführliche
Einführung in Scrum sowie in agiler Schätzung
und Planung.</p>
        <p>Die Studierenden schreiben die User Stories,
schätzen die Tasks und planen die Iterationen. Eine
Iteration dauert nur eine Woche und der Umfang
ist dementsprechend klein. Längere Iterationen
sind nicht zweckmässig, da das Projekt mit nur
sieben Wochen extrem kurz ist.</p>
        <p>Die Dozierenden nehmen bei jeder Gruppe am
wöchentlichen Sprint-Meeting teil und
unterstützen die einzelnen Teams. Es wird grosser Wert auf
die Planung und Retrospektive gelegt.</p>
        <p>Die Dozierenden coachen die einzelnen Teams und
geben Unterstützung bei auftretenden
Schwierigkeiten. Sie versuchen auch, den Teams einen
„Spiegel“ vorzuhalten, damit sie ihre Entscheidungen
reflektieren und dadurch die Konsequenzen der
getroffenen (und natürlich auch der nicht
getroffenen) Entscheidungen besser verstehen.</p>
        <p>Der Wert dieses Scrum-Projekts besteht in der
Kombination der Engineering Practices mit den
Management Practices in einer realistischen
Projektsituation. Während des Projekts gibt es auch oft
Gelegenheit für den Coach, die Werte der agilen
Softwareentwicklung einfliessen zu lassen.</p>
      </sec>
      <sec id="sec-6-6">
        <title>Projekt- und Bachelorarbeiten</title>
        <p>In den Projekt- und Bachelorarbeiten ist es den
einzelnen Dozierenden überlassen, ob sie die
Aufgabe mit einer agilen Projektmethode lösen lassen
oder nicht.</p>
        <p>Vor allem in der sogenannten „Projektwoche“, in
der die Projektteams einmal pro Semester eine
ganze Woche am Stück an ihren Projekten arbeiten
können, wird insbesondere das Taskboard für die
intensive Teamarbeit genutzt.</p>
        <p>Bei externen Projekten ist es eine Herausforderung
auch die externen Auftraggeber für das agile
Vorgehen zu überzeugen, da dies ein grösseres
Engagement des Kunden erfordert. Die Erfahrungen mit
solchen Projekten sind jedoch mehrheitlich positiv.
Eine Schwierigkeit, Projektarbeiten nach agilem
Vorgehen zu organisieren, ist, dass in diesen
Arbeiten die Teams aus Zeitgründen in der Regel nur
einmal pro Woche gemeinsam am Projekt arbeiten
können, sonst eher getrennt (z.B. Zuhause). Ein
„Daily Standup“ ist daher in der Regel nicht
möglich. Die Studierenden machen daher eher ein
Meeting, in dem sie sich gegenseitig auf den neuesten
Stand bringen. Statt einer Pinnwand als Scrum
Board, werden häufig digitale Boards eingesetzt,
die jedoch nicht so einfach zu bedienen sind wie
Pinnwände und nicht die gleiche Flexibilität
aufweisen. Daher werden diese oft nicht mit der
notwendigen Sorgfalt verwaltet.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Erfahrungen</title>
      <p>Welche Erfahrungen haben wir nun mit dem
Unterrichten von agilen Methoden gemacht, und wie
wird dieses Vorgehen von den Studierenden
aufgenommen?
Unsere Erfahrungen sind durchwegs positiv, auch
wenn noch einige Herausforderungen bestehen.
Die Studierenden sind sehr offen gegenüber den
agilen Methoden, da sie den Fokus stärker auf die
eigentlichen Interessen der Studierenden, die
Konstruktion der Software durch Design und
Programmierung, legen. Das Feedback der
Studierenden ist entsprechend ermutigend.</p>
      <p>Gerade auch der Nutzen von Test-getriebener
Entwicklung und der Automatisierung mittels CI
Umgebungen wird für die Studierenden sehr schnell
ersichtlich und, erfreulicherweise, von diesen dann
selbst in Projektarbeiten eingesetzt.</p>
      <p>Unterschätzt wird häufig das disziplinierte
Vorgehen, welches agile Methoden vom gesamten
Projektteam z.B. bei der iterativen Planung und der
Software Qualität, einfordern. Hier gilt es sicherlich
von der Ausbildungsseite her, ein Augenmerk
darauf zu haben.</p>
      <p>Die Simulationen von agilem Vorgehen mittels
Games (XP, Scrum) hat sich sehr bewährt. In den
Games „erfahren“ die Studierenden wichtige agile
Konzepte wie selbst-organisierte Teams und
häufige Auslieferungen in sehr intensiven
MiniProjekten, die sich entsprechend einprägen.
Im Hinblick darauf, dass vor allem die agilen
Werte, aber auch deren Praktiken nicht durch
einmaliges Vermitteln sondern durch Vorleben und
ständige Anwendung erlernt werden müssen, ist es
wichtig, dass diese Praktiken auch in den sonstigen
Programmiermodulen zum Einsatz kommen.
Die neuen zusätzlichen Anforderungen an die
Dozierenden sind dabei nicht zu unterschätzen. Die
Dozierenden der entsprechenden Module müssen
sich die notwendigen Grundlagen aneignen. Die
Vorlesungen müssen entsprechend angepasst, und
die agilen Praktiken in die eigenen Module
intergiert werden. Der höhere Aufwand der
Dozierenden ist sicher eine Herausforderung, welcher aber
aus unserer Sicht durch das gute Resultat mehr als
gerechtfertigt ist.</p>
      <p>Ein weiterer wichtiger Vorteil der Vermittlung der
agilen Methoden ist, dass die vor allem von XP
propagierten allgemeinen Best Practices viel stärker
ins Bewusstsein der Studierenden rücken und auch
eine stärkere Akzeptanz erfahren, da mit jeder
Iteration eine Qualitätskontrolle stattfindet.</p>
    </sec>
    <sec id="sec-8">
      <title>Zusammenfassung und Ausblick</title>
      <p>Wie unsere und auch internationale Studien zeigen,
sind agile Software Entwicklungsmethoden in der
Praxis sehr stark im Kommen. In der
IngenieurAusbildung müssen wir uns den geänderten
Kompetenzanforderungen stellen und unsere
Ausbildungskonzepte entsprechend anpassen und
erweitern.</p>
      <p>Im vorliegenden Artikel haben wir beschrieben,
wie wir die Vermittlung von agilen
Softwareentwicklungsmethoden an unseren Fachhochschulen
integriert haben. Die Erfahrungen damit sind sehr
positiv und die erzielten Erfolge stimmen
zuversichtlich. Erste Feedbacks aus der Praxis über die
Kompetenzen der Abgänger bestätigen unseren
eingeschlagenen Weg.</p>
      <p>Eine generelle Herausforderung bleibt, die agilen
Konzepte nicht nur in einzelnen Modulen zu
unterrichten, sondern diese in möglichst vielen
programmier-nahen Modulen anzuwenden und zu
vermitteln, was generell ein Wechsel des
Unterrichtskonzept der isolierten Fachmodule hin zu
einem integrativem Gesamtstudienkonzept
bedeutet.</p>
      <p>Auf Master-Stufe wollen wir die Vermittlung
fortgeschrittenen Engineering und Management Practices
weiter ausbauen, da diese in Zukunft eine
zunehmende Bedeutung erlangen werden.</p>
      <p>Zum Schluss sei angemerkt, dass auch die agilen
Softwareentwicklungsmethoden nicht das Ende der
Entwicklung der Softwareprozesse darstellen. Die
Informatik ist immer noch eine sehr junge
Disziplin, deren Entwicklungsprozessmodelle sich stetig
weiterentwickeln werden. Aus Sicht der
IngenieurAusbildung ist es daher zentral, sich abzeichnende
Entwicklungen in der Ausbildung
vorwegzunehmen und damit einen Beitrag dazu zu leisten, dass
moderne Entwicklungsmethoden ihren Einzug in
die Praxis halten.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Kropp</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meier</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Swiss Agile</surname>
          </string-name>
          Study -
          <article-title>Einsatz und Nutzen von Agilen Methoden in der Schweiz. www.swissagilestudy.ch, 2012 (Bericht in Bearbeitung)</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Version</given-names>
            <surname>One</surname>
          </string-name>
          .
          <article-title>State of Agile Development Survey results</article-title>
          . http://www.versionone.com/state_of_agile_de velopment_survey/11/, 20.
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Software</given-names>
            <surname>Engineering</surname>
          </string-name>
          and Architecture. http://www.msengineering.ch/fileadmin/user_ upload/modulbeschreibungen/de/TSM_SoftwEng_ de.pdf,
          <volume>29</volume>
          .
          <fpage>10</fpage>
          .
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4] http://www.zhaw.ch/,
          <volume>29</volume>
          .
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5] http://www.fhnw.ch/technik, 29.
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Agile</given-names>
            <surname>Manifesto</surname>
          </string-name>
          . http://agilemanifesto.org/,
          <volume>29</volume>
          .
          <fpage>10</fpage>
          .
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>K.</given-names>
            <surname>Schwaber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Beedle</surname>
          </string-name>
          .
          <article-title>Agile Software Development with Scrum</article-title>
          .
          <source>Prentice Hall</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>K.</given-names>
            <surname>Beck</surname>
          </string-name>
          .
          <source>Extreme Programming Explained: Embrace Change. Addison-Wesley</source>
          ,
          <year>2009</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M. und L.</given-names>
            <surname>Poppendieck</surname>
          </string-name>
          .
          <source>Lean Software Development: An Agile Toolkit. Addison-Wesley</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hauser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kropp</surname>
          </string-name>
          . Software Projekt Management. http://web.fhnw.ch/plattformen/spm/ ,
          <volume>29</volume>
          .
          <fpage>10</fpage>
          .12
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Ch. Denzler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Kropp</surname>
          </string-name>
          . Software Construction. http://web.fhnw.ch/plattformen/swc. 29.10.2012
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R.C.</given-names>
            <surname>Martin. Clean Code</surname>
          </string-name>
          :
          <article-title>A Handbook of Agile Software Craftsmanship</article-title>
          .
          <source>Prentice Hall</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R.</given-names>
            <surname>Mugridge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Cunningham</surname>
          </string-name>
          .
          <article-title>Fit for Developing Software: Framework for Integrated Tests</article-title>
          . Prentice Hall,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>XP</given-names>
            <surname>Game.</surname>
          </string-name>
          XP-Game, http://www.xpgame.org,
          <volume>29</volume>
          .
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Scrum</given-names>
            <surname>Lego City Game</surname>
          </string-name>
          . http://www.agile42.com/en/training/scrumlego-city,
          <volume>29</volume>
          .
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Checkstyle</given-names>
            <surname>Homepage</surname>
          </string-name>
          . http://checkstyle.sourceforge.net/,
          <volume>31</volume>
          .
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Ch</surname>
          </string-name>
          . Denzler. http://web.fhnw.ch/plattformen/swent, 31.
          <fpage>10</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>W.</given-names>
            <surname>Cunningham</surname>
          </string-name>
          .
          <article-title>The WyCash Portfolio Management System</article-title>
          .
          <source>OOPLSA</source>
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Modul</surname>
            <given-names>Software Engineering</given-names>
          </string-name>
          &amp; Architecture, Master Of Science of Engineering, http://www.msengineering.ch/fileadmin/user_ upload/modulbeschreibungen/de/TSM_SoftwEn g_de.pdf,
          <volume>18</volume>
          .
          <fpage>12</fpage>
          .2012
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>D.F.</given-names>
            <surname>Rico; H.H. Sayani</surname>
          </string-name>
          .
          <article-title>"Use of Agile Methods in Software Engineering Education,"</article-title>
          <source>Agile Conference</source>
          ,
          <year>2009</year>
          . AGILE '
          <volume>09</volume>
          . , vol., no., pp.
          <fpage>174</fpage>
          -
          <lpage>179</lpage>
          ,
          <fpage>24</fpage>
          -
          <lpage>28</lpage>
          Aug.
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Shukla</surname>
          </string-name>
          ;
          <string-name>
            <given-names>L.</given-names>
            <surname>Williams</surname>
          </string-name>
          .
          <article-title>"Adapting extreme programming for a core software engineering course ,"</article-title>
          <source>Software Engineering Education and Training</source>
          ,
          <year>2002</year>
          . (CSEE&amp;T
          <year>2002</year>
          ).
          <source>Proceedings. 15th Conference on</source>
          , vol., no., pp.
          <fpage>184</fpage>
          -
          <lpage>191</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>