Abstract

In this invited paper we review 25 years of propagating formal specification in software engineering. We will do so through outlining a paradigmatic approach to the practice of software engineering. For the sake of contrasting argument we shall claim that this approach stands in sharp contrast to classical engineering – and that there is little help to be obtained from classical engineering in securing the quality of the most important facets of software engineering! We shall be outlining a software engineering* practice in which formal techniques are applied in capturing the application domain void of any reference to requirements let alone software; and in then capturing requirements: Domain requirements (projected, instantiated, possibly extended and usually initialised from domain descriptions), interface requirements and machine requirements. The software engineering practice then goes on to design the software: First the architecture, then the program structure, etc. Throughout abstraction and modelling, handdindhand, are used in applicative (functional), imperative and process oriented descriptions, from loose specifications towards concrete, instantiated descriptions, using hierarchical as well as configurational modelling, denotational as well as computational modelling, and in structuring even small scale descriptions using appropriate modularisation concepts: Schemes, classes and objects. All the concepts spelled in this font are software engineering “program” description notions that have been honed over the years, starting in 1973 with VDM lBekic et al. 1974; Bjorner and Jones 1978, 1982br and continuing with RAISE lGroup 1992, 1995r. The current status of our approach to software engineering, based on extensive, but not exclusive use of formal techniques, developed significantly during my years as UN Director of the UN University's International Institute for Software Technology (UNU/IIST) in Macau, 1992–1997. Many large scale software developments based on the domain/requirements/software design paradigm outlined here were systematically applied to the experimental development of software designs for the computing support of a number of diverse infrastructure components**. Special boxes, scattered throughout the text, highlight ‘pinnacle’ contribution by named computer and computing scientists as well as by specific R&D projects. *The text highdlighted in ‘this font’ identifies important software development principles and techniques – the main contribution and subject of this quarter century overview. **Railways lBjorner et al. 1997; George 1995r, financial service institutions lBjorner 1997; Bjorner et al. 1998r, manufacturing lBjorner 1996; Janowski 1996; Janowski and Acebedo 1996; Janowski and Atienza 1997r, ministry of finance lDung et al. 1996; George et al. 1995r, airlines lAnh and More 1996r, air traffic lBjorner 1995r, etc.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.