Front cover image for Specification and Transformation of Programs : a Formal Approach to Software Development

Specification and Transformation of Programs : a Formal Approach to Software Development

Helmut A. Partsch (Author)
"Specification and transformation of programs" is short for a methodology of software development where, from a formal specification of a problem to be solved, programs correctly solving that problem are constructed by stepwise application of formal, semantics-preserving transformation rules. The approach considers programming as a formal activity. Consequently, it requires some mathematical maturity and, above all, the will to try something new. A somewhat experienced programmer or a third- or fourth-year student in computer science should be able to master most of this material - at least, this is the level I have aimed at. This book is primarily intended as a general introductory textbook on transformational methodology. As with any methodology, reading and understanding is necessary but not sufficient. Therefore, most of the chapters contain a set of exercises for practising as homework. Solutions to these exercises exist and can, in principle, be obtained at nominal cost from the author upon request on appropriate letterhead. In addition, the book also can be seen as a comprehensive account of the particular transformational methodology developed within the Munich CIP project
eBook, English, 1990
Springer Berlin Heidelberg, Berlin, Heidelberg, 1990
1 online resource (XIII, 493 pages) : online resource
9783642615122, 3642615120
1086465785
Printed edition:
1. Introduction
1.1 Software Engineering
1.2 The Problematics of Software Development
1.3 Formal Specification and Program Transformation
1.4 Our Particular View of Transformational Programming
1.5 Relation to Other Approaches to Programming Methodology
1.6 An Introductory Example
2. Requirements Engineering
2.1 Introduction
2.2 Some Formalisms Used in Requirements Engineering
3. Formal Problem Specification
3.1 Specification and Formal Specification
3.2 The Process of Formalization
3.3 Definition of Object Classes and Their Basic Operations
3.4 Additional Language Constructs for Formal Specifications
3.5 Structuring and Modularization
3.6 Examples
3.7 Exercises
4. Basic Transformation Techniques
4.1 Semantic Foundations
4.2 Notational Conventions
4.3 The Unfold/Fold System
4.4 Further Basic Transformation Rules
4.5 Sample Developments with Basic Rules
4.6 Exercises
5. From Descriptive Specifications to Operational Ones
5.1 Transforming Specifications
5.2 Embedding
5.3 Development of Recursive Solutions from Problem Descriptions
5.4 Elimination of Descriptive Constructs in Applicative Programs
5.5 Examples
5.6 Exercises
6. Modification of Applicative Programs
6.1 Merging of Computations
6.2 Inverting the Flow of Computation
6.3 Storing of Values Instead of Recomputation
6.4 Computation in Advance
6.5 Simplification of Recursion
6.6 Examples
6.7 Exercises
7. Transformation of Procedural Programs
7.1 From Tail Recursion to Iteration
7.2 Simplification of Imperative Programs
7.3 Examples
7.4 Exercises
8. Transformation of Data Structures
8.1 Implementation of Types in Terms of Other Types
8.2 Implementations of Types for Specific Environments
8.3 Libraries of Implementations
8.4 Transformation of Type Systems
8.5 Joint Development
8.6 An Example: Cycles in a Graph
8.7 Exercises
9. Complete Examples
9.1 Warshall's Algorithm
9.2 The Majority Problem
9.3 Fast Pattern Matching According to Boyer and Moore
9.4 A Text Editor
References