- How can software be designed so that it will be reliable
(not have ``bugs'') and meet its specifications?
- How can software be designed to be ``bomb-proof'',
i.e., immune to defects in input data, hardware failures, etc.?
- How can the cost of writing software be predicted accurately?
- How can large groups of programmers be organized to write large programs?
- What programming practices result in efficient production of
- How can designs and programs be reused in new projects?