VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository

Die Seite wird erstellt Sarah Schweizer
 
WEITER LESEN
VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository
Studienarbeit

VZ Altersvorsorgerechner

      Herbstsemester 2018

                 Autoren
            Marcel Keller
            Quoc Tin Tran

                 Betreuer
             Manuel Bauer

              Projektpartner
       VZ Holding AG, Zürich

   HSR Hochschule für Technik Rapperswil
          Abteilung Informatik
       CH-8640 Rapperswil, Schweiz
VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository
Abstract
Die VZ VermögensZentrum GmbH, Deutschland, berät Kunden zu Themen wie Ver-
mögensverwaltung und Private Vorsorge. Im Bereich der Ruhestandsplanung ist die
Nachfrage sehr mager, obwohl diese für junge Menschen immer wichtiger wird. Um ihnen
ihre Situation im Alter und mögliche Verbesserungsvorschläge aufzuzeigen, soll im Rah-
men der Studienarbeit ein Rechner für die Altersvorsorge erstellt werden. Dieser soll dem
interessierten Benutzer seine Lücke im Ruhestand aufzeigen und seine Vorsorgeplanung
in einfachen Schritten ermöglichen.

Zu Beginn der Studienarbeit musste die Rentensituation in Deutschland analysiert und die
genauen Anforderungen des Projektpartners geklärt werden. Aus der Anforderungsanalyse
ging heraus, dass das System aus zwei Teilen besteht: einem User-Interface und einem
Backend. Als erster Schritt der Umsetzung wurde die Architektur aus Komponenten- &
Systemsicht ausgearbeitet. Als User-Interface wurde eine Webanwendung mit Angular
ausgewählt. Die Berechnungslogik sollte in einem Web API mit ASP.NET Core umgesetzt
werden. Die ausgearbeiteten Anforderungen wurden dann im Verlauf der Studienarbeit
mit einem agilen Ansatz umgesetzt, wobei der Kontakt mit dem VermögensZentrum für
kontinuierliches Feedback stets aufrecht erhalten wurde.

Entstanden ist ein dreiteiliger Vorsorgerechner. Im ersten Teil kann der Benutzer mit
einfachen Werten seine Rentenlücke berechnen. Für detailliertere Informationen zu dieser
Lücke können im zweiten Bereich der Plattform die Einnahmen, Ausgaben und Renten
erfasst werden. Präsentiert wird dem Benutzer auch hier nur ein Abbild der Situation
zu seinem Ruhestand. Damit der Verlauf des Ruhestandes und die Zeit bis dahin auf-
zeigt und genauer analysiert werden kann, werden im Ruhestandsfahrplan mithilfe von
Vermögenswerten und Ereignissen auf einer Zeitachse die Akkumulation- & Dekumula-
tionsphase des Kapitals dargestellt. Darin ist zu erkennen, wie viel Vermögen auf den
Ruhestandszeitpunkt in monatlichen Raten anzusparen ist.

                                           i
VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository
Management Summary
Ausgangslage
Das VZ VermögensZentrum existiert in der Schweiz bereits seit über 25 Jahren und
hat sich in diesem Zeitraum einen Namen als unabhängiger Finanzdienstleister gemacht.
Doch auch in Bereichen wie Steuerberatung, Nachlass oder Pensionierungsberatung
bietet das VermögensZentrum in der Schweiz viele Dienstleistungen an. Seit einigen
Jahren betreibt das VZ in Deutschland eine Tochtergesellschaft, bis anhin mit Fokus
auf die Vermögensverwaltung. Nun möchte das VZ auch in Deutschland bei dem Thema
Pensionierungsplanung Fuss fassen und möglichst viele, besonders auch junge Personen,
ansprechen und diese als Kunden gewinnen. Das Thema Pensionierung und Vorsorgelücke
ist überwiegend in Deutschland brisant, da die staatliche und betriebliche Vorsorge
den Bedarf im Ruhestand nicht annähernd so gut deckt wie in der Schweiz. Um diese
Problem den potenziellen Kunden aufzuzeigen, soll eine Prototyp für eine Anwendung
erstellt werden, welche dem Kunden ermöglicht, seine Vorsorgelücke zu berechnen und
seine Pensionierung in groben Zügen zu planen. Dieser Prozess endet aus Sicht des
VZ idealerweise in einem Beratungs- und Umsetzungsmandat, in welchem der Kunde
langfristig an die Angebote des VermögensZentrums gebunden werden kann.

Vorgehen und Technologien
Als Vorgehensweise wurde eine Mischung zwischen iterativ und Wasserfall gewählt.
Die gesamte Projektdauer wurde dabei in 4 Phasen unterteilt: Inception, Elaboration,
Construction und Transition. Während den einzelnen Phasen wurde in zweiwöchigen
Iterationen gearbeitet. Der Projektplan wurde in der ersten Phase erstellt. In der Phase
Elaboration ging es darum, die Anforderungen aufzunehmen, mit dem VZ abzusprechen
und aufgrund diesen die Architektur der zu erstellenden Lösung zu planen. Gemeinsam
mit dem VZ wurde entschieden, dass die zu entwickelnde Anwendung aus zwei Teilen
besteht. Als Schnittstelle zum Benutzer sollte eine Webanwendung erstellt werden, da
diese ohne grosse weitere Installation bedient werden kann und dem aktuellen Trend
in Richtung Web folgt. Um jedoch in Zukunft auch weitere Schnittstellen anbieten zu
können, soll die Berechnungslogik in einen zweiten Teil, einem Web API, ausgelagert
werden. Zum Schluss dieser Phase wurde ein technischer Prototyp erstellt, um die
Machbarkeit dieser Entschlüsse zu testen. Während der Construction-Phase entstand so
in mehreren Iterationen der Prototyp der Anwendung. In der letzen Phase Transition
wurden Dokumente für die Abgabe der Projektarbeit und die Übergabe des Prototypes
an das VZ erstellt.

                                           ii
VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository
Ergebnisse
Der erstellte Prototyp wurde in drei Teile gegliedert. Die Idee dahinter ist es, dem
Kunden anfangs ohne persönliche Daten erste Zahlen zu liefern und ihn nicht bereits
am Anfang zu verlieren, weil er sich anmelden muss. In diesem ersten Schritt kann er
unter einfachen Angaben wie Alter und Einkommen seine Rentenlücke, also die Differenz
zwischen der gesetzliche Rente und der Ausgaben im Ruhestand, berechnen. Nach einer
Registration mit Benutzernamen und Passwort kann der Kunde seine Vorsorgelücke unter
Berücksichtigung von erfassten Einnahmen, Ausgaben und Renten berechnen. Im letzten
Teil, seinem Ruhestandsfahrplan, kann der Kunde weitere Parameter, wie gewünschtes
Ruhestandsalter oder die theoretische Lebenserwartung anpassen und zukünftige Geld-
flüsse erfassen. Dabei wird ihm bei der Rechnung des Verlaufes seines Vermögens immer
ein Produkt des VermögensZentrums vorgeschlagen. Die Idee ist, dass er dadurch Kunde
des VermögensZentrums wird.

                                         iii
VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository
Inhaltsverzeichnis
I.   Technischer Bericht                                                                                                                             1

1. Einleitung und Übersicht                                                                                                                          2
   1.1. VZ Holding AG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                              2
   1.2. Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            2
   1.3. Altersvorsorgerechner . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                              2

2. Vorgehen und Technologien                                                                                                                         4
   2.1. Vorgehensmodell . . . .     .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
   2.2. Zeitliches Vorgehen . . .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
   2.3. Technologien . . . . . .    .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
        2.3.1. Frontend . . . .     .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
        2.3.2. Backend . . . . .    .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
        2.3.3. Infrastruktur . .    .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5

