Object-Oriented Construction Handbook - 1st Edition - ISBN: 9781558606876, 9780080491967

Object-Oriented Construction Handbook

1st Edition

Developing Application-Oriented Software with the Tools & Materials Approach

Authors: Heinz Züllighoven
Hardcover ISBN: 9781558606876
eBook ISBN: 9780080491967
Imprint: Morgan Kaufmann
Published Date: 29th September 2004
Page Count: 544
Tax/VAT will be calculated at check-out
Compatible Not compatible
VitalSource PC, Mac, iPhone & iPad Amazon Kindle eReader
ePub & PDF Apple & PC desktop. Mobile devices (Apple & Android) Amazon Kindle eReader
Mobi Amazon Kindle eReader Anything else

Institutional Access


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 4.6 REFERENCES

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
Morgan Kaufmann
eBook ISBN:
Hardcover 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." -G. Bauer, in ZENTRALBLATT MATH