Application Kata

Banküberweisüng
Mit der Anwendung soll ein Bankkunde eine Überweisung von einem Konto bei seiner Hausbank auf ein Konto derselben Bank oder einer anderen Bank vornehmen können. Pro Aufruf der Anwendung kann eine Überweisung getätigt werden. Angaben je Überweisung:  Empfängerkonto: o Name o Kontonummer o BLZ  Überweisungsbetrag  Überweisungstext  Senderkonto: 1 o Name o Kontonummer  TAN Die Sammlung dieser Daten erfolgt in mehreren Phasen: 1. Senderkonto erfassen: Nach Programmstart werden zuerst Name und Kontonummer des Senders (Überweisender) erfragt. Nur bei korrekter Angabe geht es weiter. 2. Überweisungsbetrag und -text erfragen: Nur wenn das Senderkonto durch den Überweisungsbetrag nicht überzogen wird und der Überweisungsbetrag nicht über dem Limit liegt, geht es weiter. 3. Empfängerkonto erfragen: Nach Eingabe des Empfängerkontos wird auch der zur BLZ gehörende Bankname angezeigt. Nur bei gültiger BLZ geht es weiter. 4. Der Überweisende prüft alle Angaben und fordert mit der Bestätigung die Übersendung einer TAN auf sein Handy an.2 5. TAN erfragen: Nach Eingabe der TAN wird schließlich die Überweisung vorgenommen, wenn die TAN zum Überweisungsauftrag passt. Der Anwendung liegen einige „Datenbanken“ zugrunde:3  Kontenliste(Name, Kontonummer, Kontostand, Überweisungslimit, HandyNr)  Bankenverzeichnis(BLZ, Bankname)  Überweisungsjournal(Kontonummer, Überweisungsbetrag, Überweisungstext, Überweisungsdatum, Empfängername, Empfängerkontonummer, EmpfängerBLZ)  Überweisungsaufträge(EmpfängerBLZ, Empfängerkontonummer, Empfänger, Überweisungsbetrag, Überweisungstext, Überweisungsdatum, SenderBLZ, Senderkontonummer, Sendername)

1

Die BLZ des Senders ist in der Anwendung fest verdrahtet, da die Anwendung von einer konkreten Bank ausgegeben wird. 2 Eine TAN hat nur eine begrenzte Gültigkeitsdauer, z.B. 5 Minuten. Für den Zweck der Übung kann die TAN auch per Email versendet werden. 3 Für den Zweck der Übung können die Datenbanken ganz einfach implementiert werden, z.B. als CSV-Dateien.

Kontenliste, Überweisungsjournal und Bankenverzeichnis simulieren bankeigene Datenbanken. Überweisungsaufträge hingegen simuliert eine Warteschlange von Nachrichten, die an andere Banken oder Clearingstellen verschickt werden. Ausgeführt wird eine Überweisung durch Eintrag in das Überweisungsjournal, Aktualisierung des Senderkontostandes und Erzeugung eines Überweisungsauftrags an die Empfängerbank. Es wird nicht geprüft, ob die Empfängerbank der Senderbank entspricht. Die Zubuchung des Überweisungsbetrags beim Empfänger ist also nicht Teil der Anwendung. Der Grund: Eine Zubuchung geschieht ohnehin bei einer anderen Bank – oder falls nicht, soll das Geld nicht verzugsfrei beim Empfänger auftauchen, da dann die Bank keinen Zinsvorteil für sich verbuchen kann  In jedem Fall ist die Weiterverarbeitung der Überweisungsaufträge eine Sache für eine andere Anwendung.

UI Skizze
Für eine erste Iteration genügt es, dem Anwender eine Konsolenbenutzerschnittstelle anzubieten. Hier das Skript einer Sitzung mit erfolgreicher Überweisung. Die mit // eingeleiteten Zeilen sind Kommentare, erscheinen also nicht im Konsolenfenster. Benutzereingaben sind grau unterlegt:
// Programmstart von der Kommandozeile (abhängig von Implementierungsplattform) $ überweisen // Phase 1 Überweisung beauftragen (Hamburger Sparkasse, BLZ 20050550)4 Ihr Name: Peter Mustermann Ihre Kontonummer: 12349876 // Phase 2 Überweisungsbetrag: 42,24 Überweisungstext: Testüberweisung // Phase 3 Empfänger... Name: Maria Musterfrau Kontonummer: 98761234 BLZ: 85050300 Sparkasse Dresden // Phase 4 Sind diese Angaben korrekt [jN]: j Eine TAN wird an Ihr Handy mit der Nummer 0170-3299823 geschickt... // Phase 5 Bitte TAN eingeben: 538923 Überweisung ausgeführt: 5.10.2012 17:02 // Programmende $

Falls eine Phase nicht erfolgreich abgeschlossen werden kann, bricht das Programm die Ausführung mit einer Fehlermeldung ab. Als Beispiel eine Unterdeckung des Kontos:

4

Die BLZ der Bank, die die Anwendung ausgegeben hat, ist im Programm fest verdrahtet (oder steht in einer Config-Datei). Der Bankname hingegen sollte natürlich aus dem Bankenverzeichnis geladen werden.

$ überweisen Überweisung beauftragen (Hamburger Sparkasse, BLZ 20050550) Ihr Name: Peter Mustermann Ihre Kontonummer: 12349876 Überweisungsbetrag: 4224 Überweisungstext: Testüberweisung – zweiter Versuch *** Leider weist Ihr Konto nicht genügend Deckung für den Überweisungsbetrag von 4224,00 auf. $

Eine Einfärbung der Fehlermeldung ist wünschenswert. Soll eine Überweisung nicht durchgeführt werden, kann der Benutzer das Programm jederzeit abbrechen.