1 Introduction 1.1 Software Life Cycle 1.2 The Problem 1.3 Formal Methods 1.3.1 What Are Formal Methods 1.3.2 Some Commonly Used Formal Methods 1.3.3 Challenges to Formal Methods 1.4 Formal Engineering Methods 1.5 What Is SOFL 1.6 A Little History of SOFL 1.7 Comparison with Related Work 1.8 Exercises 2 Propositional Logic 3 Predicate Logic 4 The Module 5 Hierarchical CDFDs and Modules 6 Explicit Specifications 7 Basic Data Types 8 The Set Types 9 The Sequence and String Types 10 The Composite and Product Types 11 The Map Types 12 The Union Types 13 Classes 14 The Software Development Process 15 Approaches to Constructing Specifications 16 A Case Study-Modeling an ATM 17 Rigorous Review 18 Specification Testing 19 Transformation from Designs to Programs 20 Intelligent Software Engineering Environment References Index