1 / 16

Kontraktbaseret programmering

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

lamond
Download Presentation

Kontraktbaseret programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. Kontraktbaseret Programmering Seminar 1

  9. 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

  10. Specifikationssprog, ~1970-90 • Modelorienterede sprog • VDM, Z • Algebraiske specifikationer • Larch (+ operationel) • OBJ, Clear • Procesmodeller • CSP, CCS • Andre • NUPRL, HOL, RAISE Kontraktbaseret Programmering Seminar 1

  11. .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

  12. Kontraktbaseret Programmering Seminar 1

  13. 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

  14. 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

  15. 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

  16. 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

More Related