3. Ergebnisse                                                                                                                                        6
   3.1. Frontend . . . . . . . . . . . . . . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
   3.2. Backend . . . . . . . . . . . . . . . . . .                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
        3.2.1. Exception Handling Middleware                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
        3.2.2. Automatische Tests . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
   3.3. Datenspeicherung . . . . . . . . . . . . .                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
        3.3.1. Konfigurationen . . . . . . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
        3.3.2. Kundendaten . . . . . . . . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
   3.4. Dokumentation Schnittstelle . . . . . . .                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9
   3.5. Mandantenfähigkeit . . . . . . . . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9

4. Zeitauswertung                                                                     10
   4.1. Aufteilung Stunden nach Teammitglied . . . . . . . . . . . . . . . . . . . . 10
   4.2. Aufteilung Stunden nach Aktivität . . . . . . . . . . . . . . . . . . . . . . 11

5. Schlussfolgerung                                                                                                                                  12
   5.1. Umgesetzte Arbeiten . . . . .           .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
   5.2. Optionale Arbeiten . . . . . .          .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
   5.3. Nicht umgesetzte Arbeiten . .           .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
   5.4. Risikomanagement . . . . . .            .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
   5.5. Ausblick . . . . . . . . . . . .        .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
        5.5.1. Frontend Entwicklung             .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15

                                                        iv
VZ Altersvorsorgerechner - Studienarbeit Herbstsemester 2018 Marcel Keller Quoc Tin Tran - Institutional Repository
Inhaltsverzeichnis

         5.5.2. Einsatz in weiteren Ländern . . . . . . . . . . . . . . . . . . . . . . 15
         5.5.3. Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

II. SW-Engineering Dokumente                                                                                                     16

1. Anforderungsspezifikation                                                                                                     17
   1.1. Referenzen . . . . . . . . . . . . . . . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   17
   1.2. Allgemeine Beschreibung . . . . . . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   17
        1.2.1. Produktfunktion . . . . . . . . . . . . . . . .                   .   .   .   .   .   .   .   .   .   .   .   .   17
        1.2.2. Benutzercharakteristik . . . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   17
        1.2.3. Abgrenzung . . . . . . . . . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   18
   1.3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   18
        1.3.1. Use Case Diagramm . . . . . . . . . . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   18
        1.3.2. Aktoren . . . . . . . . . . . . . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   19
        1.3.3. Abläufe und Zusammenhänge . . . . . . . . .                       .   .   .   .   .   .   .   .   .   .   .   .   19
        1.3.4. UC01 - Rentenlücke berechnen . . . . . . . .                      .   .   .   .   .   .   .   .   .   .   .   .   20
        1.3.5. UC02a - Registration . . . . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   20
        1.3.6. UC02b - Login . . . . . . . . . . . . . . . . .                   .   .   .   .   .   .   .   .   .   .   .   .   20
        1.3.7. UC03 - Persönliche Vorsorgelücke berechnen .                      .   .   .   .   .   .   .   .   .   .   .   .   21
        1.3.8. UC04a - Detailierte Registration . . . . . . .                    .   .   .   .   .   .   .   .   .   .   .   .   22
        1.3.9. UC04 - Ruhestandsfahrplan erstellen . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   22
   1.4. Weitere Anforderungen . . . . . . . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   23
        1.4.1. Randbedingungen . . . . . . . . . . . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   23

2. Domainanalyse                                                                                                                 24
   2.1. Domain Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                           24
        2.1.1. Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                         24
        2.1.2. Wichtige Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . .                                           25

3. Architekturspezifikation                                                                                                      27
   3.1. Systemübersicht . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
        3.1.1. Simulierte Kundendaten . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
        3.1.2. Frontend . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
        3.1.3. Backend . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
   3.2. Architektonische Ziele & Einschränkungen         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
        3.2.1. Ziele . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
        3.2.2. Einschränkungen . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
   3.3. Logische Architektur . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
        3.3.1. Backend . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
        3.3.2. Frontend . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
        3.3.3. Schnittstellen Frontend / Backend         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
   3.4. Implementierte Patterns - Backend . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
        3.4.1. Builder Pattern . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36

                                             v
Inhaltsverzeichnis

        3.4.2. Strategy Pattern . . .              .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
        3.4.3. Data Transfer Object                .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
        3.4.4. Repository Pattern . .              .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   38
   3.5. Deployment . . . . . . . . . .             .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   39
        3.5.1. Frontend/Backend . .                .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   39
   3.6. Datenspeicherung . . . . . . .             .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40
        3.6.1. Entscheidung . . . . .              .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40
        3.6.2. Konzepte . . . . . . .              .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40

4. Installationsanleitung                                                                                                                               41
   4.1. Installation . . . . . .   .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
        4.1.1. Server . . . . .    .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
        4.1.2. Entwickler-PC       .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43
   4.2. Konfiguration . . . . .    .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
        4.2.1. Frontend . . .      .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
        4.2.2. Backend . . . .     .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
   4.3. Ausführung . . . . . .     .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
        4.3.1. Frontend . . .      .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
        4.3.2. Backend . . . .     .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
        4.3.3. json-Server . .     .   .   .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44

Literaturverzeichnis                                                                                                                                    45

Glossar                                                                                                                                                 47

Abbildungsverzeichnis                                                                                                                                   49

Tabellenverzeichnis                                                                                                                                     50

                                                           vi
Teil I.

Technischer Bericht
1. Einleitung und Übersicht
1.1. VZ Holding AG
Die VZ Gruppe ist ein Finanzdienstleistungskonzern mit mehr als 30 Einheiten in der
Schweiz und Deutschland. Die VZ Holding ist die kotierte Gesellschaft im Konsolidie-
rungskreis der Gruppe. Zu den nicht kotierten Tochtergesellschaften der Holding gehören
u.a. Banken, Vermögensverwalter, eine Versicherung. Bekannt ist das VZ seit Jahren
für als erste Adresse für unabhängige Vermögensberatung. Jedes Jahr lassen sich mehre-
re tausend Kundinnen und Kunden zu Vorsorge- und weiteren Finanzthemen beraten
wie bspw. Pensionierung, Vorsorge, Finanzanlagen, Immobilienfinanzierung, Nachlass,
Versicherungen. Die wichtigste Zielgruppe des VZ sind Einzelpersonen und Paare ab
50 mit Wohneigentum. Die Kundenbetreuung findet on- und offline statt, wobei der
Onlinezugang das VZ Finanzportal ist.

1.2. Problemstellung
Privatpersonen vieler zentraleuropäischen Länder sind mit der Herausforderung einer
Rentenlücke im Alter konfrontiert. Eine Rentenlücke entsteht, wenn im Ruhestand die
Ausgaben mit den Einkünften nicht gedeckt werden können. Die vorherrschenden Vor-
sorgesysteme haben aber das Ziel, diese Lücke vollständig oder möglichst vollständig zu
decken. Die staatliche Rente übernimmt dabei eine zentrale Rolle, vermag jedoch meist
nicht alle Ausgaben zu decken. Die beruflich und speziell die private Vorsorge werden
immer wichtiger.

Beispielhaft ist Deutschland mit einem Drei-Säulen-System ähnlich wie in der Schweiz
ein Land, das mitten in dieser Herausforderung steckt. Die VZ Gruppe ist dort mit der
VZ VermögensZentrum GmbH, Deutschland, sowohl als Finanz- und Vermögensbera-
tungseinheit als auch als Bank präsent. In Deutschland ist die Nachfrage im Bereich der
Ruhestandsplanung sehr mager, obwohl diese auch für junge Menschen immer bedeutender
wird.

1.3. Altersvorsorgerechner
Die Relevanz und Herausforderung der Altersvorsorge soll neu dominanter und breiter
angesprochen werden. Dafür wird eine eigene Plattform entwickelt, auf welcher der poten-
zielle Kunde seine Rentenlücke berechnen und entsprechende Produkte für die Schliessung
dieser erwerben kann. Die geeigneten VZ Produkte sind ebenfalls in Entwicklung. Mit

                                           2
1. Einleitung und Übersicht

der Plattform, dem Rechner und den Produkten könnten potenzielle Kunden neu bereits
während der Ansparphase angesprochen und so eine neue Kundengruppe bedient werden.

