GEMSS Quarterly Progress Report

Werbung
Software Engineering Übung, LVNr:
Übungsleiter: Ivona Brandic
Dokument: Endabgabe v.1.2
Projekttitel: Kontoverwaltungssystem mit SPRING (Phase 2)
Gruppenmitglieder:
MatNr:
a0102290
a0000378
Nachname:
Zohmann
Remely
Vorname:
Christian
Günther
e-mail:
[email protected]
[email protected]
Datum: 01.12.2006
1
1 Anforderungen
1.1 Projektname
Kontoverwaltungssystem
Erstellt mit dem Java Framework Spring
1.2 Kurzbeschreibung
In der Phase 2 soll die bereits bestehende Internetapplikation aus Phase 1, die sich mit EJB3.0
beschäftigt hat, erweitert werden. Die Funktionalität aus Phase 1 soll weiter bestehen bleiben.
Zur Realisierung des Projektes soll die Model-View-Controller (MVC) Methodik verwendet
werden. Es sollen mindestens zwei verschiedenen Views realisiert werden. Falls notwendig wird
die Applikation soweit erweitert, dass die MVC Methodik sinnvoll angewendet werden kann. Ein
Servlet dient als Controller, POJOs als Model und JSP Seite(n) als View(s).Um sicherzugehen,
dass die Anwendung fehlerfrei funktioniert sollen mittels JUnit die verschiedenen Klassen der
Applikation getestet werden (z.B.: Controller Klasse).
Das Kontoverwaltungssystem dient zur Verwaltung von Bankkonten. Mit Hilfe des
Kontoverwaltungssystems soll es dem registrierten Benutzer ermöglicht werden mittels eines
Web-Browsers im Internet, Geldbeträge elektronisch von einem Konto auf das Konto eines
anderen registrierten Benutzers zu überweisen. Bei der Gestaltung der Benutzeroberfläche wird
ein besonderer Wert darauf gelegt, dass sie möglichst einfach aufgebaut ist und dadurch intuitiv
benutzbar wird. Gespeichert werden die gesamten Kunden- und Kontendaten zentral in einer
MySQL-Datenbank.
Das Kontoverwaltungssystem soll folgende Funktionen ermöglichen:






Benutzer einloggen/ausloggen
Kontostand abfragen
Online Kontoauszug
Konto Einzahlung/Auszahlung
Beträge auf ein Konto eines anderen Users überweisen
Kontenübersicht
1.3 Funktionale Anforderungen
1.3.1 Beschreibung der Funktionalität
Wie bereits unter Punkt 1.2. erwähnt soll das Kontoverwaltungssystem einem Kunden auf
einfachem Weg elektronische Geschäftstransaktionen ermöglichen. Nach erfolgreicher
Registrierung hat der Kunde die Möglichkeit sich in das Kontoverwaltungssystem einzuloggen.
Erst nach dem Login stehen ihm die wesentlichen Funktionen unseres Systems zur Verfügung.
Der Benutzer hat die Möglichkeit den Kontostand abzufragen, sich den Kontoauszug online
anzusehen, Einzahlungen sowie Auszahlungen zu veranlassen und Geld auf ein anderes Konto
zu transferieren. Die Anforderungen für das Kontoverwaltungssystem mit Spring wurden
erweitert, sodass ein sinnvoller Einsatz der MVC Methodik gewährleistet werden kann. Die
Erweiterung bedeutet, dass im Sinne vom Springframework eine zusätzliche Sicht implementiert
wurde. Diese zusätzliche Sicht liefert eine Übersicht über alle bestehenden Konten mit dem
aktuellen Kontostand.
2
Um einen besseren Überblick der Funktionalität zu ermöglichen, soll das folgende Use Cases
Modell und deren Beschreibungen, die Funktionen des Kontoverwaltungssystems erörtern.
Use Case: login
Ziel:

User ins System einloggen
Kategorie:
 primär
Vorbedingung:
 User muss registriert sein
Nachbedingung bei Erfolg:
 User kann auf Funktionen der Kontoverwaltungssystems zugreifen
