(New) ARTICLE SUMMARY


Ten Commandments of Formal Methods

Jonathan Bowen and Mike Hinchey

Keywords: formal methods; software development; software engineering; technology transfer.


The software crisis continues to worsen with no immediate end in sight to the problems of producing correct and reliable software for the size of software-based systems that are now required and expected by customers. We are suffering from a "plague of bugs" of biblical scale.

Many techniques have been suggested for the alleviation of the symptoms being experienced in the software industry. One that holds some hope is the application of formal methods. These provide a rigorous mathematical basis to software development, allowing formalization of the system being designed in the form of a mathematically precise specification much earlier on in the design cycle than is currently usually the case. This allows the discovery of bugs, particularly in the requirements where the majority of errors tend to reside in practice, much earlier than the coding stage, or even worse and far more expensively, when the software is out in the field, where they are typically discovered at present.

Much research has been aimed at the improvement of the foundations of formal methods. While this is extremely important, equally important for the technology transfer process is the provision of advice on how such methods can be applied in an industrial setting. It is, quite rightly, widely accepted that there is no "silver bullet" which will solve the software development problem. However this article offers a "golden ark" of "commandments" or maxims together with some relevant explanatory information. This advice, while in no way guaranteeing the successful use of formal methods will, we hope, help to avoid some of the common pitfalls in their application.


Reference

Jonathan P. Bowen and Michael G. Hinchey. Ten Commandments of Formal Methods, IEEE Computer, 28(4):56-63, April 1995. Previous version available as Technical Report No. 350, University of Cambridge Computer Laboratory, 18pp, September 1994.


Jonathan Bowen