SEQUENCE-BASED SPECIFICATION OF CRITICAL SOFTWARE SYSTEMS

ABSTRACT The plant safety and regulatory requirements for software-based systems mandate rigorous verification and validation to ensure adequate reliability. As software systems become increasingly complex, testing as the sole means to assure confidence in the end product becomes impractical. Modern software engineering provides many tools which have been used successfully to reason about software, including formal systems such as Z and CSP. Many such formal notations have tools to support their use. The use of these notations and tools requires specialized training in software engineering methods. Sequence-based software specification techniques provide a connection between the initial requirements obtained from the domain experts and the formal software derivations, which can be in any appropriate notation. 1. INTRODUCTION Application of software-based systems to plant control and protection functions offers the potential for improved measurement accuracy and operational flexibility. Additionally, for many applications today it is difficult to find instruments or controllers that do not contain microprocessors. The plant safety and regulatory requirements for such systems mandate rigorous verification and validation to ensure adequate reliability, especially since software can be a source of common mode failure. As software systems become increasingly complex, testing as the sole means to assure a desired level of confidence in the end product becomes impractical. Thorough documentation and intensive review of the transition from requirements to code are labor intensive and still do not guarantee proper operation. It is therefore necessary to focus strongly on correctness in the specification and design phase and to rely on the foundational mathematics of software to prove important properties. Modern software engineering provides many tools which have been used successfully to reason about software, including formal systems such as Z (Spivey 1992), SCR (Heitmeyer 1983, 1995), and Trace Assertion Method (Bartussek 1978, Janicki 2001), and process algebras such as CCS (Milner 1989) and CSP (Hoare 1985, Roscoe 1997). Many of these notations have supporting tools. These include tools for checking properties of the specification; theorem provers to assist in proving safety, security; and other important system properties, and code generation tools to generate correct source code directly from the formal specifications.

[1]  Ryszard Janicki,et al.  Foundations of the Trace Assertion Method of Module Interface Specification , 2001, IEEE Trans. Software Eng..

[2]  Stacy J. Prowell,et al.  Foundations of Sequence-Based Software Specification , 2003, IEEE Trans. Software Eng..

[3]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[4]  Constance L. Heitmeyer,et al.  SCR: a toolset for specifying and analyzing requirements , 1995, COMPASS '95 Proceedings of the Tenth Annual Conference on Computer Assurance Systems Integrity, Software Safety and Process Security'.

[5]  Philippa J. Hopcroft,et al.  Academia and industry meet: some experiences of formal methods in practice , 2003, Tenth Asia-Pacific Software Engineering Conference, 2003..

[6]  David Lorge Parnas,et al.  Using traces to write abstract specifications for software modules , 1977 .

[7]  Andrew William Roscoe,et al.  The Theory and Practice of Concurrency , 1997 .

[8]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[9]  Constance L. Heitmeyer,et al.  Abstract requirements specification: A new approach and its application , 1983, IEEE Transactions on Software Engineering.