Um den Zielgruppen ihre Situation im Alter und mögliche Verbesserungsvorschläge
aufzuzeigen, soll im Rahmen der Studienarbeit ein Rechner für die Altersvorsorge erstellt
werden, welches in diese zukünftige Plattform eingegliedert werden soll. Dieser soll dem
interessierten Benutzer seine Lücke im Ruhestand und seine Vorsorgeplanung in einfachen
Schritten ermöglichen.

Der ganze Rechner soll aus drei Teilen bestehen, der je nach Funktionsteil einen anderen
Detaillierungsgrad der Angaben zur Altersvorsorge aufweisen soll (siehe Abbildung 1).
Im ersten Teil soll der Benutzer mit wenigen und einfach zu ermittelnden Angaben
wie Alter und Einkünfte die Rentenlücke bestehend aus der Differenz von staatlicher
Rente und Ausgaben berechnen können. Für detailliertere und weitere Informationen zu
dieser Lücke ist ein geschützter Bereich vorgesehen, wo mehr Angaben zu Einnahmen,
Ausgaben und weiteren Renten möglich sein soll. Damit der Verlauf einer Pensionierung
und die Zeit bis dahin aufzeigt und genauer analysiert werden kann, sollen ebenfalls in
diesem erweiterten geschützten Bereich mithilfe von Vermögenswerten und Ereignissen
von Geldzu- und abflüssen auf einer Zeitachse die Akkumulation- & Dekumulationsphase
des Kapitals dargestellt werden. Darin soll zu erkennen sein, wie viel Vermögen auf den
Ruhestandszeitpunkt in monatlichen Raten anzusparen ist, um die statistische Lebenser-
wartung ohne finanzielle Sorgen zu erreichen. Ein wichtiger Aspekt dieses Rechners soll
die Erweiterbarkeit und Mandantenfähigkeit sein, da beispielsweise Österreich ebenfalls
mit der Herausforderung der Altersvorsorge konfrontiert ist und man dort allenfalls Fuss
fassen möchte.

                                Abbildung 1.: Konzept
Quelle: Icons für Rentenlücke [4] und Ruhestandsfahrplan [6] von Freepik, Icon für
Vorsorgelücke [5] von itim2101, sonst eigene Darstellung

                                           3
2. Vorgehen und Technologien
2.1. Vorgehensmodell
In der Studienarbeit wurde ein gemischtes Vorgehensmodell namens Scrum++ aus
Scrum und dem Unified Process gewählt. Durch den Zeitpunkt von “End of Elaboration”
im Unified Process wird ermöglicht, dass vor der eigentlichen Entwicklungsarbeit die
Anforderungen und die Architekturspezifikation stehen und der Industriepartner richtig
verstanden wurde. Damit man doch flexibel bleibt und auf Veränderungen schnell reagieren
kann, kommt Scrum mit seinem iterativen Ansatz während der gesamten Projektdauer
zum Einsatz.

2.2. Zeitliches Vorgehen
Für die Studienarbeit standen 14 Wochen mit je 17h pro Woche und Person zur Verfügung.
Scrum++ wurde mit zweiwöchigen Iterationen eingesetzt und Meilensteine wurden am
Ende einer Iteration angesetzt. Diese Meilensteine wurden zu Beginn des Projektes
definiert und steckten grob ab, was zu welchem Zeitpunkt abzuliefern ist. Der Projektplan
dient als Anlaufstelle für detailliertere Informationen.

                      Abbildung 2.: Übersicht zeitliches Vorgehen
                             Quelle: Eigene Darstellung

                                           4
2. Vorgehen und Technologien

2.3. Technologien
Während des Projekts wurden verschiedene Technologien eingesetzt, die im Projektplan
beschrieben wurden. Nachfolgend befinden sich in den Abbildungen 3, 4 und 5 eine Liste
der effektiv eingesetzten Technologien in der Studienarbeit.

2.3.1. Frontend

                        Abbildung 3.: Technologien Frontend
                             Quelle: Eigene Darstellung

2.3.2. Backend

                         Abbildung 4.: Technologien Backend
                             Quelle: Eigene Darstellung

2.3.3. Infrastruktur

                       Abbildung 5.: Technologien Infrastruktur
                             Quelle: Eigene Darstellung

                                          5
3. Ergebnisse
3.1. Frontend
Das User-Interface wurde als Webanwendung mit Angular 6 und TypeScript entwickelt.
In diesem kann der Benutzer folgende Tätigkeiten ausführen:
   • Registration und Login
   • Rentenlücke und Vorsorgelücke berechnen
   • Ruhestandsfahrplan erstellen (Abbildung 6)
   • Vermögenswerte erfassen und bearbeiten
Das Frontend dient hauptsächlich als Erfassungs- und Anzeigemaske. Die Kundendaten
werden von der Kundendaten-API geladen und dorthin gespeichert. Für die Berechnungen
der Rentenlücke und des Ruhestandsfahrplanes werden diese Daten weiter an unser
Backend geleitet und das Resultat dargestellt. Damit die Daten dem Kunden anschaulich
dargestellt werden können, werden diese in Form von Charts mit der Chart-Library
ngx-charts [12] dargestellt.

                   Abbildung 6.: Persönlicher Ruhestandsfahrplan
                            Quelle: Eigene Darstellung

                                         6
3. Ergebnisse

3.2. Backend
Das Backend ist das Herzstück der neuen Anwendung. In diesem befindet sich die Logik
aller Berechnungen für die Rentenlücke, Vorsorgelücke und den Ruhestandsfahrplan. Dem
Frontend bietet das Backend ein Web API an, welches über HTTP angesprochen werden
kann. Daten werden im JSON-Format übertragen.
Das Backend wurde bewusst schlank gehalten und beinhaltet keinerlei Logik für die
Verwaltung der Kundendaten oder Vermögenswerte der Kunden. Diese werden dem
Backend als Input übergeben. So kann sich das Backend einfach in unterschiedlichste
Systemumgebungen einbinden, einzig die Schnittstelle zum Backend muss eingehalten
werden.

3.2.1. Exception Handling Middleware
Für das einfache Abfangen von unbehandelten Exceptions und Mappen in ein Resultat,
welches dem Client zurückgegeben werden kann, wurde eine Middleware für ASP.NET
Core erstellt. Dieser kann via Konfiguration pro Exception-Typ ein Mapping auf ein
Resultat und ein Status-Code definiert werden. Weitere Details zum Exception Handling
sind in der Architekturspezifikation unter dem Kapitel 3.3.1.2 Error Handling zu finden.

             Abbildung 7.: Exception Handler Middleware - Code Snippet
                             Quelle: Eigene Darstellung

3.2.2. Automatische Tests
Unit Tests Einzelne Komponenten wie die Services auf dem Business Layer oder die
Repositories im Data Access Layer wurden mithilfe von Unit Tests mit dem Testframework
MS Test von Microsoft [21] getestet.

Integration Tests Der komplette Ablauf der Applikation von Controller bis Daten-
quelle wurde mithilfe von Integration Tests getestet. Dank der Erweiterung Micro-
soft.AspNetCore.Mvc.Testing von Microsoft [7] ist dies ohne grosses Aufsetzen von In-
frastruktur möglich. Diese Erweiterung abstrahiert einen Web-Server im Memory und
bietet einen HttpClient für Requests an. Da die Berechnungen der Lücke von Alter und
Datum abhängt wurde in den Integration Tests nur die Fehlerfälle getestet.

                                           7
3. Ergebnisse

3.3. Datenspeicherung
3.3.1. Konfigurationen

Für die Berechnungen werden einige Para-
meter wie Inflation, durchschnittliches Ein-
kommen, erwartete Ausgaben im Ruhestand
in Prozent des Einkommens oder die statis-
tische Lebenserwartung benötigt. Da sich
diese Parameter mit der Zeit ändern kön-
nen, wurden diese konfigurierbar gemacht.
Bei diesem Parametern handelt es sich aber
nicht um komplexe, zusammenhängende Ob-
jekte sondern grundsätzlich nur Key-Value-
Paare. Als einfachste Lösung bot sich hier
die Konfiguration in einer JSON-Datei an.
Dies erleichtert auch die Integration in die       Abbildung 8.: Parameter JSON-File
Infrastruktur des VZ.
                                                       Quelle: Eigene Darstellung