Nachbedingung bei Fehlschlag:
3


User nicht eingeloggt (falsche Passwort, falscher Username)
Fehlermeldung am Bildschirm ausgeben
Akteure:
 User
Use Case: Kontostand abfragen
Ziel:

Bekanntgabe des aktuellen Kontostandes
Kategorie:
 primär
Vorbedingung:
 User muss eingeloggt sein
Nachbedingung bei Erfolg:
 Ausgabe des aktuellen Kontostandes am Bildschirm
Nachbedingung bei Fehlschlag:
 Fehlerausgabe am Bildschirm
Akteure:
 User
Use Case: Online Kontoauszug
Ziel:

Ausgabe der getätigten Geldüberweisungen
Kategorie:
 primär
Vorbedingung:
 User muss eingeloggt sein
Nachbedingung bei Erfolg:
 Buchungszeilen ausgeben
Nachbedingung bei Fehlschlag:
 Fehlerausgabe am Bildschirm
Akteure:
 User
Use Case: Geld überweisen
Ziel:
 Elektronisches Geld von einem Konto auf ein anderes Konto überweisen
Kategorie:
 primär
4
Vorbedingung:
 User muss eingeloggt sein
Nachbedingung bei Erfolg:
 Geld wird vom überweisendem Konto abgezogen und auf das Konto des Empfängers
gutgeschrieben
 Abzug des zu überweisenden Betrages am Konto des Senders
 Erhöhung des Kontotandes auf Seiten des Empfängers
Nachbedingung bei Fehlschlag:
 Falscher Tan
 Ausgabe am Bildschirm
Akteure:
 User
Use Case: Geld Einzahlung
Ziel:

Geld auf das eigene Konto überweisen
Kategorie:
 primär
Vorbedingung:
 User muss eingeloggt sein
Nachbedingung bei Erfolg:
 Erhöhung des Kapitalstandes am Konto
Nachbedingung bei Fehlschlag:
 Fehlerausgabe am Bildschirm
Akteure:
 User
Use Case: Konto Auszahlung
Ziel:


Geld vom eigenen Konto abbuchen
(z.B. Abhebung am Bankomat)
Kategorie:
 primär
Vorbedingung:
 User muss eingeloggt sein
Nachbedingung bei Erfolg:
 Verringerung des Kapitalstandes am Konto
Nachbedingung bei Fehlschlag:
 Fehlerausgabe am Bildschirm
5
Akteure:
 User
Use Case: Kontenübersicht
Ziel:

Ausgabe aller Konten samt Name des Inhabers und aktuellem Kontostand
Kategorie:
 primär
Vorbedingung:
 Nachbedingung bei Erfolg:
 Kontenübersicht ausgegeben
Nachbedingung bei Fehlschlag:
 Fehlerausgabe am Bildschirm
Akteure:
 Admin
1.3.2 Bedienungsoberfläche
Das Programm soll den Benutzer auf möglichst schnelle Weise ermöglichen, die Funktionalität,
die er benötigt, aufzurufen. Dies erfordert klarerweise eine leichte Bedienbarkeit. Es soll nicht der
Fall sein, dass ein Benutzer beispielsweise über umständliche Menüstrukturen oder ein paar
Linkebenen tiefer erst die Aufgabe realisieren kann, die er beabsichtigt.
Die Bedienungsoberfläche wird innerhalb eines Webbrowsers dargestellt. Die folgenden zwei
Abbildungen zeigen, wie die Bedienungsoberfläche im Internet Explorer dargestellt wird. Das
erste Fenster zeigt eine Bedienungsoberfläche, die das Einloggen in das System ermöglicht. Das
zweite Fenster, welches nach einem erfolgreichen Login erreicht wird, stellt den Kontoauszug
dar, dass mittels dem „Controller“ erstellt wird. Die Seite Kontoauszug ermöglicht die Navigation
zu folgenden drei Seiten:
 Überweisung:
o Diese Seite ermöglicht das Überweisen eines Geldbetrages von einem Benutzer
zu einem anderen
 Einzahlung:
o Hier kann der Benutzer einen Geldbetrag auf sein eigenes Konto einzahlen
 Auszahlung:
o Hier kann der Benutzer einen Geldbetrag von seinem eigenen Konto abziehen
6
1.4 Nicht-funktionale Anforderungen
Nichtfunktionale Anforderungen sind Anforderungen, die nicht unmittelbar zur Funktionalität eines
Software-Systems gehören. Dennoch können nichtfunktionale Anforderungen genauso kritisch
für den Erfolg eines Systems sein wie die funktionalen Anforderungen.

Korrektheit
Die programmtechnische Umsetzung unserer Anforderungen sollen vollständig und fehlerfrei
umgesetzt werden. Somit soll sichergestellt werden, dass das Programm korrekt läuft. Im
Allgemeinen kann nicht sichergestellt, dass unsere Software vollständig fehlerfrei läuft.
Dennoch soll versucht werden, eine große Anzahl an Fehlern zu vermeiden. Um dies zu
gewährleisten, versuchen wir einerseits Fehler von vornherein zu vermeiden durch z.B.
offene Kommunikation, gut dokumentiertem Code, JUNIT Tests.

Robustheit
Unsere Software soll alle möglichen Eingaben des Users annehmen können. Auch auf
falsche Eingaben muss die Applikation sinnvoll reagieren. Es darf nicht passieren, dass das
Programm bei irgendwelchen Eingaben abstürzt. Weiters soll nach Fertigstellung eines
Prototyps durch verschiedene und ausführliche Tests verschiedene Eingaben des Users
überprüft werden. Bemerken wir, dass ein Programmzustand nicht beachtet wurde, so muss
die Behandlung dieses Falles implementiert werden.
7

Benutzbarkeit
Das Kontoverwaltungssystem soll intuitiv benutzbar sein. Das heißt, es soll für den User, der
ein Konto hat und mit dem Tätigen von Transaktionen vertraut ist, ohne viel
Erklärungsaufwand klar sein, wie das System zu benutzen ist. Dies wird erreicht durch eine
einfache Organisation der Homepage und durch die Verwendung bankengerechter Termini.
Bei eventuellen Fehleingaben des Users (z.B. nicht vorhandene Kontonummer) wird der User
vom Kontoverwaltungssystem darauf aufmerksam gemacht.

Performance
Das Kontoverwaltungssystem soll ein gutes Zeit- und Verbrauchsverhalten aufweisen, d.h.
das System soll schnell auf Benutzereingaben reagieren (Reaktionszeit < 1 Sekunde). Zu
beachten ist jedoch, dass die vom Nutzer wahrgenommene Antwortzeit auch wesentlich von
zentralen Komponenten der produktiven Umgebung abhängen wie z.B. der
Internetanbindung (Transferzeit).

Widerverwendbarkeit
Dieses Kriterium besagt, inwieweit ein Softwaresystem oder ein Teilsystem in anderen
Softwareprodukten wieder verwendet werden kann. Auf der Designebene soll es ermöglichen
andere Funktionalitäten oder Softwareprodukte auf Basis des Designs unserer Applikation zu
erweitern. Um die Widerverwendbarkeit des Designs zu gewährleisten, müssen unsere
Diagramme klar verständlich und übersichtlich sein. Daher soll in den Diagrammen gerade
soviel Information vorhanden sein, dass es noch übersichtlich bleibt.

Sicherheit & Vertraulichkeit
Es wird derzeit keine Realisierung von kryptografischen Eigenschaften geben. Die einzige
Sicherheitsvorkehrung die wir in unserem System einbauen ist die Überprüfung auf
Vorhandensein des Usernamens und Passwortes in der Datenbank, sowie die
Zusammengehörigkeit von Namen und Passwort. Es kommt zu keiner Verschlüsselung von
Datenübertragungen.
8
2
Klassendesign
2.1 Gesamtklassendesign
2.2 Wichtige Designentscheidungen
9
3 Architekturbeschreibung EJB
3.1 Klassendiagramm
3.2 Paketstruktur
Das Kontovewaltungssystem besteht aus 3 Teilen:
 Serverpacket
 Interface
 Client
