geschrieben am: 04.02.2017

Die Aufgabe

Das Software-Praktikum an der TU Dresden läuft über das komplette Wintersemester. In fünfer oder sechser Gruppen müssen wir Studenten eine Software nach Kundenwünschen von Grund auf bauen. Dabei sollen wir die objektorientierte Programmiersprache Java verwenden und auf die Frameworks Spring und Salespoint zurückgreifen.
Wir sollten eine Verwaltungssoftware für eine fiktive Weinstube erstellen, welche eine Lager-, Event-, Personalverwaltung und außerdem ein Managmentsystem für Bestellungen und Tischreservierungen enthält.

Die Gruppe

Ich kam in eine zufällig zusammengewürfelte Gruppe, bestehend aus weiteren fünf Studenten unterschiedlichster Kenntnisse und Erfahrungen, was Segen und Fluch zugleich war. Denn durch die diversen Vorgeschichten waren alle auf ihre Weise spezialisiert, jedoch waren Gruppentreffen schwer zu organisieren.
Zur Hälfte des Praktikums verließ uns leider ein Mitglied, weswegen der Zeitdruck stieg. Hier kam unter anderem der Segen der Spezialisierung und die Bereitschaft aller, mehr als das eigentlich geplante Arbeitspensum zu übernehmen, ins Spiel, sodass wir nicht davon abgehalten wurden eine ordentliche Arbeit abzuliefern.

Der Verlauf

Analyse

In den ersten Wochen wurde die Aufgabe ausgiebig analysiert. Dazu wurden Anwendungsfall-, Analyseklassen- und Sequenzdiagramme erstellt. Dafür wurde es nötig alle Akteure zu identifizieren und Muss- und Kann-Kriterien aufzustellen. Außerdem mussten Anwendungsfallbeschreibungen und Akzeptenztestfälle aufgestellt werden. Dazu kam die Konzeption der GUI. All dies pflegten wir in unser Pflichtenheft ein.

Entwurf

Jetzt, als die Aufgabe klar und festgelegt war, ging es an die Erstellung von Klassendiagrammen. Hierfür mussten wir uns zunächst in die Frameworks Spring und Salespoint, durch Dokumentationen lesen, reinarbeiten. Außerdem mussten wir uns auf die Verwendung bestimmter Muster einigen. Wir verwendeten unter anderem das Muster "Model View Controller", kurz MVC, um die Präsentation, Steuerung und Businesslogik voneinander zu trennen. Um die höchstmögliche Persistenz zu gewährleisten, war anfangs eine externe Datenbank geplant. Aus Zeitgründen mussten wir dies aber leider vernachlässigen.

Zusätzlich zu den Entwurfsentscheidungen und Klassendiagrammen fügten wir noch Randbedingungen wie Hardware- und Software-Vorgaben und unsere Qualitätsziele in unsere Entwicklerdokumentation ein.

In dieser Phase war jetzt nur noch eines zu tun: Jeder musste einen kleinen Prototypen bauen um alles bisher Ausgearbeitete besser zu verstehen, insbesondere die Funktionsweise von Spring (inkl. Thymeleaf) und Salespoint, sodass wir in der Implementationsphase effektiver arbeiten können.

Implementation

Die Implementation gestaltete sich trotz Prototyp anfangs doch etwas mühsam. Da wir uns durch die erschwerte Terminfindung für eine horizontale Aufgabenteilung entschieden haben, war das GUI Team dem Businesslogikteam schnell weit voraus und konnte nicht mehr effektiv arbeiten. Dann verließ uns auch noch ein Teammitglied und so mussten wir umdenken und entschieden uns für eine vertikale Aufgabenteilung, das heißt, jeder arbeitet an einem Feature. Da die GUI soweit fertig war mussten auch keine Konventionen mehr aufgestellt werden, stattdessen wurde am Ende nur noch einmal über alles drüber "geputzt". Die Idee fruchtete und durch die Arbeit mit GIT und einem guten Branching verlief der Rest gut, wenn auch nicht immer ganz stressfrei, aber das gehört dazu. Da sich das Semester den Weihnachtsferien bzw. dem Ende neigte, konnten wir uns auch öfter in der kompletten Gruppe treffen, was unsere Gruppeneffektivität deutlich steigerte. So konnten wir trotz einiger Probleme unser Projekt pünktlich abliefern.

Endpräsentation

Jetzt mussten wir nur noch unsere Endpräsentation, in der wir Entwurfsentscheidungen erklären und unsere GUI mit einigen Funktionalitäten vorzeigen mussten, und die kritischen Blicke der Prüfer überstehen und dann war das Praktikum auch schon beendet.

Was habe ich gelernt?

Ich habe die Arbeit mit UML Diagrammen und Java gelernt und weiß die objektorientierte Programmierung jetzt deutlich mehr zu schätzen. Außerdem weiß ich jetzt wie man Frameworks effektiv einsetzt.

Während des Praktikums lernte ich wie man GIT nutzt und wie praktisch ein gutes Branching sein kann. Zudem wurde mir gerade am Ende, als nur noch viele kleine Fixes gemacht werden mussten, die Bedeutung und Wichtigkeit von Issues bewusst, da wir diese anfangs nicht eingesetzt haben, weil jeder im Kopf hatte, was noch gemacht werden muss.

In der Gruppe habe ich gelernt wie wichtig eine gute Kommunikation für den Erfolg ist. Da es heute doch noch Menschen gibt die kein Handy, oder zumindest kein Smartphone haben, war dies anfangs auch ein Hindernis. Außerdem habe ich erfahren wie sich die Umgebung, inklusive der Personen, auf die Produktivität auswirkt. Da ich bisher noch nie in einer fünfer bzw. sechser Gruppe programmiert habe, war dies eine wertvolle Erfahrung für mich und ich freue mich schon auf das nächste größere Projekt, was eine solche Gruppe erfordert.