Ablösung durch Datenbank Das zukünftige Ablösen der JSON-Files als Datenquelle
wurde im Design des Backends berücksichtigt. Diese Datenquelle wurde mithilfe ei-
nes Data-Providers abstrahiert, welcher beispielsweise durch einen SQL-Data-Provider
ausgetauscht werden kann.

3.3.2. Kundendaten
Da sich das VZ während der Studienarbeit über das zukünftige Gesamtsystem, in welchem
sich der entwickelte Prototyp einfinden wird, nicht einig war, war auch nicht klar, wo die
Kundendaten und Vermögenswerte abgespeichert werden sollen. Klar war jedoch, dass
diese nicht Bestandteil des umzusetzenden Systems in der Studientarbeit sind. Gemäss
VZ war es aber als gegeben zu betrachten, dass die Kundendaten in Zukunft via einem
API über HTTP zugänglich sein werden. Um dies in unserer Studienarbeit simulieren zu
können, wurde des JSON-Server [9] verwendet. Dieser erstellt aufrund einer JSON-Datei
vollautomatisch ein RESTful Web API in wenigen Sekunden, inklusive Datenspeicherung
in einem JSON-File.

                                               8
3. Ergebnisse

3.4. Dokumentation Schnittstelle
Für die Dokumentation der Schnittstelle des Backends wurde Swagger verwendet. Swag-
ger bietet eine einfache Möglichkeit, die Schnittstellendokumentation des Backends zu
betrachten und direkt im Browser zu testen. Angereichert wird die Dokumentation der
einzelnen Endpoints oder verwendeten Objektstrukturen über XML-Kommentare im
Code, welche hier ebenfalls ersichtlich sind.

                    Abbildung 9.: Auszug Swagger-Dokumentation
                             Quelle: Eigene Darstellung

3.5. Mandantenfähigkeit
Eine Anforderung an den Prototyp des Backends war die mögliche Erweiterung von
Mandanten, so dass die existierende Berechnungslogik ohne grossen Aufwand für weitere
Länder übernommen werden kann.

Backend Die Mandantenfähigkeit wurde in der Architektur des Backends berücksichtigt.
So wurden beispielsweise die Berechnungen der Renten und Konfiguration der Positionen
für die Berechnung des Ruhestandsfahrplanes in eigene, austauschbare Klassen abstrahiert.
Diese Klassen können entweder über verschiedene Mandanten verwendet oder pro Mandant
implementiert werden.

Frontend Das Frontend beinhaltet keine Business-Logik für die Berechnungen, darum
müsste im Falle eines weiteren Mandanten nur die Anzeige angepasst werden. Dabei
handelt es sich um Komponenten wie die Währung oder die Formatierung von Zahlen.
Weil im Vorhinein klar war, dass das Frontend nur als Prototyp verwendet und in
dieser Form nie Einzug in ein produktives System finden wird, wurde auf die einfache
Erweiterbarkeit für neue Mandanten verzichtet.

                                           9
4. Zeitauswertung
Das Resultat der Studienarbeit wurde in ingesamt 429 Arbeitsstunden erreicht, was etwas
unter dem Soll von 480 Stunden liegt. Dies kommt von der grossen Erfahrung, die beide
Teammitglieder in dem Bereich der Infrastruktur und der Backend-Programmierung mit
in das Projekt gebracht haben. Im Rahmen des Engineering-Projektes an der HSR wurde
Projekt mit ähnlicher Struktur und Technologien umgesetzt, darum waren einige zu
erledigende Basisarbeiten bereits bekannt und konnten daher schneller umgesetzt werden.

4.1. Aufteilung Stunden nach Teammitglied
Die Aufteilung der Total Stunden von 429 auf die Teammitglieder beträgt ziemlich genau
50%/50%. Dem Zugrunde liegt, dass wir praktisch ausschliesslich an den gleichen Tagen
zusammen gearbeitet haben. Ebenso wurden gegenseitige Unterstützungen geboten, falls
ein Teammitglied bei einer Arbeit länger als gedacht hatte oder angestanden ist.

                Abbildung 10.: Aufteilung Stunden nach Teammitglied
                             Quelle: Eigene Darstellung

                                          10
4. Zeitauswertung

4.2. Aufteilung Stunden nach Aktivität
Die Aufteilung der Total Stunden nach Aktivität kommt wie erwartet mit einem grossen
Anteil von Entwicklung daher. Herausstechend ist, dass der Anteil der Infrastruktur sehr
klein ist. Dies lässt sich aber aufgrund des grossen Vorwissen von den verwendeten Tech-
nologien und eingesetzen Plattformen einfach nachvollziehen. Interessant, und sicherlich
etwas unterschätzt, ist der doch grosse Anteil von Meetings an der gesamtem Projektzeit.

                    Abbildung 11.: Aufteilung Stunden nach Aktivität
                               Quelle: Eigene Darstellung

                                          11
5. Schlussfolgerung
In den 14 Wochen Studienarbeit wurde ein umfangreiches System entwickelt. Dank
dem eingespielten Projektteam, guter Projektplanung und stetigem Austausch mit dem
Projektpartner konnten alle zwingenden Anforderungen schneller als geplant umgesetzt
werden. In der so gewonnenen Zeit wurden auch einige optionale Anforderungen umgesetzt.
Diese wurden vor der Umsetzung durch den Projektpartner priorisiert oder ergänzt.

5.1. Umgesetzte Arbeiten
Während der Studienarbeit konnten alle zwingenden Features umgesetzt werden.

Rechner Rentenlücke Rentenlücke basierend auf einfache Angaben wie Nettoeinkom-
men, Alter und Geschlecht berechnen.

Rechner Vorsorgelücke Nach der Erfassung von eigenen Vermögenspositionen wie
Einkommen, Renten, Ausgaben und weiteren Vermögen die Vorsorgelücke berechnen.

Persönlicher Ruhestandsfahrplan Basierend auf den Vermögenspositionen aus dem
Rechner Vorsorgelücke einen zeitlichen Verlauf des Vermögenswertes und die monatliche
Sparquote aufzeigen.

Konfigurierbare Parameter Die für die Berechnung verwendeten Parameter wurden in
ein JSON-File ausgelagert und können ohne einen neuen Release angepasst werden.

                                          12
5. Schlussfolgerung

5.2. Optionale Arbeiten
Zusätzlich zu den zwingenden Features konnten auch optionale Anforderungen umgesetzt
werden.

Erfassung von weiteren Soll/Haben Es können weitere Vermögenspositionen wie eine
Hypothek, Lebensversicherungen oder weitere Einnahmen erfasst werden. Diese fliessen
je nach Typ in die Berechnung mit ein oder dienen als informative Angabe.

Anpassung des Pensionierungsalters und der Lebenserwartung Der Benutzer kann
in der Berechnung des Ruhestandsfahrplanes seine persönlichen Angaben zum Pensio-
nierungsalter oder der statistischten Lebenserwartung tätigen und so beispielsweise eine
Frühpensionierung planen.

Planung von Ereignissen Im Rahmen des Ruhestandsfahrplanes können Ereignisse in
Form von Zu- und Abflüssen geplant werden.

Verschiedene Varianten des Ruhestandsfahrplanes Dem Benutzer werden im Ruhe-
standsfahrplan immer zwei Varianten berechnet: eine mit den Vorgaben des VZ und eine
mit seinen eigenen Anpassungen wie beispielsweise Ereignisse, eigene Ausgaben oder ein
angepasstes Pensionierungsalter.

5.3. Nicht umgesetzte Arbeiten
Web-UI auch auf mobilen Geräten aufrufbar Während der Aufnahme der Anforde-
rungen und der Konzeption eines Prototypen wurde klar, dass sich die technischen
Anforderungen und Vorstellungen des VZ mit der Anforderung an ein UI mit Ausrichtung
auf mobile Geräte beisst. Deshalb wurde gemeinsam entschieden, der Fokus des UI nicht
auf mobile Geräte zu setzen.

