User Tools

Site Tools


demo:simple

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
demo:simple [2020/04/23 21:23] jonathandemo:simple [2020/04/29 18:18] (current) jonathan
Line 4: Line 4:
  
   * [[https://youtu.be/eCVraeBKgiQ|Simple Mode Video]]   * [[https://youtu.be/eCVraeBKgiQ|Simple Mode Video]]
 +  * [[http://code.eecs.yorku.ca|Access the IDE in a browwser]] (EECS or Passport York Login required)
  
 Below is a Demo of a Capstone Project by two students: Webapp for compiling/executing Eiffel programs with a selection of coding challenges illustrating Design by Contract. Below is a Demo of a Capstone Project by two students: Webapp for compiling/executing Eiffel programs with a selection of coding challenges illustrating Design by Contract.
Line 17: Line 18:
 ===== Design by Contract ===== ===== Design by Contract =====
  
-In Design by Contract (developed by Bertrand Meyer), a software component has a mathematical **specification** that describes **what** the the component must do (free of implementation detail) and an **implementation** (one of possibly many) that describes **how** the specification is implemented. For example, the specification of a  a square root function is described by a precondition and a postcondition as shown below. +In Design by Contract (developed by Bertrand Meyer), a software component has a mathematical **specification** that describes **what** the the component must do (free of implementation detail) and an **implementation** (one of possibly many) that describes **how** the specification is implemented.  
 + 
 +For example, the specification of a  a square root function is described by a precondition (keyword **require**) and a postcondition (keyword **ensure**) as shown below. 
  
 {{:demo:sqrt.png?600|}} {{:demo:sqrt.png?600|}}
 +
 +There are of course many different implementations that might satisfy this specification. 
 +
 +A **contract** imposes obligations and benefits on the **client** (a component that uses the square root function) and the **supplier** (who must provide a body for the square root function).
  
 {{:demo:contract.png?600|}} {{:demo:contract.png?600|}}
 +
 +A precondition failure is the fault of the client of the component. A postcondition failure is the fault of the supplier of the failure. 
 +
 +Runtime assertion checking (in Eiffel) is used to check that the given implementation satisfies the specification. 
demo/simple.1587677033.txt.gz · Last modified: 2020/04/23 21:23 by jonathan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki