Butter bei die Fische: Von den Grundlagen in die Umsetzung
Das Team FINAS Quick-Check 脰D bestand aus zwei Softwareentwicklern (Backend/Architektur und Frontend), einer Business Analystin, einem Product Owner sowie Martin als Agile Coach. Da wir in unserer Software Factory Unternehmenskunden bei ihren Softwareentwicklungsprojekten unterst眉tzen, war f眉r die Zusammenstellung des Teams nat眉rlich zun盲chst die aktuelle Verf眉gbarkeit ausschlaggebend. Ebenso wurden unsere individuellen St盲rken und Interessen bei der Auswahl mit einbezogen. Das Projekt sollte zudem Gelegenheit geben, uns in gewissen Bereichen weiterzubilden. Daher hatten wir auch den Freiraum, neue Tools und Ans盲tze auszuprobieren.
Aufgrund der 眉berschaubaren Teamgr枚脽e und dem explorativem Ansatz, haben wir uns als Team auf Kanban mit Einfl眉ssen aus Scrum als Projektmethodik geeinigt. Kanban ist ein n眉tzliches Werkzeug zur Koordination und Kommunikation im Team 鈥� vor allem, wenn die Personen im Team unterschiedliche Aufgabenbereiche haben, so wie es bei uns der Fall war. Durch die Visualisierung des Entwicklungsprozesses auf dem Kanban-Board konnten wir immer schnell erkennen, an welchen Stellen es gegebenenfalls noch hakt.
Jeden Morgen haben wir uns in einem Daily im Team gegenseitig kurz 眉ber den aktuellen Fortschritt des Projekts abgestimmt und eventuelle Probleme besprochen. Hinzu kamen w枚chentliche Demo-/Planning-Meetings, in denen wir uns den Gesamtfortschritt des Projekts angeschaut, etwaige Engp盲sse identifiziert und Strategien zur Verbesserung der Effizienz des Entwicklungsprozesses diskutiert haben. Unser Product Owner achtete dabei darauf, dass wir auf dem richtigen Weg blieben und das Endprodukt den Kundenanforderungen entspricht. Last but not least lud uns Martin, unser Agile Coach, in gr枚脽eren zeitlichen Abst盲nden zur Retrospektive ein. Hier konnten wir uns 眉ber die 眉bergeordneten Ziele, das aktuelle Befinden im Team und m枚gliche nicht technische Probleme austauschen und 尝枚蝉耻苍驳别苍 daf眉r erarbeiten. Diese Meetings waren sehr wertvoll f眉r uns, da sie uns als Team st盲rker gemacht haben.
What鈥榮 鈥濺eady鈥�, what鈥檚 鈥濪one鈥�?
F眉r eine gute und zielf眉hrende Zusammenarbeit ist es wichtig, ein gemeinsames Verst盲ndnis 眉ber ein paar grundlegende Dinge zu haben. Eines ist davon ist die Definition of Ready (DoR). Bei der DoR handelt es sich um eine festgelegte Liste von Kriterien, die erf眉llt sein m眉ssen, bevor eine User Story oder eine andere Aufgabe in den Sprint aufgenommen werden kann, bzw. in unserem Fall in die Umsetzung ging.
Unsere DoR sah so aus:
- Akzeptanzkriterien sind vorhanden
- Story ist mit "Ich als ..."-Satz eingeleitet
- Story ist verst盲ndlich formuliert
- Story ist klein genug
- Abh盲ngigkeiten sind identifiziert
- Story ist umsetzbar
Damit wussten wir jetzt zwar wie eine Story aussehen sollte, jedoch nicht, wann sie eigentlich fertig umgesetzt ist. Im n盲chsten Schritt haben wir daher gemeinsam eine Definition of Done (DoD) festgelegt, sprich, die Anforderungen, die erf眉llt sein m眉ssen, bevor eine Story als abgeschlossen gilt. Eine klare und einheitlich formulierte DoD hilft dabei, die Qualit盲t der Arbeit zu verbessern und die Arbeit im Team zu f枚rdern. Je nach Team und Projekt kann sie variieren, umfasst aber typischerweise Aspekte wie das Durchlaufen von Tests, die Dokumentation, die Freigabe durch den Kunden oder Product Owner sowie die Integration in den Produktions颅prozess.
F眉r das Projekt FINAS Quick-Check 脰D haben wir uns auf die folgende DoD geeinigt:
- Akzeptanzkriterien sind erf眉llt
- Pipeline ist gr眉n (= neuer Code l盲sst sich kompilieren, automatisiertes Code-Review wurde erfolgreich durchgef眉hrt, automatisierte Tests laufen erfolgreich durch, keine Auff盲lligkeiten bei Security Checks, Update der Anwendung erfolgreich deployed)
- Code-Review ist durchgef眉hrt (durch mind. 1 anderes Teammitglied)
- Manueller Test ist erfolgreich
- Sinnvolle Testabdeckung der neuen Funktionalit盲t
- Neue Integrationstests sind erstellt
- Ausf眉hrliche GIT-Commitmessage, die die 脛nderungen beschreibt
Architektur & Programmablauf
Nachdem unser Team soweit startklar war, haben wir auf Grundlage der Ergebnisse aus der Foundation Phase die Gesamtarchitektur und den Programmablauf der Anwendung konzipiert. Zur Erinnerung: In der Foundation Phase wurden die Business Driver, die fachlichen Anforderungen, die Umwelt der Anwendung, nicht funktionale Anforderungen sowie die Story Map inklusive MVP und initialem Backlog ausgearbeitet. Eine wichtige Anforderung dabei war, dass die Anwendung schnell, einfach und kosteng眉nstig bereitgestellt wird. Aus diesem Grund haben wir uns f眉r eine Implementierung als Cloudanwendung mit folgendem architekturellem Aufbau entschieden:
/1.%20Visuals/Website/Germany/04%20-%20blogs/%C3%9Cbersicht%20Architektur%20Quickcheck%20%C3%96D-1.jpg?width=800&height=508&name=%C3%9Cbersicht%20Architektur%20Quickcheck%20%C3%96D-1.jpg)
F眉r die Umsetzung des Frontends haben wir Angular als Framework genutzt, im Backend kam Spring Boot zum Einsatz. Zur Durchf眉hrung der versicherungsmathematischen Berechnungen greift die Anwendung auf unseren FINAS Rechenservice Versorgung 脰ffentlicher Dienst zu. Neben der eigentlichen Anwendung, die sich an Endkunden richtet und 眉ber den Browser aufgerufen wird, ist der Administrationsbereich ein wesentlicher Bestandteil. Versicherungs- und Finanzdienstleistungsunternehmen, die den FINAS Quick-Check 脰D auf ihrer Website als zus盲tzlichen Service f眉r ihre Kundschaft bereitstellen, k枚nnen hier眉ber die Anwendung nach ihren Bed眉rfnissen anpassen. Das umfasst z.B. die 脛nderung der Farbwelt, Erg盲nzung von Links oder die Hinterlegung des eigenen Logos. In dem Zusammenhang war speziell das Thema 'Mandantenf盲higkeit' ein wichtiger Punkt, den wir bei der Entwicklung mit ber眉cksichtigen mussten.
Der finale Programmablauf unseres FINAS Quickcheck 脰D sah im Detail dann so aus:
/1.%20Visuals/Website/Germany/04%20-%20blogs/FINAS-Quickcheck-OED-Programmablauf-1.png?width=800&height=341&name=FINAS-Quickcheck-OED-Programmablauf-1.png)
Nach Aufruf der Startseite k枚nnen die individuellen Angaben, z.B. Datum des Eintritts in den 枚ffentlichen Dienst oder Erfahrungsstufe, hinterlegt werden. Sind alle notwendigen Informationen eingegeben, f眉hrt der FINAS Rechenservice Versorgung 脰ffentlicher Dienst die entsprechenden Berechnungen durch. Im Ergebnis werden das pers枚nliche Ruhegehalt bei regul盲rem Pensionsbeginn, bei vorzeitigem Ruhestand und bei Dienstunf盲higkeit angezeigt sowie ein Call-to-Action-Button, mit der M枚glichkeit direkt Kontakt aufzunehmen. Der Administrations颅bereich zur Anpassung des FINAS Quick-Check 脰D ist f眉r Endkunden nicht sichtbar.
Im Folgenden m枚chte ich gern n盲her auf zwei Tools eingehen, die wir bei der Entwicklung des Frontends genutzt haben:
1. Attraktivere Angular & Standalone-Komponenten
Wie oben bereits erw盲hnt, haben wir zur Umsetzung des Frontends die neueste Version des Angular Frameworks鹿 genutzt, welche eine deutlich schickere M枚glichkeit zur Implementierung einfacherer Komponenten bietet. Angelehnt an andere Typescript Frameworks, wie React, ist es nun m枚glich Template-, Styling-, Test- sowie Module-Dateien direkt in nur einer einzigen Typescript-Datei zu formulieren. Das vermeidet unn枚tigen Code und erh枚ht die 脺bersichtlichkeit in komplexen Projekten. Zudem erleichtert es Neulingen den Zugang zur Angular typischen Architektur.
- Vergleich Angular bisher vs. neueste Version -
Im Projekt haben wir uns dazu entschieden, einfache Komponenten als Standalone zu erstellen und f眉r diese eine gemeinsame Styling Datei zu hinterlegen. Der Vorteil: Leere oder einzeilige Dateien k枚nnen so vermieden werden.
- Beispiel f眉r eine verkleinerte Standalone-Komponente -
2. Statemanagement und -handling mit NgRx
Eines der Tools, das wir innerhalb des Projekts neu ausprobiert haben, war NgRx. Hierbei handelt es sich um eine State-Management-Bibliothek f眉r Angular-Anwendungen, die auf der Redux-Architektur basiert und einige n眉tzliche Features parat h盲lt:
Zentralisierte Zustandsverwaltung: NgRx bietet einen zentralen Speicher f眉r den Zustand der Anwendung. Die Verwaltung und der Zugriff auf den Zustand aus verschiedenen Komponenten werden so vereinfacht. Ebenso entf盲llt damit in manchen Anwendungsbereichen die Notwendigkeit, Daten zwischen den Komponenten 眉ber Input- und Output-Bindings weiterzugeben. Die Philosophie der 'Single Source of Truth' kommt hierbei zur Anwendung und erleichtert das Finden von Fehlern sowie die Einarbeitungs颅zeit in den Code, wenn man mit diesem nicht vertraut ist.
Vorhersagbare Zustands盲nderungen: Zustands盲nderungen werden durch ein striktes Muster verwaltet. Das Muster stellt sicher, dass alle 脛nderungen am Zustand vorhersehbar und nachvollziehbar sind. Das kann dazu beitragen, dass die Anwendung zuverl盲ssiger und einfacher zu debuggen ist.
Zeitreise-Debugging: Mit NgRx k枚nnen die Redux DevTools verwendet werden, um die Zustands盲nderungen der Anwendung zu debuggen. Das erm枚glicht, 脛nderungen des Zustands der Anwendung im Laufe der Zeit einzusehen. Sehr hilfreich, wenn es darum geht, einen Fehler aufzusp眉ren oder zu verstehen, wie eine Anwendung funktioniert.
- Chrome Browser Redux Tool Extension -
Wiederverwendbarkeit des Codes: NgRx bietet ein gut definiertes Muster f眉r die Behandlung von Zustands颅盲nderungen. Ist das Muster einmal gelernt, kann man es auf verschiedene Teile der Anwendung angewendet werden. Dadurch l盲sst sich der Code wiederverwenden und ist leichter zu pflegen.
Neben den vielen Vorteilen gibt es aber auch einige potenzielle Herausforderungen und Probleme, die bei der Verwendung auftreten k枚nnen:
Erh枚hte Komplexit盲t: Die Verwendung kann die Komplexit盲t der Anwendung erh枚hen, da die Redux-Architektur erlernt und das NgRx-Muster befolgt werden m眉ssen. Dies kann das Verst盲ndnis und die Wartung der Codebasis erschweren.
Lernkurve: Trotz steiler Lernkurve kann es einige Zeit dauern, zu verstehen, wie es funktioniert und sich effektiv einsetzen l盲sst. Auch das kann zur Komplexit盲t der Codebasis beitragen.
Boilerplate-Code: Die Einrichtung kann eine Menge Boilerplate-Code erfordern, was den Einstieg erschweren und zu ausf眉hrlicherem Code f眉hren kann.
Performance-Overhead: Die Verwendung kann zu einem gewissen Performance-Overhead in der Anwendung f眉hren, da zus盲tzliche Verarbeitungs颅schritte f眉r die Bearbeitung der Zustands颅盲nderungen erforderlich sind. Dieser Overhead ist jedoch in den meisten Anwendungen vernachl盲ssigbar.
Dependency Injection: NgRx erfordert die Verwendung von Dependency Injection, die vielleicht nicht allen Entwicklern und Entwicklerinnen vertraut ist. Dies kann die Einrichtung erschweren und die Komplexit盲t der Anwendung erh枚hen.
Mein Fazit zu NgRx:
Insgesamt ist es ein n眉tzliches Werkzeug zur Verwaltung des Zustands einer Angular-Anwendung, insbesondere, wenn die Anwendung einen komplexen Zustand hat, der 眉ber mehrere Komponenten hinweg geteilt werden muss. Es gibt zwar einige potenzielle Herausforderungen bei der Verwendung, die jedoch durch eine angemessene Planung, Schulung und bew盲hrte Verfahren bew盲ltigt werden k枚nnen.
Was f眉rs Auge: Das Design
Wenn es um das Frontend geht, ist die technische Umsetzung aber nur eine Seite der Medaille. Nicht weniger wichtig ist das Design, also das, was der Endkunde zum Schluss sieht. Um ein konsistentes visuelles Markenerlebnis zu schaffen, sollte das Corporate Design bei der Entwicklung ber眉cksichtigt werden. Der Administrationsbereich, in dem unsere Kunden die Anwendung nach ihren Anforderungen anpassen k枚nnen, spielt deshalb eine gro脽e Rolle. F眉r die Standardversion der Software haben wir uns an den Vorgaben unseres unternehmenseigenen Styleguides orientiert. Hier einige der Punkte, die f眉r uns in Bezug auf das Design relevant waren:
Konsequente Verwendung der Markenfarben: Die Markenfarben ziehen sich durchg盲ngig durch das gesamte Design der Anwendung, um ein einheitliches visuelles Erlebnis zu schaffen.
Typografie: Die Typografie sollte zur Markenidentit盲t und der Zielgruppe passen. F眉r unseren FINAS Quickcheck 脰D haben wir als Default unsere *黑料社-eigene Schriftart gew盲hlt.
Einbindung des Logos: Das Logo ist die visuelle Repr盲sentation einer Marke. Es sollte daher gut sichtbar platziert, z.B. in der Kopf- oder Fu脽zeile, und einheitlich in der gesamten Anwendung verwenden werden.
Einheitliche Tonalit盲t: Auch das Wording innerhalb der Anwendung muss mit der Markenidentit盲t 眉bereinstimmen (z.B. Ansprache 'Du' oder 'Sie'), um ein einheitliches Markenerlebnis zu schaffen.
Design-Test: Es ist wichtig, das Design auf verschiedenen Ger盲ten und Browsern ausgiebig zu testen, um sicherzustellen, dass es responsiv und funktional ist und zu einem positiven Nutzererlebnis beitr盲gt. F眉r den Test der Anwendung haben wir Lambdatest genutzt 鈥� eine Cloud-basierte Plattform, die die Durchf眉hrung von Cross-Browser-Tests f眉r zahlreiche Browserkonfigurationen und Betriebssysteme erm枚glicht, einschlie脽lich Smartphones, Tablets und Desktop.
- Emulation des FINAS Quickcheck 脰D mit Lambda -
F眉r mich als Frontendentwickler war das Projekt eine tolle Erfahrung. Es hat Spa脽 gemacht, in einem gut eingespielten Team zu arbeiten, eigene Ideen einzubringen und Neues auszuprobieren. Aber mit dem Frontend allein war es nat眉rlich nicht getan. Schlie脽lich musste unser FINAS Quick-Check 脰D ja noch in die Cloud gebracht werden...
Mehr zum Thema Deployment in die Cloud & CI/CD-Pipeline dann demn盲chst im Artikel von Peter.
鹿 Weitere Informationen unter
虏 Weitere Informationen unter
FINAS Suite - Softwarekomponenten zur Unterst眉tzung Ihrer Vertriebsprozesse
Seit 眉ber 30 Jahren sind wir ein f眉hrender IT-Dienstleister und verl盲sslicher Partner f眉r Versicherungen und Banken. Die Beratungsanwendungen unserer FINAS Suite unterst眉tzen den gesamten Vertriebsprozess: vom Verkaufseinstieg 眉ber Beratung und Analyse bis hin zum Antrag inklusive Druckerstellung. Komplexe Berechnungen werden 眉ber eigene finanz- und versicherungsmathematische Rechenkerne professionell abgedeckt.