DSGVO Nach Absprache mit dem Projektpartner wurde die Nicht-Funktionale Anforde-
rung “in einfachen Zügen DSGVO-gerecht sein” nach hinten priorisiert, da die Umsetzung
dieser Anforderung nicht klar war und das UI nur als Prototyp entwickelt und nicht live
gehen wird.

                                          13
5. Schlussfolgerung

5.4. Risikomanagement
Zu Beginn des Projektes wurde eine umfängliche Risikoanalyse durchgeführt und eine
Risikotabelle erstellt. Trotz einigen eingetretenen Risiken konnte dank den definier-
ten Massnahmen das Ausmass des Schadens gering gehalten und so alle Meilensteine
zeitgerecht erreicht werden. Nachfolgend wird auf die wichtigsten Risiken eingegangen.

Probleme mit Angular Dank der Investition von einigen Stunden in das Einarbeiten
und Ausprobieren von Angular in der Elaboration-Phase konnte die Entwicklung des
Frontends ohne grosse Probleme durchgeführt werden.

Problem mit Azure DevOps Gelegentlich war unsere DevOps-Umgebung, gehosted bei
Microsoft, nicht erreichbar. Durch häufiges Commits und Pushes von beiden Entwicklern
war der Code immer auf mindestens zwei Rechnern verfügbar. So konnte diese Zeit ohne
Probleme überbrückt werden.

Update von Software Auf einem Rechner wurde während der Projektphase ein Update
des Git-Clients durchgeführt. Diese Version war jedoch mit Azure DevOps inkompatibel,
deshalb konnte eine optimale Versionskontrolle des Codes nicht gewährleistet werden.
Mit einem Downgrade des Clients wurde dieses Problem behoben. In Zukunft sollten
Updates an kritischen Komponenten nicht mehr während der Projektphase, oder sonst
nur mit vorhergehender Evaluation, durchgeführt werden.

                                         14
5. Schlussfolgerung

5.5. Ausblick
Mit dem Abschluss der Studienarbeit erhält der Projektpartner eine funktionsfähige
Webapplikation, welches in erster Linie als Proof of Concept dienen soll. Für das Projekt-
team ist mit der Übergabe die Entwicklung am VZ Altersvorsorgerechner beendet. Die
Ergebnisse unseres Projektes werden in einem grösseren Gesamtprojekt eingegliedert und
für weitere Evaluierungsschritte miteinbezogen.

5.5.1. Frontend Entwicklung
Im produktiven System soll das Frontend von einem externen Partner entwickelt werden,
der sich im Bereich User Experience und User Interaction Design spezialisiert hat.
Die Berechnungslogik im Backend soll zumindest in der aktuellen Form mit weiteren
Ergänzungen seitens VZ weiterverwendet werden.

5.5.2. Einsatz in weiteren Ländern
Das Backend mit der Berechnungslogik kann mit einigen Erweiterungen gut in weiteren
Ländern wie Österreich oder der Schweiz eingesetzt werden.

5.5.3. Erweiterungen
Durch das Konzept des Backends sind Erweiterungen ohne grösseren Aufwand möglich.
Beispielsweise stellt die Einführung von weiteren VZ-Produkten Erweiterungen dar, die
in der Architektur beachtet wurden.

                                           15
Teil II.

SW-Engineering Dokumente
1. Anforderungsspezifikation
Dieser Abschnitt beschreibt die Anforderungen an das Projekt VZ Altersvorsorgerechner,
welches im Rahmen der Studienarbeit an der HSR umgesetzt wird.

1.1. Referenzen

 Aufgabenstellung          https://dev.azure.com/savzhsr/VZ%
                           20Altersvorsorgerechner/_git/VZ_
                           Altersvorsorgerechner?path=%2Fdocs%
                           2Faufgabenstellung%2F2018-07-05%
                           20Aufgabenstellung_VZ_Final.docx&version=
                           GBdevelop
 Beschrieb Rechner         https://dev.azure.com/savzhsr/VZ%
                           20Altersvorsorgerechner/_git/VZ_
                           Altersvorsorgerechner?path=%2Fdocs%
                           2Faufgabenstellung%2FVZ_Rechner_Beschrieb_V180918.
                           docx&version=GBdevelop
 Projektplan               https://dev.azure.com/savzhsr/VZ%
                           20Altersvorsorgerechner/_git/VZ_
                           Altersvorsorgerechner?path=%2Fdocs%2Fprojektplan%
                           2Fprojektplan-tex%2Fprojektplan.pdf&version=
                           GBdevelop

                                Tabelle 1.: Referenzen

1.2. Allgemeine Beschreibung
1.2.1. Produktfunktion
Die allgemein beschriebenen Produktfunktionen sind sowohl in der Aufgabenstellung als
auch im Projektplan zu finden. Die detaillierten Funktionalitäten sind im Kapitel 1.3 -
Use Cases erfasst.

1.2.2. Benutzercharakteristik
Der VZ Altersvorsorgerechner richtet sich an alle Privatpersonen, die sich mit ihrer
persönlichen Vorsorge auseinandersetzen wollen. Im Vordergrund steht die (private)
Vorsorge und deren Planung.

                                          17
1. Anforderungsspezifikation

1.2.3. Abgrenzung
Es wird kein Login entwickelt, der den üblichen Standards entspricht, da dieses vermutlich
von einem externen Anbieter umgesetzt wird. Es wird auf alle komplexen Gamifications
verzichtet, diese müssen zu einem späteren Zeitpunkt realisiert werden. Es wird bei der
Umsetzung aber auf eine einfache Erweiterbarkeit geachtet, so dass diese Umsetzung
möglich ist.

1.3. Use Cases
1.3.1. Use Case Diagramm
Die roten gestrichelten Pfeile sind keine direkten Abhängigkeiten sondern stellen den
Ablauf dar.

                          Abbildung 12.: Use Case Diagramm
                              Quelle: Eigene Darstellung

                                           18
1. Anforderungsspezifikation

1.3.2. Aktoren

 Aktor                     Beschreibung
 Potenzieller Kunde        Ist im System nicht registriert oder nicht angemeldet
 Kunde                     Ist im System registriert und angemeldet

                                  Tabelle 2.: Aktoren
                               Quelle: Eigene Darstellung

1.3.3. Abläufe und Zusammenhänge
Dieser Abschnitt beschreibt die Zusammenhänge der einzelnen Use-Cases und die Abläufe,
welcher der Kunde durchschreitet um von seiner Rentenlücke zum Ruhestandsfahrplan
zu gelangen. Die Zahlen in klammern repräsentieren die Schritte im Use-Case Diagramm.

  1. Als erstes berechne ich als potenzieller Kunde meine Rentenlücke. Diesen kann ich
     ohne Registration oder Anmeldung durchführen.

  2. Um mehr Funktionalität zu können, muss ich mich registrieren (1a) und danach
     anmelden (1b). Nach der Registration werde ich von einem potenziellen Kunden zu
     einem Kunden. Falls ich schon registriert bin kann ich mich direkt anmelden (1).

  3. Nach der Anmeldung (2) meine Vorsorgelücke berechnen.

  4. Möchte ich nach der Berechnung meiner Vorsorgelücke mehr erfahren, so muss ich
     weitere persönliche Details im Schritt Detaillierte Registration erfassen (3).

  5. Nach der Registration kann ich meinen Ruhestandsfahrplan berechnen (4).

                                          19
1. Anforderungsspezifikation

1.3.4. UC01 - Rentenlücke berechnen
Als Kunde möchte ich unter Eingabe von Geschlecht, Alter und aktuellem Netto-
einkommen meine Rentenlücke berechnen. Dabei soll der Bedarf (Ausgaben) einem
prozentualen Anteil des letzten Nettoeinkommens vor dem Ruhestand entsprechen. Dieses
Nettoeinkommen soll automatisch berechnet werden, wobei besonders die Inflation
berücksichtigt werden soll. Als Ruhestandzeitpunkt soll der ordentliche Zeitpunkt
gelten. Die Rentenlücke setzt sich aus der Differenz zwischen Bedarf und staatlicher
Rente zusammen.

