Eine der großen Herausforderungen bei der alltäglichen Arbeit am OpenEstate-Projekt ist die Optimierung der Arbeitsabläufe. Wir sind derzeit 'nur' zwei Programmierer und müssen jede Möglichkeit zur Zeitersparnis nutzen, damit das Projekt nicht im Sande verläuft. An verschiedenen Stellen wurden deshalb in den letzten Wochen Umstellungen / Verbesserungen vorgenommen.
Optimierung der ProjektplanungIn den letzten Wochen wurden verschiedene Verbesserungen vorgenommen, um die Alltagsarbeit im OpenEstate-Projekt zu erleichtern.
Zeitersparnis durch öffentliches 'Bug-Tracking'Unsere 'Todo-Liste' ist öffentlich im
Bug-Tracker einsehbar. Sich wiederholende Fragestellungen aus Forum / Ticketsystem / E-Mails müssen damit nicht mehrfach beantwortet werden. Ein Verweis auf den jeweiligen Eintrag im Bug-Tracker genügt, damit der Anwender sich über den aktuellsten Stand unserer Überlegungen zu einem Problem informieren kann.
Zeitersparnis durch öffentliche DiskussionDamit wir unserer Zielsetzung gerecht werden, alltagstaugliche Lösungen für die Immobilienwirtschaft zu entwickeln, wurde dieses Forum in Betrieb genommen. An dieser Stelle können Probleme / Änderungswünsche gemeinsam diskutiert werden,
bevor diese programmiert werden. Es ist weitaus effizienter ein Problem vorab mit den Anwendern diskutiert zu haben, als nachträglich Änderungen / Umstellungen vornehmen zu müssen.
Optimierung der ProjektentwicklungIn dieser Disziplin bestand ebenfalls Bedarf zur Optimierung. Die internen Strukturen zur Organisation der Quelltexte stammen noch aus einer Zeit, in der an das OpenEstate-Projekt nicht zu denken war. Das stetige Wachstum des Projektes stellte uns vor Herausforderungen, die bisher nur 'provisorisch' gelöst wurden.
Zeitersparnis durch verbesserte VersionierungBei der Betreuung & Entwicklung einer Software ist es nötig, mehrere Versionsstränge parallel verwalten zu können. Einen solchen Mechanismus gab es zwar bereits, jedoch waren dabei nicht alle Fälle in überschaubarem Aufwand zu realisieren.
- Es müssen allgemein beliebig viele Versionsstränge parallel verwaltet werden können.
- Bei eventuellen Problemen muss der Quelltext der aktuell veröffentlichten ImmoTool-Version im Versionsstrang 0.9.x jederzeit vorliegen.
- Zur Weiterentwicklung des Projektes muss ein separater Versionsstrang 1.x gepflegt werden können.
- Fehlerkorrekturen aus Strang 0.9.x müssen mit überschaubarem Aufwand in Strang 1.x 'portiert' werden können.
- Weiterentwicklungen aus Strang 1.x müssen mit überschaubarem Aufwand in Strang 0.9.x 'portiert' werden können.
Vor solchen Problemen stehen auch andere Software-Projekte. Wir haben uns deshalb an der gängigen Programmierpraxis in Open-Source-Projekten orientiert und die Quelltextverwaltung
entsprechend umgestellt.
Zeitersparnis durch einen besseren 'Build-Prozess'In Java programmierte Software wird in der Regel mit Hilfe des Programmes
Ant zu einem ausführbaren Programm kompiliert. So war es bisher auch im OpenEstate-Projekt der Fall. Ant ist zweifelsohne eine gute und stabile Software, dennoch gibt es gewisse konzeptionelle Probleme, die mit der alternativen Software
Maven elegant gelöst wurden.
Dieser Artikel fasst die wesentlichen Unterschiede sehr ausführlich zusammen. Im Folgenden ein kurzes Zitat aus dem Artikel dazu:
Apache Ant
* Ant kennt keine formalen Konventionen bezüglich einer gemeinsamen Projekt Verzeichnis-Struktur. Sie müssen Ant genau sagen, wo sich die Quelldateien befinden und wo die Ausgabe abgelegt werden soll. Informelle Konventionen haben sich im Laufe der Zeit herausgebildet, aber diese wurden nicht im Produkt kodifiziert.
* Ant ist Prozedural, Sie müssen Ant genau sagen, was zu tun ist und wann dies zu tun. Sie mussten definieren: erst kompilieren, dann kopieren, dann paketieren.
* Ant kennt keinen Lebenszyklus, Sie mussten Targets definieren und deren Abhängigkeiten. Sie mussten die Abfolge der Schritte manuell für jeden Target festlegen.
Apache Maven
* Maven arbeitet nach Konventionen. Da Sie diese beachteten, wusste Maven wo Ihr Quellcode sich befand. Es stellt den Bytecode unter target/classes und es erzeugte ein JAR-Archive in /target.
* Maven ist deklarative. Alles was Sie tun musste, war eine pom.xml Datei zu erzeugen sowie Ihre Quelle im Standard-Verzeichnis ablegen. Maven kümmerte sich um den Rest.
* Maven kennt einen Lebenszyklus, welchen Sie mit dem Aufruf von mvn install angestossen haben. Dieser Aufruf bringt Maven dazu, eine Abfolge von Schritten abzuarbeiten, bis das Ende des Lebenszykluses erreicht ist. Als Nebeneffekt dieser Reise durch den Lebenszyklus führt Maven eine Reihe von Standard-Plugin-Goals aus, diese erledigen Arbeiten wie z.B. kompilieren oder dem Erstellen eines JAR-Archives.
Das 'Killer-Feature' von Maven im Vergleich zu Ant (und Hauptgrund zur Umstellung für uns) ist die Möglichkeit, Abhängigkeiten zu definieren und diese automatisch auflösen zu lassen. Am Beispiel des ImmoTools sieht dies wie folgt aus.

- Abhängigkeitsbaum des ImmoTools, erzeugt mit Maven & Netbeans
- dependencies.png (93.79 KiB) 778-mal betrachtet
Bisher war es nötig, die zahlreichen verwendeten Bibliotheken von Hand zu zu pflegen.
- Maven kann diese sehr aufwändige Prozedur erleichtern, indem Abhängigkeiten (sowie transitive Abhängigkeiten) automatisch aufgelöst werden.
- Maven kann Versionskonflikte in den Abhängigkeiten feststellen.
- Im Falle, dass eine verwendete Bibliothek von den Entwicklern aktualisiert wurde, kann diese Änderung mit geringfügigen Anpassungen in das Projekt integriert werden. Alle aktualisierten Bibliotheken werden automatisch von einem Maven-Server heruntergeladen und müssen nicht mehr von Hand auf den Webseiten der Entwickler herausgesucht, heruntergeladen, entpackt und integriert werden.
Die Umstellung von Ant auf Maven ist bereits weitestgehend abgeschlossen. Grundsätzlich sind die neuen Maven-Projekte ordnungsgemäß kompilierbar und ausführbar. Nur noch ein paar Detailfragen sind zu klären (z.B. eventuell die automatische Erzeugung von Installationspaketen etc.).
Was machen wir mit der gewonnenen Zeit?Mit den vorgenommenen Änderungen soll nun endlich die Entwicklung von
ImmoTool 1.0 aktiv beginnen. Bisher haben wir nur 'nebenbei' verschiedene technische Konzepte ausprobiert, aber noch nicht aktiv mit der Entwicklung beginnen können. Wie die Entwicklungsarbeit genau stattfinden wird, werden wir in den kommenden Tagen in einer weiteren Mitteilung für alle Anwender dokumentieren.