Object-Oriented Construction Handbook book cover

Object-Oriented Construction Handbook

Developing Application-Oriented Software with the Tools & Materials Approach

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.

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

,

Published: September 2004

Imprint: Morgan Kaufmann

ISBN: 978-1-55860-687-6

Reviews

  • "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

Contents

  • Chapter 1 Introduction1.1 Application Orientation—The Subject of This Book1.1.1 Motivation1.1.2 Structure of This Book1.2 The Tools & Materials Approach (T&M)1.2.1 The T&M Approach in a Nutshell1.2.2 T&M as a Method1.3 Projects Behind This Book1.3.1 The Scope of the T&M Projects1.4 The Equipment Management System Example1.5 References
    Chapter 2 The T&M Object Metamodel2 .1 The Object Metamodel2.1.1 Introduction2.1.2 Definition: The Object Metamodel2.1.3 Context: What's the Purpose of an Object Metamodel?2.1.4 Context: A Classification of Programming Languages2.1.5 The Object Metamodel and the Software Model2.1.6 Definition: Objects2.1.7 Discussion: Object Identity2.1.8 T&M Design: Structuring an Interface2.1.9 Definition: Classes2.1.10 Discussion: Generic Operations2.1.11 T&M Design: Generic Operations2.1.12 Discussion: The Object Life Cycle2.1.13 T&M Design: The Object Life Cycle2.1.14 Definition: Inheritance2.1.15 Discussion: Inheritance2.1.16 T&M Design: Inheritance2.1.17 Discussion: Role Relationships as an Alternative to Inheritance2.1.18 Definition: Use Relationships2.1.19 Discussion: Use Relationships2.1.20 Definition: Polymorphism2.1.21 Definition: Abstract Classes2.1.22 Discussion: Specification and Implementation2.1.23 Definition: Loose Coupling2.1.24 Discussion: Loose Coupling2.2 Modularization2.2.1 Introduction2.2.2 Context: Modules and Object Orientation2.2.3 Definition: Principles of Object-Oriented Modularization2.3 The Contract Model2.3.1 Introduction2.3.2 Definition: Contract Model2.3.3 Discussion: The Contract Model2.3.4 Context: The Contract Model and Abstract Data Types2.3.5 T&M Design: The Contract Model2.4 Types2.4.1 Introduction2.4.2 Definition: Types2.4.3 Context: The Theoretical Concept of Types2.4.4 Discussion: Types2.5 Classes and Types2.5.1 Introduction2.5.2 Classes in Your Design2.5.3 Differences between Types and Classes2.5.4 Discussion: Classes versus Types2.5.5 Background: Programming Languages and Types2.5.6 T&M Design: Classes and Types2.6 Values and Objects2.6.1 Introduction2.6.2 Characteristics of Values and Objects2.6.3 Using Values2.6.4 Context: Values and Objects in Programming Languages2.6.5 Definition: Domain Values2.6.6 T&M Design: Domain Values2.6.7 Implementing Domain Values2.7 Metaobject Protocols2.7.1 Introduction2.7.2 Motivation for a Metaobject Protocol2.7.3 Definition: Metaobject Protocol (MOP)2.7.4 Representing Your Application Model2.7.5 Representing Your Runtime System2.8 References
    Chapter 3 Guiding Metaphors and Design Metaphors3.1 Introduction3.2 Designing Application Software3.2.1 Definition: The Usage Model3.2.2 Background: Methodology Books versus Design Guidelines3.3 Guiding Metaphors for Application Software3.3.1 Background: Guiding Metaphors in Software Development3.3.2 The "Object Worlds" Guiding Metaphor3.3.3 The Direct Manipulation Guiding Metaphor3.3.4 Discussion: Guiding Metaphor of Direct Manipulation3.3.5 The Guiding Metaphor of the Factory3.3.6 Discussion: The Factory Guiding Metaphor3.4 Design Metaphors3.4.1 Definition: Metaphors3.5 T&M Guiding Metaphors and Design Metaphors3.5.1 A T&M Guiding Metaphor: The Expert Workplace3.5.2 Background: The Supportive View3.5.3 Discussion: Metaphors and Patterns3.5.4 Definition: A Tool3.5.5 The Tool as a Design Metaphor3.5.6 T&M Design: Software Tools3.5.7 Definition: Material3.5.8 Material as a Design Metaphor3.5.9 T&M Design: Software Materials3.5.10 Definition: The Work Environment3.5.11 The Work Environment as a Design Metaphor3.5.12 T&M Design: The Work Environment3.5.13 Definition: Automatons3.5.14 The Automaton as a Design Metaphor3.5.15 T&M Design: Software Automatons3.5.16 Definition: The Container3.5.17 The Container as a Design Metaphor3.5.18 T&M Design: Containers3.5.19 Discussion: Design Metaphors3.6 Workplace Types3.6.1 Definition: Workplace Types3.6.2 T&M Design: The Expert Workplace Type3.6.3 T&M Design: The Functional Workplace Type3.6.4 T&M Design: The Back-Office Workplace Type3.6.5 T&M Design: The Electronic Commerce Front-end Workplace Type3.7 References
    Chapter 4 Patterns, Frameworks, and Components4.1 Introduction4.2 Background: Patterns, Frameworks, and Components4.3 Patterns4.3.1 Definition: Patterns4.3.2 The Characteristics of a Pattern4.3.3 A Taxonomy of T&M Patterns4.3.4 Conceptual Patterns4.3.5 Design Patterns4.3.6 Programming Patterns4.3.7 T&M Design: Design Patterns4.3.8 T&M Design: Models, Metaphors, and Patterns4.3.9 Background: Pattern Form4.3.10 T&M Design: Pattern Form4.3.11 Pattern Collections4.4 Frameworks4.4.1 Background: Class Libraries4.4.2 Definition: Frameworks4.4.3 Application Frameworks4.4.4 Black Box and White Box Frameworks4.4.5 Connectors between Frameworks4.4.6 JWAM Framework: Layered Framework Architecture4.5 Components4.5.1 Background: Software Components4.5.2 Definition: Components4.5.3 Current Component Products4.5.4 Components and Frameworks4.6 REFERENCES
    Chapter 5 Application-Oriented Software Development5.1 Introduction5.2 Application-Oriented Software5.2.1 Application Software5.2.2 Definition: Application Orientation5.2.3 Background: Application Orientation5.2.4 Usage Quality5.2.5 T&M Design: Structural Similarity5.3 The Development Process5.3.1 Definition: Software Development5.3.2 The Application-Oriented Development Process5.3.3 Discussion: The Development Process5.3.4 The Author-Critic Cycle5.3.5 Discussion: The Author-Critic Cycle5.3.6 Evolutionary System Development5.3.7 Documentation in Software Development5.3.8 Discussion: Documentation5.3.9 Application-Oriented Development Documents5.3.10 Discussion: Application-Oriented Document Types5.3.11 T&M Design: Application-Oriented Document Types5.3.12 Discussion: T&M Document Types5.3.13 Project Documents5.3.14 Documentation Guidelines5.4 References
    Chapter 6 Software Development as a Modeling Process6.1 Introduction6.2 A Simplified Software Development Model6.2.1 Discussion: A Descriptive Software Development Model6.3 The Application Domain6.3.1 Definition: Application Domain6.3.2 Discussion: Analyzing the Application Domain6.4 The Domain Model6.4.1 Modeling Your Application Domain6.4.2 Discussion: Modeling Your Application Domain6.5 The Application System Model6.5.1 Context: The Application System Model6.5.2 Definition: Application System Model6.5.3 Discussion: Structural Similarity and Macrostructures6.6 The Application System6.6.1 Definition: The Application System6.6.2 Discussion: The Application System6.7 Software Development Contexts6.7.1 Discussion: Software Development Contexts6.7.2 The Application Domain Context6.7.3 Discussion: The Application Domain Context6.7.4 Applied Technique6.7.5 Handling and Presentation6.7.6 Discussion: Handling and Presentation6.8 Contexts Influencing the Software Architecture6.8.1 Discussion: How Contexts Influence Your Software Architecture6.9 References
    Chapter 7 T&M Conceptual Patterns7.1 Conceptual Patterns7.1.1 Conceptual Patterns in the Development Process7.1.2 The T&M Conceptual Patterns7.2 A Guided Tour of the T&M Conceptual Patterns7.3 The Interrelation of Tools and Materials Pattern7.4 The Material Design Pattern7.5 The Tool Design Pattern7.6 The Work Environment Pattern7.7 The Container Pattern7.8 The Form Pattern7.9 The Automaton Pattern7.10 The Domain Service Provider Pattern7.11 The Technical Automaton Pattern7.12 The Probe Pattern7.13 The Adjusting Tool Pattern
    Chapter 8 T&M Design Patterns8.1 Introduction8.2 A Guided Tour of the T&M Design Patterns8.3 The Aspect Pattern8.3.1 Construction Part: Using Inheritance or Interfaces to Implement Aspects8.3.2 Construction Part: Using Object Adapters to Implement Aspects8.3.3 Construction Part: Using Development Tools to Realize Aspects8.3.4 Construction Part: Alternatives to Using Aspects8.4 The Separating Function and Interaction Pattern8.5 The Tools Composition Pattern8.5.1 Construction Part: Using Components to Build Tools8.5.2 Construction Part: Using Components to Build Combination Tools8.5.3 Construction Part: Identifying Tool Boundaries8.6 The Feedback between Tool Parts Pattern8.6.1 Construction Part: Event Pattern8.6.2 Construction Part: Event Objects8.6.3 Construction Part: Chain of Responsibility8.6.4 Construction Part: Tool Component with Reaction Mechanisms8.7 The Separating FP and IP Pattern8.7.1 Construction Part: Interactive Part (IP)8.7.2 Construction Part: FP8.8 The Separating Handling and Presentation Pattern8.9 The Feedback between Interaction Forms and IP Pattern8.10 The Domain Values Pattern8.10.1 Construction Part: Domain Value Classes8.10.2 Construction Part: Immutable Domain Value Objects8.10.3 Construction Part: Mutable Domain Value Objects8.10.4 Construction Part: Implementing Domain Values as Streams8.10.5 Construction Part: Domain Value Types by Configuration8.11 The Domain Container Pattern8.11.1 Construction Part: Using Technical Containers to Implement Domain Containers8.11.2 Construction Part: Loading Materials8.11.3 Construction Part: Tables of Contents for Containers8.11.4 Construction Part: Implementing Tables of Contents as Materials8.11.5 Construction Part: Implementing Tables of Contents as Domain Values8.11.6 Construction Part: Coping with Changes to Containers8.12 The Form System Pattern8.13 The Automatons in Technically Embedded Systems Pattern8.14 The Domain Services Pattern8.15 The Environment Pattern8.16 Using the T&M Design Patterns for the JWAM Framework8.16.1 Materials Construction8.16.2 Tools Construction8.16.3 Domain Values8.16.4 Presentation and Interaction Forms8.16.5 Forms8.16.6 Domain Services8.16.7 Work Environment8.17 References
    Chapter 9 T&M Model Architecture9.1 The T&M Model Architecture9.2 The Domain Core of a Software Architecture9.2.1 The Use Context9.2.2 The Product Domain9.2.3 The Business Domain9.2.4 How Different Domains Relate9.3 Concepts and Elements of a T&M Model Architecture9.3.1 Components of an Object-Oriented Software Architecture9.3.2 Elementary Rules for Combining Elements of a Software Architecture9.3.3 Protocol-Based Layer Architectures9.3.4 Object-Oriented Layer Architectures9.3.5 The Layer Concept of the T&M Model Architecture9.3.6 The Three-Tier Architecture9.3.7 The T&M Model Architecture9.4 Design Patterns for the T&M Model Architecture9.4.1 The Role Pattern9.4.2 The Product Trader Pattern9.5 References
    Chapter 10 Supporting Cooperative Work10.1 Background: Computer-Supported Cooperative Work10.1.1 CSCW10.1.2 Technical and Domain Transparency10.2 Implicit Cooperation10.3 Explicit Cooperation by Exchanging Materials10.3.1 Cooperation Medium: Mailboxes10.3.2 Cooperation Medium: Mailing System10.4 Explicit Cooperation Model: Transaction Processing Support10.4.1 The Concept of Process Patterns10.4.2 Cooperation Medium: Routing Slips10.5 References
    Chapter 11 Interactive Application Systems and Persistence11.1 Background: Interactive Application Systems11.2 Persistence Services11.2.1 Software Registry11.2.2 The Basic Concept of a Software Registry11.2.3 Cooperation Model for a Registry11.2.4 Usage Model for a Registry11.2.5 JWAM: Architecture for a Software Registry11.2.6 The Generic Persistence Service11.3 Design Criteria to Implement Persistence11.3.1 Client-Server Architecture11.3.2 Identifiers11.3.3 Technical Data Modeling and Structural Mapping11.3.4 Querying and Data Warehousing11.3.5 Load-on-Demand11.3.6 Transactions and Locking11.3.7 Class Evolution11.3.8 Legacy Databases11.4 Real-World Examples11.4.1 JWAM Projects11.4.2 MedIS and SyLab
    Chapter 12 The Development Process12.1 Background: Evolutionary and Traditional Process Models12.1.1 The Context of Our Process Model12.1.2 The Process Model's Application Orientation12.1.3 The Classic Waterfall Model12.1.4 The Spiral Model12.1.5 An Idealized Evolutionary Process Model12.2 Topics for a Development Strategy12.2.1 Sequence of Development Activities12.2.2 Objectifying the Development Process12.2.3 Lehman's Software Classification12.2.4 The Cooperative Development Process12.2.5 Organizational and Domain Integration12.2.6 Developing an IT Organization12.3 Quality Assurance in the Development Process12.3.1 Direct User Integration12.3.2 Prototyping12.3.3 Reviews12.3.4 Pair Programming12.3.5 Refactoring12.4 Quality Assurance in Construction12.4.1 Characteristics of OO Testing12.4.2 Testing OO Programs12.5 Project Management12.5.1 Fundamental Activities of the Management Process12.5.2 The Contexts of the Management Process12.6 Project Planning Concepts and Techniques12.6.1 Project Calibration12.6.2 Project Goals12.6.3 Decision Principles12.6.4 Project Establishment12.7 Structuring a Project by System Decomposition12.7.1 Core System and Special-Purpose Systems12.7.2 Core System and Extension Levels12.8 Scheduling and Task Planning12.8.1 General Rules for Time Estimates12.8.2 Planning the Project Stages12.8.3 Using Base Lines for Detailed Planning12.8.4 The UP and T&M Project Planning12.9 Discussing T&M, Unified Process, and XP12.9.1 Structure of the UP and T&M Development Processes12.10 References
    Chapter 13 T&M Document Types13.1 Scenarios13.1.1 Using Scenarios in the Development Process13.1.2 Subtypes of Scenarios13.1.3 Scenarios and UML13.2 Interviews13.2.1 The Interview Process13.3 The Concept Model13.3.1 Using a Concept Model in the Development Process13.3.2 Concept Models and UML13.4 Glossaries13.4.1 Using a Glossary in the Development Process13.4.2 Glossaries, UML, and UP13.5 System Visions13.5.1 Using System Visions in the Development Process13.5.2 System Visions and XP13.5.3 System Visions and UML13.6 Prototypes13.6.1 Using Prototypes in the Development Process13.6.2 Prototypes and UP13.7 Cooperation Pictures13.7.1 Cooperation Pictures in the Development Process13.7.2 Cooperation Pictures and UML13.8 Purpose Tables13.8.1 Using Purpose Tables in the Development Process13.8.2 Purpose Tables and UML13.9 Technical Document Types in UML13.9.1 Class Diagrams13.9.2 Object Diagrams13.9.3 Use Case Diagrams13.9.4 Interaction Diagrams13.9.5 Statechart Diagrams13.9.6 Activity Diagrams13.9.7 Component Diagrams13.9.8 Deployment Diagrams13.9.9 Application-Oriented and Technical Documents13.10 References

Advertisement

advert image