Details Die genaue Spezifikation vom VZ ist im “Beschrieb Rechner” im Kapitel
“Rechner „Rentenlücke“ (1)” zu finden.

                     Abbildung 13.: Screen Rechner Rentenlücke
                            Quelle: VermögensZentrum

1.3.5. UC02a - Registration
Um mich später im System anmelden zu können, registriere ich mich zuerst mit einem
Benutzernamen, meinem Geburtsdatum und einem Passwort.

1.3.6. UC02b - Login
Mit meinem Usernamen und Passwort möchte ich mich als Kunde anmelden, um auf
weitere Funktionalität zugreifen zu können.

                                         20
1. Anforderungsspezifikation

1.3.7. UC03 - Persönliche Vorsorgelücke berechnen
Precondition   Der Kunde ist im System angemeldet.

Als Kunde möchte ich unter Berücksichtigung sämtlicher Rentenleistungen resp. Vermö-
genswerte meine persönliche Vorsorgelücke berechnen.

  1. Ich erfasse in einem ersten Schritt meine aktuellen Einkommen und meine voraus-
     sichtlichen Rentenleistungen.

  2. In einem nächsten Schritt kann ich meine Ausgaben erfassen oder diese vom System
     berechnen lassen.

  3. Im letzten Schritt kann ich meine aktuellen Vermögenswerte erfassen.

Die persönliche Vorsorgelücke setzt sich aus der Differenz zwischen Bedarf und Renten-
leistungen zum Pensionierungszeitpunkt zusammen. Dabei möchte ich im Detail sehen,
aus welchen Quellen sich meine Einnahmen und die Lücke zusamensetzt.

Details Die genaue Spezifikation vom VZ ist im “Beschrieb Rechner” im Kapitel
“Rechner „Persönliche Vorsorgelücke“ (2)” zu finden.

                (a) Persönliche Vorsorgelücke        (b) Ruhestands-Fahrplan

               Abbildung 14.: Screens Rechner Persönliche Vorsorgelücke
                              Quelle: VermögensZentrum

                                                21
1. Anforderungsspezifikation

1.3.8. UC04a - Detailierte Registration
Precondition   Der Kunde hat die detailierte Registration noch nicht abgeschlossen.

Um meinen Ruhestandsfahrplan erstellen zu können, muss ich als Kunde zuerst mehr
persönliche Details angeben. Diese Details beinhalten Informationen zu meiner Person
und meinem aktuellen Wohnort.

1.3.9. UC04 - Ruhestandsfahrplan erstellen
Precondition Der Kunde ist im System angemeldet und hat die detailierte Registration
abgeschlossen.

Unter Berücksichtigung der in UC03 erfassten Einkommen, Ausgaben und Vermögens-
werte möchte ich mein benötigtes Vermögen zum Ruhestandszeitpunkt berechnen lassen.
Dieses soll aufgrund meiner Einnahmen und Ausgaben im Ruhestand und der statistischen
Lebenserwartung berechnet werden. Zudem soll mir aufgezeigt werden, wie viel ich pro
Monat bis zu meiner Pensionierung sparen muss, um das benötigte Vermögen ansparen
zu können.

Details Die genaue Spezifikation vom VZ ist im “Beschrieb Rechner” im Kapitel
“Darstellung „Ruhestands-Fahrplan“ (Rechner 3)” zu finden.

                         Abbildung 15.: Ruhestandsfahrplan
                            Quelle: VermögensZentrum

                                         22
1. Anforderungsspezifikation

1.4. Weitere Anforderungen

 Anforderung                                                       Erfüllt
                                                                   (Ja/Nein)
 Bedienbarkeit
 Nach Aufruf der Seite muss der Benutzer nach 3 Angaben seine
 Rentenlücke sehen.
 5 Testpersonen vom VZ ohne Vorkentnisse der Applikation müssen
 ihre Rentenlücke im Schnitt innerhalb von 10 Minuten berechnen
 können.
 Performance
 Nach Angeben der Daten soll der Kunde innerhalb von 2 Sekunden
 seine Rentenlücke sehen.
 Nach Angeben der Daten soll der Kunde innerhalb von 4 Sekunden
 seinen Ruhestandsfahrplan sehen.
 Kompatibilität
 Das UI muss mit Google Chrome in der Version 69.0.3497.100 oder
 neuer kompatibel sein.

                    Tabelle 3.: Nicht-Funktionale Anforderungen
                             Quelle: Eigene Darstellung

1.4.1. Randbedingungen
1.4.1.1. Hosting
Das Frontend & Backend müssen in einem IIS mit der Version 10 als Site auf einem
Windows-Server 2016 R2 installierbar sein.

                                        23
2. Domainanalyse
Dieser Abschnitt beschreibt die Analyse der Domain des Projektes VZ Altersvorsorge-
rechner, welches im Rahmen der Studienarbeit an der HSR umgesetzt wird.

2.1. Domain Model
Die Klassen im Domain Model beinhalten alle Eigenschaften.

2.1.1. Diagram

                          Abbildung 16.: Domain Model
                           Quelle: Eigene Darstellung

                                        24
2. Domainanalyse

2.1.2. Wichtige Konzepte
2.1.2.1. Vermögen
Nebst dem VZ-Produkt gibt es verschiedene Vermögen, diese sind zur Übersichtlichkeit
nicht im Diagram vorhanden. Diese Typen sind:

   • Liquidität
   • Wertschriften
   • Immobilien
   • Hypothek
   • Darlehen
   • Kapitallebensversicherung

2.1.2.2. VZ-Produkt
Zur Laufzeit wird bei der Berechnung des Ruhestandsfahrplanes dem Kunden ein VZ-
Produkt basierend auf seinem Vermögen und Alter vorgeschlagen. Dieses fliesst als
Vermögen in die Berechnung ein.

2.1.2.3. Rente
Das deutsche Rentensystem basiert auf dem sogenannten 3-Schichten-Modell. Neben
der gesetzlichen Rente existiert die obligatorische betriebliche Rente. Dazu hat jeder die
Möglichkeit, private Renten abzuschliessen um so seine Rente aufzubessern.

2.1.2.4. Einflussfaktor
Ein Einflussfaktor bezeichnet einen durch das VZ vordefinierten Wert, welcher Einfluss auf
die Berechnung hat. Ein solcher ist beispielsweise die Inflationsrate, der Standardsteuersatz
oder das Ruhestandsalter.

2.1.2.5. Jahreswert
Da der Kapitalaufbau und Kapitalverzehr nicht linear sind, müssen die einzelnen Werte
pro Jahr ausgewiesen werden können.

2.1.2.6. Unterschied Kunde - potentieller Kunde
Zum Zeitpunk des Berechnens der Rentenlücke existiert noch kein Kunde aus Sicht
des Systemes, sondern es werden lediglich die benötigten Parameter für das Berechnen
angegeben. Für die Berechnung der Vorsorgelücke und des Ruhestandsfahrplanes muss
sich der potentielle Kunde registrieren, danach werden die Daten abgespeichert und es
kann von einem Kunde gesprochen werden.

                                             25
2. Domainanalyse

2.1.2.7. Beziehung Ruhestandsfahrplan - Vermögen
ist Startvermögen Das vom Kunde erfasste Vermögen wird summiert als Startvermögen
für die Kapitalaufbau-Phase verwendet.

schlägt VZ-Lösung vor Für die Berechnung eines Ruhestandsfahrplanes wird vom
System automatisch eine VZ-Lösung anhand der Kundendaten (Alter, Einkommen,
Vermögen) vorgeschlagen.

                                       26
3. Architekturspezifikation
Dieser Abschnitt beschreibt die Architektur der Umsetzung des Projektes VZ Altersvor-
sorgerechner, welches im Rahmen der Studienarbeit an der HSR umgesetzt wird.

