170 likes | 329 Views
Kontraktbaseret programmering. Baggrund: Testing can only show the presence of bugs, never their absence. - Edsger W. Dijkstra Studieordning: http://www.diplomguiden.dk/uploads/studieordning/Itogteknik/Informationsteknologi_it-vest.pdf Underviser: Finn E. Nordbjerg, fen@ucn.dk
E N D
Kontraktbaseret programmering Baggrund: Testing can only show the presence of bugs, never their absence. - Edsger W. Dijkstra Studieordning:http://www.diplomguiden.dk/uploads/studieordning/Itogteknik/Informationsteknologi_it-vest.pdf Underviser: Finn E. Nordbjerg, fen@ucn.dk Hjemmeside: http://public.ucn.dk/fen/KbP/ Faglig koordinator for EVU, Datalogisk Institut: Henrik Bærbak Christensen: hbc@cs.au.dk Uddannelseskoordinator: Arne Nis Jensen: ajensen@cs.au.dk Metrolinie 14 i Paris London Light rail Kontraktbaseret Programmering Seminar 1
Kontraktbaseret programmering - seminar 1 I dette seminar introduceres:Specifikationer vha. prædikatslogik, algoritmenotationen Q, programudsagn og checklisten for løkker. Dags program: 09.00-09.45 Introduktion, præsentation mv. 10.00-11.00 Specifikationer, notation 11.00-12.00 Øvelser 12.00-12.45 Frokost 12.45-13.15 Opsamling på øvelser. 13.15-14.15 Programudsagn – loopinvarianter og checklisten for løkker 14.30-15.00 Øvelser 15.00-16.00 Opsamling på øvelser, Introduktion til JML. Kontraktbaseret Programmering Seminar 1
Mellem seminarer • Læs og arbejd med opgaver. • Afleveringsopgaver afleveres via mail i .pdf til fen@ucn.dk. • Projekter som java–source (txt) • Fristen er mandag morgen i studieuge n+1 for 1 <= n < 3. Frist for ”projekterne” fremgår af hjemmesiden. • Spørgsmål via mail til alle på mail-listen. Alle må svare og kommentere. Jeg vil også prøve at svare. Kontraktbaseret Programmering Seminar 1
Kontraktbaseret programmering(fra et seminar afholdt af Michael Caspersen, Aarhus Universitet og og Ole Eriksen, Erhvervsakademi Sydvest) • Historisk overblik • 1966 – 2010 • Kontrakter på forskellige niveauer • Modelniveau • Interfaceniveau • Klasseniveau • Subklasseniveau • Metodeniveau • Grundlæggende principper • ”Separation of Concerns” • ”Programming on Purpose” Kontraktbaseret Programmering Seminar 1
Byggeri i dag - Software i morgen: (Utopia?) En analogi: Software i dag - byggeri i middelalderen: Notre Dame i Paris (ca. 1150 – 1250) Kontraktbaseret Programmering Seminar 1
Historisk overblik • 1966-1981... • Teori og metodologi • 1972-1977 • Abstrakte datatyper • 1970-1990... • Specifikationssprog • 1992- • Design by Contract • 1998- • Component-Based Software (J2EE, COM, .NET, ...) • Og i dag... • Værktøjer (JML, .NET Code Contracts). • Kontrakter og agile metoder. • Kontrakter og test-drevet udvikling. • Verifikation af indlejrede (realtids-) systemer. Kontraktbaseret Programmering Seminar 1
Teori og metodologi • 1966, Peter Naur (1965) • Proof of Algorithms by General Snapshots • 1967, Robert W. Floyd • Assigning Meanings to Programs • 1969, C.A.R. Hoare • An Axiomatix Basis for Computer Programming • 1976, E.W. Dijkstra (1974) • A Discipline of Programming • 1978, D. Gries (ed.) • Programming Methodology – a collection of articlesby members of IFIP WG2.3 • 1981, D. Gries • The Science of Programming • 1981- • Mange andre bøger med mere raffinerede tilgange Kontraktbaseret Programmering Seminar 1
Teori for abstrakte datatyper • 1972, C.A.R. Hoare • Proof of Correctness of Data Representation • 1972, D. Parnas • Information Hiding • 1974, B. Liskov • Programming with Abstract Data Types • 1977, J. Guttag • Abstract Data Types and the Development of Data Structures Kontraktbaseret Programmering Seminar 1
Specifikationssprog, ~1970-90 • Modelorienterede sprog • VDM, Z • Algebraiske specifikationer • Larch (+ operationel) • OBJ, Clear • Procesmodeller • CSP, CCS • Andre • NUPRL, HOL, RAISE Kontraktbaseret Programmering Seminar 1
.NET Forsknings- projekt – også via Eiffel ”Design by Contract” • 1988, B. Meyer • Object-Oriented Software Construction • 1992, B. Meyer • Applying ”Design by Contract” • 1992, B. Meyer • Eiffel: The Language • 1995, S. Porat & P. Fertig • Class Assertions in C++ • 1997, R. Plösch • Design by Contract for Python • 1998, R. Kramer • iContract – The Java Design by Contract Tool • 1999, M. Karaorman et al. • jContractor: A Reflective Java Library to Support Design by Contract • 1999, J. Warmer & A. Kleppe • The Object Constraint Language • 1999, Gary T. Leavens e. a. • Java Modelling Language – JML • >2000, forskellige: • HandShake • .NET Code Contract • Spec# Kontraktbaseret Programmering Seminar 1
Komponentbaseret software 1998, C. Szyperski • Component Software – Beyond Object-Oriented Programming • 2002, I. Crnkovic & M. Larsson (eds.) • Building Reliable Component-Based Software Systems • 2002, A. Sjögren • A Method for Support for Design By Contract on the .NET Platform Kontraktbaseret Programmering Seminar 1
Kontrakter på forskellige niveauer • Modelniveau (UML-niveau) • relationer med begrænsninger • Interfaceniveau • funktionelle specifikationer (pre og post) og typeinvariant • Klasseniveau • klasseinvariant (typeinvariant og repræsentationsinvariant) • Subklasseniveau • extends, implements, ”behavioral subtyping” • Metodeniveau • programudsagn (specielt løkkeinvarianter) Kontraktbaseret Programmering Seminar 1
Udviklingsområder (2000 - …) • Værktøjer: • Theorem provers • Model checkers • Abstract interpretation and reasoning systems • Parallelle og distribuerede systemer (funktionelle sprog). Kontraktbaseret Programmering Seminar 1
ProgrammeringsmetodologiE.W. Dijkstra • Programming on Purpose • systematik og teknik • ingen kaniner op af hatten • Separation of Concerns • faktorisering • (midlertidig) uafhængighed E.W. Dijkstra Kontraktbaseret Programmering Seminar 1