Semantically based programming tools (Summary)
It is one of our fundamental theses that major improvements in software engineering practice will come about only through the development and use of software development tools. This thesis is based on our belief that formal methods will ultimately have a far more profound effect on software engineering productivity than management based methods, programming language design, or fast hardware. But we also believe that formal methods, by their nature, are suitable for practical use only in mechanized systems. This is not to say that everything is to be automated; the point is that the actual formal steps must be automated even if most of the guidance for their use is to come from the user. This is the same kind of observation that prompted the developers of LCF to introduce the ML type structure to protect the notion of “theorem,” together with formal deductive structure that defines it, from the surrounding heuristic apparatus. It must be expected that heuristics will be under continual development, but a deductive system is fragile and will change only infrequently.