Understanding and exploring formal specifications (original) (raw)

Software Engineering Education: Rôles of Formal Specification and Design Calculi

Annals of Software Engineering, 1998

This paper analyses current principles of software development: from domains via requirements to design. On the basis of this analysis we outline a structure and contents of professional software engineering. From this we extract some requirements to a university graduate (M.Sc.) curriculum in software engineering. We summarise the four software engineering axes that we wish to emphasize in this paper: • software engineering as a responsible profession, • abstraction, linguistics and logic, • methodology, formal specification and design calculi, • domain, requirements and software design engineering. We view (i) engineering as 'walking the bridge between science and technology'-with engineers using mathematics as and when appropriate, (ii) methods as 'sets of principles for analysing problems and for selecting and applying techniques and tools in order to efficiently construct an efficient artifact (here software),' and (iii) software engineering as consisting of 'domain engineering, requirements engineering and software design (engineering)'-with software development comprising all these stages and teams of engineers specially educated in sub-branches of software engineering. Since software engineering produces and consumes descriptions and since professional engineers create varieties of abstractions we conclude that they make use of varieties of formal specification languages and design calculi-to represent abstract and concrete descriptions and to calculate over and between these. The paper may be incomplete in not covering aspects of AI and knowledge based engineering. It also does not deal with the dimensioning and performance evaluation of hardware and software systems. The paper, in its attempt at a comprehensive analysis and proposal, is long. Our analysis subsumes that of ACM and IEEE [ACM/IEEE-CS June 1991] to which we add!

The Role of Formal Methods in Software Engineering Education and Industry

Today, nearly every Software Engineering or Computer Science Degree Course given in either a British University, o r i n a n y University around the world, includes the teaching of Formal Methods. In contrast, there are comparatively few industrial or commercial projects in which F ormal Methods are used. This paper outlines some of the bene ts of including formal methods as part of the degree curriculum, even if they are not used in subsequent careers. It then describes some of the ways in which more formal ideas of software development can be introduced early on in a degree course, and then built on in the subsequent years. Finally, it speculates on how the situation in industry may c hange in the years to come, and how formal methods themselves may need to evolve before there is more widespread acceptance of them as a viable development technique, both from the point of view of software quality and also the nancial implications.

Teaching formal methods in the context of software engineering

ACM SIGCSE Bulletin, 2009

Formal methods were developed to provide systematic and rigorous techniques for software development, and they must be taught in the context of software engineering. In this paper, we discuss the importance of such a teaching paradigm and describe several specific techniques for teaching formal methods. These techniques have been tested over the last fifteen years in our formal methods education programs for undergraduate and graduate students at universities as well as practitioners at companies. We also present a curriculum to systematically introduce formal methods to students at university and a successful program of teaching formal methods to industry. Our experience shows that students can gain confidence in formal methods only when they learn their clear benefits in the context of software engineering.

Teaching Formal Methods to Future Engineers

Formal Methods Teaching, 2019

Formal methods provide systematic and rigorous techniques for software development. We are convinced that they must be taught in Software Engineering curricula. In this paper, we present a set of formal methods courses included in a Software Engineering & Security track of ENSIIE, École Nationale Supérieure d'Informatique pour l'Industrie et l'Entreprise, a French engineering school delivering the « Ingénieur de l'ENSIIE » degree (master level). These techniques have been taught over the last fifteen years in our education programs in different formats. One of the difficulty we encounter is that students consider these kinds of techniques difficult and requiring much work and thus are inclined to choose other courses when they can. Furthermore, students are strongly focused on the direct applicability of the knowledge they are taught, and they are not all going to pursue a professional career in the development of critical systems. Our experience shows that students can gain confidence in formal methods when they understand that, through a rigorous mathematical approach to system specification, they acquire knowledge, skills and abilities that will be useful in their professional future as Computer Scientists/Engineers.

Software Engineering Formal and Practical on Formality on Practicality the Approachused in the Book Reader Background Using the Book in Courses Online Supplemental Material Faculty Colleagues Who Have Taught Me Much about Software Engineering Include

2009

Preface This book is a comprehensive study of software engineering, with emphasis on the practical application of formal methods. While formal methods are an important part of software engineering, theya re by no means the whole picture. Indeed, manya spects of software development involvep rinciples of aesthetics and human communication that cannot be readily formalized. Since this text provides a comprehensive treatment of the field, both formal and non-formal aspects are fully covered. Throughout the coverage, the book integrates formal methods into the major phases of software development, to provide a foundation for the development process. From the author'sp erspective,t he use of formal methods has been significantly neglected in most software engineering texts as well as in industrial practice. In general, far too manysoftware engineers view formal methods as impractical and largely irrelevant to their regular activities. This is a rather unusual viewwhen one compares so...

Making formal methods education effective for professional software engineers

Information and Software Technology, 1995

A critical issue in the design of a professional software engineering degree program is the way in which formal methods are integrated into the curriculum. The approach taken by most programs is to teach formal techniques for software development in a separate course on formal methods. In this paper we detail some of the problems with that approach and describe an alternative in which formal methods are integrated across the curriculum. We illustrate the strengths and weaknesses of this alternative in terms of our experience of using it in the Master of Software Engineering

Support for Teaching Formal Methods Report of the ITiCSE 2000 Working Group on Formal Methods Education

This report describes a growth path for the area referred to as formal methods within the computing education community. We define the term formal methods and situate it within our field by highlighting its role in Computing Curricula 1991, Computing Curricula 2001, and the SoftWare Engineering Body Of Knowledge (SWEBOK). The working group proposes an enhancement to an existing web resource, which is a rich collection of materials and links related to formal methods. The new resource is designed to provide a bridge between the general computing education community and the formal methods community. The goal is to allow the latter to provide useful support for the former for the ultimate benefit of all of our students. Eventually, the working group aspires to see the concepts of formal methods integrated seamlessly into the computing curriculum so that it is not necessary to separate them in our discussions.

Formality in Software Requirements

arXiv (Cornell University), 2019

A major determinant of the quality of software systems is the quality of their requirements, which should be both understandable and precise. Most requirements are written in natural language, good for understandability but lacking in precision. To make requirements precise, researchers have for years advocated the use of mathematics-based notations and methods, known as "formal". Many exist, differing in their style, scope and applicability. The present survey discusses some of the main formal approaches and compares them to informal methods. The analysis uses a set of 9 complementary criteria, such as level of abstraction, tool availability, traceability support. It classifies the approaches into five categories: general-purpose, natural-language, graph/automata, other mathematical notations, seamless (programming-language-based). It presents approaches in all of these categories, altogether 22 different ones, including for example SysML, Relax, Eiffel, Event-B, Alloy. The review discusses a number of open questions, including seamlessness, the role of tools and education, and how to make industrial applications benefit more from the contributions of formal approaches. This is the full version of the survey, including some sections and two appendices which, because of length restrictions, do not appear in the submitted version.