Das Serverpacket besteht aus den Klassen Server, Benutzer und Ueberweisung.
Das Interfacepacket besteht aus der Interfaceklasse IServer
Das Clientpacket besteht aus den JSP und Servletseiten
3.2.1 Serverpacket
Die Serverklasse ist die Stateful Sessionbean Klasse. Mittels dieser Klasse wird es ermöglicht
Überweisungen, Einzahlung und Auszahlungen zu machen. Login und Kontoauszug sind weitere
Funktionalitäten die diese Klasse zur Verfügen stellt. Die Klassen Benutzer und Ueberweisung
sind die Entitybean Klassen. Diese Klassen sind sozusagen eine Spiegelung der
Datenbanktabellen. Mithilfe des Entitymanagers wird über diese Klassen in die Datenbank
geschrieben.

Server
Extends: Implements: IServer
Wichtige Klassenvariablen
o protected Benutzer benutzer
o protected Ueberweisung ueberweisung
o protected EntityManager em
o public String myDriver
o public String myUrl
10
o public String myUser
o public String myPass
Funktionalität:
Mit dieser EJB „Stateful Sessionbean“ Klasse wird es dem Benutzer ermöglicht,
Geld auf sein Konto ein uns auszuzahlen, sowie auch eine Überweisung von
einem Konto auf ein anderes. Um eine Übersicht von allen Transaktionen eines
Benutzers zu bekommen kann mit der Methode „kontoauszug“ alle
Überweisungen angezeigt werden. Der Kontostand kann ebenfalls ausgeben
werden.

Benutzer
Extends: Implements: Serializable
Wichtige Klassenvariablen
o private String name
o private String passwort
o private int kontonummer
o private double kontostand
Funktionalität:
Diese EJB „Entity“ Klasse ist ein Abbild des jeweiligen Tabels in der Datenbank.
Mittels dieser Klasse wird es ermöglicht in die Datenbank zu schreiben, bzw. aus
der Datenbank auszulesen

Ueberweisung
Extends: Implements: Serializable
Wichtige Klassenvariablen
o private int sender
o private int empfaenger
o private String verwendungszweck
o private double betrag
o private int id
Funktionalität:
Diese EJB „Entity“ Klasse ist ein Abbild des jeweiligen Tabels in der Datenbank.
Mittels dieser Klasse wird es ermöglicht in die Datenbank zu schreiben, bzw. aus
der Datenbank auszulesen
3.2.2 Interfacepacket
Die Interfaceklasse IServer stellt eine Verbindung zwischen Client und Server her. Mittels dieser
Klasse kann der Client Methoden des Servers aufrufen

Ueberweisung
Extends: Remote
Implements: Funktionalität:
ReservierungsServer stellt das Interface dar, anhand dessen Client Methoden
„remote“ aufgerufen werden können.
3.2.3 Clientpacket
Das Clientpacket besteht aus den verschiedenen JSP und Servletklassen. Mit diesen Klassen
wird es dem User ermöglicht über einen Browser die verschiedenen Funktionen (Methoden) des
Servers aufzurufen.
11
4 Architekturbeschreibung Spring
4.1 Klassendiagramm
4.1.1 Bus-Paket
4.1.2 Web-Paket
12
4.1.3 Web-Paket
4.2 Paketstruktur
13
5 Architekturdiagramm

Client Tier
Ein Web Browser übernimmt die Rolle des Client Tiers. Getestet wurde das
Kontoverwaltungssystem mit dem Internet Explorer 6.0 und dem Mozilla Firefox 2.0.
Aufgerufen wird das Kontoverwaltungssystem im Web Browser über
http://localhost:8080/springkonto (lokal)

Middle Tier
 Web Container Tier
Der Web Container Tier umfasst einerseits ein Servlet (Controller) und JSP Seiten
(View). Beim Aufruf des Kontoverwaltungssystems (siehe Link oben) wird zuerst die
„index.jsp“ aufgerufen, die den Benutzer direkt zur Login Seite weiterleitet. Nach
erfolgreicher Anmeldung wird die Seite „kontoauszug“ aufgerufen, die durch den
„springkontoauszugController“ durchgeschleift wird. Der Controller sammelt alle
notwendigen Daten, die anschließend in der View „kontoauszug.htm“ ausgegeben
werden.


