CSC/ECE 517 Fall 2011/ch6 6a pc: Difference between revisions
Line 5: | Line 5: | ||
== Software Reliability == | == Software Reliability == | ||
A major concern in software design is Reliability, which depends on two factors: 1) Correctness - system's ability to perform its job according to the specification and 2) Robustness - handling abnormal conditions. Reliability is especially important in Object oriented software because of the additional complexity imposed by Reusability. Some of the common problems encountered when writing software include: | A major concern in software design is Reliability, which depends on two factors: 1) Correctness - system's ability to perform its job according to the specification and 2) Robustness - handling abnormal conditions. Reliability is especially important in Object oriented software because of the additional complexity imposed by Reusability. Some of the common problems encountered when writing software include: | ||
1) System failure - | 1) System failure - CPU crash, Disk/Memory access errors, Network errors | ||
2) Invalid input data - Out of range data, Bad file name,etc | |||
3) Programming errors - Memory leaks, Buffer overruns, etc. | |||
The last two are the issues addressed by "Programming by contract" paradigm. | |||
=== Programming by contract === | === Programming by contract === | ||
=== Contract and Inheritance === | === Contract and Inheritance === |
Revision as of 19:06, 15 November 2011
6a (was 5c). Lecture 18, Programming by contract. My notes for Lecture 18 are largely taken from 20-year-old articles by Bertrand Meyer. The principles are timeless, but there are undoubtedly new embellishments that would provide better background to the topics discussed in the lecture. Write a narrative, generally following the lecture organization, that explains programming by contract in more detail.
Introduction
Software Reliability
A major concern in software design is Reliability, which depends on two factors: 1) Correctness - system's ability to perform its job according to the specification and 2) Robustness - handling abnormal conditions. Reliability is especially important in Object oriented software because of the additional complexity imposed by Reusability. Some of the common problems encountered when writing software include: 1) System failure - CPU crash, Disk/Memory access errors, Network errors 2) Invalid input data - Out of range data, Bad file name,etc 3) Programming errors - Memory leaks, Buffer overruns, etc.
The last two are the issues addressed by "Programming by contract" paradigm.