Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Einführung in die Programmierung Zusammenfassung
DI Christian Donner cd (at) donners.com
Einführung in JavaScript II
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Erweiterte Zuweisungskompatibilität
Imperative Programmierung Funktionen und Parameter
Automatisches Testen und Bewerten von Java-Klassen
Programmieren mit JAVA
Programmieren mit JAVA
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Zusammenfassung Vorwoche
Programmierkurs JAVA zusätzliche, ergänzende Lehrveranstaltung
Introducing the .NET Framework
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Einführung in C EDV1 - 03C-Einführung.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
JDBC EDV JDBC.
MSDN Webcast: VB. NET für Einsteiger und Umsteiger Einführung in VB
Björn Schmidt, Hoang Truong Nguyen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Ein Vortrag im Rahmen des Seminars “Programmiersprachen”
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Style Guidelines für Java und .NET
Informatik Objekte und Klassen 1. Objektorientiertes Modellieren und Programmieren 1.1 Objekte und Klassen.
Prof. Dr. Walter F. Tichy Dr. Matthias Müller Sommersemester 2006 Empirische Softwaretechnik.
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Unterprogramme in JAVA
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
EPROG Tutorium #3 Philipp Effenberger
Programmiervorkurs WS 2014/15 Methoden
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Robuste Programme durch Ausnahmebehandlung
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Microsoft.NET - Plattform Kurzer Überblick Vergleich mit Java Von Thomas Zahn Januar 2001.
Wieland Schwinger Softwareentwicklung 2 Assertions.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Objektorientierte (OO) Programmierung
Java Programme nur ein bisschen objektorientiert.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Hello World! Javakurs 2013 Arne Kappen
Die Struktur einer Java-Klasse
Implementieren von Klassen
 Präsentation transkript:

Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler

Inhaltsübersicht 1. Motivation 2. Spec Sharp 3. Assertions bei Spec Sharp 4. Static Verifier 5. Fazit

1.Motivation - Spec Sharp 1. von Microsoft entwickelte objektorientierte Programmiersprache. 2. ist kostenlos. 3. für die Entwicklungsumgebungen Visual Studio 2003 und Visual Studio 2005 verfügbar

Motivation Spec # ist C# Erweiterung hat einzigartige Architektur enthält Spezifikationen Ist schnell erlernbar steigert Softwarequalität

Inhaltsübersicht 1. Motivation 2. Spec Sharp 3. Assertions bei Spec Sharp 4. Static Verifier 5. Fazit

2. Spec# System Das Spec Sharp Programmiersystem besteht aus: Programmiersprache Compiler statischem Programm Beweiser

Spec# - Programmiersprache erweiterung von C# um Spezifikationen Jedes korrektes C# Programm ist auch korrektes Spec# Programm enthält Werkzeuge zum Überprüfen der Spezifikationen zur Compile- und Laufzeit Weg zur hochqualitative Software Basiert auf.NET Plattform

.NET Plattform VB.NET C# Spec# C++… VB.NET Compiler C# Compiler Spec# Compiler C++ Compiler … Microsoft Intermediate Language (MIL) Common Language Runtime (CLR) Klassenbiblioteken (API) Betriebsystem

.NET Plattform.NET Sprachen C++, C#, Spec#, Visual Basic,… Verwenden das.NET Framework Werden von entsprechendem Sprachcompiler in die Zwischensparche kompiliert

C# (Sharp) Objektorientierte Sprache stammt größtenteils von C, bzw. C++ ab enthält Anlehnungen an Java erzeugt plattformunabhängige Programme hat eine automatische Ressourcenverwaltung (Garbage collector)

In C# (Sharp) gibt es weder Pointer noch Mehrfachvererbung fast alles als Objekt gesehen wird, selbst die einfachen Datentypen wie int oder long entstehen dabei keine damit verbundene Laufzeitverluste

C# Beispiel //Code in C# int termin; public void newTermin(int day) { termin = day; } Liefert diese Funktion ein sicheres Ergebnis?

C# Beispiel //Code in C# int termin; public void newTermin(int day) { termin = day; } Und was ist wenn day kleiner 1 ist, oder größer als 6 ist?

//Code in C# int termin; public void newTermin(int day) { termin = day; } C# Beispiel

Inhaltsübersicht 1. Motivation 2. Spec Sharp 3. Assertions bei Spec Sharp 4. Static Verifier 5. Fazit

3. Assertions Java Java Modeling Language Invarianten Nachbedingungen Vorbedingungen … Reference types

Assertions Java Java Modeling Language Invarianten Nachbedingungen Vorbedingungen … Reference types C#

Assertions Java Java Modeling Language Invarianten Nachbedingungen Vorbedingungen … Reference types C# Spec# Invarianten Nachbedingungen Vorbedingungen … Reference types Erweiterung von C# um Spezifikationen

