Mein Name ist Sebastian Schröder und dieser Blogartikel beschreibt die Bachelorarbeit meines Informatik-Studiums an der Hochschule Osnabrück. In den zwölf Wochen meiner Bachelorarbeit lernte ich nicht nur basecom näher kennen, sondern arbeitete mich in neue Technologien ein und war ein Teil von diversen spannenden Projekten aus dem Bereich der Individualentwicklung. Das Ziel meiner Bachelorarbeit war die prototypische Entwicklung eines Dienstplansystems für das Intranet der NOZ Medien. Der Prototyp stellt die Grundlage für eine zukünftige Ablösung des aktuell eingesetzten Systems auf Basis des CMS Contao dar. Das bisherige System ist mittlerweile technisch veraltet, sodass es nicht mehr alle Anforderungen und Funktionswünsche erfüllen kann und ebenfalls vereinzelte Defizite in der Usability aufzeigt.
Die Anforderungen
Das neue Dienstplansystem soll, wie der Name schon sagt, dem komfortablen Erstellen von Schichtplänen dienen. In diesem Sinne sollte die Zuordnung von einzelnen Mitarbeitern zu den jeweiligen Schichten über intuitive Drag & Drop Gesten erfolgen. Würde bspw. ein Mitarbeiter für Schichten an Sonn- oder Feiertagen eingeteilt, soll es eine Funktion geben, die automatisch einen freien Tag als Ausgleich gutschreibt. Diesen können die Mitarbeiter wiederum, wie alle anderen Urlaubstage auch über das Dienstplansystem einlösen. Bei der Schichtplanung selbst, sollen Administratoren Urlaubsanträge, freie Tage, Krankheitstage und Überschneidungen mit anderen Schichten berücksichtigen können. Die erforderlichen Daten sollte der Prototyp direkt aus dem bestehenden Intranet und dem SAP-System den NOZ Medien übernehmen.
Die Umsetzung
Technisch basiert der Prototyp neben Symfony auf Backbone.js und Bootstrap. Dabei ist das Backend der Anwendung als ressourcenorientierte Architektur mit einem RESTful Webservice umgesetzt. Die zustandslose Kommunikation ermöglicht eine lose Kopplung zwischen Client und Server und erleichtert gleichzeitig das vertikale Load-Balancing. Durch Einsatz des HATEOAS-Konzepts und den standardisierten Operatoren ist die API außerdem intuitiv verständlich und leicht zu testen.
Im Frontend wurde jeder Navigationspunkt als Single-Page-Applikation umgesetzt. Eine solche Anwendung lädt alle Inhalte bei Bedarf nach und stellt sie durch die Manipulation des DOMs dar. Dadurch entfällt ein Großteil der Ladezeit und der Nutzer kann dauerhaft mit der jeweiligen Seite interagieren. Für eine nahtlose Integration des Prototypens in das bestehende Intranet wird das bereits existierende Layout übernommen.
In der Bachelorarbeit wurden die Vorgehensweisen Test-Driven-Developements (TDD) und Behaviour-Driven-Developements (BDD) verwendet, welche die fachliche Korrektheit des Systems gewährleisten. Beim TDD werden Tests zunächst vor der eigentlichen Implementierung geschrieben. Das BDD beschreibt, wie sich Testfälle bereits aus der initialen Anforderungsanalyse ableiten lassen. Darüber hinaus evaluiert die Arbeit das Flux- und das Redux-Pattern als Alternative zum klassischen MVC-Pattern. Beide setzen im Gegensatz zu den meisten Umsetzungen des MVC-Patterns auf eine unidirektionale Kommunikation und einen sogenannten Single-Point-Of-Truths. Dieser Ansatz erleichtert das Erstellen automatisierter Tests und das Debugging insbesondere im Bereich des Frontends.
Ein kurzer Einblick
Die folgenden Abbildungen geben einen kurzen Einblick in den Prototypen des Dienstplansystems. In der Mitarbeiterübersicht können Mitarbeiter ihr Kontingent an freien Tagen, offenen Anträgen und eine Historie aller relevanten Informationen einsehen. Darüber hinaus markiert das Dienstplansystem alle relevanten Informationen wie zum Beispiel Urlaub oder aber auch beantragte freie Tage in einem Kalender. Über diesen kann der Nutzer dann auch unkompliziert einen neuen freien Tag beantragen.
Die Planung selbst erfolgt über die folgende Ansicht. Im linken Bereich listet der Prototyp alle Mitarbeiter der entsprechenden Dienstplangruppe auf. Dabei ist die Verfügbarkeit des Mitarbeiters farblich dargestellt. Über Drag & Drop Gesten kann ein Administrator Mitarbeiter zu den einzelnen Schichten zuordnen. Für eine komfortable Bedienung ermöglicht der Prototyp ebenfalls, alle Dienste aus der vorherigen Woche zu übernehmen. Die farblichen Highlights innerhalb der Schichten geben Auskunft darüber, ob die Mindestbesetzung für den Dienst erfüllt ist.
Der Ausblick
Alles in allem bietet der im Rahmen der Bachelorarbeit erarbeitete Prototyp eine gute Grundlage für zukünftige Projekte. Außerdem bilden die erläuterten Grundlagen einen guten Einstieg in Symfony, in REST-Apis und ins Test-Driven-Developement. Ich bin davon überzeugt, dass zukünftige Projekte von meiner Arbeit profitieren und der Ausarbeitung des Prototyps nichts mehr im Wege steht.
Auf meine Zeit bei basecom selbst blicke ich mit einem lachenden und einem weinenden Auge. Die Zeit war sehr fordernd, jedoch verging sie auch wie im Flug. Es ist schade, dass ich die Ausarbeitung des Prototyps nicht mehr selbst umsetzen kann. Dennoch freue ich mich auf die neuen Herausforderungen, welche mir nach meiner Zeit bei basecom begegnen.