COVID-19 Update: We are currently shipping orders daily. However, due to transit disruptions in some geographies, deliveries may be delayed. To provide all customers with timely access to content, we are offering 50% off Science and Technology Print & eBook bundle options. Terms & conditions.
Object-Oriented Construction Handbook - 1st Edition - ISBN: 9781558606876, 9780080491967

Object-Oriented Construction Handbook

1st Edition

Developing Application-Oriented Software with the Tools & Materials Approach

Author: Heinz Züllighoven
Hardcover ISBN: 9781558606876
eBook ISBN: 9780080491967
Imprint: Morgan Kaufmann
Published Date: 28th September 2004
Page Count: 544
Sales tax will be calculated at check-out Price includes VAT/GST
Price includes VAT/GST

Institutional Subscription

Secure Checkout

Personal information is secured with SSL technology.

Free Shipping

Free global shipping
No minimum order.


Successful businesses and organizations are continually looking for ways to improve service and customer satisfaction in order to achieve long-term customer loyalty. In light of these goals, software developers must ask the question: how does customer orientation influence traditional approaches, methods, and principles of software development? In this book, a leading software architect and his team of software engineers describe how the idea of customer orientation in an organization leads to the creation of application-oriented software. This book describes what application-oriented software development is and how it can be conceptually and constructively designed with object-oriented techniques. It goes further to describe how to best fit together the many different methodologies and techniques that have been created for object-orientation (such as frameworks, platforms, components, UML, Unified Process, design patterns, and eXtreme Programming) to design and build software for real projects. This book brings together the best of research, development, and day-to-day project work to the task of building large software systems.

Key Features

Written by and for developers of large, interactive, and long-lived software systems
Includes patterns of proven analysis, design, and documentation techniques
*Shows how to develop an appropriate design approach and concrete software development techniques


Software engineers, developers, project managers, system architects, method developers, and students.

Table of Contents

Chapter 1 Introduction
1.1 Application Orientation—The Subject of This Book
1.1.1 Motivation
1.1.2 Structure of This Book
1.2 The Tools & Materials Approach (T&M)
1.2.1 The T&M Approach in a Nutshell
1.2.2 T&M as a Method
1.3 Projects Behind This Book
1.3.1 The Scope of the T&M Projects
1.4 The Equipment Management System Example
1.5 References

Chapter 2 The T&M Object Metamodel
2 .1 The Object Metamodel
2.1.1 Introduction
2.1.2 Definition: The Object Metamodel
2.1.3 Context: What's the Purpose of an Object Metamodel?
2.1.4 Context: A Classification of Programming Languages
2.1.5 The Object Metamodel and the Software Model
2.1.6 Definition: Objects
2.1.7 Discussion: Object Identity
2.1.8 T&M Design: Structuring an Interface
2.1.9 Definition: Classes
2.1.10 Discussion: Generic Operations
2.1.11 T&M Design: Generic Operations
2.1.12 Discussion: The Object Life Cycle
2.1.13 T&M Design: The Object Life Cycle
2.1.14 Definition: Inheritance
2.1.15 Discussion: Inheritance
2.1.16 T&M Design: Inheritance
2.1.17 Discussion: Role Relationships as an Alternative to Inheritance
2.1.18 Definition: Use Relationships
2.1.19 Discussion: Use Relationships
2.1.20 Definition: Polymorphism
2.1.21 Definition: Abstract Classes
2.1.22 Discussion: Specification and Implementation
2.1.23 Definition: Loose Coupling
2.1.24 Discussion: Loose Coupling
2.2 Modularization
2.2.1 Introduction
2.2.2 Context: Modules and Object Orientation
2.2.3 Definition: Principles of Object-Oriented Modularization
2.3 The Contract Model
2.3.1 Introduction
2.3.2 Definition: Contract Model
2.3.3 Discussion: The Contract Model
2.3.4 Context: The Contract Model and Abstract Data Types
2.3.5 T&M Design: The Contract Model
2.4 Types
2.4.1 Introduction
2.4.2 Definition: Types
2.4.3 Context: The Theoretical Concept of Types
2.4.4 Discussion: Types
2.5 Classes and Types
2.5.1 Introduction
2.5.2 Classes in Your Design
2.5.3 Differences between Types and Classes
2.5.4 Discussion: Classes versus Types
2.5.5 Background: Programming Languages and Types
2.5.6 T&M Design: Classes and Types
2.6 Values and Objects
2.6.1 Introduction
2.6.2 Characteristics of Values and Objects
2.6.3 Using Values
2.6.4 Context: Values and Objects in Programming Languages
2.6.5 Definition: Domain Values
2.6.6 T&M Design: Domain Values
2.6.7 Implementing Domain Values
2.7 Metaobject Protocols
2.7.1 Introduction
2.7.2 Motivation for a Metaobject Protocol
2.7.3 Definition: Metaobject Protocol (MOP)
2.7.4 Representing Your Application Model
2.7.5 Representing Your Runtime System
2.8 References

