Abstract
Although they are widely cited as one of those techniques that can result in high-integrity systems [31], and are being mandated more and more in certain applications (see Part 6), formal methods remain one of the most controversial areas of current software engineering practice [119].
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
J.M. Spivey, The Z Notation: A Reference Manual, Prentice-Hall, Englewood Cliffs, NJ., 1989.
O.-J. Dahl, E.W. Dijkstra, and C.A.R. Hoare, Structured Programming, Academic Press, Orlando, Fla., 1972, p. 6.
C.J. Nix and B.P. Collins, “The Use of Software Engineering, Including the Z Notation, in the Development of CICS,” Quality Assurance, September 1988, pp. 103–110.
J.V. Hill, P. Robinson, and P.A. Stokes, “Safety-Critical Software in Control Systems,” in Computers and Safety, Inst. Electrical Eng., Stevenage, Herts, England, UK, 1990, pp. 92–96.
J.C.P. Woodcock, “Calculating Properties of Z Specifications,” ACM SIGSoft Software Eng. Notes, July 1989, pp. 43–54.
C.B. Jones, Systematic Software Development Using VDM, Prentice-Hall, Englewood Cliffs, NJ., 1986.
D. Gries, The Science of Programming, Springer-Verlag, New York, 1981.
G. Barrett, “Formal Methods Applied to a Floating-Point Number System,” IEEE Trans. Software Eng., May 1989, pp. 611–621.
C.A. Middleburg, “VVSL. A Language for Structured VDM Specifications,” Formal Aspects of Computing, Jan.-March 1989, pp. 115–135.
A.N. Earl et al., “Specifying a Semantic Model for Use in an Integrated Project Support Environment,” in Software-Engineering Environments, I. Sommerville, ed., Peregrinus, London, 1986, pp. 202–219.
J.A. Hall, “Seven Myths of Formal Methods,” IEEE Software, Sept. 1990, pp. 11–19.
W.W. Gibbs, “Software’s Chronic Crisis,” Scientific American, Sept. 1994, pp. 86–95.
B.W. Boehm, Software Engineering Economics, Prentice-Hall, Englewood Cliffs, N.J., 1981.
S.L. Gerhart, D. Craigen, and T. Ralston, “Experience with Formal Methods in Critical Systems,” IEEE Software, Jan. 1994, pp. 21–28.
Applications of Formal Methods, M.G. Hinchey and J.P. Bowen, eds., 1995, Prentice-Hall, Hemel Hempstead, UK. http://www.comlab.ox.ac.uk/archive/formal-methods/afm-book.html
Method Integration: Concepts and Case Studies, K. Kronlf, ed., John Wiley & Sons, New York, 1993.
L.T. Semmens, R.B. France, and T.W.G. Docker, “Integrating Structured Analysis and Formal Specification Techniques,” The Computer J., Dec. 1992, pp. 600–610.
Mechanized Reasoning and Hardware Design, C.A.R. Hoare and M.J.C. Gordon, eds., Prentice-Hall, Englewood Cliffs, N.J., 1992.
J.P. Bowen, “Formal Methods in Safety-Critical Standards,” Proc. 1993 Software Engineering Standards Symp., IEEE CS Press, Los Alamitos, Calif., 1993, pp.168–177.
J.P. Bowen, and V. Stavridou, “Safety-Critical Systems, Formal Methods and Standards,” Software Engineering J., July 1993, pp. 189–209.
A. Dix, Formal Methods for Interactive Systems, Academic Press, San Diego, Calif., 1991.
J.V. Guttag, J.J. Horning, and J.M. Wing. Some remarks on putting formal specifications to productive use. Science of Computer Programming, North-Holland, 2(1), October 1982.
J.V. Guttag, J.J. Horning, and J.M. Wing. The Larch family of specification languages. IEEE Software, 2(5):24–36, September 1985.
J.V. Guttag, J.J. Horning, and J.M. Wing. Larch in five easy pieces. Technical Report 5, DEC Systems Research Center, July 1985.
C.A.R. Hoare. Communicating Sequential Processes. Prentice-Hall International, 1985.
C.B. Jones. Software Development: A Rigorous Approach. Prentice-Hall International, 1980.
C.B. Jones. Systematic Software Development Using VDM. Prentice-Hall International, 1986.
R. Koymans, J Vytopil, and W.P. de Roever. Real time programming and asynchronous message passing. In Proceedings of the 2nd ACM Symposium on Principles of Distributed Programming, pages 187–197, 1983.
L. Lamport. Specifying concurrent program modules. ACM Trans. Programming Languages and Systems (TOPLAS), 5(2): 190–222, April 1983.
L. Lamport. A simple approach to specifying concurrent systems. CACM, 32(1):32–45, January 1989.
B. Meyer. On formalism in specifications. IEEE Software, pages 6–26, January 1985.
A. Pnueli. Applications of temporal logic to the specification and verification of reactive systems: A survey of current trends. In W.-P. de Roever and G. Rozenberg, editors, Current Trends in Concurrency: Overviews and Tutorials, pages 510–584. Springer-Verlag, 1986. Lecture Notes in Computer Science 224.
J.M. Spivey. Introducing Z: a Specification Language and its Formal Semantics. Cambridge University Press, 1988.
Further Reading
R.M. Burstall and J. A. Goguen. The semantics of Clear, a specification language. In Proceedings of the 1979 Copenhagen Winter School on Abstract Software Specification, pages 292–332. Springer-Verlag, 1980. Lecture Notes in Computer Science 86.
H.-D. Ehrich. Extensions and implementations of abstract data type specifications. In Mathematical Foundations of Computer Science 1978 Proceedings, pages 155–164. Springer-Verlag, Poland, 1978. Lecture Notes in Computer Science 64.
H. Ehrig and B. Mahr. Fundamentals of Algebraic Specification 1. Springer-Verlag, Berlin, 1985.
K. Futatsugi, J.A. Goguen, J.-R Jouannaud, and J. Meseguer. Principles of OBJ2. In Proceedings of ACM Principles of Programming Languages (POPL), pages 52–66, 1985.
J.A. Goguen, J.W. Thatcher, E.G. Wagner, and J.B. Wright. Abstract data types as initial algebras and correctness of data representations. In Proceedings of the Conference of Computer Graphics, Pattern Recognition and Data Structures, pages 89–93. ACM, May 1975.
J.V Guttag. The Specification and Application to Programming of Abstract Data Types. PhD thesis, University of Toronto, Toronto, Canada, September 1975.
S. Kamin. Final data types and their specification. ACM Trans. Programming Languages and Systems (TOPLAS), 5(1):97–121, January 1983.
D.C. Luckham and F.W. von Henke. An overview of Anna, a specification language for Ada. IEEE Software, 2(2):9–23, March 1985.
R. Nakajima, M. Honda, and H. Nakahara. Hierarchical program specification and verification — a many-sorted logical approach. Acta Informatica, 14:135–155, 1980.
L. Robinson and O. Roubine. Special — a specification and assertion language. Technical Report CSL-46, Stanford Research Institute, Menlo Park, CA, January 1977.
M. Wand. Final algebra semantics and data type extensions. Journal of Computer and System Sciences, 19(1):27–44, August 1979.
J.M. Wing. Writing Larch interface language specifications. ACM Trans. Programming Languages and Systems (TOPLAS), pages 1–24, January 1987.
S.N. Zilles. Abstract specifications for data types. IBM Research Laboratory, San Jose, CA, 1975.
R. Balzer. Transformational implementation: An example. IEEE Trans. Software Eng., 7(1):3–14, January 1981.
F.L. Bauer et al. The Munich Project CIP, Volume 1: The Wide Spectrum Language CIP-L, Lecture Notes in Computer Science 183. Springer-Verlag, 1985.
R.M. Burstall and J. Darlington. A transformation system for developing recursive programs. Journal of the ACM, 24(1):44–67, January 1977.
R. Constable et al. Implementing Mathematics with the NuPRL Proof Development Environment. Prentice-Hall, 1986.
E.W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1976.
A. T. Goldberg. Knowledge-based programming: A survey of program design and construction techniques. IEEE Trans. Software Eng., 12(7):752–768, 1986.
C.A.R. Hoare. Notes on Data Structuring, pages 83–174. Academic Press, 1972.
C.A.R. Hoare. Proof of correctness of data representations. Acta Informatica, 1(1):271–281, 1972.
P. Lee, F. Pfenning, G. Rollins, and W. Scherlis. The Ergo Support System: An integrated set of tools for prototyping integrated environments. In Proceedings of the Third ACM SIGSOFT Symposium on Software Development Environments, Boston, MA, pages 25–34, November 1988.
Z. Manna and R. Waldinger. A deductive approach to program synthesis. ACM Trans. Programming Languages and Systems (TOPLAS), 2(1):90–121, January 1980.
P. Martin-Löf. Constructive mathematics and computer programming. In Sixth International Congress for Logic, Methodology, and Philosophy of Science, pages 153–175. North-Holland, Amsterdam, 1973.
D. Sannella and A. Tarlecki. Program specification and development in Standard ML. In Proceedings of the Symposium on Principles of Programming Languages, pages 67–77, 1985.
W.L. Scherlis and D. Scott. First steps toward inferential programming. In Proceedings of IFIPS’83, Paris, pages 199–212, 1983.
K.R. Apt, N. Francez, and W.P. de Roever. A proof system for Communicating Sequential Processes. ACM Trans. Programming Languages and Systems (TOPLAS), 2(3):359–385, July 1980.
M. Broy. A fixed point to applicative multiprogramming. In M. Broy and G. Schmidt, editors, Theoretical Foundations of Programming Methodology, pages 565–623. Reidel Publishing Company, 1982.
K.M. Chandy and J. Misra. Parallel Program Design. Addison-Wesley, 1988.
M. Feather. Language support for the specification and development of composite systems. ACM Trans. on Prog. Lang., 9(2): 198–234, April 1987.
D. Harel. On visual formalisms. CACM, 31(5):514–530, 1988.
Information systems processing — open systems interconnection — LOTOS. Technical Report, International Standards Organization, 1987.
N. Lynch and M. Tuttle. Hierarchical correctness proofs for distributed algorithms. Technical Report, MIT Laboratory for Computer Science, Cambridge, MA, April 1987.
Z. Manna and A. Pnueli. Verification of concurrent programs, part 1: The temporal framework. Technical Report STAN-CS-81–836, Dept. of Computer Science, Stanford University, CA, June 1981.
A.J.R.G. Milner. A Calculus of Communicating Systems, Lecture Notes in Computer Science 92. Springer-Verlag, 1980.
M. Nielsen, K. Havelund, K.R. Wagner, and C. George. The RAISE language, method, and tools. Formal Aspects of Computing, 1:85–114, 1989.
S. Owicki and D. Gries. Verifying properties of parallel programs: An axiomatic approach. CACM, 19(5):279–285, May 1976.
S. Owicki and L. Lamport. Proving liveness properties of concurrent programs. ACM Trans. Programming Languages and Systems (TOPLAS), 4(3):455–495, July 1982.
J.L. Peterson. Petri nets. Computing Surveys, 9(3), September 1977.
V Pratt. Modeling concurrency with partial orders. International Journal of Parallel Programming, 15(1):33–71, February 1986.
P. Zave. An operational approach to requirements specification for embedded systems. IEEE Trans. Software Eng., 8(3):250–269, May 1972.
J.-R. Abrial. Busermanual. Technical Report, Programming Research Group, Oxford University, 1988.
R. S. Boyer and J S. Moore. A Computational Logic. Academic Press, New York, 1979. ACM monograph series.
E.M. Clarke, E.A. Emerson, and A.P. Sistla. Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans. Programming Languages and Systems (TOPLAS), 8(2):244–263, 1986.
- D. Craigen, S. Kromodimoeljo, I. Meisels, A. Neilson, B. Pase, and M. Saaltink. m-EVES: A tool for verifying software. In Proceedings of the 10th IEEE International Conference on Software Engineering, Singapore, April 1988. IEEE CS Press, Los Alamitos, CA, pages 324–333.
S.J. Garland and J.V. Guttag. An overview of LP, the Larch Prover. In Proceedings of the 3rd International Conference on Rewriting Techniques and Applications, Chapel-Hill, NC, pages 137–151, 1989.
J.A. Goguen. OBJ as a theorem prover with applications to hardware verification. Technical Report SRI-CSL-88–4R2, Stanford Research Institute, Menlo Park, CA, August 1988.
D.I. Good, R.L. London, and W.W. Bledsoe. An interactive program verification system. IEEE Trans. Software Eng., 1(1):59–67, 1979.
M. Gordon. HOL: A proof-generating system for higher-order logic. In VLSI Specification, Verification and Synthesis. Kluwer, 1987.
M. J. Gordon, A. J. Milner, and C. P. Wadsworth. Edinburgh LCF, Lecture Notes in Computer Science 78. Springer-Verlag, 1979.
D. Harel, H. Lachover, A. Naamad, A. Pnueli, M. Politi, R. Sherman, and A. Shtul-Trauring. Statemate: A working environment for the development of complex reactive systems. In Proceedings of the 10th IEEE International Conference on Software Engineering, Singapore, April 1988. IEEE CS Press, Los Alamitos, CA.
D. Kapur and D. Musser. Proof by consistency. Artificial Intelligence, 31:125–157, 1987.
R.A. Kemmerer and S.T Eckmann. A user’s manual for the unisex system. Technical Report, Dept. of Computer Science, Univ. Calif., Santa Barbara, CA, December 1983.
P. Lescanne. Computer experiments with the REVE term rewriting system generator. In Proceedings of the 10th Symposium on Principles of Programming Languages, pages 99–108, Austin, Texas, January 1983.
K.N. Levitt, L. Robinson, and B.A. Silverberg. The HDM handbook. Technical Report Volumes 1–3, SRI International, Menlo Park, CA, 1979.
R. Locasso, J. Scheid, D.V Schorre, and P.R. Eggert. The Ina Jo reference manual. Technical Report TM-(L)-6021/001/000, System Development Corporation, Santa Monica, CA, 1980.
PR. McMullin and J.D. Gannon. Combining testing with formal specifications: A case study. IEEE Trans. on Software Eng., 9(3), May 1983.
D.S. Rosenblum and D.C. Luckham. Testing the correctness of tasking supervisors with TSL specifications. In Proceedings of the ACM SIGSOFT’89 3rd Symposium on Software Testing, Analysis, and Verification (TAV-3), pages 187–196, Key West, FL, 1989.
W.R. Bevier. A verified operating system kernel. Technical Report 11, Computational Logic, Inc., March 1987.
M.C. Browne, E.M. Clarke, and D. Dill. Checking the correctness of sequential circuits. In Proceedings of the IEEE International Conference on Computer Design, pages 545–548, 1985.
M. Burrows, M. Abadi, and R. Needham. A logic of authentication. In Proceedings of the Symposium on Operating Systems, 1989.
E.M. Clarke and O. Grumberg. Research on automatic verification of finite-state concurrent systems. Ann. Rev. Comput. Sci., 2:269–290, 1987.
B.R Collins, J.E. Nicholls, and LH. Sorensen. Introducing formal methods: the CICS experience with Z. Technical Report TR 12.260, IBM, United Kingdom Laboratories, Hursley, 1987.
W.J. Cullyer. Implementing safety-critical systems: The Viper microprocessor. In VLSI Specification, Verification and Synthesis. Kluwer, 1987.
N. Delisle and D. Garlan. Formally specifying electronic instruments. In Proceedings of the Fifth International Workshop on Software Specification and Design, pages 242–248, Pittsburgh, 1989.
S.J. Garland, J.V. Guttag, and J. Staunstrup. Verification of VLSI circuits using LP. In Proceedings of the IFIP WG 10.2, The Fusion of Hardware Design and Verification. North-Holland, 1988.
A. Heydon, M. Maimone, J.D. Tygar, J.M. Wing, and A. Moormann Zaremski. Constraining pictures with pictures. In Proceedings of IFIPS′89, San Francisco, August 1989.
W.A. Hunt. The mechanical verification of a microprocessor design. Technical Report 6, Computational Logic, Inc., 1987.
A.P Moore. Investigating formal specification and verification techniques for COMSEC software security. In Proceedings of the 1988 National Computer Security Conference, October 1988.
P. Narendran and J. Stillman. Formal verification of the sobel image processing chip. In G. Birtwistle and P.A. Subrahmanyam, editors, Current Trends in Hardware Verification and Automated Theorem Proving, pages 92–127. Springer-Verlag, 1989.
J.C.P. Woodcock. Transaction processing primitives and CSP. IBM Journal of Research and Development, 31(5):535–45, 1987.
M. Alford. SREM at the age of eight: The distributed computing design system. Computer, 18(4):36–46, April 1985.
F. DeRemer and H.H. Kron. Programming-in-the-large versus programming-in-the-small. IEEE Trans. on Software Eng., June 1976.
S. Fickas. Automating the analysis process: An example. In Proceedings of the Fourth International Workshop on Software Specification and Design, pages 79–86, April 1987.
M.A. Jackson. Principles of Program Design. Academic Press, London, 1975.
H. Katzan. Systems Design and Documentation: An Introduction to the HIPO Method. Van Nostrand Reinhold, New York, 1976.
N.G. Leveson. Software safety: What, why, and how. ACM Computing Surveys, 18(2): 125–163, June 1986.
D.L. Parnas. A technique for software module specification with examples. CACM, 15(5):330–336, May 1972.
C. Rich, R.C. Waters, and H.B. Reubenstein. Toward a requirements apprentice. In Proceedings of the Fourth International Workshop on Software Specification and Design, pages 79–86, April 1987.
W. Swartout. The Gist behavior explainer. In Proceedings of the American Association Artificial Intelligence Conference, pages 402–407, August 1983.
E. Yourdon and L.L. Constantine. Structured Design: Fundamentals of a Discipline of Computer Programs and Systems Design. Yourdon Press, New York, 1978.
Bibliography 1. Requirements
Specification Case Studies, Ian Hayes, ed., Prentice-Hall International, U.K., 1987.
Bibliography 2. Logic programming
R. Kowalski, Logic for Problem Solving, North Holland, Amsterdam, 1979.
K. L. Clark and F. G. McCabe, micro Prolog: Programming in Logic, Prentice-Hall International, U.K., 1984.
Bibliography 3. Algebra
J. J. Martin, Data Types and Data Structures, Prentice-Hall International, U.K., 1986.
Bibliography 4. Functional programming
P. Henderson, Functional Programming: Application and Implementation, Prentice-Hall International, U.K., 1980.
H. Abelson and G. J. Sussman, Structure and Interpretation of Computer Programs, MIT Press, Cambridge, Mass., 1985.
Bibliography 5. Procedural programming
D. Gries, The Science of Programming, Springer-Verlag, New York, 1981.
R. C. Backhouse, Program Construction and Verification, Prentice-Hall International, U.K., 1987.
Bibliography 6. Data refinement
C. B. Jones, Systematic Software Development Using WDM, Prentice-Hall International, U.K., 1986.
Bibliography 7. Parallel programming
C. A. R. Hoare, Communicating Sequential Processes, Prentice-Hall International, U.K., 1985.
K. M. Chandy and J. Misra, Parallel Program Design: a Foundation, Addison-Wesley, Reading, Mass., 1988.
Bibliography 8. Computational complexity
A. V. Aho, J. E. Hopcroft, and J. D. Ullman, The Design and Analysis of Computer Algorithms, Addison-Wesley, Reading, Mass., 1974.
Bibliography 9. General
Programming Methodology, D. Gries, ed., Springer-Verlag, New York, 1978.
References
IP. Bowen, “Formal Methods in Safety-Critical Standards,” Proc. SESS 93, Software Eng. Standards Symp., IEEE CS Press, Los Alamitos, Calif., Order No. 4240, 1993, pp. 168–177.
J.P. Bowen, and V. Stavridou, “Safety-Critical Systems, Formal Methods, and Standards,” IEE/BCS Software Eng. J., Vol. 8, No. 4, July 1993, pp. 189–209.
J.P. Bowen, and M.G. Hinchey, “Formal Methods and Safety-Critical Standards,” Computer, Vol. 27, No. 8, Aug. 1994, pp. 68–71.
J.P. Bowen, and V Stavridou, “The Industrial Take-up of Formal Methods in Safety-Critical and Other Areas: A Perspective,” Proc. FME 93, First Formal Methods Europe Symp., in Lecture Notes in Computer Science, J.C.P. Woodcock and P.G. Larsen, eds., Vol. 670, Springer-Verlag, Berlin and London, pp. 183–195.
J.A. Hall, “Seven Myths of Formal Methods,” IEEE Software, Vol. 7, No. 5, Sept. 1990, pp. 11–19.
J.P. Bowen, and M.G. Hinchey, “Seven More Myths of Formal Methods,” IEEE Software, Tech. Report 357, University of Cambridge Computer Laboratory, Cambridge, UK, Dec. 1994; also published in IEEE Software, Vol. 12, No. 4, July 1995, pp. 34–41
J.P. Bowen, and M.G. Hinchey. “Seven More Myths of Formal Methods: Dispelling Industrial Prejudice,” in Proc. FME 94, Second Formal Methods Europe Symp., T. Denvir, M. Naftalin, and M. Bertran, eds., Lecture Notes in Computer Science, Springer-Verlag, Berlin and London, Vol. 873, 1994, pp. 105–117.
D. Craigen, S. Gerhart, and T. Ralston, An International Survey of Industrial Applications of Formal Methods, Atomic Energy Control Board of Canada, US National Institute of Standards and Technology, and US Naval Research Laboratories, NIST GCR 93/626, National Technical Information Service, 5285 Port Royal Road, Springfield, VA 22161, USA, 1993.
D. Craigen, S. Gerhart, and T. Ralston, “Formal Methods Technology Transfer: Impediments and Innovation,” Applications of Formal Methods, in Prentice Hall Int’l Series in Computer Science, M.G. Hinchey and J.P. Bowen, eds., Prentice Hall, Hemel Hempstead, UK, 1995.
J.P. Bowen, and M.G. Hinchey, “Ten Commandments of Formal Methods,” Tech. Report No. 350, Sept. 1994, Computer Laboratory, Univ. of Cambridge, Cambridge, UK.
M.G. Hinchey, and J.P. Bowen, eds., Applications of Formal Methods, Prentice Hall Int’l Series in Computer Science, Prentice Hall, Hemel Hempstead, UK, 1995.
T.C. Jones, “Reusability in Programming: A Survey of the State of the Art,” IEEE Trans. Software Eng., Vol. 10, No. 5, Sept. 1984, pp. 488–494.
Rights and permissions
Copyright information
© 1999 Springer-Verlag London Limited
About this chapter
Cite this chapter
Hall, A., Bowen, J.P., Hinchey, M.G., Wing, J.M., Hoare, C.A.R. (1999). Formal Methods. In: High-Integrity System Specification and Design. Formal Approaches to Computing and Information Technology (FACIT). Springer, London. https://doi.org/10.1007/978-1-4471-3431-2_3
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3431-2_3
Publisher Name: Springer, London
Print ISBN: 978-3-540-76226-3
Online ISBN: 978-1-4471-3431-2
eBook Packages: Springer Book Archive