Prototyp

In einer vergangenen Übung haben wir User Stories geschrieben und ihre Anzahl Story-Punkte geschätzt. In dieser Übung sollen einige abgewandelte Stories als Prototyp umgesetzt werden.

Anforderungen

In der Zwischenzeit wurden die Anforderungen überarbeitet, angepasst und auch etwas verallgemeinert:

  1. Auf die Artikel im Warenkorb bzw. auf den darin aufkumulierten Gesamtbetrag können Rabatte abgezogen bzw. kann die Mehrwertsteuer aufgeschlagen werden, wodurch sich der Gesamtbetrag verändert. Die Ab- und Zuschläge können sich auf den Bruttowert oder auf eine Zwischensumme beziehen.
  2. Mit den sogenannten Bundles wurde eine rekursive Struktur geschaffen. Ein Bundle definiert neu nicht nur einen Mengenrabatt, sondern eine Reihe von Artikeln. Ein Bundle kann aber auch andere Bundles beinhalten.

Der Softwarearchitekt möchte wissen, ob diese Anforderungen überhaupt elegant und mit vertretbarem Aufwand umgesetzt werden können. Bevor das Team die User Stories überarbeitet, sollen Sie einen Prototyp hierzu erarbeiten.

Entwurfsmuster

Da Sie mittlerweile mit Entwurfsmustern vertraut sind, sollen diese auch zum Einsatz kommen. Der Softwarearchitekt empfiehlt folgende Entwurfsmuster zum Umsetzen der oben genannten Anforderungen:

  1. Strategy: Die Auf- und Abschläge sollen als einzelne Strategien umgesetzt werden. Auf einen Warenkorb soll eine Liste mit solchen Strategien angewendet werden können.
  2. Composite: Ein Bundle besteht aus konkreten Artikeln und/oder aus weiteren Bundles. Damit wird eine baumartige Struktur aufgebaut, die auf der untersten Stufe als Blätter nur konkrete Artikel enthält, dazwischen aber auch als Knoten Bundles.

Auftrag

  1. Gehen Sie ihre User Stories und die oben beschriebenen Anforderungen durch. Erkundigen Sie sich bei allfälligen Verständnisfragen.
  2. Lesen Sie die oben verlinkten Seiten zu den beiden Entwurfsmustern Strategy und Composite durch.
  3. Setzen Sie ein TypeScript-Projekt mit dem Namen cart-prototype gemäss Anleitung auf.
  4. Versuchen Sie die Anforderungen mithilfe der beiden Entwurfsmuster umzusetzen. Gehen Sie dabei gemäss Test-Driven Development vor. Sie können auch zu zweit im Pair Programming arbeiten.

Geben Sie einen Link auf ihr Repository in Teams ab. Bereiten Sie sich vor, den Zwischenstand der Arbeit vor der Klasse kurz und informell vorzustellen (keine Folien, nur Code und mündliche Erklärungen).