Chapter 3 Guiding Metaphors and Design Metaphors
3.1 Introduction
3.2 Designing Application Software
3.2.1 Definition: The Usage Model
3.2.2 Background: Methodology Books versus Design Guidelines
3.3 Guiding Metaphors for Application Software
3.3.1 Background: Guiding Metaphors in Software Development
3.3.2 The "Object Worlds" Guiding Metaphor
3.3.3 The Direct Manipulation Guiding Metaphor
3.3.4 Discussion: Guiding Metaphor of Direct Manipulation
3.3.5 The Guiding Metaphor of the Factory
3.3.6 Discussion: The Factory Guiding Metaphor
3.4 Design Metaphors
3.4.1 Definition: Metaphors
3.5 T&M Guiding Metaphors and Design Metaphors
3.5.1 A T&M Guiding Metaphor: The Expert Workplace
3.5.2 Background: The Supportive View
3.5.3 Discussion: Metaphors and Patterns
3.5.4 Definition: A Tool
3.5.5 The Tool as a Design Metaphor
3.5.6 T&M Design: Software Tools
3.5.7 Definition: Material
3.5.8 Material as a Design Metaphor
3.5.9 T&M Design: Software Materials
3.5.10 Definition: The Work Environment
3.5.11 The Work Environment as a Design Metaphor
3.5.12 T&M Design: The Work Environment
3.5.13 Definition: Automatons
3.5.14 The Automaton as a Design Metaphor
3.5.15 T&M Design: Software Automatons
3.5.16 Definition: The Container
3.5.17 The Container as a Design Metaphor
3.5.18 T&M Design: Containers
3.5.19 Discussion: Design Metaphors
3.6 Workplace Types
3.6.1 Definition: Workplace Types
3.6.2 T&M Design: The Expert Workplace Type
3.6.3 T&M Design: The Functional Workplace Type
3.6.4 T&M Design: The Back-Office Workplace Type
3.6.5 T&M Design: The Electronic Commerce Front-end Workplace Type
3.7 References

Chapter 4 Patterns, Frameworks, and Components
4.1 Introduction
4.2 Background: Patterns, Frameworks, and Components
4.3 Patterns
4.3.1 Definition: Patterns
4.3.2 The Characteristics of a Pattern
4.3.3 A Taxonomy of T&M Patterns
4.3.4 Conceptual Patterns
4.3.5 Design Patterns
4.3.6 Programming Patterns
4.3.7 T&M Design: Design Patterns
4.3.8 T&M Design: Models, Metaphors, and Patterns
4.3.9 Background: Pattern Form
4.3.10 T&M Design: Pattern Form
4.3.11 Pattern Collections
4.4 Frameworks
4.4.1 Background: Class Libraries
4.4.2 Definition: Frameworks
4.4.3 Application Frameworks
4.4.4 Black Box and White Box Frameworks
4.4.5 Connectors between Frameworks
4.4.6 JWAM Framework: Layered Framework Architecture
4.5 Components
4.5.1 Background: Software Components
4.5.2 Definition: Components
4.5.3 Current Component Products
4.5.4 Components and Frameworks

