Hintergrund & Problemstellung:
Das Projekt CIBO (CheckIn-BeOut) ist eine E-Ticketlösung für Busse, bei dem man den Bus auswählen kann, den man benutzen möchte und anschließend über GPS erkannt wird, wo man ausgestiegen ist, um den Ticketpreis zu berechnen. Die Software ist in folgende drei Bereiche unterteilt:
- Android-App: Fahrtenauswahl und Tracking
- Node-JS: Tacking, BeOut Algorithmus und URA-Service (für Echtzeitdaten)
- Backend System (JavaEE): Informationssystem, Speicherung von Fahrten, Authentifizierung und Statistiken für Kunden sowie für den Betreiber.
Das Backend System, welches die Funktionen über ein Web-Interface darstellt, liegt im Fokus dieser Arbeit. Es besteht bereits ein solches Backend System mit den genannten Anforderungen, das in Java EE mit JavaServer Faces und AngularJS realisiert wurde. Allerdings stellt es sich sehr monolithisch dar, da es sich nur aufwändig erweitern oder warten lässt. Falls beispielsweise ein neues Feature vom Kunden gewünscht wird, kann nicht nur der Code des Features an sich betrachtet werden, sondern es muss auch bestehender Code überarbeitet werden. Dies kann zu Seiteneffekten führen, wodurch noch mehr Code überarbeitet werden muss.
Das Backend System soll deshalb nun auf Basis von Microservices in Java neu entwickelt und um eine Funktion erweitert werden, die für die Preisberechnung zuständig ist.
Aufgabenstellung & Ziel:
Das Ziel der Arbeit ist es, das Backend System des CIBO Projekts einfach erweitern und besser warten zu können, um somit flexibler zu sein. Außerdem sollen einzelne Services einfach änderbar sein.
Durch die Realisierung des Backend Systems auf Basis von Microservices, lässt sich jeder Service fachlich und technisch von den anderen entkoppeln. Beispielsweise lassen sich Services wie User Registrierung, Login, das Speichern von Fahrten oder die Fahrtensuche vollkommen frei von einander entwickeln. Die unabhängige Wahl von Programmiersprache oder Framework ermöglich die Auswahl neuer und insbesondere adäquater Technologien. In die, dadurch entstehenden Hybridsysteme, lassen sich leicht neue Features einbauen.
Hauptaufgabe ist es zu zeigen, ob Microservices für den Bau eines solchen Backend Systems geeignet ist und gute Software-Qualitätsmerkmale besitzt. Es werden Kriterien wie Änderbarkeit, Erweiterbarkeit, Testbarkeit, Flexibilität und Portabilität betrachtet.
Zusätzlich sollen Vorteile gegenüber Java EE als Komponententechnik, auf Basis der oben genannten Qualitätsmerkmalen, erörtert werden.
Durchführung:
Backend System neu entwickeln (s. Abb. 1). Microservices in Java realisieren (Registrierung, Login, Ticketpreis, Fahrtensuche,Fahrten speichern). GUI in Form einer Website mit Hilfe von AngularJS. Microservices bewerten anhand der gewählten Qualitätsmerkmale. Vergleich mit Java EE als Komponententechnik.
Abb. 1: Übersicht über das Backend System
Referenzen:
[1] James Lewis, Martin Fowler: Microservices, http://martinfowler.com/articles/microservices.html (26.09.2014) [2] Jochen Ludewig, Horst Lichter: Software Engineering: Grundlagen, Menschen,Prozesse, Techniken. dpunkt.verlag, 2. Auflage, 2010
Resources
Project information
Finished
Bachelor
Niklas Scholz
2014-015