Softwareentwicklung ist heute eine komplexe Arbeit, die immer als Projekt und im Team durchgeführt wird. Aus diesem Grund eignet sich ein Softwareentwicklungsprojekt hervorragend für das Handlungsfeld-orientierte Lernen. Der Entwicklungszyklus Planung–Spezifikation–Kodierung–Prüfung liefert eine gute Möglichkeit, den Lernenden sowohl die Wirkung des eigenen Handelns zu verdeutlichen, als auch die Wirkung des gesamten Teams und die Kommunikation innerhalb und außerhalb der einzelnen Teamgruppen.

Viele Sportveranstaltungen werden mittels sich über ein Areal bewegender Sportler durchgeführt. Auch wenn die Formulierung in diesem Zusammenhang etwas gestelzt klingt, ist dies ein guter Einstieg in die Beschreibung der Zielstellung. Oft können zusätzlich die Interessierten nicht direkt zuschauen, weil die Arealgröße eine direkte Beobachtung unmöglich macht. Wenn zusätzlich die Bewegung der Teilnehmer und deren aktuelle Position ein wichtiger beobachtungswürdiger Sachverhalt ist und zusätzlich die Bewegung nicht übermäßig schnell stattfindet, wie etwa bei einem Autorennen, dann ist ein GPS-gestütztes Live-Tracking-System ein hervorragendes Mittel der Live-Berichterstattung.

In vielen Bereichen werden solche Systeme bereits eingesetzt mit einem erheblichen Nachteil – die Kosten sind für viele Veranstaltungen einfach zu hoch, um ein derartiges System einsetzen zu können. Für jeden Sportler muss ein GPS-Empfänger mit Zugang zu einem kabellosen Netzwerk existieren. Weiterhin müssen die Daten in Echtzeit verarbeitet und auch für ein großes Publikum eindrucksvoll zugänglich gemacht werden.

Einen kostengünstigen Ansatz bietet das Projekt „Rennspur“, das Mobiltelefone als GPS-Empfänger nutzt und einen JavaEE Applikationsserver als Backend. Anhand dieses Projektes kann Schülern die Projektarbeit in der Softwareentwicklung vermittelt werden, weil es aus wenigen einfachen Komponenten besteht, die einfach geplant-, verwirklicht- und selbst überprüft sowie bewertet werden können.

Handlungsfelder 

Die Durchführung des Projekts kann als Semesterarbeit in drei Phasen erarbeitet werden:

  1. Planung – Die Planungsphase eines Softwareprojekts besteht in der Hauptsache aus der Strukturierung und Abstimmung von Ideen, sowie der technischen Dokumentation dieser Ideen für die Kunden sowie für die Softwareentwickler. 
  2. Kodierung – Innerhalb der Ausführungsphase werden in Teams unterschiedliche Techniken erarbeitet und zur Zielerreichung eingesetzt werden. Es werden ggf. aus unterschiedlichen Techniken diejenigen ausgewählt, die zur Erstellung der Anwendung am geeignetsten erscheinen.
  3. Prüfung – Die Prüfung der erstellten Software bietet eine gute Rückkopplung zur Planungs- und Ausführungsphase. Hier werden anhand von unterschiedlichen Prüfungsmethoden die Zielerreichung der Implementierung gegenüber der Spezifikation gemessen.

Lernfelder

  1. Auch in Softwareprojekten sind Spezifikationen ein wichtiger Bestandteil des Entwicklungsprozesses. Die Lernenden werden beispielhaft zwei grundsätzlich verschiedene Spezifikationsmethoden erarbeiten. Die Anforderungsdokumentation, die das System aus Anwendersicht beschreibt und die Archikekturspezifikation, die das System aus Entwicklersicht beschreibt.
    Grundsätzlich gelten für beide Arten gleiche Bedingungen, wenn es um die teamübergreifende Abstimmung, die logische Struktur und die Formulierung überprüfbarer Sachverhalte geht.
    Folgende Lernziele können in der Planungsphase erreicht werden:
    - Logische Struktur von Spezifikationen.
    - Abstimmungsstrategien zwischen verschiedenen Teams
    - Formulierung technischer Dokumentationen
  2. Insbesondere die Erarbeitung einer bestimmten Technik mit Blick auf die Lösung einer Arbeitsaufgabe ist Ziel dieser Projektphase – beispielsweise die Erarbeitung des W3C Geolocation API zur Verwirklichung einer Positionsbestimmung. Gleichzeitig können diese Techniken auch durch die Lernenden über Teamgrenzen hinweg präsentiert werden.
  3. Eine Prüfung ist die Messung des Zielerreichungsgrades. Der Lernende erarbeitet sich die Vorteile der Überprüfung eigener Arbeit. Er entwirft zu zwei unterschiedlichen Prüfstrategien Prüfpläne – Unit-Tests und Integrationstests. Die Unit-Tests sind sog. White-Box-Tests. Sie prüfen den Zielerreichungsgrad der einzelnen Softwareeinheiten gegenüber der Architekturspezifikation. Die Integrationstest sind sog. Black-Box-Tests und prüfen den Zielerreichungsgrad der gesamten Softwaresystems gegenüber dem Anforderungsdokumentation. Damit diese Tests das leisten können, ist eine bestimmte logische Struktur der Spezifikationsdokumente notwendig.