Chapter 5 Application-Oriented Software Development
5.1 Introduction
5.2 Application-Oriented Software
5.2.1 Application Software
5.2.2 Definition: Application Orientation
5.2.3 Background: Application Orientation
5.2.4 Usage Quality
5.2.5 T&M Design: Structural Similarity
5.3 The Development Process
5.3.1 Definition: Software Development
5.3.2 The Application-Oriented Development Process
5.3.3 Discussion: The Development Process
5.3.4 The Author-Critic Cycle
5.3.5 Discussion: The Author-Critic Cycle
5.3.6 Evolutionary System Development
5.3.7 Documentation in Software Development
5.3.8 Discussion: Documentation
5.3.9 Application-Oriented Development Documents
5.3.10 Discussion: Application-Oriented Document Types
5.3.11 T&M Design: Application-Oriented Document Types
5.3.12 Discussion: T&M Document Types
5.3.13 Project Documents
5.3.14 Documentation Guidelines
5.4 References

Chapter 6 Software Development as a Modeling Process
6.1 Introduction
6.2 A Simplified Software Development Model
6.2.1 Discussion: A Descriptive Software Development Model
6.3 The Application Domain
6.3.1 Definition: Application Domain
6.3.2 Discussion: Analyzing the Application Domain
6.4 The Domain Model
6.4.1 Modeling Your Application Domain
6.4.2 Discussion: Modeling Your Application Domain
6.5 The Application System Model
6.5.1 Context: The Application System Model
6.5.2 Definition: Application System Model
6.5.3 Discussion: Structural Similarity and Macrostructures
6.6 The Application System
6.6.1 Definition: The Application System
6.6.2 Discussion: The Application System
6.7 Software Development Contexts
6.7.1 Discussion: Software Development Contexts
6.7.2 The Application Domain Context
6.7.3 Discussion: The Application Domain Context
6.7.4 Applied Technique
6.7.5 Handling and Presentation
6.7.6 Discussion: Handling and Presentation
6.8 Contexts Influencing the Software Architecture
6.8.1 Discussion: How Contexts Influence Your Software Architecture
6.9 References

Chapter 7 T&M Conceptual Patterns
7.1 Conceptual Patterns
7.1.1 Conceptual Patterns in the Development Process
7.1.2 The T&M Conceptual Patterns
7.2 A Guided Tour of the T&M Conceptual Patterns
7.3 The Interrelation of Tools and Materials Pattern
7.4 The Material Design Pattern
7.5 The Tool Design Pattern
7.6 The Work Environment Pattern
7.7 The Container Pattern
7.8 The Form Pattern
7.9 The Automaton Pattern
7.10 The Domain Service Provider Pattern
7.11 The Technical Automaton Pattern
7.12 The Probe Pattern
7.13 The Adjusting Tool Pattern

