• Teaser Home

    Clean Code Developer School

    Saubere Softwareentwicklung üben – regelmäßig, fokussiert, individuell, angeleitet

DVDs teilen

Architecture Kata „DVDs teilen“

Entwickle ein Softwaresystem, mit dem DVD-Besitzer ihre Schätze mit anderen Teilen können. Das Motto: Warum eine DVD kaufen, wenn man sie sich auch schenken lassen kann? [1]

DVDs kommen ins System über ihre ursprünglichen Eigentümer. Dort verbleiben Sie jedoch nicht. Sie kursieren vielmehr unter den Nutzern des Systems. Wer eine DVD ausleiht, schickt sie nicht an den zurück, von dem er sie geliehen hat. Vielmehr behält er sie, bis jemand anderes sie haben möchte. Insofern könnte man sagen, dass es gar nicht ums Leihen geht, sondern ums Schenken.

Für jeden DVD-Titel existieren im System mehrere Kopien. Die sind verteilt über mehrere Nutzer. Wenn ein Nutzer eine DVD anschauen möchte, dann sucht er einen passenden Titel im Katalog. Ist er fündig geworden, bestellt er ihn – allerdings sucht das System den konkreten Anbieter aus. [2]

Der Anbieter wird per Email über die Bestellung benachrichtigt. Dann verschickt er die DVD an den Besteller und vermerkt das im System. [3] Sobald der Besteller die DVD erhalten hat, vermerkt er auch das im System.

Während die DVD auf dem Postweg ist, kann sie natürlich nicht wieder bestellt werden. Die Kopienzahl des Titels ist heruntergesetzt. Das gilt auch noch während der exklusiven Nutzungszeit nach Erhalt der DVD, die z.B. 14 Tage betragen kann.

Geht alles glatt, ist das System simpel:

  1. Eigentümer stellt DVD ins System und wird damit der erste Anbieter. So wächst der Katalog um Titel und Kopien. [4]
  2. Interessenten blättern im Katalog und bestellen einen Titel.
  3. Das System informiert den Anbieter, der versenden soll.
  4. Der Anbieter versendet und registriert das im System – welches den Besteller informiert.
  5. Der Besteller empfängt und quittiert.
  6. Der Besteller wird nach Ablauf der exklusiven Nutzungszeit automatisch zum Anbieter – oder der Besteller bietet die Kopie schon vorher wieder an.

Nicht immer läuft jedoch alles glatt, auch wenn alle Beteiligten guten Willens sind. Es kann einiges passieren:

  • Der Anbieter versendet die DVD nicht (weil er die Notifikation nicht gesehen oder empfangen hat oder es vergisst).
  • Der Anbieter versendet, aber vermerkt das nicht im System.
  • Der Besteller erhält die DVD nicht, weil sie auf dem Postweg verlorengeht. Dieser Fall kann (zunächst) nicht von dem unterschieden werden, dass der Anbieter nicht versendet.
  • Die DVD kommt in unbrauchbarer Qualität beim Besteller an. Die Ursache kann im Postweg oder beim Anbieter liegen – eine Unterscheidung der Fälle ist evtl. schwer.
  • Der Besteller quittiert den Empfang nicht.

Das System muss helfen, diese Fälle zu erkennen und zu kompensieren. Beispielsweise kann ein Anbieter automatisch per Email daran erinnert werden, eine bestellte DVD zu versenden, wenn er das nicht innerhalb einer gewissen Zeit vermerkt hat. Beim Besteller kann per Email nachgefragt werden, ob er eine Bestellung erhalten hat, verbunden mit der Bitte das dem System mitzuteilen.

Über solche Erinnerungen hinaus muss es aber auch möglich sein, Kopien [5] aus dem Katalog zu entfernen, weil sie unbrauchbar oder verloren gegangen sind. Das kann automatisch geschehen, wenn die Quittung des Bestellers lange genug ausbleibt. Das kann aber auch manuell geschehen, wenn die DVD unbrauchbar ist. [6]

Zur Qualitätssicherung und Vertrauensbildung muss das System natürlich auch Bewertungen ermöglichen und Transparenz schaffen. Nutzer melden sich mit vollem Namen, Email, Passwort und Lieferadresse an, sonst kann nicht zugestellt werden.

Jeder kann die Aktivitätsstatistik aller einsehen:

  • Zahl der Registrierungen von Kopien
  • Zahl der Bestellungen
  • Zahl der nicht erfolgreichen Bestellungen
  • Zahl der unbrauchbaren Kopien in Bezug auf seine Bestellungen
  • Zahl der Versendungen
  • Zahl der nicht erfolgreichen Versendungen
  • Zahl der unbrauchbaren Kopien in Bezug auf seine Versendungen

Transparenz schafft vertrauen. Deshalb sollte zunächst auf ein explizites Bewertungssystem verzichtet werden. Stattdessen kann die Statistik vielleicht zu einer Bewertung verdichtet werden.

Solange der Anbieter, der eine Bestellung erfüllen soll, jedoch vom System gewählt wird, ist Transparenz für die Nutzer nur von begrenztem Wert. Sie haben ja keine Wahl. Allerdings kann das System solche Daten heranziehen, um Nutzer nach vorheriger Warnung zu sperren. [7]

DVD-Titel können über Angabe eines Amazon-Links (oder auch nur der ASIN) registriert werden. Das System holt dann dort alle wesentlichen Daten ab und verweist für den Rest auf Amazon. Weitere Kopien eines Titels können natürlich auch über den Katalog registriert werden.

Zum Nutzerprofil gehört auch eine Übersicht von Bestellungen und Versendungen sowie eine Bestandsübersicht. [8]

Bedenkenswert:

Wie kann ein Nutzer aus dem System aussteigen? Kann er sich einfach jederzeit abmelden und damit die Kopien in seinem Bestand dem System entziehen? Wenn das System auf Verschenken statt Ausleihen beruht, wenn also jede Bestellung einen Eigentümerwechsel darstellt, dann sollte ein Ausstieg kein Problem sein.

Das kann natürlich auch zu Missbrauch führen. Ein Nutzer kann sich viele DVDs bestellen und dann einfach aussteigen. So käme er nur durch Investition von Portokosten zu einer persönlichen Sammlung.

Aber vielleicht ist das gar nicht so schlimm. Der Wunsch des ursprünglichen Eigentümers bei Registrierung seiner Kopie war ja, die DVD „loszuwerden“, ohne sie wegzuschmeißen. Dieser Wunsch ist in Erfüllung gegangen – und es besteht immer die Chance, dass die Kopie vielen Nutzern eine Freude macht, bevor sie vielleicht bei einem „schwarzen Loch“ landet.


[1] Stichwort: Collaborative Consumption

[2] Es kann unterschiedliche Algorithmen geben. Der einfachste ist, einfach den ersten Anbieter in der Liste der Anbieter einer DVD zu nehmen. Aber es könnte auch der genommen werden, der den Titel schon am längsten lagert. Oder der, der am meisten Titel lagert.

[3] Ob das Porto vom Versender oder Empfänger bezahlt wird, ist für die Implementation wahrscheinlich nicht wichtig. Damit so ein System attraktiv und fair ist, wäre aber wohl ein unfreier Versand angezeigt.

[4] Es ist zu überlegen, wie eine eindeutige Identifikation von DVD-Titeln möglich ist. Gibt es soetwas wie eine ISBN? Oder könnte die Amazon ASIN benutzt werden? Auf einen Eintrag dort könnte auch für Details zur DVD verwiesen werden.

[5] Kopien müssen daher eine ID bei Registrierung bekommen. Gibt es eine Seriennummer für DVDs, die dafür benutzt werden kann? Oder muss eine ID vom System generiert werden, die dann auf der DVD vermerkt wird? Oder ist die Kombination aus Titel-ID plus Email-Adresse des aktuellen Anbieters sozusagen eine „fließende ID“?

[6] Bei „fließender ID“ wechselt die ID einer Kopie erst, wenn der Besteller den Empfang quittiert und die Qualität der Kopie als brauchbar bewertet hat.

[7] Die automatische Wahl des Versenders könnte auch nur eine Übergangslösung darstellen, bis im System eine kritische Masse an Bewegungen stattgefunden hat, um aussagekräftige Zahlen zu liefern. In dem Fall sollte jedoch eine Kurzbewertung des Versenders durch den Besteller nach Empfang möglich sein.

[8] Das System könnte auch periodisch zu einer Inventur aufrufen, bei der jeder Nutzer seinen Bestand überprüft und Differenzen meldet. Vielleicht ist ja eine DVD, die länger nicht bestellt wurde, verlorengegangen.