Abstract
Formal methods is seen as a means of applying scientific knowledge to software construction, thereby legitimating the use of mathematics within software engineering. However, the software engineering community faces numerous challenges before an effective transfer of this formal methods technology can take place because of the level of skill, expertise and effort required in their application. It is argued that at present the use of formal notations for system specification is a mature technology offering the greatest leverage. The relative benefits of a declarative approach with a “getting it right the first time” maxim versus an imperative approach coupled with an exploratory trial and error flavour are explored. Detailed characteristics of a teaching and learning environment developed to support the latter approach are provided. Its varied uses in the context of teaching and learning within undergraduate and postgraduate courses in software engineering are discussed. Exemplars from these uses show how users of the environment explore formal specifications to improve their understanding of specification and thereby illustrate the effectiveness of the environment. Implications of our approach on technology transfer and training are briefly explored.
Similar content being viewed by others
References
Abelson, H. and G. Sussman (1985), The Structure and Interpretation of Computer Programs, McGraw-Hill.
Balzer, R.M. (1985), “A 15 Year Perspective on Automatic Programming,” IEEE Transactions on Software Engineering 11, 11, 1257–1268.
Dahl, O.J., E.W. Dijkstra, and C.A.R. Hoare (1972), Structured Programming, Academic Press, New York.
Dijkstra, E.W. (1976), A Discipline of Programming, Prentice-Hall, Englewood Cliffs, NJ.
Faulk, S. et al. (1992), “The Core Method for Real-Time Requirements,” IEEE Software 9, 5.
Ford, G. and H. Gibbs (1996), “Attributes and Goals for a Mature Software Engineering Profession,” In Proceedings of Professional Awareness in Software Engineering, London.
GAO, U.S. General Accounting Office (1992), “Mission Critical Systems: Defense Attempting to Address Major Software Challenges,” GAO/IMTEC-93-13.
Gladden, G.R. (1982), “Stop the Life-Cycle, I Want to Get off,” ACM SIGSOFT Software Engineering Notes 7, 2.
Gries, D. (1981), The Science of Programming, Springer-Verlag, New York, NY.
Hoare, C.A.R. (1987), “Laws of Programming,” Communications of the ACM 30, 8.
Lutz, R. (1993), “Analysing Software Requirements in Errors in Safety Critical Embedded Systems,” Proc. IEEE Internat. Symp. Requirements Engrg., IEEE CS Press, pp. 126–133.
McCracken, D.D. and M.A. Jackson (1981), “A Minority Dissenting Position,” In Systems Analysis and Design – A Foundation for the 1980's, W.W. Cotterman et al., Eds., pp. 551–553.
Mills, H.D., M. Dyer, and R.C. Linger (1987), “Cleanroom Software Engineering,” IEEE Software 4, 5, 19–25.
Morgan, C. (1987), “Telephone Network,” In Specification Case Studies, I. Hayes, Ed., 1st Edition, Prentice-Hall, Englewood Cliffs, NJ.
Morgan, C. (1993), “Telephone Network,” In Specification Case Studies, I. Hayes, Ed., 2nd Edition, Prentice-Hall, Englewood Cliffs, NJ.
Morrey, I., J. Siddiqi, R. Hibberd, and G. Buckberry (1998), “A Toolset to Support the Construction and Animation of Formal Specifications,” Journal of Systems Software 41, 147–160.
Nix, C.J. and B.P. Collins (1988), “The Use of Software Engineering Including the Z Notation, in the Development of CICs,” Quality Assurance 14, 3, 103–110.
Parnas, D. (1995), “Using Mathematical Descriptions in the Inspection of Safety-Critical Software,” In Applications of Formal Methods, M.G. Hinchey and J.P. Bowen, Eds., Prentice-Hall, Englewood Cliffs, NJ.
Place, P.R.H., W. Wood, and M. Tudball (1990), “Survey of Formal Specification Techniques for Reactive Systems,” Software Engineering Institute, CMU/SEI-90-TR-5.
Ratcliff, B. and J.I.A. Siddiqi (1985), “An Empirical Investigation into Problem Decomposition Strategies Used in Program Design,” International Journal of Man-Machine Studies 22, 77–90.
Saiedman, H. and M. Hinchey (1996), “Challenges in the Successful Transfer of Formal Methods Technology into Industrial Application,” Information and Software Technology 38, 5, 313–321.
Sherrell, L.B. and D.L. Carver (1994), “Experiences in Translating Z Designs to Haskell Implementations,” Software – Practice and Experience 24, 12, 1159–1178.
Siddiqi, J., I. Morrey, C. Roast, and M. Ozcan (1997), “Towards Quality Requirements via Animated Formal Specifications,” Annals of Software Engineering 3, 131–155.
Siddiqi, J.I.A. and B. Ratcliff (1989), “Specifications Influences in Program Design,” International Journal of Man–Machine Studies 31, 393–404.
Siddiqi, J.I.A., B. Khazaei, R. Osborn, and C. Roast (1996), “The Pitfalls of Changing Programming Paradigms,” In Empirical Studies of Programmers, Ablex Publishers, Washington.
Spivey, J.M. (1989), The Z Notation, Prentice-Hall, Englewood Cliffs, NJ.
Vienneau, R. (1997), “A Review of Formal Methods,” In Software Requirements Engineering, M. Thayer and R.H. Dorfman, Eds., 2nd Edition, pp. 324–335.
Wordsworth, J.B. (1989), “A Z Development Method,” In Proc. of the Workshop on Refinement, The Open University, Milton Keynes.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Siddiqi, J., Morrey, I., Hibberd, R. et al. Understanding and exploring formal specifications. Annals of Software Engineering 6, 411–432 (1998). https://doi.org/10.1023/A:1018977919653
Issue Date:
DOI: https://doi.org/10.1023/A:1018977919653