Table of Contents " oreword Preface Acknowledgments PART I Getting Started Chapter 1 Introduction to Software Engineering 1.1 Introduction: Software Engineering Failures 1.2 What Is Software Engineering? 1.2.1 Modeling 1.2.2 Problem Solving 1.2.3 Knowledge Acquisition 1.2.4 Rationale 1.3 Software Engineering Concepts 1 1.3.1 Participants and Roles 1.3.2 Systems and Models 1.3.3 Work Products 1.3.4 Activities, Tasks, and Resources 1.3.5 Functional and Nonfunctional Requirements 1.3.6 Notations, Methods, and Methodologies 1.4 Software Engineering Development Activities 1.4.1 Requirements Elicitation 1.4.2 Analysis 1.4.3 System Design 1.4.4 Object Design 1.4.5 Implementation 1.4.6 Testing 1.5 Managing Software Development 1.5.1 Communication 1.5.2 Rationale Management 1.5.3 Software Configuration Management 1.5.4 Project Management 1.5.5 Software Life Cycle 1.5.6 Putting It All Together 1.6 ARENA Case Study 1.7 Further Reading 1.8 Exercises Chapter 2 Modeling with UML 2.1 Introduction 2.2 An Overview of UML 2.2.1 Use Case Diagrams 2.2.2 Class Diagrams 2.2.3 Interaction Diagrams 2.2.4 State Machine Diagrams 2.2.5 Activity Diagrams 2.3 Modeling Concepts 2.3.1 Systems, Models, and Views 2.3.2 Data Types, Abstract Data Types, and Instances 2.3.3 Classes, Abstract Classes, and Objects 2.3.4 Event Classes, Events, and Messages 2.3.5 Object-Oriented Modeling 2.3.6 Falsification and Prototyping 2.4 A Deeper View into UML 2.4.1 Use Case Diagrams 2.4.2 Class Diagrams 2.4.3 Interaction Diagrams 2.4.4 State Machine Diagrams 2.4.5 Activity Diagrams 2.4.6 Diagram Organization 2.4.7 Diagram Extensions 2.5 Further Readings 2.6 Exercises Chapter 3 Project Organization and Communication 3.1 Introduction: A Rocket Example 3.2 An Overview of Projects 3.3 Project Organization Concepts 3.3.1 Project Organizations 3.3.2 Roles 3.3.3 Tasks and Work Products 3.3.4 Schedule 3.4 Project Communication Concepts 3.4.1 Planned Communication 3.4.2 Unplanned Communication 3.4.3 Communication Mechanisms 3.5 Organizational Activities 3.5.1 Joining a Team 3.5.2 Joining the Communication Infrastructure 3.5.3 Attending Team Status Meetings 3.5.4 Organizing Client and Project Reviews 3.6 Further Readings 3.7 Exercises PART II Dealing with Complexity Chapter 4 Requirements Elicitation 4.1 Introduction: Usability Examples 4.2 An Overview of Requirements Elicitation 4.3 Requirements Elicitation Concepts 4.3.1 Functional Requirements 4.3.2 Nonfunctional Requirements 4.3.3 Completeness, Consistency, Clarity, and Correctness 4.3.4 Realism, Verifiability, and Traceability 4.3.5 Greenfield Engineering, Reengineering, and Interface Engineering 4.4 Requirements Elicitation Activities 4.4.1 Identifying Actors 4.4.2 Identifying Scenarios 4.4.3 Identifying Use Cases 4.4.4 Refining Use Cases 4.4.5 Identifying Relationships among Actors and Use Cases 4.4.6 Identifying Initial Analysis Objects 4.4.7 Identifying Nonfunctional Requirements 4.5 Managing Requirements Elicitation 4.5.1 Negotiating Specifications with Clients: Joint Application Design 4.5.2 Maintaining Traceability 4.5.3 Documenting Requirements Elicitation 4.6 ARENA Case Study 4.6.1 Initial Problem Statement 4.6.2 Identifying Actors and Scenarios 4.6.3 Identifying Use Cases 4.6.4 Refining Use Cases and Identifying Relationships 4.6.5 Identifying Nonfunctional Requirements 4.6.6 Lessons Learned 4.7 Further Readings 4.8 Exercises Chapter 5Analysis 5.1 Introduction: An Optical Illusion 5.2 An Overview of Analysis 5.3 Analysis Concepts 5.3.1 Analysis Object Models and Dynamic Models 5.3.2 Entity, Boundary, and Control Objects 5.3.3 Generalization and Specialization 5.4 Analysis Activities: From Use Cases to Objects 5.4.1 Identifying Entity Objects 5.4.2 Identifying Boundary Objects 5.4.3 Identifying Control Objects 5.4.4 Mapping Use Cases to Objects with Sequence Diagrams 5.4.5 Modeling Interactions among Objects with CRC Cards 5.4.6 Identifying Associations 5.4.7 Identifying Aggregates 5.4.8 Identifying Attributes 5.4.9 Modeling State-Dependent Behavior of Individual Objects 5.4.10 Modeling Inheritance Relationships between Objects 5.4.11 Reviewing the Analysis Model 5.4.12 Analysis Summary 5.5 Managing Analysis 5.5.1 Documenting Analysis 5.5.2 Assigning Responsibilities 5.5.3 Communicating about Analysis 5.5.4 Iterating over the Analysis Model 5.5.5 Client Sign-Off 5.6 ARENA Case Study 5.6.1 Identifying Entity Objects 5.6.2 Identifying Boundary Objects 5.6.3 Identifying Control Objects 5.6.4 Modeling Interactions Among Objects 5.6.5 Reviewing and Consolidating the Analysis Model 5.6.6 Lessons Learned 5.7 Further Readings 5.8 Exercises Chapter 6System Design: Decomposing the System 6.1 Introduction: A Floor Plan Example 6.2 An Overview of System Design 6.3 System Design Concepts 6.3.1 Subsystems and Classes 6.3.2 Services and Subsystem Interfaces 6.3.3 Coupling and Cohesion 6.3.4 Layers and Partitions 6.3.5 Architectural Styles 6.4 System Design Activities: From Objects to Subsystems 6.4.1 Starting Point: Analysis Model for a Route Planning System 6.4.2 Identifying Design Goals 6.4.3 Identifying Subsystems 6.5 Further Readings 6.6 Exercises Chapter 7System Design: Addressing Design Goals 7.1 Introduction: A Redundancy Example 7.2 An Overview of System Design Activities 7.3 Concepts: UML Deployment Diagrams 7.4 System Design Activities: Addressing Design Goals 7.4.1 Mapping Subsystems to Processors and Components 7.4.2 Identifying and Storing Persistent Data 7.4.3 Providing Access Control 7.4.4 Designing the Global Control Flow 7.4.5 Identifying Services 7.4.6 Identifying Boundary Conditions 7.4.7 Reviewing System Design 7.5 Managing System Design 7.5.1 Documenting System Design 7.5.2 Assigning Responsibilities 7.5.3 Communicating about System Design 7.5.4 Iterating over the System Design 7.6 ARENA Case Study 7.6.1 Identifying Design Goals 7.6.2 Identifying Subsystems 7.6.3 Mapping Subsystems to Processors and Components 7.6.4 Identifying and Storing Persistent Data 7.6.5 Providing Access Control 7.6.6 Designing the Global Control Flow 7.6.7 Identifying Services 7.6.8 Identifying Boundary Conditions 7.6.9 Lessons Learned 7.7 Further Readings 7.8 Exercises Chapter 8Object Design: Reusing Pattern Solutions 8.1 Introduction: Bloopers 8.2 An Overview of Object Design 8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns 8.3.1 Application Objects and Solution Objects 8.3.2 Specification Inheritance and Implementation Inheritance 8.3.3 Delegation 8.3.4 The Liskov Substitution Principle 8.3.5 Delegation and Inheritance in Design Patterns 8.4 Reuse Activities: Selecting Design Patterns and Components 8.4.1 Encapsulating Data Stores with the Bridge Pattern 8.4.2 Encapsulating Legacy Components with the Adapter Pattern 8.4.3 Encapsulating Context with the Strategy Pattern 8.4.4 Encapsulating Platforms with the Abstract Factory Pattern 8.4.5 Encapsulating Control Flow with the Command Pattern 8.4.6 Encapsulating Hierarchies with the Composite Design Pattern 8.4.7 Heuristics for Selecting Design Patterns 8.4.8 Identifying and Adjusting Application Frameworks 8.5 Managing Reuse 8.5.1 Documenting Reuse 8.5.2 Assigning Responsibilities 8.6 ARENA Case Study 8.6.1 Applying the Abstract Factory Design Pattern 8.6.2 Applying the.
Table of Contents " oreword Preface Acknowledgments PART I Getting Started Chapter 1 Introduction to Software Engineering 1.1 Introduction: Software Engineering Failures 1.2 What Is Software Engineering? 1.2.1 Modeling 1.2.2 Problem Solving 1.2.3 Knowledge Acquisition 1.2.4 Rationale 1.3 Software Engineering Concepts 1 1.3.1 Participants and Roles 1.3.2 Systems and Models 1.3.3 Work Products 1.3.4 Activities, Tasks, and Resources 1.3.5 Functional and Nonfunctional Requirements 1.3.6 Notations, Methods, and Methodologies 1.4 Software Engineering Development Activities 1.4.1 Requirements Elicitation 1.4.2 Analysis 1.4.3 System Design 1.4.4 Object Design 1.4.5 Implementation 1.4.6 Testing 1.5 Managing Software Development 1.5.1 Communication 1.5.2 Rationale Management 1.5.3 Software Configuration Management 1.5.4 Project Management 1.5.5 Software Life Cycle 1.5.6 Putting It All Together 1.6 ARENA Case Study 1.7 Further Reading 1.8 Exercises Chapter 2 Modeling with UML 2.1 Introduction 2.2 An Overview of UML 2.2.1 Use Case Diagrams 2.2.2 Class Diagrams 2.2.3 Interaction Diagrams 2.2.4 State Machine Diagrams 2.2.5 Activity Diagrams 2.3 Modeling Concepts 2.3.1 Systems, Models, and Views 2.3.2 Data Types, Abstract Data Types, and Instances 2.3.3 Classes, Abstract Classes, and Objects 2.3.4 Event Classes, Events, and Messages 2.3.5 Object-Oriented Modeling 2.3.6 Falsification and Prototyping 2.4 A Deeper View into UML 2.4.1 Use Case Diagrams 2.4.2 Class Diagrams 2.4.3 Interaction Diagrams 2.4.4 State Machine Diagrams 2.4.5 Activity Diagrams 2.4.6 Diagram Organization 2.4.7 Diagram Extensions 2.5 Further Readings 2.6 Exercises Chapter 3 Project Organization and Communication 3.1 Introduction: A Rocket Example 3.2 An Overview of Projects 3.3 Project Organization Concepts 3.3.1 Project Organizations 3.3.2 Roles 3.3.3 Tasks and Work Products 3.3.4 Schedule 3.4 Project Communication Concepts 3.4.1 Planned Communication 3.4.2 Unplanned Communication 3.4.3 Communication Mechanisms 3.5 Organizational Activities 3.5.1 Joining a Team 3.5.2 Joining the Communication Infrastructure 3.5.3 Attending Team Status Meetings 3.5.4 Organizing Client and Project Reviews 3.6 Further Readings 3.7 Exercises PART II Dealing with Complexity Chapter 4 Requirements Elicitation 4.1 Introduction: Usability Examples 4.2 An Overview of Requirements Elicitation 4.3 Requirements Elicitation Concepts 4.3.1 Functional Requirements 4.3.2 Nonfunctional Requirements 4.3.3 Completeness, Consistency, Clarity, and Correctness 4.3.4 Realism, Verifiability, and Traceability 4.3.5 Greenfield Engineering, Reengineering, and Interface Engineering 4.4 Requirements Elicitation Activities 4.4.1 Identifying Actors 4.4.2 Identifying Scenarios 4.4.3 Identifying Use Cases 4.4.4 Refining Use Cases 4.4.5 Identifying Relationships among Actors and Use Cases 4.4.6 Identifying Initial Analysis Objects 4.4.7 Identifying Nonfunctional Requirements 4.5 Managing Requirements Elicitation 4.5.1 Negotiating Specifications with Clients: Joint Application Design 4.5.2 Maintaining Traceability 4.5.3 Documenting Requirements Elicitation 4.6 ARENA Case Study 4.6.1 Initial Problem Statement 4.6.2 Identifying Actors and Scenarios 4.6.3 Identifying Use Cases 4.6.4 Refining Use Cases and Identifying Relationships 4.6.5 Identifying Nonfunctional Requirements 4.6.6 Lessons Learned 4.7 Further Readings 4.8 Exercises Chapter 5Analysis 5.1 Introduction: An Optical Illusion 5.2 An Overview of Analysis 5.3 Analysis Concepts 5.3.1 Analysis Object Models and Dynamic Models 5.3.2 Entity, Boundary, and Control Objects 5.3.3 Generalization and Specialization 5.4 Analysis Activities: From Use Cases to Objects 5.4.1 Identifying Entity Objects 5.4.2 Identifying Boundary Objects 5.4.3 Identifying Control Objects 5.4.4 Mapping Use Cases to Objects with Sequence Diagrams 5.4.5 Modeling Interactions among Objects with CRC Cards 5.4.6 Identifying Associations 5.4.7 Identifying Aggregates 5.4.8 Identifying Attributes 5.4.9 Modeling State-Dependent Behavior of Individual Objects 5.4.10 Modeling Inheritance Relationships between Objects 5.4.11 Reviewing the Analysis Model 5.4.12 Analysis Summary 5.5 Managing Analysis 5.5.1 Documenting Analysis 5.5.2 Assigning Responsibilities 5.5.3 Communicating about Analysis 5.5.4 Iterating over the Analysis Model 5.5.5 Client Sign-Off 5.6 ARENA Case Study 5.6.1 Identifying Entity Objects 5.6.2 Identifying Boundary Objects 5.6.3 Identifying Control Objects 5.6.4 Modeling Interactions Among Objects 5.6.5 Reviewing and Consolidating the Analysis Model 5.6.6 Lessons Learned 5.7 Further Readings 5.8 Exercises Chapter 6System Design: Decomposing the System 6.1 Introduction: A Floor Plan Example 6.2 An Overview of System Design 6.3 System Design Concepts 6.3.1 Subsystems and Classes 6.3.2 Services and Subsystem Interfaces 6.3.3 Coupling and Cohesion 6.3.4 Layers and Partitions 6.3.5 Architectural Styles 6.4 System Design Activities: From Objects to Subsystems 6.4.1 Starting Point: Analysis Model for a Route Planning System 6.4.2 Identifying Design Goals 6.4.3 Identifying Subsystems 6.5 Further Readings 6.6 Exercises Chapter 7System Design: Addressing Design Goals 7.1 Introduction: A Redundancy Example 7.2 An Overview of System Design Activities 7.3 Concepts: UML Deployment Diagrams 7.4 System Design Activities: Addressing Design Goals 7.4.1 Mapping Subsystems to Processors and Components 7.4.2 Identifying and Storing Persistent Data 7.4.3 Providing Access Control 7.4.4 Designing the Global Control Flow 7.4.5 Identifying Services 7.4.6 Identifying Boundary Conditions 7.4.7 Reviewing System Design 7.5 Managing System Design 7.5.1 Documenting System Design 7.5.2 Assigning Responsibilities 7.5.3 Communicating about System Design 7.5.4 Iterating over the System Design 7.6 ARENA Case Study 7.6.1 Identifying Design Goals 7.6.2 Identifying Subsystems 7.6.3 Mapping Subsystems to Processors and Components 7.6.4 Identifying and Storing Persistent Data 7.6.5 Providing Access Control 7.6.6 Designing the Global Control Flow 7.6.7 Identifying Services 7.6.8 Identifying Boundary Conditions 7.6.9 Lessons Learned 7.7 Further Readings 7.8 Exercises Chapter 8Object Design: Reusing Pattern Solutions 8.1 Introduction: Bloopers 8.2 An Overview of Object Design 8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns 8.3.1 Application Objects and Solution Objects 8.3.2 Specification Inheritance and Implementation Inheritance 8.3.3 Delegation 8.3.4 The Liskov Substitution Principle 8.3.5 Delegation and Inheritance in Design Patterns 8.4 Reuse Activities: Selecting Design Patterns and Components 8.4.1 Encapsulating Data Stores with the Bridge Pattern 8.4.2 Encapsulating Legacy Components with the Adapter Pattern 8.4.3 Encapsulating Context with the Strategy Pattern 8.4.4 Encapsulating Platforms with the Abstract Factory Pattern 8.4.5 Encapsulating Control Flow with the Command Pattern 8.4.6 Encapsulating Hierarchies with the Composite Design Pattern 8.4.7 Heuristics for Selecting Design Patterns 8.4.8 Identifying and Adjusting Application Frameworks 8.5 Managing Reuse 8.5.1 Documenting Reuse 8.5.2 Assigning Responsibilities 8.6 ARENA Case Study 8.6.1 Applying the Abstract Factory Design Pattern 8.6.2 Applying the.
in 1 offers
Table of Contents " oreword Preface Acknowledgments PART I Getting Started Chapter 1 Introduction to Software Engineering 1.1 Introduction: Software Engineering Failures 1.2 What Is Software Engineering? 1.2.1 Modeling 1.2.2 Problem Solving 1.2.3 Knowledge Acquisition 1.2.4 Rationale 1.3 Software Engineering Concepts 1 1.3.1 Participants and Roles 1.3.2 Systems and Models 1.3.3 Work Products 1.3.4 Activities, Tasks, and Resources 1.3.5 Functional and Nonfunctional Requirements 1.3.6 Notations, Methods, and Methodologies 1.4 Software Engineering Development Activities 1.4.1 Requirements Elicitation 1.4.2 Analysis 1.4.3 System Design 1.4.4 Object Design 1.4.5 Implementation 1.4.6 Testing 1.5 Managing Software Development 1.5.1 Communication 1.5.2 Rationale Management 1.5.3 Software Configuration Management 1.5.4 Project Management 1.5.5 Software Life Cycle 1.5.6 Putting It All Together 1.6 ARENA Case Study 1.7 Further Reading 1.8 Exercises Chapter 2 Modeling with UML 2.1 Introduction 2.2 An Overview of UML 2.2.1 Use Case Diagrams 2.2.2 Class Diagrams 2.2.3 Interaction Diagrams 2.2.4 State Machine Diagrams 2.2.5 Activity Diagrams 2.3 Modeling Concepts 2.3.1 Systems, Models, and Views 2.3.2 Data Types, Abstract Data Types, and Instances 2.3.3 Classes, Abstract Classes, and Objects 2.3.4 Event Classes, Events, and Messages 2.3.5 Object-Oriented Modeling 2.3.6 Falsification and Prototyping 2.4 A Deeper View into UML 2.4.1 Use Case Diagrams 2.4.2 Class Diagrams 2.4.3 Interaction Diagrams 2.4.4 State Machine Diagrams 2.4.5 Activity Diagrams 2.4.6 Diagram Organization 2.4.7 Diagram Extensions 2.5 Further Readings 2.6 Exercises Chapter 3 Project Organization and Communication 3.1 Introduction: A Rocket Example 3.2 An Overview of Projects 3.3 Project Organization Concepts 3.3.1 Project Organizations 3.3.2 Roles 3.3.3 Tasks and Work Products 3.3.4 Schedule 3.4 Project Communication Concepts 3.4.1 Planned Communication 3.4.2 Unplanned Communication 3.4.3 Communication Mechanisms 3.5 Organizational Activities 3.5.1 Joining a Team 3.5.2 Joining the Communication Infrastructure 3.5.3 Attending Team Status Meetings 3.5.4 Organizing Client and Project Reviews 3.6 Further Readings 3.7 Exercises PART II Dealing with Complexity Chapter 4 Requirements Elicitation 4.1 Introduction: Usability Examples 4.2 An Overview of Requirements Elicitation 4.3 Requirements Elicitation Concepts 4.3.1 Functional Requirements 4.3.2 Nonfunctional Requirements 4.3.3 Completeness, Consistency, Clarity, and Correctness 4.3.4 Realism, Verifiability, and Traceability 4.3.5 Greenfield Engineering, Reengineering, and Interface Engineering 4.4 Requirements Elicitation Activities 4.4.1 Identifying Actors 4.4.2 Identifying Scenarios 4.4.3 Identifying Use Cases 4.4.4 Refining Use Cases 4.4.5 Identifying Relationships among Actors and Use Cases 4.4.6 Identifying Initial Analysis Objects 4.4.7 Identifying Nonfunctional Requirements 4.5 Managing Requirements Elicitation 4.5.1 Negotiating Specifications with Clients: Joint Application Design 4.5.2 Maintaining Traceability 4.5.3 Documenting Requirements Elicitation 4.6 ARENA Case Study 4.6.1 Initial Problem Statement 4.6.2 Identifying Actors and Scenarios 4.6.3 Identifying Use Cases 4.6.4 Refining Use Cases and Identifying Relationships 4.6.5 Identifying Nonfunctional Requirements 4.6.6 Lessons Learned 4.7 Further Readings 4.8 Exercises Chapter 5Analysis 5.1 Introduction: An Optical Illusion 5.2 An Overview of Analysis 5.3 Analysis Concepts 5.3.1 Analysis Object Models and Dynamic Models 5.3.2 Entity, Boundary, and Control Objects 5.3.3 Generalization and Specialization 5.4 Analysis Activities: From Use Cases to Objects 5.4.1 Identifying Entity Objects 5.4.2 Identifying Boundary Objects 5.4.3 Identifying Control Objects 5.4.4 Mapping Use Cases to Objects with Sequence Diagrams 5.4.5 Modeling Interactions among Objects with CRC Cards 5.4.6 Identifying Associations 5.4.7 Identifying Aggregates 5.4.8 Identifying Attributes 5.4.9 Modeling State-Dependent Behavior of Individual Objects 5.4.10 Modeling Inheritance Relationships between Objects 5.4.11 Reviewing the Analysis Model 5.4.12 Analysis Summary 5.5 Managing Analysis 5.5.1 Documenting Analysis 5.5.2 Assigning Responsibilities 5.5.3 Communicating about Analysis 5.5.4 Iterating over the Analysis Model 5.5.5 Client Sign-Off 5.6 ARENA Case Study 5.6.1 Identifying Entity Objects 5.6.2 Identifying Boundary Objects 5.6.3 Identifying Control Objects 5.6.4 Modeling Interactions Among Objects 5.6.5 Reviewing and Consolidating the Analysis Model 5.6.6 Lessons Learned 5.7 Further Readings 5.8 Exercises Chapter 6System Design: Decomposing the System 6.1 Introduction: A Floor Plan Example 6.2 An Overview of System Design 6.3 System Design Concepts 6.3.1 Subsystems and Classes 6.3.2 Services and Subsystem Interfaces 6.3.3 Coupling and Cohesion 6.3.4 Layers and Partitions 6.3.5 Architectural Styles 6.4 System Design Activities: From Objects to Subsystems 6.4.1 Starting Point: Analysis Model for a Route Planning System 6.4.2 Identifying Design Goals 6.4.3 Identifying Subsystems 6.5 Further Readings 6.6 Exercises Chapter 7System Design: Addressing Design Goals 7.1 Introduction: A Redundancy Example 7.2 An Overview of System Design Activities 7.3 Concepts: UML Deployment Diagrams 7.4 System Design Activities: Addressing Design Goals 7.4.1 Mapping Subsystems to Processors and Components 7.4.2 Identifying and Storing Persistent Data 7.4.3 Providing Access Control 7.4.4 Designing the Global Control Flow 7.4.5 Identifying Services 7.4.6 Identifying Boundary Conditions 7.4.7 Reviewing System Design 7.5 Managing System Design 7.5.1 Documenting System Design 7.5.2 Assigning Responsibilities 7.5.3 Communicating about System Design 7.5.4 Iterating over the System Design 7.6 ARENA Case Study 7.6.1 Identifying Design Goals 7.6.2 Identifying Subsystems 7.6.3 Mapping Subsystems to Processors and Components 7.6.4 Identifying and Storing Persistent Data 7.6.5 Providing Access Control 7.6.6 Designing the Global Control Flow 7.6.7 Identifying Services 7.6.8 Identifying Boundary Conditions 7.6.9 Lessons Learned 7.7 Further Readings 7.8 Exercises Chapter 8Object Design: Reusing Pattern Solutions 8.1 Introduction: Bloopers 8.2 An Overview of Object Design 8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns 8.3.1 Application Objects and Solution Objects 8.3.2 Specification Inheritance and Implementation Inheritance 8.3.3 Delegation 8.3.4 The Liskov Substitution Principle 8.3.5 Delegation and Inheritance in Design Patterns 8.4 Reuse Activities: Selecting Design Patterns and Components 8.4.1 Encapsulating Data Stores with the Bridge Pattern 8.4.2 Encapsulating Legacy Components with the Adapter Pattern 8.4.3 Encapsulating Context with the Strategy Pattern 8.4.4 Encapsulating Platforms with the Abstract Factory Pattern 8.4.5 Encapsulating Control Flow with the Command Pattern 8.4.6 Encapsulating Hierarchies with the Composite Design Pattern 8.4.7 Heuristics for Selecting Design Patterns 8.4.8 Identifying and Adjusting Application Frameworks 8.5 Managing Reuse 8.5.1 Documenting Reuse 8.5.2 Assigning Responsibilities 8.6 ARENA Case Study 8.6.1 Applying the Abstract Factory Design Pattern 8.6.2 Applying the.
Table of Contents " oreword Preface Acknowledgments PART I Getting Started Chapter 1 Introduction to Software Engineering 1.1 Introduction: Software Engineering Failures 1.2 What Is Software Engineering? 1.2.1 Modeling 1.2.2 Problem Solving 1.2.3 Knowledge Acquisition 1.2.4 Rationale 1.3 Software Engineering Concepts 1 1.3.1 Participants and Roles 1.3.2 Systems and Models 1.3.3 Work Products 1.3.4 Activities, Tasks, and Resources 1.3.5 Functional and Nonfunctional Requirements 1.3.6 Notations, Methods, and Methodologies 1.4 Software Engineering Development Activities 1.4.1 Requirements Elicitation 1.4.2 Analysis 1.4.3 System Design 1.4.4 Object Design 1.4.5 Implementation 1.4.6 Testing 1.5 Managing Software Development 1.5.1 Communication 1.5.2 Rationale Management 1.5.3 Software Configuration Management 1.5.4 Project Management 1.5.5 Software Life Cycle 1.5.6 Putting It All Together 1.6 ARENA Case Study 1.7 Further Reading 1.8 Exercises Chapter 2 Modeling with UML 2.1 Introduction 2.2 An Overview of UML 2.2.1 Use Case Diagrams 2.2.2 Class Diagrams 2.2.3 Interaction Diagrams 2.2.4 State Machine Diagrams 2.2.5 Activity Diagrams 2.3 Modeling Concepts 2.3.1 Systems, Models, and Views 2.3.2 Data Types, Abstract Data Types, and Instances 2.3.3 Classes, Abstract Classes, and Objects 2.3.4 Event Classes, Events, and Messages 2.3.5 Object-Oriented Modeling 2.3.6 Falsification and Prototyping 2.4 A Deeper View into UML 2.4.1 Use Case Diagrams 2.4.2 Class Diagrams 2.4.3 Interaction Diagrams 2.4.4 State Machine Diagrams 2.4.5 Activity Diagrams 2.4.6 Diagram Organization 2.4.7 Diagram Extensions 2.5 Further Readings 2.6 Exercises Chapter 3 Project Organization and Communication 3.1 Introduction: A Rocket Example 3.2 An Overview of Projects 3.3 Project Organization Concepts 3.3.1 Project Organizations 3.3.2 Roles 3.3.3 Tasks and Work Products 3.3.4 Schedule 3.4 Project Communication Concepts 3.4.1 Planned Communication 3.4.2 Unplanned Communication 3.4.3 Communication Mechanisms 3.5 Organizational Activities 3.5.1 Joining a Team 3.5.2 Joining the Communication Infrastructure 3.5.3 Attending Team Status Meetings 3.5.4 Organizing Client and Project Reviews 3.6 Further Readings 3.7 Exercises PART II Dealing with Complexity Chapter 4 Requirements Elicitation 4.1 Introduction: Usability Examples 4.2 An Overview of Requirements Elicitation 4.3 Requirements Elicitation Concepts 4.3.1 Functional Requirements 4.3.2 Nonfunctional Requirements 4.3.3 Completeness, Consistency, Clarity, and Correctness 4.3.4 Realism, Verifiability, and Traceability 4.3.5 Greenfield Engineering, Reengineering, and Interface Engineering 4.4 Requirements Elicitation Activities 4.4.1 Identifying Actors 4.4.2 Identifying Scenarios 4.4.3 Identifying Use Cases 4.4.4 Refining Use Cases 4.4.5 Identifying Relationships among Actors and Use Cases 4.4.6 Identifying Initial Analysis Objects 4.4.7 Identifying Nonfunctional Requirements 4.5 Managing Requirements Elicitation 4.5.1 Negotiating Specifications with Clients: Joint Application Design 4.5.2 Maintaining Traceability 4.5.3 Documenting Requirements Elicitation 4.6 ARENA Case Study 4.6.1 Initial Problem Statement 4.6.2 Identifying Actors and Scenarios 4.6.3 Identifying Use Cases 4.6.4 Refining Use Cases and Identifying Relationships 4.6.5 Identifying Nonfunctional Requirements 4.6.6 Lessons Learned 4.7 Further Readings 4.8 Exercises Chapter 5Analysis 5.1 Introduction: An Optical Illusion 5.2 An Overview of Analysis 5.3 Analysis Concepts 5.3.1 Analysis Object Models and Dynamic Models 5.3.2 Entity, Boundary, and Control Objects 5.3.3 Generalization and Specialization 5.4 Analysis Activities: From Use Cases to Objects 5.4.1 Identifying Entity Objects 5.4.2 Identifying Boundary Objects 5.4.3 Identifying Control Objects 5.4.4 Mapping Use Cases to Objects with Sequence Diagrams 5.4.5 Modeling Interactions among Objects with CRC Cards 5.4.6 Identifying Associations 5.4.7 Identifying Aggregates 5.4.8 Identifying Attributes 5.4.9 Modeling State-Dependent Behavior of Individual Objects 5.4.10 Modeling Inheritance Relationships between Objects 5.4.11 Reviewing the Analysis Model 5.4.12 Analysis Summary 5.5 Managing Analysis 5.5.1 Documenting Analysis 5.5.2 Assigning Responsibilities 5.5.3 Communicating about Analysis 5.5.4 Iterating over the Analysis Model 5.5.5 Client Sign-Off 5.6 ARENA Case Study 5.6.1 Identifying Entity Objects 5.6.2 Identifying Boundary Objects 5.6.3 Identifying Control Objects 5.6.4 Modeling Interactions Among Objects 5.6.5 Reviewing and Consolidating the Analysis Model 5.6.6 Lessons Learned 5.7 Further Readings 5.8 Exercises Chapter 6System Design: Decomposing the System 6.1 Introduction: A Floor Plan Example 6.2 An Overview of System Design 6.3 System Design Concepts 6.3.1 Subsystems and Classes 6.3.2 Services and Subsystem Interfaces 6.3.3 Coupling and Cohesion 6.3.4 Layers and Partitions 6.3.5 Architectural Styles 6.4 System Design Activities: From Objects to Subsystems 6.4.1 Starting Point: Analysis Model for a Route Planning System 6.4.2 Identifying Design Goals 6.4.3 Identifying Subsystems 6.5 Further Readings 6.6 Exercises Chapter 7System Design: Addressing Design Goals 7.1 Introduction: A Redundancy Example 7.2 An Overview of System Design Activities 7.3 Concepts: UML Deployment Diagrams 7.4 System Design Activities: Addressing Design Goals 7.4.1 Mapping Subsystems to Processors and Components 7.4.2 Identifying and Storing Persistent Data 7.4.3 Providing Access Control 7.4.4 Designing the Global Control Flow 7.4.5 Identifying Services 7.4.6 Identifying Boundary Conditions 7.4.7 Reviewing System Design 7.5 Managing System Design 7.5.1 Documenting System Design 7.5.2 Assigning Responsibilities 7.5.3 Communicating about System Design 7.5.4 Iterating over the System Design 7.6 ARENA Case Study 7.6.1 Identifying Design Goals 7.6.2 Identifying Subsystems 7.6.3 Mapping Subsystems to Processors and Components 7.6.4 Identifying and Storing Persistent Data 7.6.5 Providing Access Control 7.6.6 Designing the Global Control Flow 7.6.7 Identifying Services 7.6.8 Identifying Boundary Conditions 7.6.9 Lessons Learned 7.7 Further Readings 7.8 Exercises Chapter 8Object Design: Reusing Pattern Solutions 8.1 Introduction: Bloopers 8.2 An Overview of Object Design 8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns 8.3.1 Application Objects and Solution Objects 8.3.2 Specification Inheritance and Implementation Inheritance 8.3.3 Delegation 8.3.4 The Liskov Substitution Principle 8.3.5 Delegation and Inheritance in Design Patterns 8.4 Reuse Activities: Selecting Design Patterns and Components 8.4.1 Encapsulating Data Stores with the Bridge Pattern 8.4.2 Encapsulating Legacy Components with the Adapter Pattern 8.4.3 Encapsulating Context with the Strategy Pattern 8.4.4 Encapsulating Platforms with the Abstract Factory Pattern 8.4.5 Encapsulating Control Flow with the Command Pattern 8.4.6 Encapsulating Hierarchies with the Composite Design Pattern 8.4.7 Heuristics for Selecting Design Patterns 8.4.8 Identifying and Adjusting Application Frameworks 8.5 Managing Reuse 8.5.1 Documenting Reuse 8.5.2 Assigning Responsibilities 8.6 ARENA Case Study 8.6.1 Applying the Abstract Factory Design Pattern 8.6.2 Applying the.
Year
Last updated at 05/11/2024 09:30:55
+ $31.13 delivery
Go to store
See 2 more history offers
available about 2 months ago
Low stock
available about 2 months ago
Low stock
Published | United States, 1 October 2009 |
Writer | Bernd Bruegge, Allen H. Dutoit |
Dimensions | 23.5 x 17.9 x 2.7 centimeters (1.15 kg) |
Updated 2 days ago
See 2 more history offers
Published | United States, 1 October 2009 |
Writer | Bernd Bruegge, Allen H. Dutoit |
Dimensions | 23.5 x 17.9 x 2.7 centimeters (1.15 kg) |