Program development involves several basic phases:

- Specifications/requirements
- Design
- Coding
- Testing
- Maintenance

This talk has focused on elements of the phases 1-4.

At each stage, we have identified both theoretical and practical constraints that limit the possibilities of program solutions.

**Theoretical Limitations**

- Some problems (e.g., the Halting Problem) have no solution.
- Some problems (e.g., the Satisfiability Problem) have solutions, but they are not feasible for reasonable data sets.

**Practical Limitations**

- Cannot tell when specifications are complete, consistent, and unambiguous.
- Testing most solutions completely is not feasible.
- Program Verification cannot be automated to give a mathematical proof of correctness (even assuming we have sufficiently precise specifications).

created: 3 January 2007last revised: 7 January 2007
| previous |