Your SlideShare is downloading. ×
Design by contract
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Design by contract


Published on

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Design by Contract Jiří Kiml, 18/08/2011,
  • 2. Agenda ►Motivation ►DBC ►Support in JAVA ►Eclipse examples ►Summary ►
  • 3. Motivation Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. ~Martin Golding ►Wouldnt it be nice if all Java classes that you use, including your own, lived up to their promises?
  • 4. Design by Contract (1) ►The Design by Contract (DBC) software development technique ensures high- quality software by guaranteeing that every component of a system lives up to its expectations. As a developer using DBC, you specify component contracts as part of the components interface. The contract specifies what that component expects of clients and what clients can expect of it. ►Bertrand Meyer developed DBC as part of his Eiffel programming language. Regardless of its origin, DBC is a valuable design technique for all programming languages, including
  • 5. Design by Contract (2) ►Central to DBC is the notion of an assertion ►At runtime we evaluate the assertions at specific checkpoints during the systems
  • 6. Kinds of Assert expressions ►Preconditions ►Postconditions ►
  • 7. Preconditions ►Preconditions specify conditions that must hold before a method can execute. As such, they are evaluated just before a method executes. Preconditions involve the system state and the arguments passed into the method. ►Preconditions specify obligations that a client of a software component must meet before it may invoke a particular method of the component. ►If a precondition fails, a bug is in a software components
  • 8. Postconditions ►In contrast, postconditions specify conditions that must hold after a method completes. Consequently, postconditions are executed after a method completes. Postconditions involve the old system state, the new system state, the method arguments, and the methods return value. ►Postconditions specify guarantees that a software component makes to its clients. If a postcondition is violated, the software component has a
  • 9. Invariants ►An invariant specifies a condition that must hold any time a client could invoke an objects method. Invariants are defined as part of a class definition. In practice, invariants are evaluated any time before and after a method on any class instance executes. A violation of an invariant may indicate a bug in either the client or the software
  • 10. Support in JAVA ►Assert keyword ►Many third party solutions (annotations, AspectJ) ►DBC
  • 11. Eclipse examples ►
  • 12. Summary ►Contracts in code are good ►Easy to use ►Correctness ►
  • 13. Links ►Two presentations: – ►
  • 14. Questions … … and maybe
  • 15. Thank you Jiří Kiml , 18/08/2011,