A formally grounded software specification method

One of the goals of software engineering is to provide what is necessary to write relevant, legible, useful descriptions of the systems to be developed, which will be the basis of successful developments. This goal was addressed both from informal approaches (providing in particular visual notations) and formal ones (providing a formal sound semantic basis). Informal approaches are often driven by a software development method, and, while formal approaches sometimes provide a user method, it is usually aimed at helping to use the proposed formalism when writing a specification. Our goal here is to provide a companion method that helps the user to understand the system to be developed, and to write the corresponding formal specifications. We also aim at supporting visual presentations of formal specifications, so as to “make the best of both formal and informal worlds”. We developed this method for the (logical-algebraic) specification languages Casl (Common Algebraic Specification Language, developed within the joint initiative CoFI) and for an extension for dynamic systems Casl-Ltl, and we believe it is general enough to be adapted to other paradigms. Another challenge is that a method that is too general does not encompass the different kinds of systems to be studied, while too many different specialized methods result in partial views that may be difficult to integrate in a single global one. We deal with this issue by providing a limited number of instances of our method, fitted for three different kinds of software items, while keeping a common “meta”structure and way of thinking. More precisely, we consider here that a software item may be a simple dynamic system, a structured dynamic system, or a data structure, and we show here how to support property-oriented (axiomatic) specifications. We are thus providing support for the “building-bricks” tasks of specifying software artifacts that in our experience are needed for the development process. Our approach is illustrated with a lift case study.

[1]  Michael A. Jackson,et al.  Problem Frames - Analysing and Structuring Software Development Problems , 2000 .

[2]  Gianna Reggio,et al.  Knowledge structuring and representation in requirement specification , 2002, SEKE '02.

[3]  Hartmut Ehrig,et al.  Integration and Classification of Data Type and Process Specification Techniques , 1998 .

[4]  Christine Choppy,et al.  Using CASL to Specify the Requirements and the Design: A Problem Specific Approach , 1999, WADT.

[5]  Gianna Reggio,et al.  Towards a Rigorous Semantics of UML Supporting Its Multiview Approach , 2001, FASE.

[6]  Vieri Del Bianco,et al.  Towards UML-based formal specifications of component-based real-time software , 2003, International Journal on Software Tools for Technology Transfer.

[7]  Johan Lilius,et al.  Formalising UML State Machines for Model Checking , 1999, UML.

[8]  Heinrich Hußmann,et al.  Analysing UML Active Classes and Associated State Machines - A Lightweight Formal Approach , 2000, FASE.

[9]  Peter D. Mosses,et al.  CASL: the Common Algebraic Specification Language , 2002, Theor. Comput. Sci..

[10]  Gianna Reggio,et al.  Specification of Abstract Dynamic-Data Types: A Temporal Logic Approach , 1997, Theor. Comput. Sci..

[11]  J. Davenport Editor , 1960 .

[12]  Jeanine Souquières,et al.  De l'élicitation des besoins à la spécification formelle , 1999 .

[13]  Manfred Broy,et al.  The algebra of stream processing functions , 2001, Theor. Comput. Sci..

[14]  Peter D. Mosses,et al.  CASL User Manual: Introduction to Using the Common Algebraic Specification Language , 2004 .

[15]  Michel Bidoit,et al.  On the Integration of Observability and Reachability Concepts , 2002, FoSSaCS.

[16]  Bernhard K. Aichernig,et al.  Formal Methods at the Crossroads. From Panacea to Foundational Support , 2003, Lecture Notes in Computer Science.

[17]  Gianna Reggio,et al.  Formalism and method , 1997, Theor. Comput. Sci..

[18]  Markus Roggenbach,et al.  Basic Datatypes in CASL , 2000 .

[19]  Peter D. Mosses,et al.  CASL User Manual , 2004, Lecture Notes in Computer Science.

[20]  Gianna Reggio,et al.  Labelled transition logic: an outline , 2001, Acta Informatica.

[21]  Gianna Reggio,et al.  JTN: A Java-Targeted Graphic Formal Notation for Reactive and Concurrent Systems , 1999, FASE.

[22]  Peter D. Mosses,et al.  CoFI: The Common Framework Initiative for Algebraic Specification and Development , 2001, Current Trends in Theoretical Computer Science.

[23]  M. Heisel Agendas—a concept to guide software development activities , 1998 .

[24]  Gianna Reggio,et al.  From Formal Techniques to Well-Founded Software Development Methods , 2002, 10th Anniversary Colloquium of UNU/IIST.

[25]  Helen M. Edwards,et al.  Problem frames: analyzing and structuring software development problems , 2002, Softw. Test. Verification Reliab..