Komponenten des Tracking-Systems

Das Projekt  „Rennspur“ besteht aus drei Komponenten – einem Positionsgeber, einer Verwaltungseinheit und einem Darstellungsmodul. Der Positionsgeber und das Darstellungsmodul sind Einheiten, mit denen die Client-seitige Programmierung erarbeitet werden kann. Die Verwaltungseinheit ist eine serverseitige Anwendung, in der moderne Konzepte des JavaEE-Softwarestacks erarbeitet werden können. Als Technologie für die Client-seitige Programmierung der Positionsgeber bieten sich typische Programmiertechniken des World Wide Web an. Inbesondere ECMA-Skript als Programmiersprache hat sich in den letzen Jahren durchgesetzt.

Auch für das Darstellungsmodul bietet sich die o. g. Programmiersprache an. Unterschiedliche andere Techniken, wie etwa responsive Web-Gestaltung. Als Rahmenwerk für das Darstellungsmodul wird die Software AngularJS (ggf. auch AngularFaces) vorgeschlagen.

Für die serverseitige Komponente kommen JavaEE-Techniken zum Einsatz. Die Lernenden haben bereits in den zwei vorangegangenen Semestern den Umgang mit der Servlet-Technologie kennengelernt und JavaServer Faces als Architektur für die Web-Schicht kennen gelernt. Innerhalb dieses Projektes sollen Webservices entwickelt werden, welche die Client-seitigen Komponenten mit Daten versorgen oder von ihnen Daten engegennehmen. Als Rahmenwerke kommen hier JaxRS, CDI und JPA in Frage.

Zeitplanung

Je Kalenderwoche stehen für die direkte Projektarbeit vier zusammenhängende Unterrichtseinheiten zur Verfügung, was ungefähr einem halben Arbeitstag je Kalenderwoche entspricht. Die Arbeitsumgebungen sind so gestaltet, dass die Schüler über das Internet jeder Zeit Zugriff auf die Ressourcen des Projektes haben (Cloud, Git, Maven). Somit ist es möglich, interessierte Lernende zu ermuntern, auch außerhalb der Unterrichtszeit an dem Projekt zu arbeiten.

Woche Phase Aufgabe Kompetenzen
KW 1 Überblick / Aufgabenverteilung   - Überblick über das Gesamtsystem
KW 2 Planung Anforderungen verfassen - Darlegung technischer Sachverhalte.
- Strukturierung von Text.
- Vollständigkeit von Beschreibungen.
KW 3   Spezifikation  
KW 4   Architektur erstellen - Textuelle Beschreibung von Programmen
- Vollständigkeit von Beschreibungen
KW 5   Spezifikation  
KW 6 Implementierung - Einrichtung des Arbeitsplatzes
- Bearbeitung eines Tutoriums
- Arbeiten mit Git und Maven
- Erarbeitung der -Technologien (Tutorial)
KW 7    Implementierung  
KW 8    Implementierung  
KW 9    Implementierung  
KW 10 Unit-Test Einführung Junit, Reflection
KW 11   Implementierung Frameworks (Mockito, ggf. PowerMock)
KW 12   Implementierung  
KW 13   Implementierung  
KW 14 Integrationstest Einführung Selenium
KW 15   Implementierung - automatisches Testen von Software.
- Schnittstelle Selenium
KW 16   Implementierung  
KW 17 Implementierung  
KW 18  Präsentation    

Zusammenfassung

Das Projekt wurde an einer Berliner Berufsfachschule im Wintersemester 2016/17 durchgeführt. Die Ergebnisse sind über GitHub unter der AGPL veröffentlicht. Die Schüler konnten einerseits motiviert werden, sich sowohl intensiv während der Schulzeit, aber auch außerhalb der Schulzeit mit dem Projekt zu beschäftigen. Sowohl die Softwareentwicklung im Team, als auch das verteilte Arbeiten, und die angesprochenen Fachthemen konnten praktisch erlernt werden. Obwohl es in der Schülerschaft erhebliche Unterschiede im Vorwissen, in der Lernfähigkeit und im Engagement der einzelnen gab, konnte durch geschickte Aufgabeneinteilung, jeder Schüler am Projekt beteiligt werden und somit die vermittelten Techniken erlernen.

Erhebliche Anstrengungen mussten unternommen werden, um den Schülern die Notwendigkeit von Abstimmungen und deren schriftlicher Darlegung bezüglich der Schnittstellen zwischen den einzelnen Schülerteams zu verdeutlichen. Insgesamt konnte ein funktionsfähiger Prototyp am Ende des Projektes für unterschiedliche Landessprachen präsentiert werden. Zu den unterstützten Sprachen gehören neben Deutsch und Englisch auch Türkisch und Polnisch. Diese Zusammensetzung der Sprachen widerspiegelt die Nationalitäten der Schüler.

Eine Fortführung des Projektes mit einer weiteren Gruppe von Berufsfachschülern ist für das Wintersemester 2017/18 geplant.