3.1. Systemübersicht

                           Abbildung 17.: Systemübersicht
                             Quelle: Eigene Darstellung

3.1.1. Simulierte Kundendaten
Da gemäss VZ nicht bekannt ist, wo die Kundendaten in Zukunft gespeichert werden
und wie auf diese zugegriffen wird, können diese im Rahmen der Studienarbeit simuliert
werden. Dafür wird der JSON-Server [8] verwendet.

3.1.2. Frontend
Das Frontend läuft als Single-Page-Application im Browser.

3.1.3. Backend
Zugriffspunkt des Backends ist das API. Dieses ist als REST-Schnittselle implementiert
und verwendet JSON für die Serialisierung der Daten.

API   Die Berechnungen laufen im API.

                                         27
3. Architekturspezifikation

Datastore Als Datenspeicher wird auf eine Datenbank verzichtet, da dies so vom
VermögensZentrum gewünscht wurde. Die benötigten Daten werden in einem JSON-File
abgespeichert. Der DataAccess-Layer in der Architektur wird so abstrahiert, dass ein
späterer Wechsel zu einer Datenbank möglichst einfach ist.

3.2. Architektonische Ziele & Einschränkungen
3.2.1. Ziele
Das grobe architektonische Ziel ist es, das Frontend als simple Anzeige zu verwenden
und sauber von Business-Logik und Datenspeicherung zu trennen. Diese Aufgaben sollen
nur im Backend erledigt werden. Dies macht es möglich, diese Logik an einem Ort zu
haben und einfach auszutauschen.

3.2.2. Einschränkungen
3.2.2.1. Nicht-Funktionale Anforderungen
Die Nicht-Funktionalen Anforderungen haben nur Einfluss auf die Skalierbarkeit und
Performance, ansonsten haben die NFAs keinen Einfluss auf die Architektur. Da es sich
bei der Entwicklung um einen Prototypen handelt werden die nachfolgenden Punkte in
der Architektur berücksichtigt, jedoch nicht umgesetzt.

3.2.2.2. Skalierbarkeit
Die Architektur wurde so konzipiert ist, dass sie keine Abhängigkeiten von anderen
Systemen hat. Darum könnte in Zukunft einfach eine zweite Server-Instanz erstellt und
mittels Load-Balancing die Last verteilt werden.

3.2.2.3. Performance
Um die Performance-Anforderungen zu erfüllen könnte man Caching einbauen. Sinnvoll
wäre es auf dem DataAccess-Layer, da dort die Parameter als Einflussfaktoren für jede
Berechnungsanfrage gleich bleiben.

3.2.2.4. Security
Während des Projektes wird zwar auf Security geachtet und Grundprinzipien im Code
umgesetzt. Jedoch wird nicht darauf gesetzt, eine Sicherheit zu implementieren, die State
of the Art ist.

                                           28
3. Architekturspezifikation

3.3. Logische Architektur
3.3.1. Backend
Das Backend ist in drei eigene Layers unterteilt: “Api”, “Business” und “DataAccess”.
Dabei gibt es ein Package “Domain” welches die Model beinhaltet und über alle Schichten
geteilt wird.

                     Abbildung 18.: Package-Diagramm Backend
                             Quelle: Eigene Darstellung

                                          29
3. Architekturspezifikation

3.3.1.1. Wichtige Konzepte
Business Die einzelnen Services im Business-Layer sind nach den Use-Cases konzipiert.

Common in Business Das Package “Common” im Business-Layer beinhaltet Berechnun-
gen, welche aus allen anderen Services verwendet werden. Ein Beispiel ist das Hochrechnen
von Werten unter Berücksichtigung von Inflation.

Pension in Business Das Package “Pension” im Business-Layer beinhaltet Berechnungen
aus dem Bereich Rente. Darunter fallen beispielsweise das Berechnen der Regelaltersgrenze
oder der gesetzlichen Rente.

RetirementSchedule in Business Das Package “RetirementSchedule” im Business-
Layer beinhaltet verschiedene Komponenten für die Erstellung des Ruhestandsfahr-
plans. Dabei gibt es verschiedene Berechnungsarten im Package “Calculations”. Für die
verschiedenen Phasen werden unterschiedliche Konfigurationen mit verschiedenen Berech-
nungsarten benötigt. Im Package “Builder” findet man das Setup der Konfigurationen
basierend auf dem Package “Configuration”.

Business -> DataAccess Die einzelnen Business-Services verwenden je nach Bedarf
kein, ein oder mehrere Repositories aus dem DataAccess.

3.3.1.2. Error Handling
Bei Validierungsfehlern wird ein selbst definiertes Error Object mit HTTP Status Code
400 zurückgegeben. Dieses beinhaltet Type, Message und eine Map mit den betroffenen
Werten und den entsprechenden Fehlern. Bei unbekannten Fehlern wird ein HTTP Status
Code 500 und ein Error Object mit einer Standardmeldung zurückgegeben. Für genauere
Untersuchungen kann das Backend-Log analysiert werden.

Verwendete HTTP Status Codes Nebst den in ASP.NET Core integrierten Status
Codes (404 NotFound, 405 MethodNotAllowed) werden folgende HTTP Status Codes
direkt verwendet:

   • 200 OK

   • 400 BadRequest

   • 500 Internal Server Error

Code 400 wird zurückgegeben, falls die Input-Validation nicht erfolgreich war oder
ein logischer Fehler in den Input-Daten existiert. Beispielsweise falls der Benutzer seine
Vorsorgelücke berechnen möchte, aber bereits pensioniert ist.
Code 500 wird zurückgegeben, falls entweder ein unbekannter Fehler aufgetreten ist
oder ein Fehler erkannt wurde, welcher aber nicht vom Client behoben werden kann

                                           30
3. Architekturspezifikation

(beispielsweise das Parameter-File wurde nicht gefunden).

Als Basis dieses Entscheides wurden folgende Punkte berücksichtigt:

   1. Im VZ werden in bestehenden Projekten keine anderen Status-Codes verwendet
      (Ausnahme: 204 Created, im Backend werden jedoch keine Objekte erstellt).

   2. Viele Best Practices und grosse Firmen die APIs anbieten schlagen vor, nicht zu
      detaillierte Status Codes zu verwenden [16].

Umsetzung Für die einfache Umsetzung des spezifizierten Error Handlings und der
verwendeten HTTP Status Codes wurde eine Middleware [1] für ASP.NET Core entwickelt.
Die Middleware wurde konfigurierbar implementiert, so dass neue Exception-Typen und
das Mapping von diesen in HTTP Status Codes einfach hinzugefügt werden können. Die
Abbildung 19 zeigt ein Code-Beispiel für die Konfiguration dieser Middleware.

          Abbildung 19.: Konfiguration der Exception Handling Middleware
                            Quelle: Eigene Darstellung

3.3.1.3. Designentscheidungen
Repository Pattern Das Repository Pattern [20] wurde eingesetzt, damit auf dem
Business-Layer die Logik des Ladens von Daten unabhängig von der eingesetzten Tech-
nologie im DataAccess-Layer geschehen kann. So sind die Layers sauber getrennt und
es kann beispielsweise ohne Probleme in Zukunft eine Datenbank als Datenspeicher
eingesetzt werden.

UnitOfWork Pattern Es wird kein UnitOfWork Pattern [15] eingesetzt, da keine Daten
geschrieben und deswegen auch keine Transaktionen über mehrere Repositories benötigt
werden.

3.3.1.4. Verwendete Libraries
NLog Als Logging-Library wird NLog verwendet. NLog bietet sehr gute und einfache
Konfigurationsmöglichkeiten und kann in ASP.NET ohne Probleme eingebunden werden
[3].

                                          31
3. Architekturspezifikation

Json.NET Für das Deserialisieren von JSON-Dateien wird Json.NET [10] verwendet.
Diese Library ist ein defacto Standard für das Handling von JSON-Strukturen in C#
und wird in vielen Projekten verwendet [13].

