2015-06-11 Tagesprogramm



Ähnliche Dokumente
Client-Server-Beziehungen

Client-Server Beziehungen

SEP 114. Design by Contract

Programmierkurs Java

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Objektorientierte Programmierung

Ersetzbarkeit, Client-Server Beziehungen

Java: Vererbung. Teil 3: super()

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

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

Überblick. Lineares Suchen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Einführung in die Programmierung für Wirtschaftsinformatik

Software Engineering Interaktionsdiagramme

Elternzeit Elternzeit (EZ)

Lizenzierung von SharePoint Server 2013

Anleitung über den Umgang mit Schildern

Lizenzierung von SharePoint Server 2013

Einführung in die Programmierung

Whitebox-Tests: Allgemeines

Objektorientierte Programmierung

Algorithmen und Datenstrukturen

Widerrufsbelehrung der Free-Linked GmbH. Stand: Juni 2014

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

1. Vertragsgegenstand

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

Übungen Programmieren 1 Felix Rohrer. Übungen

Java Kurs für Anfänger Einheit 5 Methoden

Netzanschlussvertrag Strom für höhere Spannungsebenen

Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen.

n... Laufzeit der Kapitalanlage = Zeit, während der Zinsen zu zahlen sind (oder gezahlt werden) in Zinsperioden (z.b. Jahre)

Professionelle Seminare im Bereich MS-Office

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Netzanschlussvertrag Gas (Entnahme hinter Druckregelung in Mittel- oder Hochdruck)

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Test-Driven Design: Ein einfaches Beispiel

Design by Contract with JML

Internet Explorer Version 6

Prüfung Computation, Programming

Leitfaden. zur Einführung neuer Studiengänge

Kapitel 12 Dokumentation und Zugriffsrechte

Flaches Grundstück ohne Baumbestand Wohngrundstück / Kauf

Übungsaufgaben Tilgungsrechnung

Örtliche Angebots- und Teilhabeplanung im Landkreis Weilheim-Schongau

Vertrag zwischen. der AOK Berlin - Die Gesundheitskasse - und der Kassenärztlichen Vereinigung Berlin (KV)

Synchronisations- Assistent

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Einführung in die Programmierung

Allgemeine Geschäftsbedingungen (mit gesetzlichen Kundeninformationen)

Prüfung Software Engineering I (IB)

Nutzung von GiS BasePac 8 im Netzwerk

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

