1
The role of formalism in system requirements
JEAN-MICHEL BRUEL, University of Toulouse, IRIT
SOPHIE EBERSOLD, University of Toulouse, IRIT
FLORIAN GALINIER, University of Toulouse, IRIT
MANUEL MAZZARA, Innopolis University
ALEXANDR NAUMCHEV, Innopolis University
BERTRAND MEYER, Schafhausen Institute of Technology and Innopolis University
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, difering 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 classifes the approaches into fve categories based on their principal style for specifying require-
ments: natural-language, semi-formal, automata/graph, mathematical, seamless (programming-language-
based). It includes examples from all of these categories, altogether 21 diferent approaches, including for
example SysML, Relax, Eifel, 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 beneft more from the contributions of formal approaches.
ACM Reference Format:
Jean-Michel Bruel, Sophie Ebersold, Florian Galinier, Manuel Mazzara, Alexandr Naumchev, and Bertrand
Meyer. 2021. The role of formalism in system requirements. ACM Comput. Surv. 1, 1, Article 1 (January 2021),
35 pages. https://doi.org/10.1145/3448975
1 INTRODUCTION
In a world where software pervades every aspect of our lives, a core issue for the IT industry is
how to guarantee the quality of the systems it produces. Software quality is a complex and widely
studied topic, but it is not hard to provide a simple defnition: quality means that the software does
the right things, and does them right. These łthingsž that a software system does are known as its
requirements. Not surprisingly, requirements engineering is a core area of software engineering.
Both goals, doing the right things and doing things right, are dependent on the quality of the
requirements: the requirements must defne the system so that it will satisfy user needs; and
they must make it possible to assess a candidate implementation against this defnition, a task
Authors’ addresses: Jean-Michel Bruel, bruel@irit.fr, University of Toulouse, IRIT; Sophie Ebersold, sophie.ebersold@irit.fr,
University of Toulouse, IRIT; Florian Galinier, forian.galinier@irit.fr, University of Toulouse, IRIT; Manuel Mazzara,
m.mazzara@innopolis.ru, Innopolis University; Alexandr Naumchev, a.naumchev@innopolis.ru, Innopolis University;
Bertrand Meyer, Bertrand.Meyer@inf.ethz.ch, Schafhausen Institute of Technology and Innopolis University.
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee
provided that copies are not made or distributed for proft or commercial advantage and that copies bear this notice and
the full citation on the frst page. Copyrights for components of this work owned by others than ACM must be honored.
Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires
prior specifc permission and/or a fee. Request permissions from permissions@acm.org.
© 2021 Association for Computing Machinery.
0360-0300/2021/1-ART1 $15.00
Preprint of article published in ACM Computing Surveys, vol. 54, no. 5,
June 2021, pages 1-36, DOI https://doi.org/10.1145/3448975