IOException.de

Icon

Ausgewählter Nerdkram von Informatikstudenten der Uni Ulm

Sopra-Projekt: Routenplaner für das Gelände der Uni Ulm

An der Uni Ulm muss jeder Bachelorstudent in einem Informatik / Informatik verwandten Studiengang das Sopra absolvieren. Das ist ein umfangreiches Softwareprojekt, das sich über zwei Semester erstreckt. Im ersten Semester steht dabei die Erfassung von Anforderungen, die Planung und das Pflichtenheft im Vordergrund. Das passiert in einem Team aus drei Studenten. Im zweiten Semester werden zwei Teams zusammengelegt, so dass fortan sechs Leute an der Implementierung arbeiten.

Alle Teams, die am Sopra teilnehmen, müssen dasselbe Projekt implementieren, wobei die Projekte jedes Jahr wechseln. Dieses Jahr war die Aufgabe von Grund auf einen Routenplaner für die Universität zur erstellen. Die Ausgangsbasis waren die Baupläne der Uni, die vom Bauamt zur Verfügung gestellt wurden.

Einige Problemstellungen des Projekts waren eine besondere Herausforderungen. Beispielsweise müssen handelsübliche Straßen-Routenplaner nicht mit fünf Stockwerken die übereinander liegen zurecht kommen.

Zum Routing: Algorithmen für Routingprobleme (Dijkstra, Bellman-Ford, etc.) verwenden üblicherweise einen gewichteten Graphen. Unser Team hat sich dafür entschieden eine graphenbasierte NoSQL-Datenbank zu verwenden: Neo4J. Da wir vorhatten einen Routeplaner zu entwickeln bot es sich einfach an eine Datenbank zu verwenden die inhärent schon auf einer Graphenstruktur aufbaut und somit viele Probleme — wie das Routing zwischen Knoten — schon im Vornherein löst.

Routingalgorithmen auf relationalen Datenbanken können recht hässlich werden. Für einige andere Teams war das eines der Kernprobleme.

Man sollte Technologien nie deswegen auswählen, weil es eben die einzige Technologie ist die man kennt.
Stattdessen sollte eine Technologie, ein Werkzeug, gewählt werden, weil es sich am Besten für die Aufgabe eignet.

Der Routenplaner sollte webbasiert realisiert werden. Wir haben uns für Vaadin als Web-Framework entschieden. Vaadin setzt auf GWT auf und ermöglicht es Web-Applikationen in Java zu schreiben, als würde man eine Swing-Applikation entwickeln. Java Code wird durch einen Cross-Compiler in JavaScript, HTML & CSS übersetzt. Die Arbeit mit dem Framework hat ziemlich gut funktioniert, es lassen sich sehr schnell vorzeigbare Ergebnisse erstellen.

Wir haben außerdem eine Desktop-Applikation für das Bearbeiten und Hochladen von Kartenmaterial geschrieben. Da wir die Aufgaben im Vornherein aufgeteilt hatten war ich hier aber nur beteiligt als es um die Synchronisation mit der Webapp ging. Dafür haben wir Git verwendet (siehe auch den Blogbeitrag “Git als Update-Mechanismus“).

Weitere erwähnenswerte Technologien: Für den PDF-Druck haben wir LaTeX verwendet. Aus einer generierten *.tex Datei wird eine PDF erstellt und an den Browser zurückgegeben. Wir haben mittels node.js das Uni-Adressbuch gescraped um so vernünftig einen vollständigen Datensatz in die Datenbank zu bekommen.

Die erstellen Projekte werden nicht produktiv eingesetzt werden, es wird aber an einer Musterimplementierung gearbeitet. Diese wird später eventuell auch auf den Terminals, die auf dem Unigelände verteilt sind, laufen.
Allgemein war es ziemlich interessant mal in einem größeren Team an einem umfrangreicheren Projekt zu arbeiten. Man lernt einige Dinge über die Arbeit im Team und verschiedene Technologien. Insbesondere lernet man aber wo die eigenen Stärken liegen.

 

Kategorie: datenbanken, uulm, web

Tags: , , ,

Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Webnews
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Facebook

5 Kommentare

  1. Ruben sagt:

    Gute Idee, ich werde mich auch mal an einen Blogeintrag über das SoPra setzen.
    Wie habt ihr im Browser aus tex-Code ein PDF gemacht?

  2. [...] programmieren, der dabei helfen soll, sich in der Uni zurechtzufinden. Inspiriert durch den Artikel eines anderen Teams werde ich das Projekt hier kurz vorstellen und von meinen Erfahrungen [...]

  3. Hey Ruben! Serverseitig wird eine neue *.tex Datei erzeugt, diese wird dann mittels des Programms pdflatex kompiliert. Die erzeugte PDF-Datei schicken wir dann an den Client zurück.
    Die *.tex Datei wird aus einem Template generiert. Eine recht bequeme Art PDFs zu erzeugen :)

  4. Andreas Höhmann sagt:

    Hallo zusammen,
    schönes Projekt … existiert es noch? Online kann ich nichts finden.
    Sind die Quellen öffentlich? Mich würde die graphische Darstellung der
    MAP mit Vaadin interessieren.
    VG
    Andreas

  5. Hi Andreas!

    Danke für das Kompliment! Das Projekt ist leider nicht öffentlich verfügbar, da insgesamt sechs Leute beteiligt waren und nicht alle damit einverstanden waren es zu veröffentlichen.

    Was die Karte angeht: Das war nicht direkt über Vaadin realisiert. Soweit ich mich erinnere hatten wir eine separate HTML-Seite aufgebaut, die OpenStreetMaps eingebunden hat und mittels JavaScript interaktiv wurde. Das Ganze war über einen iFrame in die Hauptseite eingebettet.

    Viele Grüße, Michi

Kommentar