Praktikum Formale Entwicklung objektorientierter Software Übungsblatt 5: Praktikumsprojekt



Ähnliche Dokumente
Formaler Entwurf mit Event-B Die Eventbank

Praktikum Formale Entwicklung objektorientierter Software Übungsblatt 6: Praktikumsprojekt

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

SEP 114. Design by Contract

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

Online Banking System

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Leitfaden zu Starmoney Business 6.0

Verbuchung von Zahlungseingängen über das PayPal-Konto

Stammdatenanlage über den Einrichtungsassistenten

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Anleitungen zum KMG- -Konto

Eine Anleitung, wie Sie Mozilla Thunderbird 2 installieren und konfigurieren können. Installation Erstkonfiguration... 4

Leitfaden zu Starmoney 9.0

ecaros2 - Accountmanager

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Benutzerkonto unter Windows 2000

Datensicherung. Beschreibung der Datensicherung

Dokumentation zum Spielserver der Software Challenge

Leichte-Sprache-Bilder

Wortschatz zum Thema: Studentenkonto

Anwendungsbeispiele Buchhaltung

Professionelle Seminare im Bereich MS-Office

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

POP -Konto auf iphone mit ios 6 einrichten

Kurzanleitung für Verkäufer

Design by Contract with JML

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Leitfaden zu Starmoney 9.0

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Tutorial. Wie kann ich meinen Kontostand von meinen Tauschpartnern in. übernehmen? Zoe.works - Ihre neue Ladungsträgerverwaltung


Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Der Kontowecker: Einrichtung

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Kurzanleitung der Gevopa Plattform

S Sparkasse Südholstein. Kontowecker

Für die Einrichtung des elektronischen Postfachs melden Sie sich wie gewohnt in unserem Online-Banking auf an.

Anleitung: Passwort-Self-Service-Portal

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Mediumwechsel - VR-NetWorld Software

Programmierkurs Java

Software Engineering Klassendiagramme Assoziationen

Wenn Sie das T-Online WebBanking das erste Mal nutzen, müssen Sie sich zunächst für den Dienst Mobiles Banking frei schalten lassen.

Anleitung Kontoeinrichtung mit apokennung in StarMoney

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

iphone 4 - Einrichtung des VPN Clients (Cisco VPN Client) / Verbinden des iphones mit einem Exchange

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Internationales Altkatholisches Laienforum

Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen

Anleitung. Schritt für Schritt: iphone und ipad. Richten Sie Ihr -Konto mit Ihrem iphone oder ipad Schritt für Schritt ein.

Inventur. Bemerkung. / Inventur

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Schritt 2: Klicken Sie in der Navigation auf Service und dann auf Kontowecker.

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Lizenzen auschecken. Was ist zu tun?

Arrays Fortgeschrittene Verwendung

Zimmertypen. Zimmertypen anlegen

Hochschulrechenzentrum

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Finden Sie das Girokonto, das zu Ihnen passt.

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

ALF-BanCo - Chipkarte einrichten in 3 Schritten

(im Rahmen der Exchange-Server-Umstellung am )

How to do? Projekte - Zeiterfassung

Urlaubsregel in David

Kostenstellen verwalten. Tipps & Tricks

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Grundlagen der Theoretischen Informatik, SoSe 2008

Erste Schritte mit Sfirm32 und itan

Benutzeranleitung Superadmin Tool

Karten-Freischaltung mit dem UNLOCK MANAGER

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Grundlagen 4. Microsoft Outlook 2003 / 2007 / Apple Mail (ab Version 4.0) 9. Outlook 2011 für Mac 10. IOS (iphone/ipad) 12

FORUM HANDREICHUNG (STAND: AUGUST 2013)

TELIS FINANZ Login App

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

iphone- und ipad-praxis: Kalender optimal synchronisieren

Anleitung zur Mailumstellung Entourage

Was meinen die Leute eigentlich mit: Grexit?

Installation und Bedienung von vappx unter Android

Bankkonto hinterlegen & Kontoauszüge importieren. Stand 05/2014

Mediumwechsel - VR-NetWorld Software

Kapitalerhöhung - Verbuchung

Ein Gesuch erfassen und einreichen

Zwischenablage (Bilder, Texte,...)

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Bauteilattribute als Sachdaten anzeigen

kurzanleitung modul debitoren

Kommunikations-Management

Transkript:

Institut für Theoretische Informatik Logik und Formale Methoden Prof. Dr. B. Beckert, Prof. Dr. P. H. Schmitt, D. Bruns, D. Faragó, Dr. C. Gladisch, C. Scheben, M. Ulbrich 07.01.2013 Praktikum Formale Entwicklung objektorientierter Software Übungsblatt 5: Praktikumsprojekt Aufgabe 19 Spezifikation und Implementierung In dem Praktikumsprojekt soll ein Bankenszenario basierend auf einer vorgefertigten Softwarearchitektur vollständig in Java implementiert werden. Verwenden Sie beim Entwickeln des Programms JML, um Ihr System möglichst weitgehend zu spezifizieren. Setzen Sie nach eigenem Ermessen auch RAC, JMLUnit und/oder ESC/Java2 ein, um Ihr System zu testen / teilweise zu verifizieren. Auf diesem Übungsblatt finden Sie eine Liste mit Anforderungen, welche das System erfüllen soll. Dokumentieren sie kurz, wie sie jede Anforderung umsetzen. Diese Liste bedeutet nicht, dass diese Anforderungen immer in JML übersetzt werden sollen, da sie teilweise nicht-funktional sind und das System auf einer höheren Ebene beschreiben, als dies mit JML-Annotationen getan wird. Ihre JML-Annotationen sollen Bedingungen und Anforderungen auf einer funktionalen und technischeren Ebene beschreiben. Erläuterungen und Hinweise: Bauen Sie Ihre Implementierung auf den vorgegebenen Klassen auf, die Sie auf der Praktikums-Homepage finden (Datei BankDateien.zip). Sie können die Klassen um weitere Attribute und Methoden ergänzen, behalten Sie aber die gegebenen Methodensignaturen bei. Hier ist eine Übersicht der zugrundeliegenden Klassenhierarchie: Um Ihre Implementierung auszuprobieren, finden Sie ebenfalls auf der Praktikumsseite in der Datei BankGui.zip eine graphische Benutzeroberfläche (GUI). Die main-methode befindet sich in der Klasse BankGui. Bitte halten Sie aber die Programmlogik von der GUI strikt getrennt die Programmlogik soll von der Existenz der GUI nichts wissen. Der Einfachheit halber wird eine globale Uhr angenommen. Ausgeführte und auszuführende Aktionen werden in Transaction-Objekten gespeichert. Wenn ein Bank-