Business Logic Tier
Hier wird der reibungslose Ablauf der Geschäftslogik sichergestellt. Die „Business
Logic“ beinhaltet die Funktionalität der aus Phase 1 bekannten EJB Klasse und
Entity Klassen. In Phase 2 beinhaltet die „Business Logic“ die Klasse
„KontoManager“, „Ueberweisung“ und „Benutzer“.
DB Tier
Wie in der obigen Grafik zu sehen ist, kommt es beim Kontoverwaltungssystem zum Einsatz
von MySQL. In der Datenbank werden die für die Geschäftslogik notwendigen Daten
persistent gespeichert.
14
6 User Interface Beschreibung
6.1 GUI Screenshot / User Interface Skizzen
Screenshot 1: login.jsp
Screenshot 2: kontoauszug.jsp
Screenshot 3: ueberweisung.jsp
15
Screenshot 4: einzahlung.jsp
Screenshot 5: auszahlung.jsp
Screenshot 6: admin.jsp
16
6.2 Beschreibung des GUI / User Interface
6.2.1 Standarduser
Die GUI des Kontoverwaltungssystems wurde einfach und übersichtlich gehalten. Für den
Standardbenutzer gibt es eine relevante Seite, die über einen Webbrowser aufgerufen werden.
http://localhost:8080/springkonto (lokal)
Die aufgerufene Seite ermöglicht es sich im Kontoverwaltungssystem anzumelden. Im ersten
Eingabefeld welches mit Kontonummer bezeichnet ist, wird eine dem System bekannte
Kontonummer erwartet. Die erwartete Kontonummer ist ausschließlich numerisch. Das zweite
Eingabefeld welches mit Passwort bezeichnet ist, erwartet das zur Kontonummer zugehörige
Passwort. Bei korrekter Eingabe beider Eingabefelder wird man zur nächsten Seite
kontoauszug.jsp weitergeleitet, andernfalls wird man aufgefordert das Login erneut zu probieren.
Auf der folgenden Seite wird der angemeldete Benutzer willkommen geheißen. Die Kontodaten
des Benutzers und der aktuelle Kontostand werden angezeigt. Außerdem wird ein OnlineKontoauszug angezeigt, welcher die Transaktionen des Benutzers auflistet. Außerdem gibt es
drei Links, die es dem Benutzer ermöglichen hat folgende Transaktionen zu tätigen:
 Überweisung
 Einzahlung
 Auszahlung
Die Einzahlung und die Auszahlung erfordern lediglich die Eingabe eines Betrages. Bei der
Überweisung muss zusätzlich die Kontonummer des Empfängers angegeben werden, außerdem
kann ein Verwendungszweck angegeben werden. Durchgeführt wird die Transaktion mittels
„Submit“-Button. Nach Absetzen der Transaktion wird die Übersicht-Seite automatisch
aktualisiert, also mit aktuellen Kontostand und einer neuen Transaktion im Online-Kontoauszug.
6.2.2 Admin
Auf die Sicht des Administrators kommt man nicht über ein Login, sondern lediglich durch das
Aufrufen folgender Adresse:
http://localhost:8080/springkonto/admin (lokal)
Diese Seite listet alle Benutzer auf, die im Kontoverwaltungssystem persistent gespeichert
wurden. Die Ausgabe umfasst Kontonummer, Name und den Kontostand.
17
7 MVC Mechanismus
7.1 Beschreibung
Der Model-View Controller ist ein Framework, welcher sich zur Erstellung von Webbasierten
Applikationen eignet. Durch die vorgegebene Struktur des Frameworks kann die Aufrufabfolge
von Webseiten sehr schlicht gehalten werden. Außerdem erlaubt der MVC die multiple
Darstellung von ein und demselben Objekt. Zusammenfassend kann man den MVC als eine
Kollaboration von Klassen zum Erstellen von Benutzerschnittstellen beschreiben.
Der MVC umfasst drei Arten von Objekten:
 Modelle: Anwendungsobjekte