Chapter 8 T&M Design Patterns
8.1 Introduction
8.2 A Guided Tour of the T&M Design Patterns
8.3 The Aspect Pattern
8.3.1 Construction Part: Using Inheritance or Interfaces to Implement Aspects
8.3.2 Construction Part: Using Object Adapters to Implement Aspects
8.3.3 Construction Part: Using Development Tools to Realize Aspects
8.3.4 Construction Part: Alternatives to Using Aspects
8.4 The Separating Function and Interaction Pattern
8.5 The Tools Composition Pattern
8.5.1 Construction Part: Using Components to Build Tools
8.5.2 Construction Part: Using Components to Build Combination Tools
8.5.3 Construction Part: Identifying Tool Boundaries
8.6 The Feedback between Tool Parts Pattern
8.6.1 Construction Part: Event Pattern
8.6.2 Construction Part: Event Objects
8.6.3 Construction Part: Chain of Responsibility
8.6.4 Construction Part: Tool Component with Reaction Mechanisms
8.7 The Separating FP and IP Pattern
8.7.1 Construction Part: Interactive Part (IP)
8.7.2 Construction Part: FP
8.8 The Separating Handling and Presentation Pattern
8.9 The Feedback between Interaction Forms and IP Pattern
8.10 The Domain Values Pattern
8.10.1 Construction Part: Domain Value Classes
8.10.2 Construction Part: Immutable Domain Value Objects
8.10.3 Construction Part: Mutable Domain Value Objects
8.10.4 Construction Part: Implementing Domain Values as Streams
8.10.5 Construction Part: Domain Value Types by Configuration
8.11 The Domain Container Pattern
8.11.1 Construction Part: Using Technical Containers to Implement Domain Containers
8.11.2 Construction Part: Loading Materials
8.11.3 Construction Part: Tables of Contents for Containers
8.11.4 Construction Part: Implementing Tables of Contents as Materials
8.11.5 Construction Part: Implementing Tables of Contents as Domain Values
8.11.6 Construction Part: Coping with Changes to Containers
8.12 The Form System Pattern
8.13 The Automatons in Technically Embedded Systems Pattern
8.14 The Domain Services Pattern
8.15 The Environment Pattern
8.16 Using the T&M Design Patterns for the JWAM Framework
8.16.1 Materials Construction
8.16.2 Tools Construction
8.16.3 Domain Values
8.16.4 Presentation and Interaction Forms
8.16.5 Forms
8.16.6 Domain Services
8.16.7 Work Environment
8.17 References

Chapter 9 T&M Model Architecture
9.1 The T&M Model Architecture
9.2 The Domain Core of a Software Architecture
9.2.1 The Use Context
9.2.2 The Product Domain
9.2.3 The Business Domain
9.2.4 How Different Domains Relate
9.3 Concepts and Elements of a T&M Model Architecture
9.3.1 Components of an Object-Oriented Software Architecture
9.3.2 Elementary Rules for Combining Elements of a Software Architecture
9.3.3 Protocol-Based Layer Architectures
9.3.4 Object-Oriented Layer Architectures
9.3.5 The Layer Concept of the T&M Model Architecture
9.3.6 The Three-Tier Architecture
9.3.7 The T&M Model Architecture
9.4 Design Patterns for the T&M Model Architecture
9.4.1 The Role Pattern
9.4.2 The Product Trader Pattern
9.5 References

Chapter 10 Supporting Cooperative Work
10.1 Background: Computer-Supported Cooperative Work
10.1.1 CSCW
10.1.2 Technical and Domain Transparency
10.2 Implicit Cooperation
10.3 Explicit Cooperation by Exchanging Materials
10.3.1 Cooperation Medium: Mailboxes
10.3.2 Cooperation Medium: Mailing System
10.4 Explicit Cooperation Model: Transaction Processing Support
10.4.1 The Concept of Process Patterns
10.4.2 Cooperation Medium: Routing Slips
10.5 References

Chapter 11 Interactive Application Systems and Persistence
11.1 Background: Interactive Application Systems
11.2 Persistence Services
11.2.1 Software Registry
11.2.2 The Basic Concept of a Software Registry
11.2.3 Cooperation Model for a Registry
11.2.4 Usage Model for a Registry
11.2.5 JWAM: Architecture for a Software Registry
11.2.6 The Generic Persistence Service
11.3 Design Criteria to Implement Persistence
11.3.1 Client-Server Architecture
11.3.2 Identifiers
11.3.3 Technical Data Modeling and Structural Mapping
11.3.4 Querying and Data Warehousing
11.3.5 Load-on-Demand
11.3.6 Transactions and Locking
11.3.7 Class Evolution
11.3.8 Legacy Databases
11.4 Real-World Examples
11.4.1 JWAM Projects
11.4.2 MedIS and SyLab