automat offline ist, führt er Kontenoperationen auf lokalen (also im Automaten gespeicherten) Stellvertretern vom Typ OfflineAccountProxy durch. Da Ihr Code zumindest teilweise auch verifiziert werden soll, sollten Sie sich von vorneherein an einige Einschränkungen halten, um ESC/Java2 und KeY nicht zu überfordern. Schreiben Sie möglichst einfachen Code. KeY muss den Code laden können. Insbesondere sollten Sie die folgenden Java-Features nicht verwenden: Jegliche Klassen und Interfaces der Java-Klassenbibliothek (!), mit Ausnahme der folgenden: java.lang.object java.lang.throwable sowie seine in java.lang definierten Unterklassen java.lang.string. Verwenden Sie z.b. Arrays anstelle von Klassen wie java.util.vector. Features, die in Java 5 neu eingeführt wurden, wie Generics, Enumerations, Java- 5-Annotationen, oder for-each-schleifen. Gleitkommazahlen, d.h. die Typen float und double. automatische Konvertierungen anderer Typen in Strings, wie z.b. in dem Ausdruck "Hello World" + 7, Unicode-Zeichen in.java-dateien, die über den 7-bit-ASCII-Zeichensatz hinausgehen (also insbesondere keine Umlaute). Auch auf JML-Seite wollen wir nicht die komplette (sehr umfangreiche) Sprache verwenden. Schreiben Sie einfache Spezifikationen. Beschränken Sie sich in Ihren Spezifikationen bitte auf folgende Elemente von JML: JML-Ausdrücke einschließlich ==>, <==>, \result, \old, \forall, \exists, \fresh Methodenverträge mit Vor- und Nachbedingungen und evtl. diverges- Klauseln (requires, ensures, signals, signals only, normal behavior, exceptional behavior, also, diverges) assignable-klauseln einschließlich der zugehörigen Spezialausdrücke (a[i..j], a[*], \nothing, \everything), sowie pure-methoden Klasseninvarianten (invariant) Sichtbarkeitsmodifikatoren (private, protected, public, spec protected, spec public) non null und nullable Assertions (//@ assert), Schleifeninvarianten (loop invariant) und Schleifenvarianten (decreasing) Benutzen Sie insbesondere keine Modellfelder. Aufrufe von /*@pure@*/-methoden in Spezifikationen können Sie zwar verwenden, es ist aber empfehlenswert, die Spezifikationen stattdessen so weit wie möglich direkt mit den zugrundeliegenden Daten (Attribute, Array-Einträge) zu formulieren, um die Verifikation einfacher zu machen. Die Möglichkeit von Integer-Überläufen können Sie ignorieren. Dieser Aspekt wird auch bei der Verifikation hier im Praktikum nicht betrachtet. 2

Anforderungen Anmerkung: Die Nummerierung wurde aus früheren Praktika übernommen und hat für Sie keine weiter Bedeutung. Konten Es existieren Bankkonten. REQ-43 Identifizieren Sie bei Anforderungen dieser Art die dafür vorgesehene Klasse in der vorgegebenen Architektur. Es können jederzeit neue Konten eröffnet werden. Ein bereits existierendes Konto kann nicht erneut eröffnet werden. Konten werden über ihre Kontonummer identifiziert. Kontonummern sind ganze Zahlen zwischen 0 (einschliesslich) und einer festgelegten oberen Schranke. Über auf Konten ausgeführte Aktionen wird Buch geführt. REQ-9 REQ-10 REQ-44 REQ-45 REQ-46 Implementieren Sie die Liste der für ein Konto gespeicherten Aktionen als Array mit dynamischer Größe. Benutzen Sie hierzu eine Methode, die ein neues, größeres Array anlegt, wenn das alte voll ist, und die Einträge kopiert. Definieren Sie desweiteren eine Methode für das Hinzufügen neuer Aktionen, die obige Methode bei Bedarf aufruft. Kontostände Jedes Konto hat einen Saldo. Der Saldo wird als ganze Zahl von Geldeinheiten gespeichert. Konten können überzogen werden. Neu eingerichtete Konten sind zu Beginn leer. REQ-11 REQ-12 REQ-13 REQ-14 Kunden können beliebige positive Beträge auf eines ihrer eigenen Konten einzahlen. REQ-16 Auf welche Weise die Einzahlung erfolgt interessiert uns nicht weiter, es muss nur eine entsprechende Operation auf Bankkonten definiert sein. Überziehungslimit Es gibt einen Minimalbetrag, der für alle Konten derselbe ist. Der Minimalbetrag für Kontostände ist nicht positiv. REQ-22 REQ-24 Wählen Sie z. B. einen Minimalbetrag von 100 e. Stellen Sie aber sicher, dass er leicht geändert werden kann. 3

Zentralrechner Es gibt einen Zentralrechner, der alle Bankkonten der Bank verwaltet. Kontoeröffnungen werden vom Zentralrechner der Bank abgewickelt. REQ-47 REQ-48 Zentralrechneroperationen finden am Bankschalter (hier nicht modelliert) statt. Bankautomaten und Bankkarten Es existieren Bankkarten für Konten. Jede Bankkarte ist genau einem Konto zugeordnet, wobei es mehrere Karten für ein Konto geben kann (oder auch gar keine). Es können jederzeit neue Karten für existierende Konten ausgegeben werden. Kartenausgaben werden vom Zentralrechner der Bank abgewickelt. Es gibt nur Karten für existierende Konten. Es existieren Bankautomaten. Bankautomaten sind per Netzwerk mit dem Zentralrechner verbunden (online). REQ-25 REQ-26 REQ-27 REQ-49 REQ-50 REQ-51 REQ-52 Die Verbindung eines Automaten zum Zentralrechner kann unterbrochen werden, der Automat ist dann offline. REQ-53 Wer im Besitz einer Karte ist, kann an einem Bankautomaten verschiedene Dienste für das zugehörige Konto in Anspruch nehmen. REQ-28 Authentifizierung am Automaten Jede Karte hat eine unveränderliche, vierstellige PIN. REQ-29 Karten können in Bankautomaten eingeführt werden, zu jedem Zeitpunkt ist höchstens eine Karte im Automaten. Zu jedem Zeitpunkt ist eine Karte in höchstens einem Automaten. REQ-34 REQ-35 Ein Benutzer kann seine eingeführte Karte jederzeit vom Automaten ausgeben lassen. Der Karteninhaber muss sich am Automaten nach Einführen der Karte durch Eingabe der PIN authentifizieren. REQ-36 REQ-37 Bei Eingabe der korrekten PIN ist der Benutzer authentifiziert, bis die Karte wieder ausgegeben wird. REQ-38 4

Wird für eine Karte dreimal in Folge (also bei drei aufeinanderfolgenden Authentifizierunsversuchen, auch an verschiedenen Automaten) eine falsche PIN eingegeben, so ist die Karte danach gesperrt. Eine gesperrte Karte wird vom Automaten sofort eingezogen und nicht wieder ausgegeben. Der Automat ist dann wieder kartenfrei. Ein Automat kann die PIN einer Karte nicht auslesen. Die Funktionalität zum Authentifizieren des Benutzers und zum Sperren der Karte muss von der Karte selbst bereitgestellt werden. Automaten können von Karten abfragen, ob sie gesperrt sind. Ein Kunde kann eine gesperrte Karte, die zu einem seiner Konten gehört, wieder freischalten lassen. Gesperrte Karten werden durch den Zentralrechner freigeschaltet. REQ-39 REQ-40 REQ-41 REQ-42 REQ-33 REQ-54 Die hierzu nötige Hardware ist irrelevant. Dienste an Automaten Sämtliche (kontenbezogene) Dienste am Bankautomaten können nur in Anspruch genommen werden, solange der Kunde authentifiziert ist. REQ-55 Kontostandabfrage Am Automaten kann genau im Onlinefall (d. h. wenn der Automat mit dem Zentralrechner verbunden ist) der aktuelle Kontostand abgefragt werden. REQ-56 Kontoauszüge (optional) Am Automaten kann die Zusendung eines schriftlichen Kontoauszugs angefordert werden. Die Anforderung eines schriftlichen Kontoauszugs wird im Onlinefall direkt an den Zentralrechner weitergeleitet, im Offlinefall im Automaten gespeichert. Ein Kontoauszug pro Monat und Konto ist kostenlos, für weitere Kontoauszüge wird eine Gebühr von je 1 e erhoben. Gebührenpflichtige Kontoauszüge werden nur dann versandt, wenn die Gebühr erfolgreich vom Konto abgebucht werden konnte, sonst wird die Anfrage ignoriert. Überweisungen (optional) Kunden können von ihren Konten Geld auf existierende Konten überweisen. REQ-57 REQ-58 REQ-59 REQ-60 REQ-18 Wir betrachten hier keine Konten bei anderen Banken. Überweisungen können am Bankautomaten getätigt werden. Der Automat muss dazu online sein. REQ-61 5

Bei einer Überweisung verringert sich der Saldo des Ausgangskontos um einen Betrag. Um denselben Betrag erhöht sich der Saldo des Zielkontos. Bei einer Überweisung müssen Quell- und Zielkonto verschieden sein. REQ-19 REQ-21 Abhebungen Am Automaten können Geldbeträge in Bar abgehoben werden. Im Onlinefall wird ein ausgezahlter Geldbetrag sofort vom Konto abgebucht. REQ-62 REQ-63 Im Offlinefall wird die Auszahlung von Geldbeträgen im Automaten gespeichert. Von einem Konto dürfen pro Tag höchstens 1000 e abgebucht werden. Diese Grenze kann nur durch Offlineabhebungen überschritten werden. REQ-64 REQ-65 Bedenken Sie, dass es auch bei Überweisungen und gebührenpflichtigen Kontoauszügen zu Abbuchungen kommt. Der Gesamtbetrag von Offlineabhebungen darf bis zur Verbuchung auf dem Konto pro Konto und Bankautomat 1000 e nicht überschreiten. REQ-66 Allgemeines Eine Aktion, die mit einer Abbuchung verbunden ist ausgenommen Offlineabhebungen, nach welcher der Minimalbetrag des zugehörigen Kontos unterschritten wäre, wird nicht durchgeführt, sondern abgebrochen. Der Minimalbetrag kann durch Offlineabhebungen unterschritten werden. REQ-67 REQ-68 Wenn ein Automat nach einer Offlinephase wieder Verbindung zum Zentralrechner herstellen kann, werden alle gespeicherten, offline durchgeführten Aktionen ausgeführt. REQ-69 Abgabe am 05.02.2013, Zwischenabgaben am 15.01.2013 und 22.01.2013 Die Abgabe wird während des Praktikumstermins am 06.02 vorgeführt. Mit den Zwischenabgaben demonstrieren Sie Ihren Fortschritt. Bitte dokumentieren Sie Ihre Lösungen ausreichend und seien Sie darauf vorbereitet, sie auf Nachfrage zu erklären. Praktikums-Webseite: http://formal.iti.kit.edu/teaching/keypraktws1213/ Daniel Bruns: R. 223, Tel. 608-45268, E-Mail: bruns@kit.edu David Faragó: R. 308, Tel. 608-47322, E-Mail: farago@ira.uka.de Christoph Gladisch: R. 223, Tel. 608-45268, E-Mail: gladisch@ira.uka.de Christoph Scheben: R. 106, Tel. 608-44338, E-Mail: scheben@ira.uka.de Mattias Ulbrich: R. 106, Tel. 608-44338, E-Mail: mulbrich@ira.uka.de 6