0. Preliminaries 1. The Context: Software Engineering Basics 1.1. Motivation 1.2. Activity Area Model 1.3. Main Topics of a Software Development Process 2. The Problem: Modelling on Design Level 2.1. Architecture Paradigm 2.2. Errors, Changes, and Costs 2.3. Architecture Center of Development 2.4. "Architectures" in Literature
3. Without Knowledge: First Examples 3.1. A Simple Batch System 3.2. A Small Interactive System 3.3. An OO Solution for the Interactive System 3.4. A Small Embedded System 4. The Notation: An Architecture Description Language 4.1. Modules as Atomic Building Blocks 4.2. Functional and Data Abstraction
4.3. Functional Modules 4.4. Data Object Modules 4.5. Data Abstraction and SE 4.6. Data Type Modules 4.7. Summary Module Types 4.8. Relations Between Modules 4.9. Local Usability
5.3. Multi-Level Data Abstraction Layers 5.4. Multiple Data Abstractions 5.5. Subsystems: Methodological Use 5.6. Subsystems for Complex Data 5.7. OO: Rules for Good Use
5.8. OO: A Critical Analysis 5.9. Summary of Chapter 6. Preparation for Practice: Translation to Programming Languages 6.1. Problems of Translation 6.2. Languages with Independent Units 6.3. Block-structured Languages without Modules 6.4. Languages with Modules
8.3. A Small Embedded System 8.4. Batch system: Compiler 8.5. Coarse Architecture of a Software Development Environment 8.6. Summary 9. Practical Life: Building Right, Maintenance, and Reuse 9.1. Building the "Right" System 9.7. Summary: What We Have Achieved 9.8. Strategies for Adaptable Architectures