Software engineering 2. Specification of systems and languages. With contributions from Christian Krog Madsen.
The present volume is the second one of a trilogy on formal development of large scale systems. It supplements the abstraction and modelling tools covered in Volume 1 with some additional ones and mainly focuses on formal specification of systems and languages. The following four aspects are strongly emphasized: advanced specification facets; linguistics; concurrency and temporality; interpreter and compiler definitions. It completes the gallery of tools for abstraction and modelling by adding to the RAISE Specification Language (Volume 1) some other new tools: Petri nets; Sequence Charts (SCs); statecharts; Interval Temporal Logic (ITL) and Duration Calculus (DC). That way the reader is prepared to face the challenges raised by specification of parallel and real time systems and becomes aware of major semiotics principles governing the abstraction and modelling of complex computing systems and languages. The additional principles and techniques for abstraction and modelling are stated by the author as falling along the following axis: an advanced abstraction and modelling axis, covering hierarchical and compositional modelling; a semiotic axis, covering pragmatics, semantics and syntax of design structures; a structuring axis, briefly covering the RSL scheme, class and object concepts as well as UML representation facilities; a concurrency axis, covering both qualitative aspects of timing (Petri nets, SCs, state charts) and quantitative aspects (ITL, DC); a language development axis, covering crucial steps of the development of concrete interpreters and compilers for functional, imperative, modular and parallel programming languages. The book is organized in nine parts. Part I, ``Opening'', is an RSL primer. Part II, ``Specification facets'', deals with the following concepts: hierarchies and compositions; denotations and compositions; context and states. Part III, ``A crucial domain and computing facet'', presents the main principles and techniques according to which phenomena of time and space have to be modelled. Part IV, ``Linguistics'', deals with the pragmatic, semantic, syntactic and semiotic features of the specification of programming languages. Part V, ``Further specification techniques'', presents two other specification techniques, namely modularisation, automata and machines. Part VI, ``Concurrency and temporality'', covers Petri nets, message and live sequence charts, state charts and quantitative models of time. Part VII, ``Interpreter and compiler definitions'', completely illustrates four programming language developments: an interpreter and a compiler specification for a simple applicative language, and interpreter specifications for a simple imperative language, for a simple, modular imperative language and for a simple, parallel imperative language. The last parts are Part VIII, ``Closing'', and Part IX, ''Appendixes''. Heavy emphasis is placed on examples and exercises. Each topic is presented by means of many examples illustrating the formal process of modelling and specification. The end of each chapter includes several exercises that demonstrate the topics in a more realistic setting. The quite large spectrum of modelling and specification tools, ranging from RSL scheme and UML diagram to Petri nets, (Message and Live) SCs, state charts, ITL and DC, provides the reader with a comprehensive understanding of specific principles and techniques needed for system and language modelling. With its strong abstraction and modelling background, the book appeals to researchers and to practitioners involved in language specification and modelling of real time and concurrent systems.
scientific article; zbMATH DE number 2161253