Runtime Verifier Zur Kompilierzeit - Umwandlung aller Vor-, Nachbedingungen, Invarianten Annahmen usw. in inline Code Zur Laufzeit – Auslösung von Exceptions bei den verletzten Bedingungen

Assertions C# Spec# Invarianten Nachbedingungen Vorbedingungen … Reference typesNon-null Typen

Spec# : None-null Typen Viele Fehler passieren auch dann, wenn einem Objekt ein Wert zugewiesen oder abgefragt wird, und dieses Objekt gleich null ist. private string state1 = null;// in Spec# private string! state2 = ok";// in Spec# Zwei Strings, einer mit ! Zeichen. state1 kann null sein state2 kann aber nicht null sein

Vorbedingungen C# Spec# Invarianten Nachbedingungen Vorbedingungen … Reference types Requires Non-null Typen

Spec#: Precondition In Spec# können einer Funktion Vor- und Nachbedingungen zugewiesen werde requires = Vorbedingung. Vorbedingung: sagt, was wahr sein muß, damit die Methode aufgerufen werden darf. int termin; public void newTermin(int day) requires (day < 7); requires (day >= 1); { termin = day; }

Nachbedingungen C# Spec# Invarianten Nachbedingungen Vorbedingungen … Reference types Ensures Requires Non-null Typen

Spec#: Postcondition ensures = Nachbedingung. Nachbedingung: sagt, was erfüllt sein soll, wenn die Methode ohne Exceptions ausgeführt wird. int termin; public void newTermin(int day) requires (day < 7); requires (day >= 1); ensures (termin == day); { termin = day; }

Spec#: Pre- und Postconditionen Pre- und Postconditionen können auch in Interface eingebaut werden: interface I { void M(int x ) requires x <= 10; } interface J { void M(int x ) requires x >= 10; } class C : I, J { void I.M(int x ) {…} void J.M(int x ) {…} }

Invarianten Beispiel C# Spec# Invarianten Nachbedingungen Vorbedingungen … Reference types Objekt Invarianten Ensures Requires Non-null Typen

Spec#: Objekt Invarianten Definition in Klassen, vor Methoden Gültig im Körper der entsprechenden Objekten Z.B. invariant (7 > termintag);

Spec#: Objekt Invarianten class Meeting { int termintag; invariant (1 <= termintag); invariant (7 > termintag); void newTermin(int day ) { termintag = day; } Definition von Objektinvariante requires IsExposable; expose(this){...// Invarianten gelten nicht }

Inhaltsübersicht 1. Motivation 2. Spec Sharp 3. Assertions bei Spec Sharp 4. Static Verifier 5. Fazit

4. Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Spec# (annotated C#) Boogie Procedural Language Formulas Sprachneutralse Format Boogie PL Programm

Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Produzierung des ausführbaren Codes Spec# (annotiertes C#) Boogie Procedural Language

Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Boogie Procedural Language Umwandelung in ein sprachneutrales Format Spec# (annotiertes C#) Sprachneutralse Format

Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Generierung eines Boogie PL Programm aus Spec# Boogie Procedural Language Spec# (annotiertes C#) Boogie PL Programm Sprachneutralse Format

Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Einfache Sprache mit Prozeduren Boogie Procedural Language Spec# (annotiertes C#) Boogie PL Programm Sprachneutralse Format

Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Umwandlung von Boogie PL Code in logische Ausdrücke (In Formeln) Boogie Procedural Language Spec# (annotiertes C#) Boogie PL Programm Formulas Sprachneutralse Format

Static Verifier Spec# Compiler Translator Verification Condition Generator Automatic Theorem Prover Boogie Procedural Language Überprüfung und Bewies von Korrektheit der Ausdrücken Formulas Spec# (annotiertes C#) Sprachneutralse Format Boogie PL Programm

Beispiel: Spec# => Boogie PL if (Bedingung) S else T Spec#: assume Bedingung; S assume !Bedingung; T Then Zweig Else Zweig BoogiePL:

Boogie PL: Code Unstrukturiertes Code Passive ::= assume Bedingung, S| assume !Bedingung, T; S::= …; T::= …; Bedingung ::= var id : Type; Type ::= bool;

Screenshot Falsche Eingabe Vorbedingung wird nicht erfüllt Kurze Fehlererklärung

Inhaltsübersicht 1. Motivation 2. Spec Sharp 3. Assertions bei Spec Sharp 4. Static Verifier 5. Fazit

Sichere Software mit weniger Aufwand Arbeitsverlagerung von den Testern zu den Softwareentwicklern Steigerung von Softwarequalität Syntax und Semantik von Spec# ist sehr nah zu C# liegt => Spec # ist für jeden C# - Programmierer leicht zu lernen

Vielen Dank!