public class SternchenRechteckGefuellt {

ARBEITNEHMERÜBERLASSUNG. Zeitarbeit? Leiharbeit?

Ende von Vertragsbeziehungen

Computeranwendung und Programmierung (CuP)

Erläuterungen zu Leitlinien zum Untermodul Krankenversicherungskatastrophenrisiko

Widerrufsbelehrung. Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen.

Erwin Grüner

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Elternzeit Was ist das?

VERTRAG. zur Beteiligung der. Gemeinde. bei der Versorgung mit DSL. zwischen

Der Kontowecker: Einrichtung

Das Stationsportal der DB Station&Service AG - Das Rollenkonzept. DB Station&Service AG Vertrieb Stationsportal Berlin, Juli 2015

TechNote: Exchange Journaling aktivieren

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

ANMELDUNG und AUSBILDUNGSVERTRAG

Gierhardt. 1 import javakara. JavaKaraProgram ; 3 public class Playit1 extends JavaKaraProgram. 4 { // Anfang von Playit1. 6 void gehezumbaum ( ) 7 {

Grant Thornton Hungary News. April 2014

Netzanschlussvertrag Strom (für höhere Spannungsebenen)

Der monatliche Tarif für ein Handy wurde als lineare Funktion der Form f(x) = k x + d modelliert (siehe Grafik).

Damit auch Sie den richtigen Weg nehmen können die 8 wichtigsten Punkte, die Sie bei der Beantragung Ihrer Krankenversicherung beachten sollten:

allensbacher berichte

Fragebogen ISONORM 9241/110-S

Sparen in Deutschland - mit Blick über die Ländergrenzen

Zur Wahrung der Widerrufsfrist reicht es aus, dass Sie die Mitteilung über die Ausübung des Widerrufsrechts vor Ablauf der Widerrufsfrist absenden.

Zur drittletzten Zeile scrollen

Unter der Anerkennung der nachstehenden und umseitigen Bedingungen melde ich mich bzw. meine/n Sohn/Tochter zum Lehrgang bei der LITERA Schule an:

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

Vertrag über die Betreuung und Beratung eines EDV-Netzwerkes

Prinzipien Objektorientierter Programmierung

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Download. Führerscheine Zinsrechnung. Schnell-Tests zur Lernstandserfassung. Jens Conrad, Hardy Seifert. Downloadauszug aus dem Originaltitel:

Hilfedatei der Oden$-Börse Stand Juni 2014

Einführung in die Java- Programmierung

Provisionssicherung bei Immobilienangeboten im Internet

Das EU-Führerscheinrecht

Scala kann auch faul sein

Applet Firewall und Freigabe der Objekte

Erfahrungen mit Hartz IV- Empfängern

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Übungsklausur. Bitte wählen Sie fünf Aufgaben aus! Aufgabe 1. Übungsklausur zu Mathematik I für BWL und VWL (WS 2008/09) PD Dr.

Mobile Intranet in Unternehmen

Diana Lange. Generative Gestaltung Operatoren

1. Wie viel Zinsen bekommt man, wenn man 7000,00 1 Jahr lang mit 6 % anlegt?

ratgeber Urlaub - Dein gutes Recht

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Transkript:

1 2015-06-11 Tagesprogramm Design-by-Contract

2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme in einem Vertrag geregelt man kann gleichzeitig Anbieter und Kunde unterschiedlicher Leistungen sein

3 Vertragspartner in der Software Clients und Server sind Objekte Server bietet Services in Form von Methodenausführungen an Client nimmt Services durch Methodenaufrufe in Anspruch Details einer Leistung in einem Software-Vertrag geregelt Software-Vertrag wird jedoch nicht durch Objekte selbst vereinbart, sondern durch Programmierer(innen) entsprechender Programmteile

4 Vertragsbestandteile = Zusicherungen Vorbedingung: Bedingung, die vor Methodenausführung gelten muss; Client ist dafür verantwortlich Nachbedingung: Bedingung, die nach Methodenausführung gelten muss; Server ist dafür verantwortlich Invariante: Bedingung hinsichtlich des Zustands des Servers, die sowohl vor als auch nach jeder Methodenausführung gelten muss; Server ist dafür verantwortlich

5 Typischer Software-Vertrag Rechte und Pflichten des Servers: Server darf davon ausgehen, dass zu Beginn einer Methodenausführung die Vorbedingungen der Methode eingehalten sind, die Invarianten des Objekts erfüllt sind Server muss dafür sorgen, dass am Ende der Methodenausführung die Nachbedingungen der Methode eingehalten sind, die Invarianten des Objekts erfüllt sind Rechte und Pflichten des Clients: Client muss dafür sorgen, dass bei Aufruf einer Methode die Vorbedingungen der Methode eingehalten sind Client darf davon ausgehen, dass nach Rückkehr aus der Methode die Nachbedingungen der Methode erfüllt sind

6 Einfacher Software-Vertrag // berechne 1 + + n Nachbedingung // n > 0 Vorbedingung public static int sum(int n) { int s = n; int i = n - 1; while (i!= 0) { s = s + i; i = i - 1; return s; Programmverstehen: annehmen, dass Vorbedingung erfüllt ist, nachweisen, dass dann auch die Nachbedingung erfüllt wird

7 Aufgabe: DbC und Programmverstehen Such Sie in Gruppen zu zwei bis drei Personen Antworten auf folgende Frage: Welche Zusammenhänge bestehen zwischen Zusicherungen zwecks Programmverstehen und Zusicherungen im Zusammenhang mit Design-by-Contract? Zeit: 2 Minuten

8 Viel Verantwortung bei Client public class Sparbuch { private long guthaben; // guthaben >= 0 Invariante // betrag > 0 Vorbedingung // guthaben wird um betrag erhöht Nachbedingung public void einzahlen(long betrag) { guthaben += betrag; // betrag > 0; betrag <= guthaben Vorbedingungen // guthaben wird um betrag verringert Nachbedingung public void abheben(long betrag) { guthaben -= betrag; public long guthaben() { return guthaben;

9 Viel Verantwortung bei Server public class Sparbuch { private long guthaben; // guthaben >= 0 Invariante // wenn true: guthaben um betrag erhöht Nachbed. public boolean einzahlen(long betrag) { if (betrag <= 0) return false; guthaben += betrag; return true; // wenn true: guthaben um betrag verringert Nachbed. public boolean abheben(long betrag) { if (betrag <= 0 betrag > guthaben) return false; guthaben -= betrag; return true;

10 Verantwortungslos public class Sparbuch { private long guthaben; // guthaben >= 0 Invariante // wenn true: guthaben um betrag erhöht Nachbed. public boolean einzahlen(long betrag) { return false; // wenn true: guthaben um betrag verringert Nachbed. public boolean abheben(long betrag) { return false;

11 Böswillig public class Sparbuch { private long guthaben; // guthaben >= 0 Invariante // wenn true: guthaben um betrag erhöht Nachbed. public boolean einzahlen(long betrag) { guthaben = 0; return false; // wenn true: guthaben um betrag verringert Nachbed. public boolean abheben(long betrag) { guthaben = 0; return false;

12 Usancen übliches Verhalten von Programmierer(innen) beachten inhaltliche Bedeutung von Namen berücksichtigen keine unerwarteten Zustandsänderungen

13 Richtlinien zur Vertragsgestaltung möglichst einfach möglichst eindeutig Usancen einhalten Kleingedrucktes vermeiden (keine unsinnigen Formulierungen aus Angst vor Böswilligkeit) Verantwortung dort ansiedeln, wo Information vorhanden ist (eher beim Server als beim Client) zusammenspielen, nicht gegeneinander ausspielen

14 Aufgabe: Zusicherungen unterscheiden Wählen Sie einige Standard-Java-Klassen. Lesen Sie die API-Beschreibungen dieser Klassen sorgfältig durch und betrachten Sie sie als Software-Verträge. Wer ist für die Einhaltung welcher Teile der API-Beschreibungen verantwortlich?