=Paper=
{{Paper
|id=None
|storemode=property
|title=Vermittlung von agiler Softwareentwicklung im Unterricht
|pdfUrl=https://ceur-ws.org/Vol-956/S3_Paper2.pdf
|volume=Vol-956
|dblpUrl=https://dblp.org/rec/conf/seuh/KroppM13
}}
==Vermittlung von agiler Softwareentwicklung im Unterricht==
Vermittlung von agiler Software- entwicklung im Unterricht Martin Kropp, FHNW, martin.kropp@fhnw.ch Andreas Meier, ZHAW, meea@zhaw.ch Studie liefert auch konkrete Zahlen über die Ver- Zusammenfassung breitung, den Nutzen, den Einsatz von konkreten Praktiken, aber auch die Herausforderungen, die Über den Hype hinaus, der um agile Softwareent- mit agilen Methoden einhergehen. wicklung entstanden ist, zeigen verschiedene Um- fragen, dass dieses Vorgehen in der Praxis in ver- Um die Relevanz der agilen Methoden für die Aus- schiedener Hinsicht tatsächlich zu Verbesserungen bildung zu ermitteln, war für uns unter anderem in der Durchführung von Software-Projekten führt. die Beantwortung folgender Fragen wichtig: Firmen, die agile Methoden einsetzen, geben an, 1. Wie verbreitet ist agile Softwareentwicklung in dass sie seither zufriedener mit ihrem Entwick- der Praxis? lungsprozess sind und insbesondere der Umgang 2. Haben agile Methoden wirklich Vorteile ge- mit Anforderungsänderungen sich wesentlich ver- genüber den traditionellen, plan-getriebenen bessert hat. Methoden? Andererseits sind entsprechend ausgebildete Fach- 3. Was sind die entscheidenden Erfolgsfaktoren leute jedoch Mangelware. In der Praxis sind des- bei der agilen Softwareentwicklung? halb Software Ingenieure mit Kompetenzen in agi- len Methoden sehr gefragt. Im nächsten Abschnitt werden wir die aus unserer Sicht für die Ausbildung wichtigsten Resultate der Was bedeutet dies für die Software-Technik Aus- Studie vorstellen und danach einige Überlegungen bildung an Hochschulen? Was sind die speziellen und Konsequenzen für die Ausbildung an (Fach-) Herausforderungen? Wie kann agile Software Ent- Hochschulen näher ausführen. wicklung, die neben konkreten Techniken und Praktiken auf der individuellen Ebene, auch auf Nach einer Übersicht über die wesentlichen Ele- Team-Ebene und Werte-Ebene spezielle Anforde- mente der agilen Methoden werden wir im An- rungen stellt, überhaupt vermittelt werden? Wie schluss unsere Konzepte vorstellen. Wir zeigen auf, kann die Ausbildung von agiler Softwareentwick- wie die erforderlichen Kompetenzen vermittelt lung in die Ingenieur-Ausbildung integriert wer- bzw. von den Studierenden erlernt werden können. den? Anschliessend berichten wir über den konkreten In diesem Artikel stellen wir unser Konzept zur Umsetzungsstand und unsere Erfahrungen, die wir Ausbildung von agilen Methoden an Hochschulen gemacht haben. vor und berichten über unsere Erfahrungen als Den Abschluss bildet ein Ausblick über die Weiter- Dozierende. entwicklung der Konzepte und deren Umsetzung. Einleitung Verbreitung und Nutzen von agilen Metho- den Jüngste Umfragen zeigen, dass agile Software Ent- wicklungsmethoden in verschiedener Hinsicht zu In der Swiss Agile Study wurden mehr als 1500 IT- wesentlichen Verbesserungen in der Durchführung Firmenmitglieder der teilnehmenden ICT- von Software-Projekten führt [1,2]. Diese Erfolgs- Verbände SwissICT, ICTnet und SWEN befragt, die meldungen tragen wesentlich dazu bei, dass agile Rücklaufquote betrug knapp 10%. Dabei wurden Softwareentwicklungsmethoden in der IT-Industrie sowohl agil als auch nicht-agil arbeitende Unter- eine immer grössere Akzeptanz finden. nehmen einbezogen. Von den teilnehmenden Un- ternehmen gaben 57% an, dass sie mit agilen Me- In der von den Autoren durchgeführten Studie thoden entwickeln. (Swiss Agile Study) über den Einsatz von Software Entwicklungsmethoden in der Schweizer IT- Auf die Frage, wie die agilen Methoden die Ent- Industrie [1] wurden diese Aussagen bestätigt. Die wicklung beeinflusst hat, gaben die Unternehmen A. Spillner, H. Lichter (Hrsg.): SEUH 13 79 zu allen befragten Aspekten an, dass sich diese werden dabei insbesondere Kodierrichtlinien verbessert (+) oder sogar sehr stark verbessert (++) (82%), Unit Testing (76%) und Continuous Integra- haben (siehe Tabelle 1). Dabei sind insbesondere tion (70%) genannt. die Aspekte „Ability to manage changing Require- ments“ (89%), „Development Process“ (80%) und Aspect -- - + ++ „Time To Market“ (76%) zu nennen. Behavior Driven Development (BDD) 21 24 17 8 1 Aspect -- - o + ++ Acceptance Test Driven Devel- Time to market 1 2 19 53 23 opment (ATDD) 18 22 20 17 Ability to manage changing 1 0 9 45 44 Test Driven Development (TDD) 10 16 29 30 priorities Coding standards 4 9 40 42 Productivity 0 2 33 47 15 Collective code ownership 12 12 33 30 Software quality 0 2 45 35 16 Pair programming 20 32 25 18 Alignment between IT & 0 1 25 46 23 business objectives Unit testing 2 17 25 51 Project visibility 0 2 25 39 28 Refactoring 3 25 35 28 Risk management 0 5 32 42 17 Automated builds 8 14 26 40 Development process 0 2 17 58 22 Continuous integration 4 16 32 38 Software maintainability / 0 7 55 23 12 Automated acceptance testing 20 26 28 14 extensibility capability Team morale 0 4 25 42 24 Continuous delivery 12 23 38 17 Development cost 1 12 52 22 7 Tabelle 2. How important were the following agile Engineering discipline 0 4 42 42 9 engineering practices for your successful agile pro- Management of distributed 0 5 42 19 6 jects?3 teams Bei der Interpretation der Daten ist zu beachten, Requirements management 0 2 29 51 13 dass gewisse agile Praktiken wie z.B. TDD, BDD, ATDD auch bei agilen Unternehmen noch relativ Tabelle 1. How has agile software development influ- wenig im Einsatz sind, wie sich bei der Umfrage enced the following aspects?23 gezeigt hat. Interessant an den Ergebnissen in dieser Tabelle ist, Bei den Management Practices wurden als wichtigste dass mehr als die Hälfte der Unternehmen ange- Aspekte Iterationsplanung (89%), User Stories ben, dass sich die Wartbarkeit der Software sowie (83%) und Release-Planung (77%) genannt, dicht die Kosten nicht verbessert haben. Aus Sicht der gefolgt vom Einsatz eines Task Boards (74%). Ausbildung ist von Interesse, welche Praktiken und Techniken entscheidend zum Erfolg in agilen Pro- jekten beitragen, da wir auf diese Techniken be- Aspect -- - + ++ sonderes Augenmerk legen sollten. Release planning 3 18 37 40 Bei dieser Frage haben wir nach Engineering Prac- Story mapping 4 26 41 21 tices wie z.B. Unit Testing und Continuous Integra- tion sowie Management Practices wie Daily Standup, On-site customer 11 27 33 24 On-Site Customer und Planung unterschieden. Iteration planning 0 7 36 53 Tabelle 2 gibt die detaillierten Resultate für die User stories 0 10 40 43 Engineering Practices wieder. Dabei geben die Spal- Daily standup 4 25 32 33 tenwerte die Wichtigkeit für den Erfolg von „ganz unwichtig“ (--) bis „sehr wichtig“ (++) wieder. Als Taskboard 2 20 45 29 wichtige bzw. sehr wichtige Engineering Practices Burndown charts 11 38 22 24 Retrospective 5 28 34 30 1 Die Bewertungskriterien gehen von „Stark verschlech- Open work area 12 25 40 11 tert (--) bis „stark verbessert“(++) Kanban Pull System/Limited WIP 27 23 13 4 2Sämtliche Angaben in Prozent; die fehlenden Prozent Tabelle 3. How important were the following agile auf 100 gaben an “Weiss nicht”. management and planning practices for your successful 3 Die Umfrage wurde auf Englisch durchgeführt, um alle agile projects? Sprachregionen der Schweiz abdecken zu können, daher Ein wichtiger Aspekt ist, dass die Zufriedenheit der sind sowohl die Fragen als auch die Antwort-Optionen Unternehmen mit den agilen Methoden insgesamt auf Englisch. 80 A. Spillner, H. Lichter (Hrsg.): SEUH 13 deutlich höher ist als mit traditionellen plan- vermittelt werden können, so dass die Ab- getriebenen Vorgehen (84% vs. 62%). solventen „in der Wolle gefärbte“ Software Ingenieure sind. Anforderungen an agile Ausbildung Bei der Vermittlung der Anforderungen beziehen Im Rahmen der Studie haben wir auch erhoben, ob wir uns schwerpunktmässig auf Scrum [7] und agile Methoden überhaupt auf universitärer Stufe eXtreme Programming (XP) [8], da diese in der unterrichtet werden sollten, und wie die Kenntnis- Schweiz (und auch international [2]) die am weites- se der Bachelor- und Master-Absolventen von der ten verbreiteten agilen Methoden sind. Ausserdem Industrie beurteilt werden. Dazu hatten die Fir- ergänzen sich diese Methoden aus unserer Sicht menvertreter der teilnehmenden IT-Firmen folgen- sehr gut, da XP eher den Schwerpunkt auf die En- de Aussage zu bewerten: gineering Practices legt, während Scrum eher auf der „Agile development should be an integral part of the Management Ebene anzusiedeln ist. Computer Science curriculum“. Erfahrungen mit agiler Entwicklung im Un- Zur Auswahl standen folgende Antwort-Optionen terricht von “Stimme vollständig zu” bis “Stimme gar nicht zu”. Zum Thema der Integration von agilen Methoden in den Unterricht liegen verschiedene Erfahrungs- 95% der teilnehmenden Firmen stimmen der Aus- berichte vor [20, 21]. Die Autoren selbst unterrich- sage zu („Stimme zu“: 49%, „Stimme vollständig ten seit über fünf Jahren zusammen die Vorlesung zu“: 46%). Software Engineering and Architecture. Diese Vorle- Andererseits geben die Unternehmen auf die Frage, sung ist Teil der Schweiz weiten gemeinsamen ob die Studienabgänger auf Bachelor- bzw. Master- Masterausbildung (Master of Science in Enginee- stufe genügend Kenntnisse in agilen Methoden ring, MSE) der Schweizerischen Fachhochschulen mitbringen mit klarer Mehrheit an, dass dies nicht [3]. Die gemeinsame Masterausbildung betrachten der Fall ist (Master-Stufe: 58%, Bachelor-Stufe: die Autoren als eigentlichen Glücksfall, da dadurch 68%). Dozierende von verschiedenen Hochschulen zu- Somit sollte der Anspruch der Praxis an die Hoch- sammen lehren und ihre Erfahrungen austauschen schulen ernst genommen werden und die Ausbil- können. dung an die neuen Anforderungen angepasst wer- Wir haben festgestellt, dass die Studierenden noch den. Dabei stellt sich die Frage, was die Hochschu- relativ wenig Wissen über agile Softwareentwick- len in der Ausbildung ändern müssen, um den lungsmethoden mitbringen, wobei sich der Wissen- neuen Anforderungen gerecht zu werden. stand in den letzten Jahren leicht verbessert hat, Dazu betrachten wir Anforderungen, die agile Me- aber je nach Fachhochschule sehr unterschiedlich thoden an den einzelnen aber auch an das Team ist. Dafür beobachten wir jedoch, dass das Interes- und die Organisation stellt, auf drei verschiedenen se der Studierenden an dem Thema umso grösser Ebenen: ist. 1. Individuelle Ebene: Hier geht es vornehmlich In unserer gemeinsamen Vorlesung haben wir den darum, welche agilen Engineering Practices Fokus ganz gezielt auf agile Softwareentwicklung ein Software Ingenieur beherrschen sollte: gelegt. Unter anderem unterrichten wir agile Soft- Clean Code, Test Driven Development, Au- ware Entwicklungsmethoden wie Scrum, eXtreme tomation, Craftsmanship, um nur einige Programming oder Kanban. Dabei haben wir die Beispiele zu nennen. Erfahrung gemacht, dass viele Studierende das „Programmier-Handwerk“, welches eine der Vo- 2. Team Ebene: Die Team Ebene stellt vor al- raussetzungen für die erfolgreiche Durchführung lem Anforderungen im Bereich Manage- agiler Projekte darstellt, nicht beherrschen resp. nie ment Practices: Selbstorganisierende Teams, im Bachelor-Studiengang gelernt hatten. Unter Schätzen und Planen, Continuous Integra- „Programmier-Handwerk“ verstehen wir das Be- tion und Continuous Deployment, oder herrschen von agilen Praktiken wie zum Beispiel Pair Programming. Selbstorganisierende Clean Code, Refactoring, Test-Driven Development Teams wiederum verlangen eine hohe so- oder Continuous Integration. ziale Kompetenz der Teammitglieder, wie zum Beispiel hohe Kommunikationsfähig- Weiter halten die Autoren jeweils an ihrer Fach- keit. hochschule [4, 5] verschiedene Vorlesungen in Pro- grammieren und Software Engineering auf Ba- 3. Werte Ebene: Auf dieser Ebene wird implizit chelor Stufe und haben damit begonnen, auch auf das Wertesystem der agilen Softwareent- dieser Stufe agile Software Entwicklungsmethoden wicklung betrachtet; wie die agilen Werte zu vermitteln. wie Respekt, Offenheit, Ehrlichkeit, etc. A. Spillner, H. Lichter (Hrsg.): SEUH 13 81 Agile Software Entwicklung Engineering Practices Verbreitung Coding standards 75% Für ein besseres Verständnis der im Folgenden vorgestellten Studienkonzepte und Lehr- und Unit testing 70% Lernmethoden fassen wir hier die aus unserer Sicht Automated builds 63% wichtigsten Eigenschaften der agilen Software- Continuous integration 57% entwicklung zusammen. Refactoring 51% In erster Linie sind dabei natürlich die Werte und Test Driven Development (TDD) 44% Prinzipien des Agile Manifesto [6] zu nennen, die Pair programming 31% auf der einen Seite zwar noch keine konkreten Collective code ownership 30% Praktiken und Techniken vorgeben, aber mit Ihren Continuous delivery 30% Prinzipien doch klare Anforderungen an eine agile Vorgehensweise definieren. Automated acceptance testing 24% Acceptance Test Driven Development 18% Aus diesen Prinzipien hat insbesondere extreme (ATDD) Programming (XP) eine Anzahl ganz konkreter Behavior Driven Development (BDD) 15% Programmierpraktiken abgeleitet, ohne die aus unserer Sicht eine agile Softwareentwicklung nicht Tabelle 4. Engineering Practices in der Praxis4 möglich ist. Auf Managementsicht gehört wohl Scrum zu den Management Practices Verbreitung Vorreitern der agilen Methoden. Scrum definiert Release planning 75% klare Regeln bzgl. Projekt- und Teamorganisation Iteration planning 66% sowie dem Requirements-Management. User stories 65% Neuere Ansätze wie Lean Software Development Daily standup 53% [9], die sich ebenfalls an den Prinzipien des Agile Manifesto orientieren, zeigen weitere, interessante Taskboard 46% Aspekte zur Umsetzung der agilen Software Ent- Retrospective 41% wicklung auf. Burndown charts 40% Die folgenden Tabellen fassen die aus unserer Sicht Story mapping 35% wichtigsten Engineering und Management Practices Open work area 27% zusammen. Diese Einteilung wurde von uns für die On-site customer 23% Studie entwickelt, um die Verbreitung der genann- Kanban Pull System/Limited WIP 11% ten Praktiken in der Praxis zu ermitteln und hat sich dabei als sehr zweckmässig erwiesen; wir ver- Tabelle 5. Management Practices in der Praxis5. wenden sie daher auch in diesem Artikel als Die Werte zeigen deutlich, dass auch bei agil ent- Grundlage für die folgende Diskussion über die wickelnden Unternehmen erst relativ wenige der agile Ausbildung. erforderlichen bzw. empfohlenen Praktiken eine Tabelle 4 gibt die Verbreitung der, vor allem von breite Anwendung finden. XP definierten, konkreten Programmierpraktiken in den befragten agilen Unternehmen wieder, wäh- Studienkonzept für agile Methoden rend Tabelle 5 die Verbreitung der Management Die Eigenschaften bzw. Anforderungen an eine Praktiken aufzeigt. Besonders erwähnenswert da- agile Software Entwicklung lassen sich nicht alle bei ist, dass diese entsprechenden Werte bei plan- auf die gleiche Art unterrichten, da sie unterschied- getrieben arbeitenden Unternehmen zwischen liche Kompetenzen ansprechen. Für die Entwick- 10%-30% tiefer liegen. Dies ist doch umso bemer- lung eines geeigneten Studienkonzeptes orientieren kenswerter, als es sich bei vielen Engineering Prac- wir uns daher an den zuvor eingeführten drei tices eigentlich nicht um spezielle agile Praktiken, Kompetenzebenen. sondern um allgemeine Best Practices handelt. Es lässt sich also sagen, dass die Anwendung von agilen Methoden auch zur verstärkten Anwendung 4 Den Firmen, die agile Methoden anwenden, wurde von allgemeingültigen Best Practices führt. folgende Frage gestellt: „Which of the following engi- neering 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 man- agement and planning practices could be observed by someone visiting your company in the next month“? 82 A. Spillner, H. Lichter (Hrsg.): SEUH 13 Die drei Vermittlungsebenen Wichtig ist die Repetition auf allen Ebenen, d.h. Auf der individuellen Ebene werden insbesondere regelmässiges Üben in verschiedenen Kontexten. die handwerklichen Grundlagen vermittelt. Ohne Deshalb kommen die verschiedenen Praktiken und das Beherrschen dieser fundamentalen Techniken Techniken immer wieder in den verschiedenen ist eine agile Entwicklung aus unserer Sicht nicht Vorlesungen vor. Nicht isoliertes Unterrichten der möglich. Aus unserer Erfahrung sind die agilen einzelnen Praktiken steht im Vordergrund, sondern Techniken der individuellen Ebene am einfachsten die Verankerung an mehreren Stellen in der Aus- zu vermitteln. Dies liegt unserem Ermessen nach bildung. Das unterstützt insbesondere auch die daran, dass jeder Studierende einzeln daran arbei- Werte Ebene, in dem die Dozierenden selbst im ten kann. Rahmen ihrer Möglichkeiten diese agilen Werte vorleben. Darauf aufbauend können dann die Techniken der agilen Entwicklung auf der Team-Ebene vermittelt Beispiel Bachelor Programm und erworben werden, die sich vor allem aus den Obwohl an den beiden Fachhochschulen, auch was Management Praktiken zusammensetzen. Diese As- das Themengebiet Software Engineering angeht, pekte lassen sich aus unserer Erfahrung heraus sehr unterschiedliche Studienpläne existieren, haben gut in Gruppen- und Projektarbeiten vermitteln. sich, unterstützt durch den intensiven Austausch, Die Konzeption, Organisation und Durchführung viele Gemeinsamkeiten in der Vermittlung der solcher Arbeiten ist aufwendig. agilen Methoden ergeben. Sozusagen die Spitze der Kompetenzen der Agilen Abbildung 1 zeigt als ein mögliches Beispiel einen Entwicklung bildet die Werte-Ebene. Diese agilen Wertehaltungen wie sie im Agile Manifesto [6] be- schrieben werden, sind naturgemäss am schwie- rigsten zu vermitteln. Wir versuchen die agilen Werte punktuell immer wieder in den Unterricht einfliessen zu lassen – oder ganz bewusst auch vorzuleben. Bachelor- und Master-Ausbildung Aufgrund der sich schon früh abzeichnenden zu- nehmenden Bedeutung der agilen Entwicklungs- methoden haben wir begonnen die grundlegenden Methoden und Techniken der agilen Software Ent- wicklung in Form der genannten Management und Engineering Praktiken in das Bachelor-Programm zu integrieren [10,11]. Dies wird im Folgenden noch genauer erläutert. Abbildung 1. Grundstudium Informatik Auf Master-Stufe behandeln wir in unserem ge- Ausschnitt des Informatik Bachelor-Programms der meinsamen Kurs „Software Engineering and Archi- Fachhochschule Nordwestschweiz. tecture“ fortgeschrittene Themen der agilen Soft- ware Entwicklung wie Lean Development und Das fachliche Grundstudium im Bachelorstudien- Kanban, Incremental Software Design und Soft- gang ist aufgeteilt in die vier Themenbereiche, Mo- ware Evolution. dulgruppen genannt, Programmierung, Software Engineering, sowie ICT Systeme und Mathematik. Unterrichtsmethoden Jede Modulgruppe besteht aus je 8 Modulen, die Neben konventionellen Vorlesungen und Pro- spezielle Themen aus der jeweiligen Modulgruppe grammierübungen verwenden wir als weitere Un- abdecken. Jedes Modul hat einen Umfang von 3 terrichtmethoden: ECTS Punkten. Case Studies (Fremde / Eigene) Begleitet wird die theoretische Ausbildung in den Modulen durch eine vom ersten Semester an be- Gruppenarbeiten ginnende Projektschiene, die sich bis in das 6. Se- Gastreferate mit Referenten aus der Soft- mester fortsetzt. In dieser setzen die Studierenden ware-Industrie in grossen Teams (7 bis 8 Studierende) und an rea- Simulationen len, d.h. von externen Kunden in Auftrag gegebe- nen Projekten, die Theorie in die Praxis um. Dabei Medien: eBooks, Blogs, Internet. werden in den beiden Jahresprojekten der ersten 4 Semester unterschiedliche Schwerpunkte gesetzt. A. Spillner, H. Lichter (Hrsg.): SEUH 13 83 Die explizite Ausbildung in agilen Methoden wird zen, was auch sehr häufig auf freiwilliger Basis insbesondere in den Modulen Software Konstruk- geschieht, da sie die Vorteile solcher Umgebungen tion im 2. Semester und Software Projekt Manage- schon früh erkennen. ment im 3. Semester der Modulgruppe Software Engineering vorgenommen. In den Projekten und Unit Testing den sonstigen „programmierlastigen“ Modulen Unit Testing wird im ersten Semester eingeführt. wird darauf geachtet, dass auch hier die vermittel- Dabei ist besonders wichtig, dass diese Praktik ten agilen Praktiken zum Einsatz kommen. nicht nur in speziellen Modulen unterrichtet wird, In den folgenden Kapiteln beschreiben wir, wie wir sondern, dass auch sonstige programmierlastige an beiden Fachhochschulen die verschiedenen Module Unit Tests einfordern oder vorgeben, um Praktiken und Techniken im Unterricht vermitteln. so z.B. die erfolgreiche Implementierung einer Pro- grammieraufgabe zu überprüfen. Engineering Practices So können zum Beispiel im ersten Semester wäh- rend der Einführung ins Programmieren Unit Tests Bei der Besprechung der Practices orientieren wir bei Übungen vorgegeben werden. Die Aufgabe gilt uns an der Liste aus Tabelle 4. als erfüllt, wenn das zu entwickelnde Programm Coding Standards alle Unit Test besteht. Die Studierenden lernen so spielend die Nützlichkeit von automatischen Tests Bereits im ersten Semester führen wir Coding Stan- kennen und erleben nebenbei, wie wertvoll Tests dards in der Einführungsvorlesung ins Program- als Dokumentation sind. mieren ein. Wir kombinieren Coding Standards mit Clean Code [12], um so bei den Studierenden von Anschliessend wird das automatische Testen mit Anfang an auch das Bewusstsein für eine „saubere“ White-Box/Black-Box Tests und Äquivalenzklassen Programmierung zu wecken. Mit dem Einbezug formal eingeführt. Die Studierenden sind dann in von Clean Code haben wir sehr gute Erfahrungen der Lage, einfache Testfälle selbstständig zu schrei- gemacht, da dies den konkreten praktischen Nut- ben. In den höheren Semestern werden mit zuneh- zen von Coding Standards sichtbarer macht. mendem Know-how anspruchsvollere Testfälle mit Mock-Objekten entwickelt und verschiedene Test- Von nicht zu unterschätzender Wichtigkeit ist bei muster eingeführt. Das automatische Testen sollte der Einführung der Aspekt des Feedbacks. Das sich durch möglichst alle programmier-nahen Vor- wird wie folgt gehandhabt: lesungen durchziehen. Normalerweise gehört zu jeder Vorlesung eine Ein anderer erprobter Weg ist, dass die Studieren- Programmieraufgabe. Der Dozierende führt mit den schon vom ersten Semester an in den Pro- jedem Studierenden einen Code Review durch und grammier-Modulen das Schreiben von einfachen gibt ein ausführliches Feedback. Das Feedback ist Unit-Tests mittels Unit Testing Frameworks ken- im Allgemeinen mündlich, kann aber auch schrift- nenlernen und in den Projekten anwenden. An- lich erfolgen. schliessend erhalten sie im zweiten Semester im Das Feedbackgeben durch den Dozierenden ist Modul Software Konstruktion eine vertiefte Ein- zwar mit einen grossem Aufwand verbunden, ist führung in das systematische Testen und fortge- aus unserer Erfahrung aber entscheidend für den schrittene Themen wie Mock Testing kennen, die Lernerfolg. sie dann wiederum in den Projektarbeiten für das Coding Standards müssen natürlich durch die fortgeschrittene Testen einsetzen können. verwendete integrierte Entwicklungsumgebung Refactoring (IDE) unterstützt werden. Minimal sollte die IDE auch Unterstützung für einfache Refactorings wie Test Driven Development (TDD) baut auf automa- Rename Method oder Rename Variable bieten. tischen Unit Tests auf. Neben Kenntnissen in Unit Testing brauchen die Studierenden auch Kenntnis- Ebenfalls gute Erfahrungen haben wir mit Werk- se in Refactoring. Mit anderen Worten sind gute zeugen wie Checkstyle [16] gemacht, welches direkt Kenntnisse in Refactoring eine Voraussetzung für in der IDE anzeigt, falls die Coding Standards ver- TDD. letzt werden. Die einfachsten Code-Refactorings werden bereits Sehr positive Erfahrungen haben wir mit dem am Anfang des Studiums zusammen mit den frühzeitigen Einsatz dieser Konzepte und Werk- Coding Standards und der IDE Unterstützung ein- zeuge (z.B. im 2. Semester im Rahmen des Modul geführt. Komplexere Design-Refactorings werden Software Konstruktion) zusammen mit Continuous in den folgenden Semestern eingeführt. Dazu wird Integration Umgebungen gemacht. Durch eine frühe ein Katalog der verschiedenen Refactorings abge- Einführung werden die Studierenden animiert, geben und mit den Studierenden durchgearbeitet. diese Praktiken auch in ihren Projekten einzuset- 84 A. Spillner, H. Lichter (Hrsg.): SEUH 13 Ergänzt wird dieses Thema durch die Anwendung werden verschiedene Jenkins-Erweiterungen be- von komplexeren Refactorings wie Extract Class, sprochen und ausprobiert. Dabei werden verschie- Extract Method, Move Method anhand von Case dene Metriken wie Code Coverage, Bindungsstärke Studies z.B. bei Überschreitungen von Schwellwer- von Klassen, Code Complexity, aber auch Lines of ten bei Qualitätsmetriken. Code (LOC) behandelt. Test Driven Development (TDD) und Refac- Fortgeschrittene Metriken werden in höheren Se- mestern (Bewertung einer Software Architektur im toring 4. Semester Software Entwurf [17]) oder im Master- TDD ist eine anspruchsvolle Engineering Practice. Studiengang (Technical Debit [18]) behandelt. Um TDD wirklich zu beherrschen, wäre es am Bes- Es hat sich als zweckmässig erwiesen, den ganzen ten, wenn die Studierenden einen erfahrenen Soft- Bereich der Software Konstruktion in einer eigenen ware-Entwickler als Coach zur Seite hätten. Da dies Vorlesung zusammenzufassen. Da Kenntnisse in im Rahmen einer Vorlesung oder Übungsstunde Software Konstruktion eine wichtige Vorausset- nicht wirklich realisierbar ist, sind alternative Vor- zung für erfolgreiche Projekt- und Bachelorarbeiten gehensweisen nötig: sind, sollte die Vorlesung bereits im zweiten oder Bewährt haben sich folgende Alternativen: dritten Semester durchgeführt werden. Case Studies Der nachhaltige Erfolg der frühzeitigen Einführung Programming Katas dieser Praktiken zeigt sich unter anderem daran, dass Studierende selbstständig eine solche Infra- Experten Videos struktur für ihre Projektarbeiten anfordern und Bücher und Fachartikel einsetzen. Während den Studierenden mittels Experten Vi- deos und Fachliteratur die konzeptionellen Aspek- Pair Programming te des TDD vermittelt werden können, sollen Case Pair Programming üben wir nicht speziell. Es wird Studies und Programming Katas den Studierenden zusammen mit den anderen Engineering Practices dazu dienen, den TDD Ansatz praktisch zu üben eingeführt und die Studierenden werden ermun- und insbesondere dessen Einfluss auf Testbarkeit tert, Pair Programming bei Gelegenheit gezielt und Software Design selbst zu erfahren. einzusetzen und für sich zu entscheiden, ob es für sie eine Option darstellt oder nicht. Automated Builds Wir haben die Beobachtung gemacht, dass die Automated Builds werden mit Hilfe von Ant- meisten Studierenden ganz automatisch eine Form Skripts und einem Code Versioning System (CVS) wie von Pair Programming einsetzten. Sehr oft setzten zum Beispiel SVN oder GIT eingeführt. Um den sich zwei Studierende zusammen an einen Compu- vollen Nutzen der Build-Automatisierung zu erfah- ter und lösen eine Programmieraufgabe gemein- ren, bauen die Studierenden anhand einer konkre- sam. Es scheint also so etwas wie eine natürliche ten Case Study über ein ganzes Semester ein Au- Vorgehensweise beim Programmieren zu sein. tomatisierungsskript kontinuierlich aus, so dass das Kompilieren, Testen, Code Analysieren, als Automated Acceptance Testing auch das Packaging der Software vollständig au- Auf Automated Acceptance Testing gehen wir tomatisiert durchgeführt werden kann. ebenfalls im Rahmen der Vorlesung Software Kon- Automated Builds sind eine Voraussetzung für struktion ein. Es wird ein Überblick über das Kon- Continuous Integration und werden im nächsten zept anhand des Test Frameworks Fit [13] vermit- Kapitel genauer angeschaut. telt und Akzeptanztests geschrieben. Diese Tests werden auch in den CI-Build Prozess integriert. Continuous Integration (CI) Automated Builds und Continuous Integration Collective Code Ownership werden mittels einer konkreten Fallstudie in einer Ebenso wie Pair Programming wird auch das The- Gruppenarbeit vermittelt und ebenfalls schon früh- ma der Collective Code Ownership nicht explizit zeitig im Studium eingeführt (z.B. im Rahmen des unterrichtet. Die Studierenden werden jedoch Moduls Software Konstruktion im 2. Semester). In durch Verwendung von Versionskontrollsystemen, einem ersten Schritt wird das Beispielprojekt in ein Anwendung von Coding Standards und Wechseln Code Versioning System importiert. Im zweiten der Verantwortlichkeiten in den Projekten dazu Schritt werden die Build-Skripts entwickelt, damit ermuntert, diese Praktik auszuprobieren. das Beispielprojekt automatisiert gebaut werden kann. Im dritten Schritt Konfigurieren die Studie- renden den CI-Server (Jenkins). Im vierten Schritt A. Spillner, H. Lichter (Hrsg.): SEUH 13 85 Fortgeschrittene Engineering Practices plementation und Abnahme der Tasks sowie einer Die weiteren Engineering Practices wie Continuous Retrospektive nach jeder Iteration durchgespielt. delivery, Acceptance Test Driven Development Die Planung und Retrospektiven werden „richtig“ (ATDD) oder Behavior Driven Development (BDD) gemacht, die Implementationen dauern jeweils nur sprengen unserer Ansicht nach den Rahmen eines zwei Minuten. In diesen zwei Minuten kann natür- Bachelor Studiums. Denkbar, und aus unserer Sicht lich kein Code entwickelt werden. Anstelle werden auch sinnvoll, wäre es, diese weiteren Engineering kurze, einfache Tasks, wie zum Beispiel ein Kar- Practices zukünftig im Master Studium zu behan- tenhaus bauen oder etwas im Kopf ausrechnen, deln, da wir davon ausgehen, dass diese Praktiken in Zukunft an Bedeutung gewinnen werden. durchgeführt. Das XP-Game wurde bis jetzt vier Mal mit je ca. 25 Management Practices Studierende im Master-Studiengang im Rahmen des Moduls „Software Engineering and Architec- Wie aus Tabelle 5 zu entnehmen ist, sind bei den ture“ (3 ECTS) [19] durchgeführt. Management Practices diejenigen am weitesten ver- breitet, welche sich direkt mit der Projektplanung Interessant sind dabei folgende Beobachtungen: befassen. Nicht unerwartet wird die Planung vor- - Die erste Iteration ist typischerweise sehr chao- wiegend unter Verwendung von User Stories ge- tisch. Die Schätzungen sind schlecht und die macht. Überraschenderweise sind Retrospektiven Selbstorganisation der Teams funktioniert in der Praxis, trotz deren unbestritten hohem Nut- nicht. zen, nicht sehr weit verbreitet. - Nach der Retrospektive am Anschluss an die Die Management Practices betreffen vorwiegend die erste Iteration nimmt die Selbstorganisation der Team Ebene. Teamarbeiten sind im Gegensatz zu Teams merklich zu. Ab der zweiten Iteration den Engineering Practices, welche vorwiegend die funktionieren die Teams, die Schätzungen Individuelle Ebene betreffen, nicht einfach in den werden viel besser. Unterricht zu integrieren. Die meisten Management - Die Velocity wird erstaunlich konstant. Practices können nur sinnvoll in einem grösseren Team im Rahmen eines „richtigen“ Projekts sinn- - Der Lerneffekt in dieser kurzen Zeit ist sehr voll geübt werden. Oft ist es aber nicht zweckmäs- gross. Die Studierenden sind aktiv am arbeiten. sig oder aus zeitlichen Gründen unmöglich, ein - Das XP-Game macht grossen Spass! solches Projekt durchzuführen. In diesem Fall kann Das Feedback der Studierenden ist durchwegs po- die Situation mit einem der agilen Games wie zum sitiv. Die Studierenden schätzen es insbesondere Beispiel dem XP-Game [14] oder Scrum-City-Game auf eine spielerische Art einen grossen Lerneffekt [15] simuliert werden. zu erzielen. Scrum Scrum City Game Als agile Projektmethode verwenden wir Scrum. Ein alternativer Ansatz um agile Management Die verschiedenen Studien zeigen, dass Scrum am Praktiken zu vermitteln und, insbesondere, zu er- weitesten verbreitet ist. Scrum bietet auch den Vor- fahren, ist das Scrum Lego City Game [15]. Hier teil, dass die Anzahl der roles, events und artifacts bekommen die einzelnen Teams die Aufgabe ge- klein ist. stellt in einem Mini-Projekt während vier 10 minü- Wir haben die Erfahrung gemacht, dass die Funkti- tigen Sprints eine Stadt aus Lego-Bausteinen nach onsweise von Scrum schnell im Unterricht erklärt vorgegeben User Stories zu realisieren. werden kann. Der schwierige Teil kommt bei der Wir führen das Scrum Lego City Game in Gruppen Einführung. Wenn die Studierenden Scrum (oder von 6 bis 7 Studierenden in leicht abgewandelter eine andere Projektmethode) wirklich anwenden Form über mehrere Wochen durch: sollen. Wie kann im Unterricht ein Klima geschaf- fen werden, so dass die Studierenden sich wie in - An Stelle von (teuren) Lego-Bausätzen wird die einem „echten“ Projekt fühlen? Wenn sie das Ge- Stadt aus Karton und Papier mit Farbstiften fühl haben, dass es sich um ein „Alibi“-Projekt Scheren und Klebstoff gebaut. handelt, setzten sie sich nicht ein und profitieren - Das Schreiben der User Stories ist Teil der Auf- entsprechend wenig. gabenstellung. Um zu verhindern, dass die Entwickler ihre eigenen Anforderungen schrei- XP-Game ben, bekommt der Product Owner (PO) eines Das XP-Game [14] simuliert ein agiles Projekt. In Teams die Entwickler eines anderen Teams als drei bis vier Stunden werden drei Iterationen mit Benutzer zugewiesen und definiert mit diesen Schätzen der Tasks, Planung der Iterationen, Im- die Anforderungen für „sein“ Team. 86 A. Spillner, H. Lichter (Hrsg.): SEUH 13 - Auch die Priorisierung der User Stories durch getroffenen (und natürlich auch der nicht getroffe- den PO und das Schätzen durch das Entwick- nen) Entscheidungen besser verstehen. lerteam gehören zur Aufgabe. Der Wert dieses Scrum-Projekts besteht in der Danach werden in insgesamt 3-4 Sprints die Aktivi- Kombination der Engineering Practices mit den Ma- täten wie Sprint-Planung, Task Breakdown, Sprint nagement Practices in einer realistischen Projektsitu- Review, Retrospektive, Arbeiten am Scrum Board ation. Während des Projekts gibt es auch oft Gele- in Mini-Sprints von 10 Minuten Dauer durchlaufen. genheit für den Coach, die Werte der agilen Soft- Aufgrund der kurzen Sprints entfällt der Daily wareentwicklung einfliessen zu lassen. Scrum. Projekt- und Bachelorarbeiten Die dabei gemachten Erfahrungen decken sich durchwegs mit jenen des XP Games. Ein weiterer In den Projekt- und Bachelorarbeiten ist es den wichtiger Aspekt ist die Einprägsamkeit der ver- einzelnen Dozierenden überlassen, ob sie die Auf- schiedenen Konzepte durch das konkrete Anwen- gabe mit einer agilen Projektmethode lösen lassen den in dieser Spielform. oder nicht. Vor allem in der sogenannten „Projektwoche“, in Entwicklung eines Computerspiels mit der die Projektteams einmal pro Semester eine gan- Scrum ze Woche am Stück an ihren Projekten arbeiten In einem neuen Software Engineering Modul im 5. können, wird insbesondere das Taskboard für die Semester wird ein anderer Weg beschritten. Die intensive Teamarbeit genutzt. Studierenden sollen die Individuelle-, Team- und Bei externen Projekten ist es eine Herausforderung Werte-Ebenen während einem Semester möglichst auch die externen Auftraggeber für das agile Vor- intensiv erfahren und verinnerlichen. Die Vorle- gehen zu überzeugen, da dies ein grösseres Enga- sung ist als eigentlicher „Crash“-Kurs für „agile gement des Kunden erfordert. Die Erfahrungen mit Software Engineering“ konzipiert. solchen Projekten sind jedoch mehrheitlich positiv. In der ersten Hälfte des Semesters liegt der Fokus Eine Schwierigkeit, Projektarbeiten nach agilem auf der Individuellen Ebene. Es gibt eine ausführli- Vorgehen zu organisieren, ist, dass in diesen Arbei- che Einführung in die Engineering Practices von ten die Teams aus Zeitgründen in der Regel nur eXtreme Programming: Coding Standards, Unit einmal pro Woche gemeinsam am Projekt arbeiten Testing, Continuous Integration (CI), etc. Die Stu- können, sonst eher getrennt (z.B. Zuhause). Ein dierenden werden mit dem automatischen Build „Daily Standup“ ist daher in der Regel nicht mög- Process bekannt gemacht und nach der Hälfte des lich. Die Studierenden machen daher eher ein Mee- Semesters haben sie bereits einen kompletten CI- ting, in dem sie sich gegenseitig auf den neuesten Server in Betrieb genommen. Stand bringen. Statt einer Pinnwand als Scrum In der zweiten Hälfte liegt der Fokus auf der Team Board, werden häufig digitale Boards eingesetzt, Ebene. Die Studierenden sollen in Gruppen von die jedoch nicht so einfach zu bedienen sind wie sechs bis acht Mitgliedern während den restlichen Pinnwände und nicht die gleiche Flexibilität auf- sieben Wochen ein eigenes 2D-Computerspiel ent- weisen. Daher werden diese oft nicht mit der not- wickeln. Dazu bekommen sie eine ausführliche wendigen Sorgfalt verwaltet. Einführung in Scrum sowie in agiler Schätzung und Planung. Erfahrungen Die Studierenden schreiben die User Stories, schät- Welche Erfahrungen haben wir nun mit dem Un- zen die Tasks und planen die Iterationen. Eine terrichten von agilen Methoden gemacht, und wie Iteration dauert nur eine Woche und der Umfang wird dieses Vorgehen von den Studierenden auf- ist dementsprechend klein. Längere Iterationen genommen? sind nicht zweckmässig, da das Projekt mit nur Unsere Erfahrungen sind durchwegs positiv, auch sieben Wochen extrem kurz ist. wenn noch einige Herausforderungen bestehen. Die Dozierenden nehmen bei jeder Gruppe am Die Studierenden sind sehr offen gegenüber den wöchentlichen Sprint-Meeting teil und unterstüt- agilen Methoden, da sie den Fokus stärker auf die zen die einzelnen Teams. Es wird grosser Wert auf eigentlichen Interessen der Studierenden, die Kon- die Planung und Retrospektive gelegt. struktion der Software durch Design und Pro- Die Dozierenden coachen die einzelnen Teams und grammierung, legen. Das Feedback der Studieren- geben Unterstützung bei auftretenden Schwierig- den ist entsprechend ermutigend. keiten. Sie versuchen auch, den Teams einen „Spie- Gerade auch der Nutzen von Test-getriebener Ent- gel“ vorzuhalten, damit sie ihre Entscheidungen wicklung und der Automatisierung mittels CI Um- reflektieren und dadurch die Konsequenzen der gebungen wird für die Studierenden sehr schnell A. Spillner, H. Lichter (Hrsg.): SEUH 13 87 ersichtlich und, erfreulicherweise, von diesen dann richten, sondern diese in möglichst vielen pro- selbst in Projektarbeiten eingesetzt. grammier-nahen Modulen anzuwenden und zu Unterschätzt wird häufig das disziplinierte Vorge- vermitteln, was generell ein Wechsel des Unter- hen, welches agile Methoden vom gesamten Pro- richtskonzept der isolierten Fachmodule hin zu jektteam z.B. bei der iterativen Planung und der einem integrativem Gesamtstudienkonzept bedeu- Software Qualität, einfordern. Hier gilt es sicherlich tet. von der Ausbildungsseite her, ein Augenmerk da- Auf Master-Stufe wollen wir die Vermittlung fort- rauf zu haben. geschrittenen Engineering und Management Practices Die Simulationen von agilem Vorgehen mittels weiter ausbauen, da diese in Zukunft eine zuneh- Games (XP, Scrum) hat sich sehr bewährt. In den mende Bedeutung erlangen werden. Games „erfahren“ die Studierenden wichtige agile Zum Schluss sei angemerkt, dass auch die agilen Konzepte wie selbst-organisierte Teams und häufi- Softwareentwicklungsmethoden nicht das Ende der ge Auslieferungen in sehr intensiven Mini- Entwicklung der Softwareprozesse darstellen. Die Projekten, die sich entsprechend einprägen. Informatik ist immer noch eine sehr junge Diszip- Im Hinblick darauf, dass vor allem die agilen Wer- lin, deren Entwicklungsprozessmodelle sich stetig te, aber auch deren Praktiken nicht durch einmali- weiterentwickeln werden. Aus Sicht der Ingenieur- ges Vermitteln sondern durch Vorleben und stän- Ausbildung ist es daher zentral, sich abzeichnende dige Anwendung erlernt werden müssen, ist es Entwicklungen in der Ausbildung vorwegzuneh- wichtig, dass diese Praktiken auch in den sonstigen men und damit einen Beitrag dazu zu leisten, dass Programmiermodulen zum Einsatz kommen. moderne Entwicklungsmethoden ihren Einzug in die Praxis halten. Die neuen zusätzlichen Anforderungen an die Do- zierenden sind dabei nicht zu unterschätzen. Die Dozierenden der entsprechenden Module müssen Referenzen sich die notwendigen Grundlagen aneignen. Die [1] Kropp, M., Meier, A. Swiss Agile Study - Ein- Vorlesungen müssen entsprechend angepasst, und satz und Nutzen von Agilen Methoden in der die agilen Praktiken in die eigenen Module inter- Schweiz. www.swissagilestudy.ch, 2012 (Ber- giert werden. Der höhere Aufwand der Dozieren- icht in Bearbeitung). den ist sicher eine Herausforderung, welcher aber [2] Version One. State of Agile Development Sur- aus unserer Sicht durch das gute Resultat mehr als vey results. gerechtfertigt ist. http://www.versionone.com/state_of_agile_de Ein weiterer wichtiger Vorteil der Vermittlung der velopment_survey/11/, 20.10.2012 agilen Methoden ist, dass die vor allem von XP [3] Software Engineering and Architecture. propagierten allgemeinen Best Practices viel stärker http://www.msengineering.ch/fileadmin/user_ ins Bewusstsein der Studierenden rücken und auch uplo- eine stärkere Akzeptanz erfahren, da mit jeder Ite- ad/modulbeschreibungen/de/TSM_SoftwEng_ ration eine Qualitätskontrolle stattfindet. de.pdf, 29.10.2012. [4] http://www.zhaw.ch/, 29.10.2012 Zusammenfassung und Ausblick [5] http://www.fhnw.ch/technik, 29.10.2012 Wie unsere und auch internationale Studien zeigen, sind agile Software Entwicklungsmethoden in der [6] Agile Manifesto. http://agilemanifesto.org/, Praxis sehr stark im Kommen. In der Ingenieur- 29.10.2012. Ausbildung müssen wir uns den geänderten Kom- [7] K. Schwaber, M. Beedle. Agile Software De- petenzanforderungen stellen und unsere Ausbil- velopment with Scrum. Prentice Hall, 2001. dungskonzepte entsprechend anpassen und erwei- [8] K. Beck. Extreme Programming Explained: tern. Embrace Change. Addison-Wesley, 2009 Im vorliegenden Artikel haben wir beschrieben, [9] M. und L. Poppendieck. Lean Software Devel- wie wir die Vermittlung von agilen Softwareent- opment: An Agile Toolkit. Addison-Wesley, wicklungsmethoden an unseren Fachhochschulen 2003. integriert haben. Die Erfahrungen damit sind sehr positiv und die erzielten Erfolge stimmen zuver- [10] S. Hauser, M. Kropp. Software Projekt Ma- sichtlich. Erste Feedbacks aus der Praxis über die nagement. Kompetenzen der Abgänger bestätigen unseren http://web.fhnw.ch/plattformen/spm/ , eingeschlagenen Weg. 29.10.12 Eine generelle Herausforderung bleibt, die agilen Konzepte nicht nur in einzelnen Modulen zu unter- 88 A. Spillner, H. Lichter (Hrsg.): SEUH 13 [11] Ch. Denzler, M. Kropp. Software Construction. http://web.fhnw.ch/plattformen/swc. 29.10.2012 [12] R.C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 2008. [13] R. Mugridge, W. Cunningham. Fit for Devel- oping Software: Framework for Integrated Tests. Prentice Hall, 2005. [14] XP Game. XP-Game, http://www.xpgame.org, 29.10.2012 [15] Scrum Lego City Game. http://www.agile42.com/en/training/scrum- lego-city, 29.10.2012 [16] Checkstyle Homepage. http://checkstyle.sourceforge.net/, 31.10.2012 [17] Ch. Denzler. http://web.fhnw.ch/plattformen/swent, 31.10.2012 [18] W. Cunningham. The WyCash Portfolio Man- agement System. OOPLSA 1992. [19] Modul Software Engineering & Architecture, Master Of Science of Engineering, http://www.msengineering.ch/fileadmin/user_ up- load/modulbeschreibungen/de/TSM_SoftwEn g_de.pdf, 18.12.2012 [20] D.F. Rico; H.H. Sayani. "Use of Agile Methods in Software Engineering Education," Agile Conference, 2009. AGILE '09. , vol., no., pp.174-179, 24-28 Aug. 2009. [21] A. Shukla; L. Williams. "Adapting extreme programming for a core software engineering course ," Software Engineering Education and Training, 2002. (CSEE&T 2002). Proceedings. 15th Conference on , vol., no., pp.184-191, 2002. A. Spillner, H. Lichter (Hrsg.): SEUH 13 89