Tracking-Info
Blog

+49 - 511 - 270 416 0

info@aldebaran.de

Referenzprojekt Softwareentwicklung

Baumaßnahmenverwaltung als Java Servlet Anwendung mit Spring, Hibernate und SQL-Server

Baumaßnahmenverwaltung als Java Servlet Anwendung

Die Firma Fritz Lange, Springe, stellt u.a. Verkehrszeichen her und stattet Straßenabschnitte im Auftrag öffentlicher Träger damit aus.

Die Baumaßnahmenverwaltung

  • verwaltet die Einzelmaßnahmen mit ihren Standorten,
  • erlaubt die Zuordnung von Einzelartikeln zu beauftragten Positionen,
  • kontrolliert den internen Workflow
  • und stellt Funktionen für die Abrechnung bereit.

Funktionalitäten (beispielhaft)

Mit der BMV lassen sich unter anderem die folgenden Arbeiten durchführen:

  • Anlegen, Ändern und Löschen von Standorten einer Baumaßnahme
  • Zuordnen von Kunden-Bestellnummern zu eigenen Artikeln, Import von GAEB / .d83 Dateien mit OZ Nummern
  • Verwalten von Großschildern (mit Schilder-Daten, Zeichnung, Abnahme, Bestellung etc.)
  • Verwalten von Fundamenten, Aufstellvorrichtungen und Befestigungsmaterial
  • Erstellen von normgerechten Aufmaßblättern und Massenermittlungen zur Abrechnung (als PDF)

Technische Umsetzung

Die Baumaßnahmenverwaltung (BMV) wurde (und wird) von uns als Intranet-Webanwendung realisiert.

Oberfläche der Software Baumaßnahmenverwaltung
Oberfläche der Anwendung

Als Applikationsserver wird Apache Tomcat 5.0 eingesetzt. BMV ist eine Java Servlet-Anwendung, die das bekannte Framework Spring benutzt. Für die Datenbankzugriffe auf den MS SQL-Server wird Hibernate als O/R Mapper eingesetzt. Für den View werden JavaServer Pages (JSP) mit der JavaServer Pages Standard Tag Library (JSTL) benutzt. Die Entwicklung findet unter Verwendung von Eclipse statt. Das automatisierte Deployment wird über Ant gesteuert.

Unter den eingebundenen und verwendeten Bibliotheken finden sich neben Spring und Hibernate u.a. Struts Tiles, batik, JSTL und mehrere Apache Commons Module.

Besondere Herausforderungen

Es war von Anfang an klar, dass die Anwendung nicht zu Beginn vollständig durchspezifiziert werden sollte; vielmehr waren sich alle Beteiligten der Tatsache bewusst, dass das Projekt in besonderem Maße "moving targets" hat.

Daher war ein agiles Entwicklungsmodell mit häufigen Auslieferungen, schnellem Feedback und teilweise automatisierten Tests unverzichtbar. Gleichzeitig war es notwendig, eine Architektur zu wählen, die es ermöglicht, die Anwendung - auch erheblich - zu ändern, die Kosten dabei aber im Rahmen zu halten. Insofern kam nur eine Enterprise-Level-Architektur in Frage.

Als wichtigstes Entwicklungs-Paradigma wurde Model/View/Controller (MVC) festgelegt. Die Anwendung ist jederzeit vollständig in ihre Teile Model, View und Controller getrennt, die Schnittstellen und der Programmfluss sind klar definiert. Daneben sind Codierungs-Richtlinien und Test-Prozesse definiert.

Als Rahmen wurde das flexible Dependency-Injection-Framework Spring gewählt. Das MVC-Modul von Spring hat sich für uns als wesentlich flexibler und durchdachter als z.B. Struts erwiesen, was aufgrund des Alters von Struts auch nicht verwunderlich ist. (Trotzdem ist die Struts Bibliothek eingebunden, da wir für die Darstellung auf Struts Tiles nicht verzichten wollten. Tiles ist allerdings die einzige Struts Komponente, die noch Verwendung findet.) Durch Spring sind die Module der Anwendung sehr transparent miteinander "verdrahtet", die Definition dieser Verdrahtung erfolgt in einer einzigen XML Datei.

Für die Persistenz setzen wir den Relational/Object-Mapper Hibernate ein. Durch die Mächtigkeit von Hibernate müssen wir trotz relationaler Datenbank nicht auf komplexe Klassenhierarchien verzichten. Selbst das Datenmodell ist aufgrund der sich in Bewegung befindlichen Ziele des Kunden noch im Fluss, auch hier hilft Hibernate und nimmt uns einen Teil der dadurch entstehenden Komplexität wieder ab.

Hibernate und Spring arbeiten quasi nahtlos zusammen. Die Philosophie von Spring, nicht alles selbst erfinden zu müssen, sondern bestehende gute Bibliotheken über eine dünne Adapter-Schicht einzubinden, hat sich als sehr vorteilhaft erwiesen. Die Anwendung darf wachsen, da die vorgegebene strukturierte Architektur konsequent umgesetzt wird und der Überblick über das Ganze jederzeit erhalten bleibt. Änderungswünsche des Kunden konnten bisher jeweils schnell umgesetzt werden.

Verwandte Links