SwashBuckle.AspNetCore Um die API Dokumentation zu erleichtern, wird Swash-
Buckle [19] genutzt, welche automatisch eine Swagger API Dokumentation generiert.

                                       32
3. Architekturspezifikation

3.3.2. Frontend

                     Abbildung 20.: Package-Diagramm Frontend
                             Quelle: Eigene Darstellung

                                        33
3. Architekturspezifikation

3.3.2.1. Wichtige Konzepte
Routing    Je nach Route werden die verschiedenen Components der jeweiligen Module
geladen.

Layering Im Frontend gibt es kein klassiches Layering wie im Backend. Es wurde
entschieden pro Rechnertyp ein Modul zu erstellen, welche unabhängig voneinander sind.
So lassen sich diese in Zukunft leicht anpassen, austauschen und allenfalls dynamisch
nachladen (Lazy Loading). Es gibt jedoch innerhalb der drei Hauptmodule (PensionGap,
ProvisionGap, RetirementSchedule) ein Layering mit drei Schichten.

Modules Module werden nach den Use-Cases aufgeteilt und demnach auch so benannt.

Components Die Components stellen die Views und ViewModels dar.

Services   Die Services koordinieren die Zugriffe auf die Daten.

RetirementScheduleRegister in RetirementSchedule Diese Komponente wird benö-
tigt, da dieses Modul eine weitere Registrierung des Users benötigt.

Shared Bei gemeinsam verwendeten Komponenten und Funktionalitäten greifen die
Module auf das Shared-Module zu. Beispielsweise könnte eine Component erstellt werden,
welches das Laden von Daten anzeigt.

Login in Shared.Components Da der User für die ProvisionGap- und RetriementSchedule-
Module eingeloggt sein muss, befindet sich die Login Komponente im Shared-Module.

Guards in Shared An diesem Ort befindet sich der AuthGuard, der dafür sorgt, dass
die definierten Routes durch den Login geschützt sind.

Pipes in Shared Pipes werden in den HTML-Templates der Komponenten benötigt,
um zum Beispiel Zahlen zu runden.

ConfigService in Shared.Services Da die Userdaten simuliert sind und von einer wei-
teren API bezogen werden, müssen die BaseURLs konfigurierbar sein.

3.3.2.2. Verwendete Frameworks & Libraries
Angular 6 Bei der Suche nach einem geeigneten UI-Framework stellte sich die Wahl als
schwierig heraus, da im Team noch keine grossen Erfahrungen vorhanden waren. Aufgrund
der guten Dokumentation und Reputation haben wir uns für Angular entschieden.

                                           34
3. Architekturspezifikation

Material Design Nach dem Entscheid das Frontend mit Angular umzusetzen war auch
die Wahl der Design-Library eine einfache, denn Material Design wird ebenfalls vom
Angular-Team entwickelt und lässt sich somit gut zusammen verwenden. Da Google selber
viele dieser Komponenten in ihren Produkten verwendet sollte auch die Bedienbarkeit
kein Problem darstellen.

Bootstrap 4 Nach einer Evaluation der Material Design Library stellte sich heraus,
dass die Grid-Funktionalität nicht wirklich für unsere Bedürfnisse verwendbar ist. Da wir
in der Vergangenheit jedoch schon einmal etwas mit Bootstrap entwickelt und da gute
Erfahrungen gemacht haben, entschieden wir uns Bootstrap für diese Funktionalität zu
verwenden.

3.3.2.3. Wichtige interne Abläufe
Der Ablauf des UIs wurde vom VZ definiert und entworfen. Ersichtlich sind diese im
UI-Prototyp in Moqups [11]. Dieser Ablauf war aber als Anregung gedacht und wurde in
Absprache mit dem VZ im Rahmen der Studienarbeit in abgeänderter Version umgesetzt.

3.3.2.4. Naming Conventions
Components Die Komponenten eines Modules werden wie folgt benannt:
Modulname-Komponentenname. Selektoren beinhalten zudem das Präfix vz- um eine Ein-
deutigkeit zu erhalten. Komponenten im Shared-Module beinhalten keinen Modulnamen
im Komponentennamen.

3.3.3. Schnittstellen Frontend / Backend
Die aktuellste Schnittstellen-Dokumentation zwischen Backend und Frontend ist unter
auf Swagger [18] ersichtlich.

                                           35
3. Architekturspezifikation

3.4. Implementierte Patterns - Backend
3.4.1. Builder Pattern
Das Builder Pattern [2] wurde für die Erstellung der AssetGroups für die einzelnen
Phasen verwendet.

Begründung Das Erstellen der einzelnen Gruppen ist komplex, da sie von vielen Fak-
toren wie beispielsweise Berechnungen, Vermögenspositionen und anderen Gruppen
abhängt. Zudem soll es in Zukunft möglich sein, andere Konstellationen (beispielsweise
für andere Länder) verwenden zu können. Für dies kann dann ein anderer “Concrete
Builder” implementiert und verwendet werden.

                 Abbildung 21.: Implementation des Builder Patterns
                             Quelle: Eigene Darstellung

                                         36
3. Architekturspezifikation

3.4.2. Strategy Pattern
Das Strategy Pattern [17] wurde bei der Berechnung des Ruhestandsfahrplanes in etwas
abgeänderter Form implementiert. Der Unterschied zum klassischen Strategy Pattern
wird in der Abhängigkeit von Context zu Strategy sichtbar. Hier hat eine AssetGroup
mehrere Strategies, welche nacheinander angewendet werden.

                 Abbildung 22.: Implementation des Strategy Pattern
                             Quelle: Eigene Darstellung

3.4.3. Data Transfer Object
Für die Abkapselung der internen Klassenstruktur gegenüber den Clients wurde das Data
Transfer Object Pattern [14] implementiert.

                                         37
3. Architekturspezifikation

3.4.4. Repository Pattern
Das Repository Pattern [20] wurde im Data Access Layer umgesetzt. Die einzelnen
Repositories wurden nach der Domäne unterteilt (Parametrierung, Produkte) und sind
für das Laden und Mappen der Daten verwantwortlich.

Begründung Dies stellt sicher, dass die Datenquelle in Zukunft geändert werden kann,
ohne den Business Layer anpassen zu müssen.

                 Abbildung 23.: Implementation Repository Pattern
                            Quelle: Eigene Darstellung

                                        38
3. Architekturspezifikation

3.5. Deployment

                        Abbildung 24.: Deployment Diagramm
                             Quelle: Eigene Darstellung

3.5.1. Frontend/Backend
Das Frontend und Backend bestehen aus je einer IIS-Site. Beides läuft auf dem gleichen
Windows Server 2016. Das Deployment geschieht automatisch, sobald ein neuer Release-
Commit im Repository erstellt wurde.

Trennung von Frontend und Backend Das Frontend und Backend wurden bewusst
getrennt, damit das Frontend allenfalls auch von einem externen Partner entwickelt
werden kann. Ausserdem ist es möglich, dass das Frontend häufiger wechselt als das
Backend und bei einem Wechsel des Frontends nicht unbedingt das Backend nochmals
gebuildet und released werden muss.

                                         39
3. Architekturspezifikation

3.6. Datenspeicherung
Die benötigten Parameter für die Berechnung werden in JSON-Files gespeichert.

3.6.1. Entscheidung
Die Daten werden nicht wie anfangs definiert in einer relationalen Datenbank gespeichert,
sondern in JSON-Files. Dies auf Wunsch vom VZ. Grund dafür ist, dass dies die Integration
in die Umgebung des VZ vereinfacht.

3.6.2. Konzepte
3.6.2.1. Einflussfaktoren
Die Einflussfaktoren werden in Gruppen nach Verwendungszweck unterteilt. In diesen
Gruppen sind die einzelnzen Werte als Key-Value-Paare abgespeichert.

3.6.2.2. Produkte
Die VZ-Produkte werden mit den Eigenschaften “Anlegerprofil” und “Rendite” abgespei-
chert.

                                           40
Sie können auch lesen