Design by Contract. Design and Programming by Contract. Oversigt. Prædikater
|
|
|
- Arne Frederiksen
- 10 år siden
- Visninger:
Transkript
1 Design by Contract Design and Programming by Contract Anne Haxthausen Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere software bruger prædikater (assertions) til dette : Hoare style pre-betingelser og post-betingelser for metoder/operationer klasse-invarianter Oversigt Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 1 Prædikater Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 3 Brug af assertions ved design og programmering. Det generelle begreb Design by contract. Design by contract for Java. Et prædikat (assertion) er en formel, hvis sandhedsværdi afhænger af tilstanden (variablernes værdier). Eks.: Prædikatet "x delelig med 3", hvor x N, er sand for de tilstande hvor x = 0,x = 3,x = 6,. Prædikaterne kan udtrykkes: i naturligt sprog, i sædvanlig matematisk notation, som boolske udtryk i et programmeringssprog, eller sætninger i et specielt dedikeret sprog (f.eks. OCL for UML, og JML for Java) Software Engineering 1 c Anne Haxthausen, Spring 2010 p Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 4
2 Design by Contract: pre- og postbetingelser For hver operation/metode skrives en kontrakt bestående af to prædikater: en pre-betingelse og en post-betingelse Eksempel: Square root operation sqrt med input x og output y. Pre-betingelse: x 0. Post-betingelse: y y = x. Ideelt set skrives kontrakten før implementeringen. Kan efter implementeringen evt. dokumenteres i programmet, checkes eller bevises overholdt. Eksempel Kontrakt for addkgs: Pre-betingelse: kgs >= 0. Post-betingelse: (weight == \old(weight) + kgs). \old(weight) angiver weight i pre-tilstanden Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 5 Design by Contract: pre- og postbetingelser Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 7 Dokumentation af pre- og postbetingelser Pre-betingelsen angiver, hvornår metoden må benyttes, dvs. noget, der skal gælde lige før metode-kaldet kan referere til input og tilstanden lige før metode-kaldet skal overholdes af "klient-programmer" Post-betingelsen angiver noget, der skal gælde lige efter metode-kaldet kan referere til input, output og tilstanden lige før og efter metode-kaldet skal garanteres af "leverandør-programmet" (metode-implementeringen), hvis klienten holder sin del Bemærk: Post-betingelsen beskriver hvad metode-kaldet resulterer i, ikke hvordan det algoritmisk opnås Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 6 Muligheder for dokumentation af pre- og postbetingelser i leverandør-programmer: Som kommentarer. Som assertions for sprog (f.eks. Java), der tilbyder det. Nogle programmeringssprog (f.eks. Eiffel og Spec#) har native support, dvs. specielt dedikerede sprogkonstruktioner til pre- og postbetingelser. Nogle programmeringssprog (f.eks. Java) har third-party support f.eks. i form af syntaksudvidelser, der preprocesseres til assertions i sproget selv (f.eks. JML for Java). De tre sidste former giver mulighed for ved kørsel af et klient-program at checke om kontrakten overholdes af de to parter. Hoare-logik (se separat foil-set) kan bruges til at bevise, at leverandør-programmet altid overholder sin del af kontrakten Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 8
3 Java Assert Statements Design by Contract: Klasse-invarianter Syntaks: assert <boolean-expression>; Eksempel: assert (x >= 0); Effekt: Ved normal programudførelse med java: Ingen. Ved programudførelse med java -ea: boolean-expression vil blive evalueret. Hvis resultatet er true, fortsætter programmet sin udførelse. Hvis resultatet er false, vil en AssertionError exception blive kastet. Brug: F.eks. til at checke invarianter, pre- og post-betingelser under udviklingsfasen. Assertions kan evt. undertrykkes af effektivitetsgrunde i det færdige produkt. En klasse-invariant er et prædikat på tilstanden for instanser af klassen. Denne invariant skal være opfyldt før og efter enhvert metode-kald på instanser af klassen. Eksempel: Klasse-invariant: weight >= 0 Dokumentation: samme muligheder som for pre- og postbetingelser Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 9 Assertion checking af pre- og postbetingelser Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 11 Progr. by contract beskyt klasseinvariant Kontrakt for addkgs: Pre-betingelse: kgs >= 0. Post-betingelse: (weight == \old(weight) + kgs). int oldweight = weight; assert (kgs >= 0); //pre condition check assert (weight == oldweight + kgs); //post cond check En leverandør skal tilbyde metoder, der bevarer invarianten. Dvs. hvis pre-betingelsen og invarianten er sande før et metode-kald, så skal invarianten også være sand efter metode-kaldet. En klient må ikke kunne bryde invarianten. Eksempel: //invariant weigth >= 0 Hvordan kan vi checke, at addkgs bevarer invarianten weigth >= 0? Software Engineering 1 c Anne Haxthausen, Spring 2010 p Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 12
4 Assertion checking af klasseinvariant Java development using JML //invariant weigth >= 0 In the design: make assertions as JML annotations: pre conditions and post conditions for methods state invariants for classes assert (kgs >= 0); //pre condition check assert (weight >= 0); //invariant check assert (weight >= 0); //invariant check Implement the classes. Compile them with jmlc. Run test cases. If an assertion is broaken, it results in a runtime error. Checks can be turned off for production use of the software Software Engineering 1 c Anne Haxthausen, Spring 2010 p Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 15 Java Modeling Language (JML) Invariants, pre and post conditions in JML JML is a specification language for Java programs follows the design by contract paradigm using Hoare style pre- and postconditions and invariants the specifications are added as Java annotation comments to the final Java program which hence can be compiled with any Java compiler JML verification tools: jmlc: an assertion checking compiler which converts JML annotations into runtime assertions The released tools only work with the Java 1.4 subset, but a new release for Java 1.6 is on its way. private /*@ int weight; //@ invariant weight >= 0; //@ requires kgs >= 0; //@ ensures weight == \old(weight) + kgs; Software Engineering 1 c Anne Haxthausen, Spring 2010 p Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 16
5 Example of use of quantifiers in JML requires a!= && (\forall int i; 0 < i && i < a[i-1] <= int binarysearch(int[] a, int x) { Exercise: formulate a post condition JML Syntax (II) <JML assertion> = <Java expression>, but: must not have side effects (not using = neither directly nor indirectly, only call pure methods) can use extensions to Java: Syntax \result a ==> b a <== b a <==> b \old(e) (\forall T x; P; Q) (\exists T x; P; Q) meaning result of method call a implies b a implied by b a if and only if b value of E in pre-state x : T P = Q x : T P Q JML Syntax (I) Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 17 JML specifications are added to Java code as annotations in comments: //@ <JML specification> <JML specifications>: requires <JML assertion> ensures <JML assertion> invariant <JML assertion> % pre condition % post condition Design by Contract Summary Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 19 Begreberne klasse invariant, pre-betingelse og post-betingelse. er prædikater "klient-programmer" må kun kalde en metode, når metodens pre-betingelser er opfyldt "leverandør-klasser" skal for hver af sine metoder garantere, at klasse-invarianter og post-betingelser er opfyldt efter hvert metode-kald, hvis pre-betingelser og invarianter var opfyldt lige før metodekaldet. For Java: Kan dokumenteres i programmer som kommentarer (evt. i JML syntaks). Kan checkes med JML tools, hvis de skrives i JML syntaks. Kan checkes med java -ea, hvis de skrives i assertions Software Engineering 1 c Anne Haxthausen, Spring 2010 p Software Engineering 1 c Anne Haxthausen, Spring 2010 p. 20
Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag
Hvem er vi? Kursus Introduktion Anne Haxthausen [email protected] Informatics and Mathematical Modelling Technical University of Denmark 100 studerende med forskellig baggrund: software teknologi It og Kom
Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer
Opfølgning på Opgave 2 og Use Cases originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University of Denmark Opgaven fortsat Efter
A Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Linear Programming ١ C H A P T E R 2
Linear Programming ١ C H A P T E R 2 Problem Formulation Problem formulation or modeling is the process of translating a verbal statement of a problem into a mathematical statement. The Guidelines of formulation
IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1
IBM Network Station Manager esuite 1.5 / NSM Integration IBM Network Computer Division tdc - 02/08/99 lotusnsm.prz Page 1 New esuite Settings in NSM The Lotus esuite Workplace administration option is
Kontraktbaseret Design. Anker Mørk Thomsen
Kontraktbaseret Design Anker Mørk Thomsen 5. marts 2014 -2 Kontraktbaseret Design Anker Mørk Thomsen 1. udgave ISBN: 9788740491500 Forord Bogen er blevet til gennem undervisning i faget Kontraktbaseret
Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations
Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University
Det er muligt at chekce følgende opg. i CodeJudge: og
Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.
Abstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1
Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words
Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende
Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind
Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012
Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend
Kursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Basic statistics for experimental medical researchers
Basic statistics for experimental medical researchers Sample size calculations September 15th 2016 Christian Pipper Department of public health (IFSV) Faculty of Health and Medicinal Science (SUND) E-mail:
YDEEVNEDEKLARATION. Nr DA
YDEEVNEDEKLARATION Nr. 0081 DA 1. Varetypens unikke identifikationskode: fischer boltanker FAZ II 2. Tilsigtet anvendelse: Produkt Moment-kontrolleret ekspansionsanker Anvendelsesområde/r Post-installeret
Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte
Løsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
UNISONIC TECHNOLOGIES CO.,
UNISONIC TECHNOLOGIES CO., 3 TERMINAL 1A NEGATIVE VOLTAGE REGULATOR DESCRIPTION 1 TO-263 The UTC series of three-terminal negative regulators are available in TO-263 package and with several fixed output
PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU
PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION
Objects First with Java A Practical Introduction Using BlueJ
Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet
Interaktionsudvikling
Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html
FIST-GPS3 I N S T A L L A T I O N S I N S T R U K S
FIST-GPS3 I N S T A L L A T I O N S I N S T R U K S GPSTF-patchbakker monteret med prætermineret kabel UDARBEJDET I SAMARBEJDE MED TDC Indhold 1 General information 2 Kit indhold 3 Montering af skuffer
Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning
Side 1 af 9 SEPA Direct Debit Betalingsaftaler Vejledning 23.11.2015 1. Indledning Denne guide kan anvendes af kreditorer, som ønsker at gøre brug af SEPA Direct Debit til opkrævninger i euro. Guiden kan
Hvordan vælger jeg dokumentprofilen?
Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel
Mandara. PebbleCreek. Tradition Series. 1,884 sq. ft robson.com. Exterior Design A. Exterior Design B.
Mandara 1,884 sq. ft. Tradition Series Exterior Design A Exterior Design B Exterior Design C Exterior Design D 623.935.6700 robson.com Tradition OPTIONS Series Exterior Design A w/opt. Golf Cart Garage
Anvendelse af BPT til manuel test
DIAS 1 Konference HP Test brugergruppen Anvendelse af BPT til manuel test Agenda DIAS 2 _ Præsentation af mig selv _Manuel BPT _ Manuel BPT i KMD _Konklusion _ Diskussion og spørgsmål Præsentation DIAS
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Design til digitale kommunikationsplatforme-f2013
E-travellbook Design til digitale kommunikationsplatforme-f2013 ITU 22.05.2013 Dreamers Lana Grunwald - [email protected] Iya Murash-Millo - [email protected] Hiwa Mansurbeg - [email protected] Jørgen K.
Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8
Shooting tethered med Canon EOS-D i Capture One Pro Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 For Canon EOS-D ejere der fotograferer Shooting tethered med EOS-Utility eller
Lovkrav vs. udvikling af sundhedsapps
Lovkrav vs. udvikling af sundhedsapps Health apps give patients better control User Data Social media Pharma Products User behaviour Relatives www Self monitoring (app) data extract Healthcare specialists
Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)
Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM58) Institut for Matematik og Datalogi Syddansk Universitet, Odense Torsdag den 1. januar 01 kl. 9 13 Alle sædvanlige hjælpemidler
KALK- OG TEGLVÆRKSFORENINGEN. CPR Sustainable Construction
CPR Sustainable Construction 1 Tommy Bisgaard - Direktør i Kalk- og Teglværksforeningen - Formand for DS 417 (CEN TC350 & 351) - Formand for miljøkomiteen i TBE & CU (keramiske industrier i Europa) - Medlem
Trolling Master Bornholm 2015
Trolling Master Bornholm 2015 (English version further down) Sæsonen er ved at komme i omdrejninger. Her er det John Eriksen fra Nexø med 95 cm og en kontrolleret vægt på 11,8 kg fanget på østkysten af
Small Autonomous Devices in civil Engineering. Uses and requirements. By Peter H. Møller Rambøll
Small Autonomous Devices in civil Engineering Uses and requirements By Peter H. Møller Rambøll BACKGROUND My Background 20+ years within evaluation of condition and renovation of concrete structures Last
User Manual for LTC IGNOU
User Manual for LTC IGNOU 1 LTC (Leave Travel Concession) Navigation: Portal Launch HCM Application Self Service LTC Self Service 1. LTC Advance/Intimation Navigation: Launch HCM Application Self Service
Installation Venligst bemærk, håndpumpen kun må monteres i lodret position.
HP-1. HP-3. HP-. Hand Operated Håndpumpe The HP pump is a single acting hand operated pump made of stainless steel St.1.431 making it particularly applicable within the food industry and in environmentally
BRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Brug af Educational IT i undervisningen: PollEverywhere. Associate Professor Carsten Bergenholtz
Brug af Educational IT i undervisningen: PollEverywhere Associate Professor Carsten Bergenholtz ([email protected]) Department of Management / Institut for Virksomhedsledelse TATION Agenda Hvad er PollEverywhere?
OCD DTU. Screening of aluminium in the offshore industry. Screening. DOC. NO. dokument 1 March 2007
CVR: 27171877 VestJysk Bank: 7606 1064127 OCD DTU Screening of aluminium in the offshore industry Screening DOC. NO. dokument 1 March 2007 [email protected] Tel: +45 36973670 www.offshorecenter.dk../2
SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup
SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA
Vina Nguyen HSSP July 13, 2008
Vina Nguyen HSSP July 13, 2008 1 What does it mean if sets A, B, C are a partition of set D? 2 How do you calculate P(A B) using the formula for conditional probability? 3 What is the difference between
Byg din informationsarkitektur ud fra en velafprøvet forståelsesramme The Open Group Architecture Framework (TOGAF)
Byg din informationsarkitektur ud fra en velafprøvet forståelsesramme The Open Group Framework (TOGAF) Otto Madsen Director of Enterprise Agenda TOGAF og informationsarkitektur på 30 min 1. Introduktion
Listen Mr Oxford Don, Additional Work
57 (104) Listen Mr Oxford Don, Additional Work Listen Mr Oxford Don Crosswords Across 1 Attack someone physically or emotionally (7) 6 Someone who helps another person commit a crime (9) 7 Rob at gunpoint
Sikkerhedsvejledning
11-01-2018 2 Sikkerhedsvejledning VIGTIGT! Venligst læs disse instruktioner inden sengen samles og tages i brug Tjek at alle dele og komponenter er til stede som angivet i vejledningen Fjern alle beslagsdele
Reexam questions in Statistics and Evidence-based medicine, august sem. Medis/Medicin, Modul 2.4.
Reexam questions in Statistics and Evidence-based medicine, august 2013 2. sem. Medis/Medicin, Modul 2.4. Statistics : ESSAY-TYPE QUESTION 1. Intelligence tests are constructed such that the average score
Velkommen til IFF QA erfa møde d. 15. marts Erfaringer med miljømonitorering og tolkning af nyt anneks 1.
Velkommen til IFF QA erfa møde d. 15. marts 2018 Erfaringer med miljømonitorering og tolkning af nyt anneks 1. 1 Fast agenda kl.16.30-18.00 1. Nyt fra kurser, seminarer, myndighedsinspektioner, audit som
Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US
Generalized Probit Model in Design of Dose Finding Experiments Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US Outline Motivation Generalized probit model Utility function Locally optimal designs
Skriftlig Eksamen Automatteori og Beregnelighed (DM17)
Skriftlig Eksamen Automatteori og Beregnelighed (DM17) Institut for Matematik & Datalogi Syddansk Universitet Odense Campus Lørdag, den 15. Januar 2005 Alle sædvanlige hjælpemidler (lærebøger, notater
