Die letzten beiden Semester arbeitete ich mit meinen Kommilitonen Jan Laermann, Norman Schemel und Lino Strümann an einem Projekt im Rahmen der Vorlesung Projektmanagement. Unser Kunde war der Studiengangsleiter Herr Mester. Sein Ziel war es, eine generische Bewertungsplattform anzulegen. Es sollten mit minimalem Aufwand Bewertungsportale zu beliebigen Themen aufgestellt werden können.
Projektplanung
Im ersten der beiden Semester kümmerten wir uns maßgeblich um die Projektplanung, dies ergab am Ende ein Pflichtenheft, das vom Kunden unterzeichnet wurde und uns im Folgenden als Basis für unsere Entwicklung diente.
Projektumsetzung
Im zweiten (diesem) Semester des Projekts ging es dann an die konkrete Implementierung der Software, sowie den geplanten Rollout. Wir hatten uns aus diversen Gründen dafür entschieden, für die Entwicklung das Grails-Framework zu benutzen.
Zur weiteren Entwicklungsumgebung gehörten bei uns folgende Komponenten:
- ein Subversion-Repository zur Versionierung und Zusammenarbeit
- Trac als Task-Tracking-Tool um die einzelnen Aufgaben und auch Bugs zu koordinieren
- anfangs ein MediaWiki welches dann durch das Wiki von Trac abgelöst wurde
- eine lokale Testumgebung (von Grails bereitgestellt) und zum Ende auch ein serverseitiger Test mit Tomcat und MySQL
Da wir aus vergangenen Projekten leider nicht sehr gute Erfahrungen mit Lösungen aus der BA-Infrastruktur gemacht hatten (dass das SVN-Repository z.B. nicht von außerhalb der BA erreichbar war, oder häufig nicht funktionierte) wählten wir meinen eigenen Server um die Tools dort zu hosten. Eine meiner Grundaufgaben war deshalb die Verwaltung dieser Entwicklungsumgebung, damit das Team verlässlich damit arbeiten konnte.
Außerdem arbeitete ich danach als Java/Groovy-Entwickler an den Backend-Funktionen mit Grails um die Logik zu implementieren.
Abgabe
Unserem Kunden war es gegen Ende des Projektes leider nicht mehr möglich die entsprechende Live-Umgebung zur Verfügung zu stellen. Deshalb konnten wir die Bewertungsplattform nicht aus unserer Test-Umgebung auf das Live-System übertragen.
Aus dem geplanten Roll-Out wurde so die Abgabe aller Entwicklungsressourcen, inkl. SVN-Repository, Trac-Backups etc. so dass z.B. ein anderer Jahrgang dieses Projekt dann inklusive einer (ursprünglich geplanten) Werbekampagne online stellen kann.
Erfahrungen
Dies war für mich ein weiteres großes Software-Projekt innerhalb unseres Studiengangs. Man sieht, dass mich meist mehr die Technik reizt, als gestalterische oder statistische Arbeiten. Da wir den Prozess der Erstellung durch das Trac ebenfalls sehr einheitlich ablaufen lassen konnten, lief in diesem Projekt wieder einiges besser planbar als in früheren Projekten (jedes Mal kommen ein paar weitere Tools und Erfahrungen hinzu bei denen man sich fragt wie man das bisher nur ohne sie geschafft hat).
Die Arbeit mit Grails war im weitesten Sinne sehr angenehm. Das Grundgerüst der Anwendung war innerhalb von ein paar Stunden erstellt und einsatzbereit. Ein paar Bereiche sind noch naja… meines Erachtens nicht unbedingt produktiv einsetzbar – z.B. Web Flows hatten bei mir auch in anderen Projekten bisher noch einige Stabilitätsprobleme. Und die Doku reicht auch von supermegatoll bis mittelprächtig. Fragen wie “wie bekomme ich den info-Loglevel für Controller oder Services?” ließen sich nur durch langwierige Recherche im Internet beantworten. Aber es gibt auch Bereiche wie die Konfiguration mittels der jeweiligen “DSLs” (z.B. für die DataSources) oder die Groovy-Builder, mit denen die Arbeit eine reine Freude sein kann, sofern die Doku sie entsprechend erläutert.
Wir hatten sehr viel Zeit zur eigenen Einteilung zur Verfügung, so konnten auch die einzelnen Entwickler ihren eigenen Rhythmus leben (meine Commits kamen z.B. meist in der Zeit von 8-20 Uhr, andere zwischen 14-2Uhr ;-) ). Das wurde auch durch die strikte Trennung von Grails ermöglicht, weshalb z.B. die einen weiterhin an den Layouts arbeiten konnte, während andere die Logik implementierten.
Ausblick
Ich werde mich mit Sicherheit weiterhin mit Grails beschäftigen. Für die schnelle Erstellung von Web-Anwendungen eignet es sich hervorragend. Integriert sich auf Wunsch auch gut in bestehende Umgebungen (eigenes Mapping für Persistenz z.B.) bietet viele sinnvolle Features – und noch mehr durch die immer weiter wachsende Zahl von Plugins.
Ein Task-Tracking-System wie Trac ist ebenfalls sehr sinnvoll, allerdings fand ich es während dieses Projekts teilweise etwas umständlich zu bedienen – und es lief (Python, Apache, Ubuntu, VPS, wer auch immer dafür verantwortlich ist…) leider lange Zeit nicht unbedingt flink.
Auf eine Versionsverwaltung kann ich selbst bei Ein-Mann-Projekten nicht mehr verzichten!