| 288 | |
| 289 | --------------------------------------------------------------------------------------------------- |
| 290 | == Boost.Contract == |
| 291 | * '''Author(s):''' Lorenzo Caminiti |
| 292 | * '''Version:''' 0.0.1 |
| 293 | * '''State:''' stable |
| 294 | * '''Last upload:''' |
| 295 | * '''Links:''' [http://sourceforge.net/projects/dbcpp/files/releases/dbcpp_0_2_190.tar.gz/download Download] [http://dbcpp.sourceforge.net/boost/libs/contract/doc/html Documentation] |
| 296 | * '''Categories:''' [#CorrectnessAndTesting Correctness And Testing] |
| 297 | * '''Description:''' Contract Programming (CP) is also known as Design by Contract (DbC) and it was first introduced by the Eiffel programming language. All Contract Programming features of the Eiffel programming language are supported by this library, among others: |
| 298 | |
| 299 | * Optional compilation and checking of invariants, preconditions, and postconditions. |
| 300 | * Customizable actions on contract failure (terminate by default but it can throw, exit, etc). |
| 301 | * Subcontracting for derived classes (with support for multiple inheritance). |
| 302 | * Access to "old" variable values (before body execution) and return value "result" in postconditions. |
| 303 | * Automatic contract documentation (integrated with Doxygen). |
| 304 | |
| 305 | In brief, Contract Programming allows to specify invariants, preconditions, and postconditions that are automatically checked when functions are called at run-time. These conditions are used to assert the function specifications within the code itself allowing to find bugs more quickly during testing and improving software quality. |
| 306 | |