Object-oriented software engineering : an agile unified methodology
Publisher: McGraw-Hill
Published: 2014
Number of pages: 720
ISBN-13: 9780073376257
Table of contents: title: Preface
pagenum: xvi; label: Part I
title: Introduction and System Engineering
pagenum: 1; label: Chapter 1
title: Introduction
pagenum: 2; label: 1.1
title: What Is Software Engineering?
pagenum: 2; label: 1.2
title: Why Software Engineering?
pagenum: 3; label: 1.3
title: Software Life-Cycle Activities
pagenum: 4; label: 1.3.1
title: Software Development Process
pagenum: 5; label: 1.3.2
title: Software Quality Assurance
pagenum: 9; label: 1.3.3
title: Software Project Management
pagenum: 10; label: 1.4
title: Object-Oriented Software Engineering
pagenum: 11; label: 1.4.1
title: Object-Oriented Modeling and Design Languages
pagenum: 12; label: 1.4.2
title: Object-Oriented Development Processes
pagenum: 12; label: 1.4.3
title: Object-Oriented Development Methodologies
pagenum: 12; label: 1.4.4
title: Will OO Replace the Conventional Approaches?
pagenum: 13; label: 1.5
title: Software Engineering and Computer Science
pagenum: 13; title: Summary
pagenum: 14; title: Further Reading
pagenum: 15; title: Chapter Review Questions
pagenum: 15; title: Exercises
pagenum: 15; label: Chapter 2
title: Software Process and Methodology
pagenum: 16; label: 2.1
title: Challenges of System Development
pagenum: 17; label: 2.2
title: Software Process
pagenum: 18; label: 2.3
title: Merits and Problems of the Waterfall Process
pagenum: 19; label: 2.4
title: Software Development Is a Wicked Problem
pagenum: 19; label: 2.5
title: Software Process Models
pagenum: 21; label: 2.5.1
title: Prototyping Process
pagenum: 21; label: 2.5.2
title: Evolutionary Process
pagenum: 22; label: 2.5.3
title: Spiral Process
pagenum: 22; label: 2.5.4
title: The Unified Process
pagenum: 23; label: 2.5.5
title: Personal Software Process
pagenum: 25; label: 2.5.6
title: Team Software Process
pagenum: 28; label: 2.5.7
title: Agile Processes
pagenum: 30; label: 2.6
title: Software Development Methodology
pagenum: 37; label: 2.6.1
title: Difference between Process and Methodology
pagenum: 37; label: 2.6.2
title: Benefits of a Methodology
pagenum: 38; label: 2.6.3
title: Structured Methodologies
pagenum: 39; label: 2.6.4
title: Classical OO Methodologies
pagenum: 39; label: 2.7
title: Agile Methods
pagenum: 40; label: 2.7.1
title: Dynamic Systems Development Method
pagenum: 40; label: 2.7.2
title: Scrum
pagenum: 42; label: 2.7.3
title: Feature Driven Development
pagenum: 43; label: 2.7.4
title: Extreme Programming
pagenum: 44; label: 2.7.5
title: Agile or Plan-Driven
pagenum: 44; label: 2.8
title: Overview of Process and Methodology of the Book
pagenum: 45; title: Summary
pagenum: 50; title: Further Reading
pagenum: 51; title: Chapter Review Questions
pagenum: 51; title: Exercises
pagenum: 51; label: Chapter 3
title: System Engineering
pagenum: 53; label: 3.1
title: What Is a System?
pagenum: 54; label: 3.2
title: What Is System Engineering?
pagenum: 55; label: 3.3
title: System Requirements Definition
pagenum: 58; label: 3.3.1
title: Identifying Business Needs
pagenum: 58; label: 3.3.2
title: Defining System Requirements
pagenum: 60; label: 3.4
title: System Architectural Design
pagenum: 60; label: 3.4.1
title: System Decomposition
pagenum: 61; label: 3.4.2
title: Requirements Allocation
pagenum: 64; label: 3.4.3
title: Architectural Design Diagrams
pagenum: 66; label: 3.4.4
title: Specification of Subsystem Functions and Interfaces
pagenum: 70; label: 3.5
title: Subsystems Development
pagenum: 71; label: 3.5.1
title: Object-Oriented Context Diagram
pagenum: 71; label: 3.5.2
title: Usefulness of an Object-Oriented Context Diagram
pagenum: 72; label: 3.5.3
title: Collaboration of Engineering Teams
pagenum: 73; label: 3.6
title: System Integration, Testing, and Deployment
pagenum: 73; label: 3.7
title: System Configuration Management
pagenum: 74; title: Summary
pagenum: 76; title: Further Reading
pagenum: 76; title: Chapter Review Questions
pagenum: 76; title: Exercises
pagenum: 76; label: Part II
title: Analysis and Architectural Design
pagenum: 79; label: Chapter 4
title: Software Requirements Elicitation
pagenum: 80; label: 4.1
title: What Is Requirements Elicitation?
pagenum: 81; label: 4.2
title: Importance of Requirements Elicitation
pagenum: 82; label: 4.3
title: Challenges of Requirements Elicitation
pagenum: 83; label: 4.4
title: Types of Requirement
pagenum: 85; label: 4.5
title: Steps for Requirements Elicitation
pagenum: 86; label: 4.5.1
title: Collecting Information
pagenum: 87; label: 4.5.2
title: Constructing Analysis Models
pagenum: 91; label: 4.5.3
title: Deriving Requirements and Constraints
pagenum: 92; label: 4.5.4
title: Requirements Specification Standards
pagenum: 97; label: 4.5.5
title: Conducting Feasibility Study
pagenum: 97; label: 4.5.6
title: Reviewing Requirements Specification
pagenum: 99; label: 4.6
title: Applying Agile Principles
pagenum: 100; label: 4.7
title: Requirements Management and Tools
pagenum: 101; title: Summary
pagenum: 102; title: Further Reading
pagenum: 103; title: Chapter Review Questions
pagenum: 103; title: Exercises
pagenum: 103; label: Chapter 5
title: Domain Modeling
pagenum: 105; label: 5.1
title: What Is Domain Modeling?
pagenum: 105; label: 5.2
title: Why Domain Modeling?
pagenum: 106; label: 5.3
title: Object-Orientation and Class Diagram
pagenum: 107; label: 5.3.1
title: Extensional and Intentional Definitions
pagenum: 107; label: 5.3.2
title: Class and Object
pagenum: 108; label: 5.3.3
title: Object and Attribute
pagenum: 110; label: 5.3.4
title: Association
pagenum: 110; label: 5.3.5
title: Multiplicity and Role
pagenum: 111; label: 5.3.6
title: Aggregation
pagenum: 113; label: 5.3.7
title: Inheritance
pagenum: 114; label: 5.3.8
title: Inheritance and Polymorphism
pagenum: 114; label: 5.3.9
title: Association Class
pagenum: 115; label: 5.4
title: Steps for Domain Modeling
pagenum: 117; label: 5.4.1
title: Collecting Application Domain Information
pagenum: 118; label: 5.4.2
title: Brainstorming
pagenum: 119; label: 5.4.3
title: Classifying Brainstorming Results
pagenum: 120; label: 5.4.4
title: Visualizing the Domain Model
pagenum: 124; label: 5.4.5
title: Domain Model Review Checklist
pagenum: 129; label: 5.5
title: Putting It Together
pagenum: 130; label: 5.6
title: Guidelines for Domain Modeling
pagenum: 133; label: 5.7
title: Applying Agile Principles
pagenum: 134; label: 5.8
title: Tool Support for Domain Modeling
pagenum: 135; title: Summary
pagenum: 136; title: Further Reading
pagenum: 136; title: Chapter Review Questions
pagenum: 138; title: Exercises
pagenum: 138; label: Chapter 6
title: Architectural Design
pagenum: 139; label: 6.1
title: What Is Architectural Design?
pagenum: 140; label: 6.2
title: The Importance of Architectural Design
pagenum: 140; label: 6.3
title: Architectural Design Process
pagenum: 141; label: 6.3.1
title: Determine Architectural Design Objectives
pagenum: 142; label: 6.3.2
title: Determine System Type
pagenum: 143; label: 6.3.3
title: Applying Architectural Styles
pagenum: 147; label: 6.3.4
title: Perform Custom Architectural Design
pagenum: 157; label: 6.3.5
title: Specify Subsystem Functions and Interfaces
pagenum: 157; label: 6.3.6
title: Review the Architectural Design
pagenum: 158; label: 6.4
title: Architectural Style and Package Diagram
pagenum: 158; label: 6.5
title: Applying Software Design Principles
pagenum: 160; label: 6.5.1
title: What Are Software Design Principles?
pagenum: 161; label: 6.5.2
title: Design for Change
pagenum: 162; label: 6.5.3
title: Separation of Concerns
pagenum: 162; label: 6.5.4
title: Information Hiding
pagenum: 163; label: 6.5.5
title: High Cohesion
pagenum: 164; label: 6.5.6
title: Low Coupling
pagenum: 165; label: 6.5.7
title: Keep It Simple and Stupid
pagenum: 166; label: 6.6
title: Guidelines for Architectural Design
pagenum: 166; label: 6.7
title: Architectural Design and Design Patterns
pagenum: 167; label: 6.8
title: Applying Agile Principles
pagenum: 167; title: Summary
pagenum: 168; title: Further Reading
pagenum: 168; title: Chapter Review Questions
pagenum: 169; title: Exercises
pagenum: 169; label: Part III
title: Modeling and Design of Interactive Systems
pagenum: 171; label: Chapter 7
title: Deriving Use Cases from Requirements
pagenum: 172; label: 7.1
title: What Is an Actor?
pagenum: 173; label: 7.2
title: What Is a Use Case?
pagenum: 173; label: 7.3
title: Business Process, Operation, and Action
pagenum: 174; label: 7.4
title: Steps for Deriving Use Cases from Requirements
pagenum: 176; label: 7.4.1
title: Identifying Use Cases
pagenum: 177; label: 7.4.2
title: Specifying Use Case Scopes
pagenum: 184; label: 7.4.3
title: Visualizing Use Case Contexts
pagenum: 186; label: 7.4.4
title: Reviewing Use Case Specifications
pagenum: 190; label: 7.4.5
title: Allocating the Use Cases to Iterations
pagenum: 191; label: 7.5
title: Guidelines for Use Case Derivation
pagenum: 192; label: 7.6
title: Applying Agile Principles
pagenum: 195; label: 7.7
title: Tool Support for Use Case Modeling
pagenum: 196; title: Summary
pagenum: 198; title: Further Reading
pagenum: 198; title: Chapter Review Questions
pagenum: 199; title: Exercises
pagenum: 199; label: Chapter 8
title: Actor-System Interaction Modeling
pagenum: 200; label: 8.1
title: What Is Actor-System Interaction Modeling?
pagenum: 201; label: 8.2
title: Importance of Actor-System Interaction Modeling
pagenum: 202; label: 8.3
title: Steps for Actor-System Interaction Modeling
pagenum: 202; label: 8.3.1
title: Initializing a Two-Column Table
pagenum: 202; label: 8.3.2
title: Specifying Actor-System Interaction Steps
pagenum: 203; label: 8.3.3
title: Reviewing Actor-System Interaction Specifications
pagenum: 204; label: 8.4
title: Specifying Alternative Flows
pagenum: 204; label: 8.5
title: Using User Interface Prototypes
pagenum: 204; label: 8.6
title: Do Not Show Exception Handling
pagenum: 208; label: 8.7
title: Use Case Precondition and Postcondition
pagenum: 209; label: 8.8
title: Including Other Use Cases
pagenum: 210; label: 8.9
title: Continuing with Other Use Cases
pagenum: 210; label: 8.10
title: Commonly Seen Problems
pagenum: 211; label: 8.11
title: Applying Agile Principles
pagenum: 213; title: Summary
pagenum: 214; title: Further Reading
pagenum: 214; title: Chapter Review Questions
pagenum: 215; title: Exercises
pagenum: 215; label: Chapter 9
title: Object Interaction Modeling
pagenum: 216; label: 9.1
title: What Is Object Interaction Modeling?
pagenum: 216; label: 9.2
title: UML Sequence Diagram
pagenum: 218; label: 9.2.1
title: Notions and Notations
pagenum: 218; label: 9.2.2
title: Representing Instances of a Class
pagenum: 218; label: 9.2.3
title: Sequence Diagrams Illustrated
pagenum: 220; label: 9.2.4
title: Sequence Diagram for Analysis and Design
pagenum: 222; label: 9.2.5
title: Using the Notations Correctly
pagenum: 224; label: 9.3
title: Steps for Object Interaction Modeling
pagenum: 225; label: 9.3.1
title: Collecting Information About Business Processes
pagenum: 226; label: 9.3.2
title: Identifying Nontrivial Steps
pagenum: 227; label: 9.3.3
title: Writing Scenarios for Nontrivial Steps
pagenum: 228; label: 9.3.4
title: Constructing Scenario Tables
pagenum: 230; label: 9.3.5
title: Scenarios: How to Write Them
pagenum: 232; label: 9.3.6
title: Deriving Sequence Diagrams from Scenario Tables
pagenum: 236; label: 9.3.7
title: Object Interaction Modeling Review Checklist
pagenum: 245; label: 9.4
title: Applying Agile Principles
pagenum: 246; label: 9.5
title: Tool Support for Object Interaction Modeling
pagenum: 248; title: Summary
pagenum: 249; title: Further Reading
pagenum: 249; title: Chapter Review Questions
pagenum: 249; title: Exercises
pagenum: 249; label: Chapter 10
title: Applying Responsibility-Assignment Patterns
pagenum: 251; label: 10.1
title: What Are Design Patterns?
pagenum: 252; label: 10.2
title: Why Design Patterns?
pagenum: 253; label: 10.3
title: Situation-Specific and Responsibility-Assignment Patterns
pagenum: 253; label: 10.4
title: Pattern Specification
pagenum: 254; label: 10.5
title: The Controller Pattern
pagenum: 254; label: 10.5.1
title: A Motivating Example
pagenum: 255; label: 10.5.2
title: What Is a Controller?
pagenum: 258; label: 10.5.3
title: Applying the Controller Pattern
pagenum: 258; label: 10.5.4
title: Types of Controller
pagenum: 261; label: 10.5.5
title: Keeping Track of Use Case State
pagenum: 261; label: 10.5.6
title: Bloated Controller
pagenum: 263; label: 10.5.7
title: Comparing Different Designs
pagenum: 264; label: 10.5.8
title: When Does One Apply the Controller Pattern?
pagenum: 265; label: 10.5.9
title: Guidelines for Using Controller
pagenum: 265; label: 10.6
title: The Expert Pattern
pagenum: 267; label: 10.6.1
title: The Information Expert
pagenum: 267; label: 10.6.2
title: Applying the Expert Pattern
pagenum: 267; label: 10.6.3
title: Expert Pattern Involving More Than One Object
pagenum: 269; label: 10.6.4
title: When Does One Apply the Expert Pattern?
pagenum: 269; label: 10.6.5
title: Guidelines for Using Expert
pagenum: 270; label: 10.7
title: The Creator Pattern
pagenum: 270; label: 10.7.1
title: What Is a Creator?
pagenum: 270; label: 10.7.2
title: Applying the Creator Pattern
pagenum: 271; label: 10.7.3
title: Benefits of the Creator Pattern
pagenum: 272; label: 10.7.4
title: When Does One Apply the Creator Pattern?
pagenum: 273; title: Summary
pagenum: 273; title: Further Reading
pagenum: 274; title: Chapter Review Questions
pagenum: 274; title: Exercises
pagenum: 275; label: Chapter 11
title: Deriving a Design Class Diagram
pagenum: 276; label: 11.1
title: What Is a Design Class Diagram?
pagenum: 278; label: 11.2
title: Usefulness of a Design Class Diagram
pagenum: 278; label: 11.3
title: Steps for Deriving a Design Class Diagram
pagenum: 279; label: 11.3.1
title: Identifying Classes
pagenum: 279; label: 11.3.2
title: Identifying Methods
pagenum: 281; label: 11.3.3
title: Identifying Attributes
pagenum: 281; label: 11.3.4
title: Relationships between Classes
pagenum: 285; label: 11.3.5
title: Identifying Relationships
pagenum: 285; label: 11.3.6
title: Design Class Diagram Review Checklist
pagenum: 288; label: 11.4
title: Organize Classes with Package Diagram
pagenum: 288; label: 11.5
title: Applying Agile Principles
pagenum: 291; label: 11.6
title: Tool Support for Design Class Diagram
pagenum: 292; title: Summary
pagenum: 292; title: Further Reading
pagenum: 292; title: Chapter Review Questions
pagenum: 292; title: Exercises
pagenum: 292; label: Chapter 12
title: User Interface Design
pagenum: 293; label: 12.1
title: What Is User Interface Design?
pagenum: 294; label: 12.2
title: Why Is User Interface Design Important?
pagenum: 295; label: 12.3
title: Graphical User Interface Widgets
pagenum: 296; label: 12.3.1
title: Container Widgets
pagenum: 297; label: 12.3.2
title: Input, Output, and Information Presentation Widgets
pagenum: 298; label: 12.3.3
title: Guidelines for Using GUI Widgets
pagenum: 298; label: 12.4
title: User Interface Design Process
pagenum: 300; label: 12.4.1
title: Case Study: User Interface Design for a Diagram Editor
pagenum: 301; label: 12.4.2
title: Identifying Major System Displays
pagenum: 302; label: 12.4.3
title: Producing a Draft Layout Design
pagenum: 304; label: 12.4.4
title: Specifying Interaction Behavior
pagenum: 306; label: 12.4.5
title: Constructing a Prototype
pagenum: 307; label: 12.4.6
title: Evaluating the User Interface Design with Users
pagenum: 308; label: 12.4.7
title: User Interface Design Review Checklist
pagenum: 310; label: 12.5
title: Designing User Support Capabilities
pagenum: 310; label: 12.6
title: Guidelines for User Interface Design
pagenum: 311; label: 12.7
title: Applying Agile Principles
pagenum: 313; label: 12.8
title: Tool Support for User Interface Design
pagenum: 314; title: Summary
pagenum: 315; title: Further Reading
pagenum: 315; title: Chapter Review Questions
pagenum: 315; title: Exercises
pagenum: 315; label: Part IV
title: Modeling and Design of Other Types of Systems
pagenum: 317; label: Chapter 13
title: Object State Modeling for Event-Driven Systems
pagenum: 318; label: 13.1
title: What Is Object State Modeling?
pagenum: 319; label: 13.2
title: Why Object State Modeling?
pagenum: 319; label: 13.3
title: Basic Definitions
pagenum: 320; label: 13.4
title: Steps for Object State Modeling
pagenum: 321; label: 13.4.1
title: Collecting and Classifying State Behavior Information
pagenum: 322; label: 13.4.2
title: Constructing a Domain Model to Show the Context
pagenum: 325; label: 13.4.3
title: Constructing State Transition Tables
pagenum: 327; label: 13.4.4
title: Usefulness of the State Transition Table
pagenum: 329; label: 13.4.5
title: Converting State Transition Table to Analysis State Diagram
pagenum: 330; label: 13.4.6
title: Converting Analysis State Diagram to Design State Diagram
pagenum: 333; label: 13.4.7
title: State Modeling Review Checklists
pagenum: 334; label: 13.5
title: The State Pattern
pagenum: 334; label: 13.5.1
title: Conventional Approaches
pagenum: 334; label: 13.5.2
title: What Is State Pattern?
pagenum: 335; label: 13.5.3
title: Applying State Pattern
pagenum: 337; label: 13.6
title: Real-Time Systems Modeling and Design
pagenum: 339; label: 13.6.1
title: The Transformational Schema
pagenum: 339; label: 13.6.2
title: Timed State Machine
pagenum: 342; label: 13.6.3
title: Interrupt Handling
pagenum: 343; label: 13.7
title: Applying Agile Principles
pagenum: 344; label: 13.8
title: Tool Support for Object State Modeling
pagenum: 345; title: Summary
pagenum: 345; title: Further Reading
pagenum: 346; title: Chapter Review Questions
pagenum: 346; title: Exercises
pagenum: 346; label: Chapter 14
title: Activity Modeling for Transformational Systems
pagenum: 349; label: 14.1
title: What Is Activity Modeling?
pagenum: 350; label: 14.2
title: Why Activity Modeling?
pagenum: 351; label: 14.3
title: Activity Modeling: Technical Background
pagenum: 351; label: 14.3.1
title: Flowchart
pagenum: 352; label: 14.3.2
title: Petri Net
pagenum: 352; label: 14.3.3
title: Data Flow Diagram
pagenum: 353; label: 14.4
title: UML Activity Diagram
pagenum: 355; label: 14.5
title: Steps for Activity Modeling
pagenum: 356; label: 14.5.1
title: Identifying Activities and Workflows
pagenum: 357; label: 14.5.2
title: Producing a Preliminary Activity Diagram
pagenum: 360; label: 14.5.3
title: Introducing Branching, Forking, and Joining
pagenum: 362; label: 14.5.4
title: Refining Complex Activities
pagenum: 362; label: 14.5.5
title: Activity Modeling Review Checklist
pagenum: 363; label: 14.6
title: Relationships to Other Diagrams
pagenum: 363; label: 14.7
title: Applying Agile Principles
pagenum: 364; label: 14.8
title: Tool Support for Activity Modeling
pagenum: 365; title: Summary
pagenum: 365; title: Further Reading
pagenum: 365; title: Chapter Review Questions
pagenum: 366; title: Exercises
pagenum: 366; label: Chapter 15
title: Modeling and Design of Rule-Based Systems
pagenum: 367; label: 15.1
title: What Is a Decision Table?
pagenum: 368; label: 15.2
title: Usefulness of Decision Table
pagenum: 369; label: 15.3
title: Systematic Decision Table Construction
pagenum: 370; label: 15.4
title: Progressive Decision Table Construction
pagenum: 371; label: 15.5
title: Checking for Desired Properties
pagenum: 373; label: 15.6
title: Decision Table Consolidation
pagenum: 374; label: 15.7
title: Generating Code from a Decision Table
pagenum: 375; label: 15.8
title: Applying the Interpreter Pattern
pagenum: 375; label: 15.8.1
title: Defining a Business Rule Grammar
pagenum: 376; label: 15.8.2
title: Representing Rules in a Class Diagram
pagenum: 376; label: 15.8.3
title: Constructing a Parser and a Variable Look Up Context
pagenum: 377; label: 15.8.4
title: Interpreting Business Rules
pagenum: 378; label: 15.8.5
title: Updating Rules Dynamically
pagenum: 378; label: 15.8.6
title: Merits of the Interpretation Approach
pagenum: 379; label: 15.9
title: Using a Decision Table in Test-Driven Development
pagenum: 379; label: 15.10
title: Decision Trees
pagenum: 380; label: 15.11
title: Applying Agile Principles
pagenum: 380; title: Summary
pagenum: 381; title: Further Reading
pagenum: 382; title: Chapter Review Questions
pagenum: 382; title: Exercises
pagenum: 382; label: Part V
title: Applying Situation-Specific Patterns
pagenum: 385; label: Chapter 16
title: Applying Patterns to Design a State Diagram Editor
pagenum: 386; label: 16.1
title: Process for Applying Patterns
pagenum: 387; label: 16.2
title: Case Study: State Diagram Editor
pagenum: 390; label: 16.3
title: Working with Complex Structures
pagenum: 391; label: 16.3.1
title: Representing Recursive Whole-Part Structures
pagenum: 391; label: 16.3.2
title: Providing Layout Choices with Strategy
pagenum: 395; label: 16.3.3
title: Accessing Complex Structures with Iterator
pagenum: 395; label: 16.3.4
title: Analyzing Complex Structures with Visitor
pagenum: 398; label: 16.3.5
title: Storing and Restoring Object State with Memento
pagenum: 402; label: 16.4
title: Creating and Constructing Complex Objects
pagenum: 404; label: 16.4.1
title: Creating Families of Products
pagenum: 404; label: 16.4.2
title: Building Large Complex Objects
pagenum: 407; label: 16.4.3
title: Reusing Objects with Flyweight
pagenum: 410; label: 16.5
title: Designing Graphical User Interface and Display
pagenum: 411; label: 16.5.1
title: Keeping Track of Editing States
pagenum: 411; label: 16.5.2
title: Responding to Editing Events
pagenum: 412; label: 16.5.3
title: Converting One Interface to Another
pagenum: 414; label: 16.5.4
title: Providing Context-Dependent Help
pagenum: 418; label: 16.5.5
title: Enhancing Display Capability with a Decorator
pagenum: 420; label: 16.6
title: Applying Agile Principles
pagenum: 423; title: Summary
pagenum: 424; title: Further Reading
pagenum: 424; title: Chapter Review Questions
pagenum: 425; title: Exercises
pagenum: 425; label: Chapter 17
title: Applying Patterns to Design a Persistence Framework
pagenum: 426; label: 17.1
title: Problems with Direct Database Access
pagenum: 427; label: 17.2
title: Hiding Persistence Storage with Bridge
pagenum: 428; label: 17.3
title: Encapsulating Database Requests as Commands
pagenum: 431; label: 17.4
title: Hiding Network Access with Remote Proxy
pagenum: 435; label: 17.5
title: Sharing Common Code with Template Method
pagenum: 439; label: 17.6
title: Retrieving Different Objects with Factory Method
pagenum: 442; label: 17.7
title: Reducing Number of Classes with Prototype
pagenum: 444; label: 17.8
title: Applying Agile Principles
pagenum: 447; title: Summary
pagenum: 447; title: Further Reading
pagenum: 448; title: Chapter Review Questions
pagenum: 448; title: Exercises
pagenum: 448; label: Part VI
title: Implementation and Quality Assurance
pagenum: 449; label: Chapter 18
title: Implementation Considerations
pagenum: 450; label: 18.1
title: Coding Standards
pagenum: 450; label: 18.1.1
title: What Are Coding Standards?
pagenum: 451; label: 18.1.2
title: Why Coding Standards?
pagenum: 455; label: 18.1.3
title: Code Review Checklist
pagenum: 455; label: 18.1.4
title: Guidelines for Practicing Coding Standards
pagenum: 456; label: 18.2
title: Organizing the Implementation Artifacts
pagenum: 457; label: 18.3
title: Generating Code from Design
pagenum: 459; label: 18.3.1
title: Implementing Classes and Interfaces
pagenum: 459; label: 18.3.2
title: From Sequence Diagram to Method Code Skeleton
pagenum: 460; label: 18.3.3
title: Implementing Association Relationships
pagenum: 460; label: 18.4
title: Assigning Implementation Work to Team Members
pagenum: 461; label: 18.5
title: Pair Programming
pagenum: 462; label: 18.6
title: Test-Driven Development
pagenum: 463; label: 18.6.1
title: Test-Driven Development Workflow
pagenum: 463; label: 18.6.2
title: Merits of Test-Driven Development
pagenum: 465; label: 18.6.3
title: Potential Problems
pagenum: 466; label: 18.7
title: Applying Agile Principles
pagenum: 466; label: 18.8
title: Tool Support for Implementation
pagenum: 467; title: Summary
pagenum: 467; title: Further Reading
pagenum: 467; title: Chapter Review Questions
pagenum: 468; title: Exercises
pagenum: 468; label: Chapter 19
title: Software Quality Assurance
pagenum: 469; label: 19.1
title: Benefits of Software Quality Assurance
pagenum: 469; label: 19.2
title: Software Quality Attributes
pagenum: 470; label: 19.3
title: Quality Measurements and Metrics
pagenum: 472; label: 19.3.1
title: Usefulness of Quality Measurements and Metrics
pagenum: 473; label: 19.3.2
title: Conventional Quality Metrics
pagenum: 474; label: 19.3.3
title: Reusing Conventional Metrics for Object-Oriented Software
pagenum: 480; label: 19.3.4
title: Object-Oriented Quality Metrics
pagenum: 480; label: 19.4
title: Software Verification and Validation Techniques
pagenum: 483; label: 19.4.1
title: Inspection
pagenum: 484; label: 19.4.2
title: Walkthrough
pagenum: 485; label: 19.4.3
title: Peer Review
pagenum: 486; label: 19.5
title: Verification and Validation in the Life Cycle
pagenum: 487; label: 19.6
title: Software Quality Assurance Functions
pagenum: 490; label: 19.6.1
title: Definition of Processes and Standards
pagenum: 490; label: 19.6.2
title: Quality Management
pagenum: 494; label: 19.6.3
title: Process Improvement
pagenum: 495; label: 19.7
title: Applying Agile Principles
pagenum: 497; label: 19.8
title: Tool Support for SQA
pagenum: 498; title: Summary
pagenum: 498; title: Further Reading
pagenum: 499; title: Chapter Review Questions
pagenum: 499; title: Exercises
pagenum: 499; label: Chapter 20
title: Software Testing
pagenum: 501; label: 20.1
title: What Is Software Testing?
pagenum: 502; label: 20.2
title: Why Software Testing?
pagenum: 503; label: 20.3
title: Conventional Black-Box Testing
pagenum: 504; label: 20.3.1
title: Functional Testing: An Example
pagenum: 504; label: 20.3.2
title: Equivalence Partitioning
pagenum: 505; label: 20.3.3
title: Boundary Value Analysis
pagenum: 507; label: 20.3.4
title: Cause-Effect Analysis
pagenum: 509; label: 20.4
title: Conventional White-Box Testing
pagenum: 510; label: 20.4.1
title: Basis Path Testing
pagenum: 510; label: 20.4.2
title: Cyclomatic Complexity
pagenum: 511; label: 20.4.3
title: Flow Graph Test Coverage Criteria
pagenum: 512; label: 20.4.4
title: Testing Loops
pagenum: 512; label: 20.4.5
title: Data Flow Testing
pagenum: 514; label: 20.4.6
title: Coverage Criteria for Data Flow Testing
pagenum: 515; label: 20.4.7
title: Interprocedural Data Flow Testing
pagenum: 515; label: 20.5
title: Test Coverage
pagenum: 516; label: 20.6
title: A Generic Software Testing Process
pagenum: 517; label: 20.7
title: Object-Oriented Software Testing
pagenum: 518; label: 20.7.1
title: Use Case-Based Testing
pagenum: 518; label: 20.7.2
title: Object State Testing with ClassBench
pagenum: 520; label: 20.7.3
title: Testing Class Hierarchy
pagenum: 523; label: 20.7.4
title: Testing Exception-Handling Capabilities
pagenum: 524; label: 20.8
title: Testing Web Applications
pagenum: 525; label: 20.8.1
title: Object-Oriented Model for Web Application Testing
pagenum: 525; label: 20.8.2
title: Static Analysis Using the Object-Oriented Model
pagenum: 526; label: 20.8.3
title: Test Case Generation Using the Object-Oriented Model
pagenum: 527; label: 20.8.4
title: Web Application Testing with HttpUnit
pagenum: 527; label: 20.9
title: Testing for Nonfunctional Requirements
pagenum: 527; label: 20.9.1
title: Performance and Stress Testings
pagenum: 527; label: 20.9.2
title: Testing for Security
pagenum: 528; label: 20.9.3
title: Testing User Interface
pagenum: 529; label: 20.10
title: Software Testing in the Life Cycle
pagenum: 529; label: 20.11
title: Regression Testing
pagenum: 532; label: 20.12
title: When to Stop Testing?
pagenum: 533; label: 20.13
title: Applying Agile Principles
pagenum: 534; label: 20.14
title: Tool Support for Testing
pagenum: 534; title: Summary
pagenum: 535; title: Further Reading
pagenum: 535; title: Chapter Review Questions
pagenum: 535; title: Exercises
pagenum: 535; label: Part VII
title: Maintenance and Configuration Management
pagenum: 537; label: Chapter 21
title: Software Maintenance
pagenum: 538; label: 21.1
title: What Is Software Maintenance?
pagenum: 539; label: 21.2
title: Factors That Mandate Change
pagenum: 539; label: 21.3
title: Lehman's Laws of System Evolution
pagenum: 540; label: 21.4
title: Types of Software Maintenance
pagenum: 541; label: 21.5
title: Software Maintenance Process and Activities
pagenum: 542; label: 21.5.1
title: Maintenance Process Models
pagenum: 542; label: 21.5.2
title: Program Understanding
pagenum: 543; label: 21.5.3
title: Change Identification and Analysis
pagenum: 544; label: 21.5.4
title: Configuration Change Control
pagenum: 547; label: 21.5.5
title: Change Implementation, Testing, and Delivery
pagenum: 547; label: 21.6
title: Reverse-Engineering
pagenum: 547; label: 21.6.1
title: Reverse-Engineering Workflow
pagenum: 548; label: 21.6.2
title: Usefulness of Reverse-Engineering
pagenum: 548; label: 21.6.3
title: Reverse-Engineering: A Case Study
pagenum: 549; label: 21.7
title: Software Reengineering
pagenum: 549; label: 21.7.1
title: Objectives of Reengineering
pagenum: 550; label: 21.7.2
title: Software Reengineering Process
pagenum: 551; label: 21.7.3
title: Software Reengineering: A Case Study
pagenum: 551; label: 21.8
title: Patterns for Software Maintenance
pagenum: 553; label: 21.8.1
title: Simplifying Client Interface with Facade
pagenum: 553; label: 21.8.2
title: Simplifying Component Interaction with Mediator
pagenum: 553; label: 21.8.3
title: Other Patterns for Software Maintenance
pagenum: 555; label: 21.9
title: Applying Agile Principles
pagenum: 555; label: 21.10
title: Tool Support for Software Maintenance
pagenum: 557; title: Summary
pagenum: 559; title: Further Reading
pagenum: 560; title: Chapter Review Questions
pagenum: 560; title: Exercises
pagenum: 560; label: Chapter 22
title: Software Configuration Management
pagenum: 562; label: 22.1
title: The Baselines of a Software Life Cycle
pagenum: 563; label: 22.2
title: What Is Software Configuration Management?
pagenum: 564; label: 22.3
title: Why Software Configuration Management?
pagenum: 565; label: 22.4
title: Software Configuration Management Functions
pagenum: 565; label: 22.4.1
title: Software Configuration Identification
pagenum: 566; label: 22.4.2
title: Software Configuration Change Control
pagenum: 568; label: 22.4.3
title: Software Configuration Auditing
pagenum: 569; label: 22.4.4
title: Software Configuration Status Accounting
pagenum: 570; label: 22.5
title: Configuration Management in an Agile Project
pagenum: 570; label: 22.6
title: Software Configuration Management Tools
pagenum: 570; title: Summary
pagenum: 572; title: Further Reading
pagenum: 573; title: Chapter Review Questions
pagenum: 573; title: Exercises
pagenum: 573; label: Part VIII
title: Project Management and Software Security
pagenum: 575; label: Chapter 23
title: Software Project Management
pagenum: 576; label: 23.1
title: Project Organization
pagenum: 577; label: 23.1.1
title: Project Format
pagenum: 578; label: 23.1.2
title: Team Structure
pagenum: 579; label: 23.2
title: Effort Estimation Methods
pagenum: 580; label: 23.2.1
title: The Function Point Method
pagenum: 581; label: 23.2.2
title: The COCOMO II Model
pagenum: 583; label: 23.2.3
title: The Delphi Estimation Method
pagenum: 588; label: 23.2.4
title: Agile Estimation
pagenum: 589; label: 23.3
title: Project Planning and Scheduling
pagenum: 591; label: 23.3.1
title: PERT Chart
pagenum: 591; label: 23.3.2
title: Gantt Chart and Staff Allocation
pagenum: 593; label: 23.3.3
title: Agile Planning
pagenum: 594; label: 23.4
title: Risk Management
pagenum: 595; label: 23.4.1
title: Risk Identification
pagenum: 596; label: 23.4.2
title: Risk Analysis and Prioritizing
pagenum: 597; label: 23.4.3
title: Risk Management Planning
pagenum: 599; label: 23.4.4
title: Risk Resolution and Monitoring
pagenum: 599; label: 23.5
title: Process Improvement
pagenum: 599; label: 23.6
title: Applying Agile Principles
pagenum: 601; label: 23.7
title: Tool Support for Project Management
pagenum: 602; title: Summary
pagenum: 603; title: Further Reading
pagenum: 603; title: Chapter Review Questions
pagenum: 604; title: Exercises
pagenum: 604; label: Chapter 24
title: Software Security
pagenum: 606; label: 24.1
title: What Is Software Security?
pagenum: 607; label: 24.2
title: Security Requirements
pagenum: 608; label: 24.3
title: Secure Software Design Principles
pagenum: 609; label: 24.4
title: Secure Software Design Patterns
pagenum: 610; label: 24.5
title: Seven Best Practices of Software Security
pagenum: 612; label: 24.6
title: Risk Analysis with an Attack Tree
pagenum: 613; label: 24.7
title: Software Security in the Life Cycle
pagenum: 614; label: 24.7.1
title: Security in the Planning Phase
pagenum: 615; label: 24.7.2
title: Security in the Iterative Phase
pagenum: 623; label: 24.8
title: Applying Agile Principles
pagenum: 627; label: 24.9
title: Tool Support for Software Security
pagenum: 628; title: Summary
pagenum: 629; title: Further Reading
pagenum: 629; title: Chapter Review Questions
pagenum: 630; title: Exercises
pagenum: 630; title: Appendices; label: A
title: Personal Software Process: Estimation, Planning, and Quality Assurance
pagenum: 631; label: A.1
title: Effort Estimation in PSP
pagenum: 631; label: A.2
title: Software Quality Assurance in PSP
pagenum: 632; label: A.3
title: Design and Quality
pagenum: 633; label: B
title: Java Technologies
pagenum: 634; label: B.1
title: Getting Started with Database Connectivity
pagenum: 634; label: B.1.1
title: What Is Database Connectivity?
pagenum: 634; label: B.1.2
title: Setting Up Data Sources
pagenum: 634; label: B.1.3
title: Accessing Databases from a Program
pagenum: 635; label: B.2
title: Getting Started with Swing
pagenum: 636; label: B.2.1
title: Creating Main Window with JFrame
pagenum: 637; label: B.2.2
title: Using Layout Managers to Arrange Components
pagenum: 638; label: B.2.3
title: Processing Button Events with Action Listener
pagenum: 640; label: B.2.4
title: Implementing Drawing Capabilities
pagenum: 640; label: B.3
title: Getting Started with Java Server Pages
pagenum: 642; label: B.3.1
title: What Are Java Server Pages?
pagenum: 642; label: B.3.2
title: JSP Workflow
pagenum: 642; label: B.3.3
title: Installing a Web Server with a JSP Container
pagenum: 643; label: B.3.4
title: Using Java Server Pages
pagenum: 643; label: C
title: Software Tools
pagenum: 647; label: C.1
title: NetBeans
pagenum: 647; label: C.2
title: Using JUnit
pagenum: 648; label: C.3
title: Running JUnit in NetBeans
pagenum: 652; label: C.4
title: The Emma Coverage Tool
pagenum: 652; label: C.5
title: The Cobertura Coverage Tool
pagenum: 653; label: C.6
title: Web Application Testing with HttpUnit
pagenum: 655; label: C.6.1
title: Configure an IDE to Use HttpUnit
pagenum: 655; label: C.6.2
title: Implementing Test Cases in HttpUnit
pagenum: 655; label: C.7
title: Using CVS and Subversion in NetBeans
pagenum: 656; label: C.7.1
title: Creating a CVS Remote Repository
pagenum: 656; label: C.7.2
title: Setting Up Subversion in NetBeans
pagenum: 658; label: C.7.3
title: Checking Out Files from a Repository
pagenum: 659; label: C.7.4
title: Editing Sources and Viewing Changes
pagenum: 661; label: C.7.5
title: Viewing File Status
pagenum: 662; label: C.7.6
title: Comparing File Revisions
pagenum: 662; label: C.7.7
title: Merging Changes from Repository
pagenum: 662; label: C.7.8
title: Resolving Conflicts
pagenum: 663; label: C.7.9
title: Updating Local Copies
pagenum: 663; label: C.7.10
title: Committing Local Files to a Repository
pagenum: 663; label: C.7.11
title: Importing Files into a Repository
pagenum: 664; label: D
title: Project Descriptions
pagenum: 665; label: D.1
title: Car Rental System
pagenum: 665; label: D.2
title: National Trade Show Service System
pagenum: 666; label: D.3
title: Study Abroad Management System
pagenum: 667; label: D.4
title: UML Class Diagram Editor
pagenum: 669; label: D.5
title: Radio Communication Simulator
pagenum: 670; label: D.6
title: Object State Testing Environment
pagenum: 672; title: References
pagenum: 675; title: Index
pagenum: 682