Die Modelle entsprechen den Java Beans. Die im Kontoverwaltungssystem verwendeten
Beans werden in unserem Fall im „springkonto-servlet.xml“ File definiert. Diese Beans stellen
Klassen in dem Projekt dar und es ist möglich diese Beans zu konfigurieren. Die
Konfiguration funktioniert beispielsweise über Properties, so ist es möglich Referenzen auf
andere Beans zu setzen.
 Sichten (views): zur grafischen Darstellung eines Modells
Zwei grundlegende Sichten sind unserem Projekt sind „kontoauszug.jsp“ und „admin.jsp“. In
beiden werden Daten aus der DB dargestellt. Im „kontoauszug.jsp“ werden die Benutzer- und
Kontodaten eines eingeloggten Users dargestellt. Im „admin.jsp“ werden die Kontodaten aller
Benutzer aufgelistet.
 Steuerung (controller): definiert, wie das Userinterface auf Benutzereingaben reagiert
Die Controller-Klassen übernehmen die Steuerung der web-basierten Applikation. In unserer
Applikation gibt es eine Controller-Klasse für jede JSP-Seite.
 LoginFormController..java
 SpringkontoauszugController.java
 EinzahlungFormController.java
 AuszahlungFormController.java
 UeberweisungFormController.java
 AdminController.java