Chapter 12 The Development Process
12.1 Background: Evolutionary and Traditional Process Models
12.1.1 The Context of Our Process Model
12.1.2 The Process Model's Application Orientation
12.1.3 The Classic Waterfall Model
12.1.4 The Spiral Model
12.1.5 An Idealized Evolutionary Process Model
12.2 Topics for a Development Strategy
12.2.1 Sequence of Development Activities
12.2.2 Objectifying the Development Process
12.2.3 Lehman's Software Classification
12.2.4 The Cooperative Development Process
12.2.5 Organizational and Domain Integration
12.2.6 Developing an IT Organization
12.3 Quality Assurance in the Development Process
12.3.1 Direct User Integration
12.3.2 Prototyping
12.3.3 Reviews
12.3.4 Pair Programming
12.3.5 Refactoring
12.4 Quality Assurance in Construction
12.4.1 Characteristics of OO Testing
12.4.2 Testing OO Programs
12.5 Project Management
12.5.1 Fundamental Activities of the Management Process
12.5.2 The Contexts of the Management Process
12.6 Project Planning Concepts and Techniques
12.6.1 Project Calibration
12.6.2 Project Goals
12.6.3 Decision Principles
12.6.4 Project Establishment
12.7 Structuring a Project by System Decomposition
12.7.1 Core System and Special-Purpose Systems
12.7.2 Core System and Extension Levels
12.8 Scheduling and Task Planning
12.8.1 General Rules for Time Estimates
12.8.2 Planning the Project Stages
12.8.3 Using Base Lines for Detailed Planning
12.8.4 The UP and T&M Project Planning
12.9 Discussing T&M, Unified Process, and XP
12.9.1 Structure of the UP and T&M Development Processes
12.10 References

Chapter 13 T&M Document Types
13.1 Scenarios
13.1.1 Using Scenarios in the Development Process
13.1.2 Subtypes of Scenarios
13.1.3 Scenarios and UML
13.2 Interviews
13.2.1 The Interview Process
13.3 The Concept Model
13.3.1 Using a Concept Model in the Development Process
13.3.2 Concept Models and UML
13.4 Glossaries
13.4.1 Using a Glossary in the Development Process
13.4.2 Glossaries, UML, and UP
13.5 System Visions
13.5.1 Using System Visions in the Development Process
13.5.2 System Visions and XP
13.5.3 System Visions and UML
13.6 Prototypes
13.6.1 Using Prototypes in the Development Process
13.6.2 Prototypes and UP
13.7 Cooperation Pictures
13.7.1 Cooperation Pictures in the Development Process
13.7.2 Cooperation Pictures and UML
13.8 Purpose Tables
13.8.1 Using Purpose Tables in the Development Process
13.8.2 Purpose Tables and UML
13.9 Technical Document Types in UML
13.9.1 Class Diagrams
13.9.2 Object Diagrams
13.9.3 Use Case Diagrams
13.9.4 Interaction Diagrams
13.9.5 Statechart Diagrams
13.9.6 Activity Diagrams
13.9.7 Component Diagrams
13.9.8 Deployment Diagrams
13.9.9 Application-Oriented and Technical Documents
13.10 References


No. of pages:
© Morgan Kaufmann 2004
28th September 2004
Morgan Kaufmann
Hardcover ISBN:
eBook ISBN:

About the Author

Heinz Züllighoven

Heinz Züllighoven graduated in mathematics and German language and literature and holds a Ph.D. in computer science. He is a professor in the Computer Science Department at the University of Hamburg and managing director of IT–Workplace Solutions Ltd., where he consults on industrial software development projects in the area of object-oriented design; among his clients are several major banks and companies of the service industry. His current research interests include object-oriented migration strategies for legacy systems and the architecture of large industrial interactive software systems.

Affiliations and Expertise

IT - Workplace Solutions, Inc., and University of Hamburg, Germany.


"This very practical book demystifies the art of developing flexible software systems that can keep up with the changing needs of customers. This book not only shows how metaphors like 'Tools and Materials' can help drive software development, but it also carefully considers all aspects of the software process, and explains how the T&M approach builds on and refines known software engineering practices." —Oscar Nierstrasz, University of Bern, Switzerlan

"The presented ideas are elaborated independent of technologies and implementation techiques. The author wants as target groups: software developers, project managers, computer science students, and method developers. He says, it is neither a programming textbook nore a book about GUI design."

Ratings and Reviews