Nun sind schon einige Wochen vergangen und langsam nimmt unser Semesterprojekt, im Bereich Software Engineering II, auch Formen an. Nachdem wir die Übungsaufgaben beendet hatten, haben wir unserer Gruppe in 6 Bereiche eingeteilt, jeder Bereich ist für eine spezielle Aufgabe zur Umsetzung des Mensaprojekts vorgesehen, die einzelnen Bereiche stelle ich euch weiter unten vor. Das schwierigste bei solchen Projekten ist zunächst die Kommunikation, da man sich in der Regel nur einmal in der Woche zu den Übungen sieht. Zwischen den Übungen finden die Iterationen aus dem Scrum Prozess statt und somit die Umsetzung der einzelnen Tasks, der einzelnen Gruppen. Die einzelnen Gruppen sind für Ihre Lösung eigenständig zuständig, aber jede Gruppe hat notwendige Schnittstellen und Übergabepunkte zum nächsten Team. Um diese Kommunikation etwas zu verbessern habe ich die Seite Mensaprojekt.de erstellt. Auf dieser Seite sind alle Mitglieder des Projekts registriert und haben Zugriff auf ein eigenes Forum und einen Chat. Außerdem haben wir unsere User Stories auf dieser Seite bereitgestellt und arbeiten nun an der gemeinsamen Umsetzung des Projekts anhand der User Stories. Nun etwas zu den einzelnen Gruppen, die vorhanden sind und welche Tätigkeiten diese ausführen:
Frontend
Das Frontend ist für die Erstellung der Webseite und vordergründig für die Umsetzung der benötigten Eingabe-/Ausgabe-/ und Abfragefelder zuständig. Diese werden in Javascript realisiert und die eingegebenen Werte, wie auch Ausgabeelemente werden über Javascript an eine REST-Schnittstelle übergeben.
REST
Das Team ist für die Implementierung und Umsetzung einer REST-Schnittstelle zuständig und erstellt anhand der Anforderungen an das Mensaprojekt die notwendigen Get, Put, Post und Delete Schnittstellen um eine Kommunikation zwischen Frontend und Backend zu ermöglichen.
Backend
Das Backend ist für die reine Java Implementierung zuständig und setzt die notwendigen Klassen und Pattern mit Eclipse um. Die erstellten Klassen stellen die Schnittstelle zwischen Datenbank und REST bereit.
Datenbank
Das Datenbank Team erstellt die Datenbank, in der die Informationen vom Frontend einfließen. Dazu gehören zum einem die vorhandenen Zutaten, die in der Mensa vorhanden sind und die möglichen Speisen, die durch das Mensapersonal erstellt werden. Die Ergebnisse werden in der Datenbank eingetragen. Die Datenbank wird dabei mit Hilfe von Hibernate erstellt, welches über Java die notwendigen Tabellen und Spalten in der Datenbank eigenständig erzeugt.
Tests
Zu dem ganzen Projekt gehört natürlich ein Testteam, welches die umgesetzten Funktionalitäten der vorgenannten Teams auf Funktionalität testet und Ergebnisse und mögliche Fehler notiert. Dabei wird z.B. der Java Quellcode mit Hilfe von JUnit getestet.
Dokumentation & Schnittstellen
Dieses Team ist für die Dokumentation des gesamten Projektes zuständig. Es dokumentiert sowohl den kontinuierlichen Projektfortschritt und nimmt die erstellten Tasks während unseres Scrum Meetings auf. Danach dokumentiert es die Umsetzung und den Fortschritt der Funktionalität der einzelnen Bereiche und des gesamten Projekts. Außerdem ist es für einheitliche Schnittstellen zuständig, damit jeder Bereich weiß, welche Schnittstellen vorhanden sind und wie über diese mit den anderen Funktionalitäten kommuniziert wird.
Projektleitung
Die Projektleitung ist für die Gesamt Koordination der einzelnen Bereiche zuständig. Es wählt bei jedem Scrum Meeting die umzusetzende User Story aus und erstellt daraus die notwendigen Tasks für die einzelnen Bereiche. Dabei ist die Motivation, Koordination und Steuerung der einzelnen Bereiche ebenso zentrale Aufgabe, wie sich kontinuierlich über den Projektfortschritt zu informieren und frühzeitig möglicher Fehler zu erkennen.
Wie Ihr an den Kurzbeschreibungen sehen könnt, bietet jeder Bereich seine eigene Herausforderung und damit wird das Projekt auch sehr spannend. Außerdem ist jeder von jedem abhängig, da dass ganze Projekt nur über die Teamleistung funktionieren kann, da jeder Bereich zur Erstellung und Umsetzung einer qualitativ hochwertigen Software notwendig ist.
Im folgenden Liste ich auf, mit welchen Technologien man sich bereits im Vorfeld beschäftigen sollte:
Frontend:
- HTML & CSS
- DOM
- Javascript
- XMLHttpRequest
- Ajax
Webserver:
- RESTful Webservices (Get, Put, Post & Delete)
- XMLHttpRequest
- JAX-RS und Jersey
Backend:
- gute Kenntnisse in Java
- Entwicklung der benötigten Java Klassen, Methoden, Umsetzung von Patterns, etc
Datenbank:
Testing:
- Umsetzung und Testen aller Funktionalitäten
- Robustheit der Java Klassen durch JUnit nachweisen
Dokumentation & Schnittstellen:
- Lasten- und Pflichtenheft
- Technische & Schnittstellen Dokumentation
- Erstellung von Namenskonzepten
Projektmanagement:
- Verständnis zu allen eingesetzten Techniken
- Scrum Prozess
- Userstories und daraus Tasks ableiten
- Vorstellungsvermögen
- Projektumsetzung
- Schaffen von Kommunikationsmöglichkeiten (Webpräsenzen, Foren, o.ä.)
- Motivationsfähigkeit
Wichtig ist, dass diese Anforderungen für dieses Projekt in diesem Semester Gültigkeit haben. Allerdings kann davon ausgegangen werden, dass die grundlegende Verwendung auch in den nächsten 2 -3 Semestern Anwendung findet. Dies liegt daran, dass sich die Software Entwicklung ins Web verschiebt und dadurch die Bedeutung von Webbasierten Anwendungen immer mehr zunimmt.