You are previewing Object-Oriented Analysis and Design with Applications, Third Edition.
O'Reilly logo
Object-Oriented Analysis and Design with Applications, Third Edition

Book Description

Object-Oriented Design with Applications has long been the essential reference to object-oriented technology, which, in turn, has evolved to join the mainstream of industrial-strength software development. In this third edition--the first revision in 13 years--readers can learn to apply object-oriented methods using new paradigms such as Java, the Unified Modeling Language (UML) 2.0, and .NET.

The authors draw upon their rich and varied experience to offer improved methods for object development and numerous examples that tackle the complex problems faced by software engineers, including systems architecture, data acquisition, cryptoanalysis, control systems, and Web development. They illustrate essential concepts, explain the method, and show successful applications in a variety of fields. You'll also find pragmatic advice on a host of issues, including classification, implementation strategies, and cost-effective project management.

New to this new edition are

  • An introduction to the new UML 2.0, from the notation's most fundamental and advanced elements with an emphasis on key changes

  • New domains and contexts

  • A greatly enhanced focus on modeling--as eagerly requested by readers--with five chapters that each delve into one phase of the overall development lifecycle.

  • Fresh approaches to reasoning about complex systems

  • An examination of the conceptual foundation of the widely misunderstood fundamental elements of the object model, such as abstraction, encapsulation, modularity, and hierarchy

  • How to allocate the resources of a team of developers and mange the risks associated with developing complex software systems

  • An appendix on object-oriented programming languages

  • This is the seminal text for anyone who wishes to use object-oriented technology to manage the complexity inherent in many kinds of systems.

    Sidebars  
    Preface 
    Acknowledgments   
    About the Authors   

    Section I: Concepts  
    Chapter 1: Complexity   
    Chapter 2: The Object Model   
    Chapter 3: Classes and Objects   
    Chapter 4: Classification   
    Section II: Method  
    Chapter 5: Notation   
    Chapter 6: Process
    Chapter 7: Pragmatics   
    Chapter 8: System Architecture: Satellite-Based Navigation   
    Chapter 9: Control System: Traffic Management   
    Chapter 10: Artificial Intelligence: Cryptanalysis   
    Chapter 11: Data Acquisition: Weather Monitoring Station  
    Chapter 12: Web Application: Vacation Tracking System    
    Appendix A: Object-Oriented Programming Languages 
    Appendix B: Further Reading   
    Notes   
    Glossary   
    Classified Bibliography   
    Index   

    Table of Contents

    1. Copyright
      1. Dedication
    2. The Addison-Wesley Object Technology Series
      1. The Component Software Series
    3. Sidebars
    4. Preface
      1. Changes to the Second Edition
      2. Goals
      3. Audience
      4. Structure
        1. Concepts
        2. Method
        3. Applications
        4. Supplemental Material
        5. A Note about Tools
      5. Using This Book
    5. Acknowledgments
    6. About the Authors
    7. I. Concepts
      1. 1. Complexity
        1. 1.1. The Structure of Complex Systems
          1. The Structure of a Personal Computer
          2. The Structure of Plants and Animals
          3. The Structure of Matter
          4. The Structure of Social Institutions
        2. 1.2. The Inherent Complexity of Software
          1. Defining Software Complexity
          2. Why Software Is Inherently Complex
            1. The Complexity of the Problem Domain
            2. The Difficulty of Managing the Development Process
            3. The Flexibility Possible through Software
            4. The Problems of Characterizing the Behavior of Discrete Systems
        3. 1.3. The Five Attributes of a Complex System
          1. Hierarchic Structure
          2. Relative Primitives
          3. Separation of Concerns
          4. Common Patterns
          5. Stable Intermediate Forms
        4. 1.4. Organized and Disorganized Complexity
          1. The Canonical Form of a Complex System
          2. The Limitations of the Human Capacity for Dealing with Complexity
        5. 1.5. Bringing Order to Chaos
          1. The Role of Decomposition
            1. Algorithmic Decomposition
            2. Object-Oriented Decomposition
            3. Algorithmic versus Object-Oriented Decomposition
          2. The Role of Abstraction
          3. The Role of Hierarchy
        6. 1.6. On Designing Complex Systems
          1. Engineering as a Science and an Art
          2. The Meaning of Design
            1. The Importance of Model Building
            2. The Elements of Software Design Methodologies
            3. The Models of Object-Oriented Development
        7. Summary
      2. 2. The Object Model
        1. 2.1. The Evolution of the Object Model
          1. The Generations of Programming Languages
          2. The Topology of First- and Early Second-Generation Programming Languages
          3. The Topology of Late Second- and Early Third-Generation Programming Languages
          4. The Topology of Late Third-Generation Programming Languages
          5. The Topology of Object-Based and Object-Oriented Programming Languages
        2. 2.2. Foundations of the Object Model
          1. Object-Oriented Programming
          2. Object-Oriented Design
          3. Object-Oriented Analysis
        3. 2.3. Elements of the Object Model
          1. The Meaning of Abstraction
            1. Examples of Abstraction
          2. The Meaning of Encapsulation
            1. Examples of Encapsulation
          3. The Meaning of Modularity
            1. Examples of Modularity
          4. The Meaning of Hierarchy
            1. Examples of Hierarchy: Single Inheritance
            2. Examples of Hierarchy: Multiple Inheritance
            3. Examples of Hierarchy: Aggregation
          5. The Meaning of Typing
            1. Examples of Typing: Static and Dynamic Typing
          6. The Meaning of Concurrency
            1. Examples of Concurrency
            2. The Meaning of Persistence
        4. 2.4. Applying the Object Model
          1. Benefits of the Object Model
          2. Open Issues
        5. Summary
      3. 3. Classes and Objects
        1. 3.1. The Nature of an Object
          1. What Is and What Isn’t an Object
          2. State
          3. Behavior
            1. Operations
            2. Roles and Responsibilities
            3. Objects as Machines
          4. Identity
        2. 3.2. Relationships among Objects
          1. Links
            1. Visibility
            2. Synchronization
          2. Aggregation
        3. 3.3. The Nature of a Class
          1. What Is and What Isn’t a Class
          2. Interface and Implementation
          3. Class Lifecycle
        4. 3.4. Relationships among Classes
          1. Association
            1. Semantic Dependencies
            2. Multiplicity
          2. Inheritance
            1. Single Inheritance
            2. Polymorphism
            3. Multiple Inheritance
          3. Aggregation
            1. Physical Containment
          4. Dependencies
        5. 3.5. The Interplay of Classes and Objects
          1. Relationships between Classes and Objects
          2. The Role of Classes and Objects in Analysis and Design
        6. 3.6. On Building Quality Classes and Objects
          1. Measuring the Quality of an Abstraction
          2. Choosing Operations
            1. Functional Semantics
            2. Time and Space Semantics
          3. Choosing Relationships
            1. The Law of Demeter
            2. Mechanisms and Visibility
          4. Choosing Implementations
            1. Representation
            2. Packaging
        7. Summary
      4. 4. Classification
        1. 4.1. The Importance of Proper Classification
          1. The Difficulty of Classification
          2. The Incremental and Iterative Nature of Classification
        2. 4.2. Identifying Classes and Objects
          1. Classical and Modern Approaches
            1. Classical Categorization
            2. Conceptual Clustering
            3. Prototype Theory
            4. Applying Classical and Modern Theories
          2. Object-Oriented Analysis
            1. Classical Approaches
            2. Behavior Analysis
            3. Domain Analysis
            4. Use Case Analysis
            5. CRC Cards
            6. Informal English Description
            7. Structured Analysis
        3. 4.3. Key Abstractions and Mechanisms
          1. Identifying Key Abstractions
            1. Refining Key Abstractions
            2. Naming Key Abstractions
          2. Identifying Mechanisms
            1. Mechanisms as Patterns
            2. Examples of Mechanisms
        4. Summary
    8. II. Method
      1. 5. Notation
        1. 5.1. The Unified Modeling Language
          1. A Brief Historical Perspective
          2. Models and Multiple Views
          3. Diagram Taxonomy
            1. Structure Diagrams
            2. Behavior Diagrams
          4. The Use of Diagrams in Practice
          5. Conceptual, Logical, and Physical Models
          6. The Role of Tools
          7. The Products of Object-Oriented Development
          8. Scaling Up and Scaling Down
          9. The Syntax and Semantics of the UML
          10. UML 2.0 Information Sources
        2. 5.2. Package Diagrams
          1. Essentials: The Package Notation
          2. Essentials: Visibility of Elements
          3. Essentials: The Dependency Relationship
          4. Essentials: Package Diagrams
          5. Advanced Concepts: Import and Access
        3. 5.3. Component Diagrams
          1. Essentials: The Component Notation
          2. Essentials: The Component Diagram
          3. Essentials: Component Interfaces
          4. Essentials: Component Realizations
          5. Advanced Concepts: A Component’s Internal Structure
        4. 5.4. Deployment Diagrams
          1. Essentials: The Artifact Notation
          2. Essentials: The Node Notation
          3. Essentials: The Deployment Diagram
        5. 5.5. Use Case Diagrams
          1. Essentials: Actors
          2. Essentials: Use Cases
          3. Essentials: The Use Case Diagram
            1. Specifying Use Case Details
            2. An Example Use Case Specification
              1. Use Case Specification
          4. Advanced Concepts: «include» and «extend» Relationships
            1. «include» Relationships
            2. «extend» Relationships
            3. The Dangers of «include» and «extend» Relationships
          5. Advanced Concepts: Generalization
        6. 5.6. Activity Diagrams
          1. Essentials: Actions
          2. Essentials: Starting and Stopping
          3. Essentials: Decision and Merge Nodes
          4. Essentials: Partitions
          5. Advanced Concepts: Forks, Joins, and Concurrency
          6. Advanced Concepts: Object Flows
          7. Advanced Concepts: Additional Elements
        7. 5.7. Class Diagrams
          1. Essentials: The Class Notation
          2. Essentials: Class Relationships
          3. Advanced Concepts: Template (Parameterized) Classes
          4. Advanced Concepts: Visibility
          5. Advanced Concepts: Association End Names and Qualifiers
          6. Advanced Concepts: Constraints
          7. Advanced Concepts: Association Classes and Notes
        8. 5.8. Sequence Diagrams
          1. Essentials: Objects and Interactions
          2. Essentials: Lifelines and Messages
          3. Advanced Concepts: Destruction Events
          4. Advanced Concepts: Execution Specification
          5. Advanced Concepts: Interaction Use
          6. Advanced Concepts: Control Constructs
        9. 5.9. Interaction Overview Diagrams
          1. Essentials: Frames
          2. Essentials: Flow of Control Elements
          3. Essentials: Interaction Diagram Elements
        10. 5.10. Composite Structure Diagrams
          1. Essentials: Composite Structure Parts
          2. Essentials: Composite Structure Ports and Interfaces
          3. Essentials: Composite Structure Connectors
          4. Advanced Concepts: Collaborations
        11. 5.11. State Machine Diagrams
          1. Essentials: Initial, Final, and Simple States
          2. Essentials: Transitions and Events
          3. Advanced Concepts: State Activities—Entry, Do, and Exit Activities
          4. Advanced Concepts: Controlling Transitions
          5. Advanced Concepts: Composite States and Nested States
          6. Advanced Concepts: Concurrency and Control
          7. Advanced Concepts: Submachine State
          8. Advanced Concepts: Additional State Machine Diagram Elements
        12. 5.12. Timing Diagrams
          1. Essentials: More of the Same
          2. Essentials: Layout
          3. Essentials: Events
          4. Essentials: Constraints
          5. Advanced Concepts: Alternate Representations
          6. Advanced Concepts: Events versus Messages
        13. 5.13. Object Diagrams
          1. Essentials: Objects
          2. Essentials: Object Relationships
          3. Advanced Concepts: End Names and Qualifiers
        14. 5.14. Communication Diagrams
          1. Essentials: Objects, Links, and Messages
          2. Essentials: Sequence Expressions
          3. Advanced Concepts: Messages and Synchronization
          4. Advanced Concepts: Iteration Clauses and Guards
        15. Summary
      2. 6. Process
        1. 6.1. First Principles
          1. Traits of Successful Projects
            1. Strong Architectural Vision
            2. Iterative and Incremental Lifecycle
          2. Toward a Rational Development Process
        2. 6.2. The Macro Process: The Software Development Lifecycle
          1. Overview
          2. The Macro Process Content Dimension—Disciplines
          3. The Macro Process Time Dimension—Milestones and Phases
            1. Inception
              1. Purpose
              2. Activities
              3. Work Products
              4. Milestone: Scope Is Understood
            2. Elaboration
              1. Purpose
              2. Activities
              3. Work Products
              4. Milestone: Architecture Is Stable
            3. Construction
              1. Purpose
              2. Activities
              3. Work Products
              4. Milestone: System Is Ready for End-User Testing
            4. Transition
              1. Purpose
              2. Activities
              3. Work Products
              4. Milestone: System Is Ready to Be Deployed
          4. The Macro Process Time Dimension—Iterations
          5. Release Planning
        3. 6.3. The Micro Process: The Analysis and Design Process
          1. Overview
          2. Levels of Abstraction
          3. Activities
          4. Products
          5. The Micro Process and Levels of Abstraction
          6. Identifying Elements
            1. Products
            2. Steps
            3. Milestones and Measures
          7. Defining Element Collaborations
            1. Products
            2. Steps
              1. Behavior Analysis
              2. Pattern Scavenging
            3. Milestones and Measures
          8. Defining Element Relationships
            1. Products
            2. Steps
            3. Milestones and Measures
          9. Detailing Element Semantics
            1. Products
            2. Steps
            3. Milestones and Measures
        4. Summary
      3. 7. Pragmatics
        1. 7.1. Management and Planning
          1. Risk Management
          2. Task Planning
          3. Development Reviews
        2. 7.2. Staffing
          1. Resource Allocation
          2. Development Team Roles
        3. 7.3. Release Management
          1. Configuration Management and Version Control
          2. Integration
          3. Testing
        4. 7.4. Reuse
          1. Elements of Reuse
          2. Institutionalizing Reuse
        5. 7.5. Quality Assurance and Metrics
          1. Software Quality
          2. Object-Oriented Metrics
        6. 7.6. Documentation
          1. Development Legacy
          2. Documentation Contents
        7. 7.7. Tools
          1. Kinds of Tools
          2. Organizational Implications
        8. 7.8. Special Topics
          1. Domain-Specific Issues
          2. Adopting Object-Oriented Technology
        9. 7.9. The Benefits and Risks of Object-Oriented Development
          1. The Benefits of Object-Oriented Development
          2. The Risks of Object-Oriented Development
        10. Summary
    9. III. Applications
      1. 8. System Architecture: Satellite-Based Navigation
        1. 8.1. Inception
          1. Requirements for the Satellite Navigation System
          2. Defining the Boundaries of the Problem
          3. Determining Mission Use Cases
          4. Determining System Use Cases
        2. 8.2. Elaboration
          1. Developing a Good Architecture
          2. Defining Architectural Development Activities
          3. Validating the Proposed System Architecture
          4. Allocating Nonfunctional Requirements and Specifying Interfaces
          5. Stipulating the System Architecture and Its Deployment
          6. Decomposing the System Architecture
        3. 8.3. Construction
        4. 8.4. Post-Transition
          1. Adding New Functionality
          2. Changing the Target Hardware
      2. 9. Control System: Traffic Management
        1. 9.1. Inception
          1. Requirements for the Train Traffic Management System
          2. Determining System Use Cases
        2. 9.2. Elaboration
          1. Analyzing System Functionality
          2. Defining the TTMS Architecture
          3. From Systems Engineering to Hardware and Software Engineering
          4. Key Abstractions and Mechanisms
        3. 9.3. Construction
          1. Message Passing
          2. Train Schedule Planning
          3. Displaying Information
          4. Sensor Data Acquisition
          5. Release Management
          6. System Architecture
          7. Subsystem Specification
        4. 9.4. Post-Transition
      3. 10. Artificial Intelligence: Cryptanalysis
        1. 10.1. Inception
          1. Cryptanalysis Requirements
          2. Defining the Boundaries of the Problem
          3. The Architecture of the Blackboard Framework
          4. Analysis of Knowledge Sources
        2. 10.2. Elaboration
          1. Blackboard Objects
          2. Dependencies and Affirmations
        3. 10.3. Construction
          1. Designing the Blackboard Objects
          2. Designing the Knowledge Sources
            1. Designing Specialized Knowledge Sources
            2. Generalizing the Knowledge Sources
          3. Designing the Controller
          4. Integrating the Blackboard Framework
            1. Integrating the Topmost Objects
            2. Implementing the Assumption Mechanism
          5. Adding New Knowledge Sources
        4. 10.4. Post-Transition
          1. System Enhancements
          2. Changing the Requirements
      4. 11. Data Acquisition: Weather Monitoring Station
        1. 11.1. Inception
          1. Requirements for the Weather Monitoring Station
          2. Defining the Boundaries of the Problem
          3. Scenarios
        2. 11.2. Elaboration
          1. Weather Monitoring System Use Cases
          2. The Architecture Framework
        3. 11.3. Construction
          1. The Frame Mechanism
          2. Release Planning
          3. The Sensor Mechanism
          4. The Display Mechanism
          5. The User Interface Mechanism
        4. 11.4. Post-Transition
      5. 12. Web Application: Vacation Tracking System
        1. 12.1. Inception
          1. The Requirements
          2. The Use Case Model
        2. 12.2. Elaboration
          1. The Deployment View
          2. The Logical View
          3. The Process View
          4. The Implementation View
          5. The Use Case View
        3. 12.3. Construction
          1. The User Experience Model
          2. The Analysis and Design Models
          3. Entities
            1. Service Data Objects
            2. Primary Key Generation
            3. Finders
          4. Controllers
          5. The Web Pages and the User Interface
            1. Populating Dynamic Content
            2. Invoking Business Logic
        4. 12.4. Transition and Post-Transition
    10. A. Object-Oriented Programming Languages
      1. A.1. Language Evolution
      2. A.2. Smalltalk
        1. Overview
        2. Example
        3. References
      3. A.3. C++
        1. Overview
        2. Example
        3. References
      4. A.4. Java
        1. Overview
        2. Example
        3. References
    11. B. Further Reading
      1. Chapter 1
      2. Chapter 2
      3. Chapter 3
      4. Chapter 4
      5. Chapter 5
      6. Chapter 6
      7. Chapter 7
      8. Chapter 8
      9. Chapter 9
      10. Chapter 10
      11. Chapter 11
      12. Chapter 12
    12. Notes
      1. Preface
      2. Section I: Concepts
      3. Chapter 1: Complexity
      4. Chapter 2: The Object Model
      5. Chapter 3: Classes and Objects
      6. Chapter 4: Classification
      7. Section II: Method
      8. Chapter 5: Notation
      9. Chapter 6: Process
      10. Chapter 7: Pragmatics
      11. Section III: Applications
      12. Chapter 8: System Architecture: Satellite-Based Navigation
      13. Chapter 9: Control System: Traffic Management
      14. Chapter 10: Artificial Intelligence: Cryptanalysis
      15. Chapter 12: Web Application: Vacation Tracking System
      16. Appendix A: Object-Oriented Programming Languages
    13. Glossary
    14. Classified Bibliography
      1. A. Classification
      2. B. Object-Oriented Analysis
      3. C. Object-Oriented Applications
      4. D. Object-Oriented Architectures
      5. E. Object-Oriented Databases
      6. F. Object-Oriented Design
      7. G. Object-Oriented Programming
      8. H. Software Engineering
      9. I. Special References
      10. J. Theory
      11. K. Tools and Environments
      12. L. The Unified Modeling Language
      13. M. Web-Based Modeling