Software Systems Construction with Examples in Ada

Author: Bo Sanden, George Mason University, Fairfax, Virginia, USA Date: Tue, 10 May 94 Subject: New book on multi-tasking design Keywords: real-time, tasking, light-weight process, design, Ada In response to my earlier book announcement, I have been asked to post the following abbreviated table of contents. The full table of contents and any other information can be obtained by email to bsanden@gmu.edu. Bo Sanden, Software Systems Construction with Examples in Ada, Prentice Hall 1994; ISBN 0-13-030834-X Table of contents 1. INTRODUCTION 1.1 Software development 1.2 Development of reactive software 1.3 Entity-life modeling 1.4 Notations and languages 1.5 Heuristics and formalism in software construction 1.6 Chapter summary 2. CONTROL STRUCTURING 2.1 Introduction 2.2 Structured programming 2.3 Basic control structuring 2.4 Sequence diagrams 2.4.1 JSP and JSD 2.4.2 Sequence diagram elements 2.4.3 Implicit and explicit mode representation 2.4.4 Example: VDU control program 2.5 Structure clashes 2.6 Loop exits 2.7 Exceptions and backtracking 2.7.1 Exception syntax 2.7.2 Exceptions in the VDU problem 2.7.3 Backtracking 2.7.4 Example: The buoy problem 2.7.5 The use of exceptions and backtracking 2.8 Control structuring in the elevator problem 2.9 Chapter summary 3. MODULARIZATION 3.1 Introduction 3.1.1 Subprograms 3.1.2 Separate compilation. Information-hiding modules 3.1.3 Ada packages 3.2 Module syntax 3.2.1 Subprogram syntax 3.2.2 Library units, secondary units and subunits 3.2.3 Package syntax 3.2.4 Generics 3.3 Procedural abstraction and specification 3.4 The use of independent subprograms 3.4.1 Traditional quality concepts for subprograms 3.4.2 Justification of independent subprograms 3.4.3 Program fragmentation 3.5 Justification of generic subprograms 3.5.1 Example: The teller terminal system 3.6 Chapter summary 4. OBJECT-BASED SOFTWARE CONSTRUCTION 4.1 Introduction 4.1.1 Software objects and real-world objects 4.1.2 Choice of objects in the elevator example 4.2 Information-hiding modules in modeling 4.2.1 Diagrammatic notation for information-hiding packages 4.2.2 Levels of abstraction 4.2.3 Packaging in the VDU example 4.2.4 Packaging in the elevator example 4.3 Abstract data types and object-based software 4.3.1 Software construction by data abstraction 4.3.2 Object-based software construction in Ada 4.4 Adt packages and information-hiding packages 4.4.1 Hybrid packages 4.4.2 Example: Space allocation module 4.4.3 Hybrid package in the buoy example 4.5 Practical aspects of packaging 4.5.1 Division of labor in software development 4.5.2 Pragmatic packaging 4.6 Chapter summary Project: Crazy eights 5. FINITE AUTOMATA AND SOFTWARE 5.1 Introduction 5.2 Automata theory 5.3 Finite automata in software 5.3.1 States, modes and conditions 5.3.2 Information-hiding packages with explicit modes 5.3.3 Abstract data types with explicit modes 5.4 Examples of finite automata in software 5.4.1 Finite automata in the automobile cruise control problem 5.4.2 Multiple windows in the VDU control program 5.4.3 Alternative software representations of transition diagrams 5.4.4 Alternative program structures 5.5 Chapter summary 6. CONCURRENT TASKS 6.1 Introduction 6.2 Tasks and processes as programming abstractions 6.3 Task syntax 6.3.1 Task creation and activation 6.3.2 Rendezvous 6.3.3 The select statement 6.3.4 Exceptions in tasks 6.3.5 The delay statement 6.3.6 Modules and tasks 6.3.7 Task scheduling 6.4 Task applications 6.4.1 Subject tasks 6.4.2 Guardian tasks 6.4.3 Programs with multiple tasks 6.4.4 Debugging and test of concurrent software 6.5 Case study: The remote temperature sensor problem 6.6 Chapter summary 7. RESOURCE SHARING 7.1 Introduction 7.2 Issues in resource sharing 7.2.1 Granularity 7.2.2 Extent 7.2.3 Choice of granularity 7.2.4 Simultaneous exclusive access; deadlock 7.2.5 Deadlock prevention 7.2.6 Deadlocks and the Ada task syntax 7.3 Software representation of shared resources 7.3.1 Hidden exclusive access 7.3.2 Explicit resource acquisition 7.4 Mutual exclusion 7.4.1 Special-purpose guardian tasks 7.4.2 Semaphores and semaphore tasks 7.4.3 Choice between special-purpose guardians and semaphores 7.5 Mutual exclusion for abstract data types 7.5.1 Semaphore protection of individual adt instances 7.5.2 Abstract data type implemented as a guardian task type 7.5.3 Mutual exclusion for an entire abstract data type 7.5.4 Example: Message queues 7.6 Representation of collective and pooled resources 7.7 Chapter summary 8. ENTITY-LIFE MODELING 8.1 Introduction 8.2 Properties of a concurrent program 8.2.1 Subject-object structures 8.2.2 Subject packages 8.2.3 Mode representation in concurrent software 8.3 Construction of concurrent software 8.3.1 Problem analysis 8.3.2 Software design 8.3.3 Entity-life modeling in the buoy example 8.3.4 The user entity 8.4 Entity-life modeling in the elevator example 8.4.1 Problem description 8.4.2 Analysis 8.4.3 Software design 8.4.4 Mode representation in the elevator example 8.4.5 The elevator example: Conclusion 8.5 Chapter summary Projects 8.1 Supermarket check-out 8.2 Complete elevator system 9. CASE STUDY: FLEXIBLE MANUFACTURING SYSTEM (FMS) 9.1 Introduction 9.1.1 Flexible manufacturing 9.1.2 Operation of the FMS plant 9.1.3 Alternative scheduling 9.2 Problem description 9.2.1 Workstation 9.2.2 Automated storage and retrieval system, ASRS 9.2.3 FMS controller and supervisor terminal 9.2.4 Interface between FMS controller and AGVs and ASRS 9.2.5 Interface between workstations and controller 9.2.6 Workstation allocation 9.2.7 Resource sharing 9.3 Analysis 9.3.1 Entities in the FMS problem environment 9.3.2 Choice of subjects 9.4 Software design 9.4.1 JOB_TASK 9.4.2 Package ASRS_STANDS 9.4.3 Package ASRS 9.4.4 Package AGVS 9.4.5 Package WORKSTATIONS 9.4.6 Aspects of the job task 9.4.7 Supervisor interface 9.5 Chapter summary Projects: 9.1 Air traffic control game 9.2 Automated vending machine 9.3 Bottling plant 9.4 FMS with error handling 9.5 Automated train switchyard