Konfiguriert werden diese Controller im „springkonto-servlet.xml“ File. Die Controllerklassen
entsprechen ebenfalls Beans und werden über die Properties konfiguriert. In diesen
Properties wird definiert wie die Kontrollerklassen angesprochen werden können. Referenzen
auf andere Klassen werden gesetzt und eine Folgeview kann bestimmt werden. Die
Konfiguration der Controllerklassen dient auch dazu um Daten vom Benutzer über die JSPSeite einlesen zu können. Diese Werte können dann über setter/getter-Methoden
referenzierter Klassen den Instanzvariablen zugewiesen werden. Werden Werte über die
18
JSP-Seiten eingelesen, dann werden noch Validatorklassen dazwischengeschalten, die die
eingegebenen Werte auf ihre Gültigkeit überprüfen. Entsprechen die eingegebenen Werte
nicht dem Gültigkeitsbereich, dann wird nicht die Folgeview aufgerufen, sondern eine
Korrektur der einzugebenden Werte veranlasst.
7.2
Klassendiagramm
7.2.1 Kontoauszug
19
8 Persistente Datenspeicherung
Um die Daten zu Speichern wird eine MySQL Datenbank verwendet, die unter:
www.swe.geschenkestube.at/mysqladmin erreichbar ist.
8.1 Datenbank / ERD
ÜBERWEISUNG
BENUTZER
1
n
Im Table BENUTZER werden die Daten des Users gespeichert. Dabei handelt es sich um den
Namen, Passwort, Kontonummer und Kontostand. Jeder Benutzer kann mehrer Überweisungen
tätigen.
Im Table ÜBERWEISUNG wird die Kontonummer des Senders und Empfängers, der
Verwendungszweck und der zu überweisende Betrag gespeichert.
8.2 Spring - Adaptierungen
Die Funktionserweiterung gegenüber der 1. Abgabe hat es nicht erfordert zusätzliche Daten in
der Datenbank persistent zu speichern. Daraus ergibt sich, dass mit der gleichen Datenbank von
der 1. Abgabe weiter gearbeitet werden konnte. Die zu speichernden Daten, sind die relevanten
Daten der User wie Name, Passwort, Kontonummer und Kontostand. Außerdem werden die
Transaktionen der User gespeichert, diese umfassen Empfänger, Sender, Verwendungszweck
und einen Betrag. In der 1. Abgabe gab es dafür zwei Klassen, die die Speicherung mittels EJB
ermöglicht hatten. Diese Klassen waren „Benutzer.java“ und „Ueberweisung.java“. Mittels der
Annotationen @entity, @table und @column und diese beiden Klassen für die verwendete
relationale Datenbank umgemapped und konnten somit persistent in die Datenbank geschrieben
werden.
Diese beiden Klassen haben an ihrer Funktionalität unter Spring nichts eingebüßt. Die
Annotationen wurden überflüssig, da sie EJB 3.0 spezifisch waren. Für Spring ist relevant, dass
die notwendigen Instanzvariablen alle über getter/setter-Methoden zugreifbar sind, aber das war
ohnehin schon gewährleistet.
Die Verbindungseinstellungen werden bei Spring im relevanten „servlet.xml“ gespeichert. In
unserem Fall ist es das „springkonto-servlet.xml“. In diesem File werden alle für die
Webapplikation notwendigen Beans definiert. Ebenso haben wir eine Bean definiert, welche die
Verbindungseinstellungen für die DB als Werte hat. Die Beandefinition schaut folgendermaßen
aus:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
20
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:mysql://swe.geschenkestube.at/swews</value>
</property>
<property name="username"><value>swews</value></property>
<property name="password"><value>swews</value></property>
</bean>
Im „springkonto-servlet.xml“ gibt es zwei weitere Beandefinitionen, die unmittelbar mit dem
Datenbankzugriff in Verbindung stehen.
<bean id="kontoManDao" class="db.KontoManagerDaoJdbc">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="kontoMan" class="bus.KontoManager">
<property name="kontoManagerDao">
<ref bean="kontoManDao"/>
</property>
</bean>
Diese Definitionen stehen einerseits für ein Interface und für eine Klasse, die dieses Interface
implementiert. In der Klasse „db.KontoManagerDaoJdbc“ werden die Methoden des Interfaces
„db.KontoManagerDaoJdbc“ implementiert. In diesen Methoden werden die SQL-Abfragen auf
die Datenbank abgesetzt. Das Springframework stellt eine Klasse („JdbcTemplate“) zur
Verfügung, die das Absetzen der SQL-Abfragen sehr vereinfacht.
21
9 Client Interfaces
9.1 Interface 1
Durch den Aufruf der Seite http://localhost:8080/springkonto wird man automatisch an die LoginSeite weitergeleitet. Diese Loginseite erwartet als Eingabe die Kontonummer und das Passwort
desjenigen Kunden. Die eingegeben Daten werden an die BusinessLogic weiterleitet, wo
anschließend die Daten die im Loginfenster eingegeben wurden, an die Datenbank weitergeleitet
werden. In der Datenbank wird überprüft ob Kontonummer und Passwort vorhanden sind und
zusammen passen. Nach erfolgreicher Überprüfung wird der Benutzer an die Kontoauszugsseite
weitergeleitet.
9.2 Interface 2
Nach erfolgreichem Login wird der Kunde automatisch an die Kontoauszugsseite weitergeleitet.
Hier kann der User seinen Kontostand sowie auch seine Transaktionen einsehen. Bei bedarf
kann der Benutzer zu folgenden Seiten weiternavigieren.
o Überweisung
o Einzahlung
o Auszahlung
22
9.3 Interface 3
Dieses Interface ermöglicht dem Kunden Geld auf sein Onlinekonto einzuzahlen. Wie in der
Abbildung zu sehen ist, werden als Eingabe, Betrag und Verwendungszweck verlangt.
Anschließend kann der Kunde auf „einzahlen“ klicken und der Betrag wird auf seinem Konto gut
geschrieben.
9.4 Interface 4
Dieses Interface ermöglicht dem Kunden Geld vom Onlinekonto abzubuchen. Wie in der
Abbildung zu sehen ist, werden als Eingabe, Betrag und Verwendungszweck verlangt.
Anschließend kann der Kunde auf „abbuchen“ klicken und der Betrag wird auf seinem Konto
abgebucht.
9.5 Interface 5
Dieses Interface ermöglicht dem Kunden Geld von seinem Onlinekonto zu einem Konto eines
anderen Benutzers zu überweisen. Wie in der Abbildung zu sehen ist, werden als Eingabe,
Empfänger, Betrag und Verwendungszweck verlangt. Anschließend kann der Kunde auf
„überweisen“ klicken und der Betrag wird auf seinem Konto abgebucht und auf dem Konto des
Empfängers überwiesen.
23
10 Test
Das Kontoverwaltugngssystem wurde mit Hilfe von JUnit getestet. JUnit ist ein Framework zum
Testen von Java-Programmen, das besonders für automatisierte Unit-Tests einzelner Units
(meist Klassen oder Methoden) geeignet ist. Es basiert auf Konzepten, die ursprünglich unter
dem Namen SUnit für Smalltalk entwickelt wurden. Ein JUnit-Test kennt nur zwei Ergebnisse:
Entweder der Test gelingt (dann ist er „grün“) oder er misslingt (dann ist er „rot“). Das Misslingen
kann als Ursache einen Fehler (Error) oder ein falsches Ergebnis (Failure) haben, die beide per
Exception signalisiert werden.
10.1 TestKontoManager
Die Klasse TestKontoManager dient zum Testen der Klasse KontoManager in der BusinessLogic.
Diese Klasse legt mittels der Methode setUp() einen Benutzer und eine Buchungszeile an.
Die Methode testGetBenutzer() liest den angelegten Benutzer aus, und vergleicht mittels
assertEquals ob die vorgegebenen Daten mit den Daten im Objekt übereinstimmen.
Die Methode testGetBuchunszeilen() liest die angelegte Buchungszeile, aus dem Objekt
Überweisung aus. Anschließend wird mit der Methode assertEquals verglichen, ob die
vorgegebenen Daten mit den Daten im Objekt übereinstimmen.
10.2 TestKontoManagerDaoJdbc
Diese Testmethode dient zum Testen der JDBC Klasse im Paket „db“ der BusinessLogic. Mittels
der setUp() Methode wird eine Verbindung zur MYSQL Datenbank hergestellt.
Die Methode testGetBenutzerList() ruft mittels „kmdao.getBenutzerListDao("1111", "zohmann")“
die Methode im Interface auf und übergibt Kontonummer (1111) und Passwort (zohmann) an die
JDBC Klasse, die anschließend eine DB-Query ausführt. Stimmen Kontonummer und Passwort
in der Datenbank überein, wird die komplette Zeile aus der Datenbank in das Objekt Benutzer
gespeichert. Diese gespeicherten Daten im Objekt werden anschließend mit den von uns
vorgegeben Daten verglichen. Stimmen diese Daten überein, war der Test erfolgreich.
Die Methode testGetBuchungezeilenList() ruft mittels „kmdao.getUeberweisungListDao("2222");“
die Methode im Interface auf und übergibt die Kontonummer (2222) an die JDBC Klasse, die
anschließend eine DB-Query ausführt. Diese Query sieht in der Tabelle Überweisung nach, und
liefert alle Einträge zurück wo die Kontonummer entweder im Empfänger- oder Senderfeld
vorkommt. Anschließend werden die übergebenen Werte mit den vorgegeben Werten verglichen.
Die Methode testEinzahlung() ruft mittels „kmdao.einzahlungDao("2222", 666, "Irgendwas");“ die
Methode im Interface auf und übergibt die Kontonummer des Empfängers (2222) den Betrag
(666) und den Verwendungszweck (Irgendwas) an die JDBC Klasse, die anschließend eine DBQuery ausführt. Diese Query legt in der Tabelle Überweisung einen neuen Eintrag an mit den von
uns vorgegeben Werten. Anschließend werden diese Werte zurück an die Testklasse
ausgegeben und verglichen
10.3 TestSpringkontoauszugsController
Diese Testklasse teste den SpringkontoauszugController. Hier wird getestet ob der Controller die
richtigen Daten an die View liefert. In der Testklasse werden die zu testenden Daten aus der
springkonto-serlvet.xml Datei eingelesen. Anschließend werden mittels der assertEquals
Methode die Daten verglichen. Stimmen die Daten überein, wurde der Test erfolgreich absolviert
und der Controller lieferte die richtigen Daten an die View (Kontoauszug).
24
Herunterladen