CONTENTS AT A GLANCE
         PREFACE
         PART ONE THE PRODUCT AND THI PROCESS
         CHAPTER 1 THE PRODUCT
         CHAPTER 2 THE PROCESS
         PART TWO MANAOINO SOFTWARE PROJECTS
         CHAPTER 3 PROJECT MANAGEMENT CONCEPTS
         CHAPTER 4 SOFTWARE PROCESS AND PROJECT METRICS
         CHAPTER 5 SOFTWARE PROJECT PIANNING
         CHAPTER 6 RISK MANAGEMENT
         CHAPTER 7 PROJECT SCHEDULING AND TRACKING
         CHAFTER 8 SOFTWARE QUALITY ASSURANCE
         CHAPTER 9 SOFTWARE CONFIGURATION MANAGEMENT
         PART THREE CONVENTIONAL METHODS FOR SOFTWARE ENGINEEMNG
         CHAPTER 10 SYSTEM ENGINEERING
         CHAPTER 11 ANALYSIS CONCEPTS AND PRINCIPLES
         CHAPTER12 ANALYSIS MODELING
         CHAPTER 13 DESIGN CONCEPTS AND PRINCIPLES
         CHAPTER 14 DESlGN METHODS
         CHAPTER 15 DESlGN FOR REAL-TlME SYSTEMS
         CHAPTER 16 SOFTWARE TESTlNG TECHNlQUES
         CHAPTER 17 SOFTWARE TESTlNG STRATEGlES
         CHAPTER l 8 TECHNlCAL METRlCS FOR SOFTWARE
         PART FOUR OBJECT-ORlENTED SOFTWARE ENOlNEERlNG
         CHAPTER l 9 OBJECT-ORlENTED CONCEPTS AND PRlNClPLES
         CHAPTER 20 OBjECTORlENTED ANALYSlS
         CHAPTER 21 OBJECT-ORlENTED DESlGN
         CHAPTER 22 OBJECT-ORlENTED TESTlNG
         CHAPTER 23 TECHNlCAL METRlCS FOR OBJECTORlENTED SYSTEMS
         PART FlVE ADVANCED TOPICS IN SOFTWARE ENGlNEERlNG
         CHAPTER 24 FORMAL METHODS
         CHAPTER 25 CLEANROOM SOFTWARE ENGlNEERlNG
         CHAPTER 26 SOFTWARE REUSE
         CHAPTER 27 REENGlNEERlNG
         CHAPTER 28 CLlENT/SERVER SOFTWARE ENGlNEERlNG
         CHAPTER 29 COMPUTER-AlDED SOFTWARE ENGlNEERlNG
         CHAPTER 30 THE ROAD AHEAD
         TABLE OF CONTENTS
         PREFACE
         PART ONE THE PRODUCT AND THE PROCESS
         CHAPTER 1 THE PRODUCT
         1.1 THE EVOLVING ROLE OF SOFTWARE
         1.1.1 An Industry Perspective
         1.1.2 An Aging Software Plant
         1.1.3 Soflware Competitiveness
         1.2 SOFTWARE
         1.2.1 Software Characteristics
         1.2.2 Soflware Components
         1.2.3 Software Applications
         1.3 SOFTWARE: A CRISIS ON THE HORIZON
         1.4 SOFTWARE MYTHS
         1.5 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND INFORMATION SOURCES
         CHAPTER 2 THE PROCESS
         2.1 SOFTWARE ENGINEERING-A lAYERED TECHNOLOGY
         2.1.1 Process, Methods, and Tools
         2.1.2 A Generic View of Software Engineering
         2.2 THE SOFTWARE PROCESS
         2.3 SOFTWARE PROCESS MODELS
         2.4 THE LINEAR SEQUENTIAL MODEL
         2.5 THE PROTOTYPING MODEL
         2.6 THERADMODEL
         2.7 EVOLUTIONARY SOFTWARE PROCESS MODELS
         2.7.1 The Incremental Model
         2.7.2 The Spiral Model
         2.7.3 The Component Assembly Model
         2.7.4 The Concurrent Development Model
         2.8 THE FORMAl METHODS MODEL
         2.9 FOURTH GENERATION TECHNIQUES
         2.10 PROCESS TECHNOLOGY
         2.11 PRODUCT AND PROCESS
         2.12SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         PART TWO MANAGING SOFTWARE PROJECTS
         CHAPTER 3 PROJECT MANAGEMENT CONCEPTS
         3.1 THE MANAGEMENT SPECTRUM
         3.1.1 People
         3.1.2 TheProblem
         3.1.3 TheProcess
         3.2 PEOPLE
         3.2.1 ThePlayers
         3.2.2 Team leaders
         3.2.3 The Software Team
         3.2.4 Coordination and Communication Issues
         3.3 THEPROBLEM
         3.3.1 Soflware Scope
         3.3.2 Problem Decomposition
         3.4 THEPROCESS
         3.4.1 Melding the Problem and the Process
         3.4.2 Process Decomposition
         3.5 THEPRQIECT
         3.6 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 4 SOFTWARE PROCESS AND PROJECT METRICS
         4.1 MEASURES, METRICS, AND INDICATORS
         4.2 METRICS IN THE PROCESS AND PROJECT DOMAINS
         4.2.1 Process Metrics and Software Process Improvement
         4.2.2 Proiect Metrics
         4.3 SOFTWARE MEASUREMENT
         4.3.1 SizeOriented Metrics
         4.3.2 Function-Oriented Metrics
         4.3.3 Extended Function Point Metrics
         4.4 RECONCILING DIFFERENT METRICS APPROACHES
         4.5 METRICS FOR SOFTWARE QUALITY
         4.5.1 An Overview of Factors That Affect Quality
         4.5.2 Measuring Quality
         4.5.3 Defect Removal Efficiency
         4.6 INTEGRATING METRICS WITHIN THE SOFTWARE PROCESS
         4.7 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 5 SOFTWARE PROJECT PIANNING
         5.1 OBSERVATIONS ON ESTIMATING
         5.2 PROJECT PIANNING OBJECTIVES
         5.3 SOFTWARE SCOPE
         5.3.1 Obtaining Information Necessary for Scope
         5.3.2 A Scoping Example
         5.4 RESOURCES
         5.4.1 Human Resources
         5.4.2 Reusable Software Resources
         5.4.3 Environmental Resources
         5.5 SOFTWARE PROJECT ESTIMATION
         5.6 DECOMPOSITION TECHNIQUES
         5.6.1 Soflware Sizing
         5.6.2 Problem-Based Estimation
         5.6.3 An Example of LOC-Based Esftmation
         5.6.4 An Example of FP-Based Estimation
         5.6.5 Process-Based Estimation
         5.6.6 An Example of Process-Based Estimation
         5.7 EMPIRICAL ESTIMATION MODELS
         5.7.1 The Structure of Estimation Models
         5.7.2 The COCOMO Model
         5.7.3 The Soflware Equation
         5.8 THE MAKE-BUY DECISION
         5.8.1 Creating a Decision Tree
         5.8.2 Outsourcing
         5.9 AUTOMATED ESTIMATION TOOLS
         5.10SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINQS AND OTHER INFORMATION SOURCES
         CHAPTER 6 RISK MANAGEMENT
         6.1 REACTIVE VS. PROACTIVE RISK STRATEGIES
         6.2 SOFTWARE RISKS
         6.3 RISK IDENTIFICATION
         6.3.1 Product Size Risks
         6.3.2 Business Impoct Risks
         6.3.3 Customer-Related Risks
         6.3.4 Process Risks
         6.3.5 Technology Risk
         6.3.6 Development Environment Risks
         6.3.7 Risks Associated with Staff Size and Experience
         6.3.8 Risk Components and Drivers
         6.4 RISK PROJECTION
         6.4.1 Developing a Risk Table
         6.4.2 Assessing Risk Impact
         6.4.3 Risk Assessment
         6.5 RISK MITIGATION, MONITORING, AND MANAGEMENT
         6.6 SAFETY RISKS AND HAZARDS
         6.7 THERMMMPIAN
         6.8 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 7 PROJECT SCHEDULING AND TRACKING
         7.1 BASIC CONCEPTS
         7.1.1 Comments on "Lateness'
         7.1.2 Basic Principles
         7.2 THE REIATIONSHIP BETWEEN PEOPLE AND EFFORT
         7.2.1 An Example
         7.2.2 An Empirical Relationship
         7.2.3 Effort Distribufion
         7.3 DEFINING A TASK SET FOR THE SOFTWARE PROJECT
         7.3.1 OegreeofRigor
         7.3.2 Defining Adaptation Criteria
         7.3.3 Computing a Task Set Selector Value
         7.3.4 Interpreting the TSS Value and Selecting the Task Set
         7.4 SELECTING SOFTWARE ENGINEERING TASKS
         7.5 REFINEMENT OF MAJOR TASKS
         7.6 DEFINING A TASK NETWORK
         7.7 SCHEDULING
         7.7.1 Timeline Charts
         7.7.2 Tracking the Schedule
         7.8 THE PROJECT PIAN
         7.9 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 8 SOFTWARE QUALrTY ASSURANCE
         8.1 QUAUTY CONCEPTS
         8.1.1 Qualily
         8.1.2 Qualily Control
         8.1.3 Qualily Assurance
         8.1.4 Cost of Quality
         8.2 THE QUALITY MOVEMENT
         8.3 SOFTWARE QUAUTY ASSURANCE
         8.3.1 Background Issues
         8.3.2 SQAActivities
         8.4 SOFTWARE REVIEWS
         8.4.1 Cost Impact of Software Defects
         8.4.2 Defect Amplification and Removal
         8.5 FORMAL TECHNICAL REVIEWS
         8.5.1 The Review Meeting
         8.5.2 Review Reporting and Record Keeping
         8.5.3 Review Guidelines
         8.6 FORMAL APPROACHES TO SQA
         8.7 STATISTICAL QUALITY ASSURANCE
         8.8 SOFTWARE REUABILITY
         8.8.1 Measures of Reliabilily and Availabilify
         8.8.2 Soflware Safely and Hazard Analysis
         8.9 THESQAPlAN
         8.10 THE ISO 9000 QUALITY STANDARDS
         8.10.1 The ISO Approach to Qualily Assurance Systems
         8.10.2 The ISO 9001 Standard
         8.11 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 9 SOFTWARE CONFIGURATION MANAGEMENT
         9.1 . SOFTWARE CONFIGURATION MANAGEMENT
         9.1.1 Baselines
         9.1.2 Software Configuration Items
         9.2 THE SCM PROCESS
         9.3 IDENTIFICATION OF OBJECTS IN THE SOFTWARE CONFIGURATION
         9.4 VERSION CONTROL
         9.5 CHANGE CONTROL
         9.6 CONFIGURATION AUDIT
         9.7 STATUS REPORTING
         9.8 SCMSTANDARDS
         9.9 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         PART THREE CONVINTiONAL METHOOS FOR SOnWARE JNOINHRINO
         CHAPTER 10 SYSTEM ENGNEERING
         10.1 COMPUTER-BASED SYSTEMS
         10.2 THE SYSTEM ENGINEERING HIERARCHY
         10.2.1 System Modeling
         10.2.2 Information Engineering: An Overview
         10.2.3 Product Engineering: An Overview
         10.3 INFORMATION ENGINEERING
         10.4 INFORMATION STRATEGY PIANNING
         10.4.1 Enterprise Modeling
         10.4.2 Business-level Dala Modeling
         10.5 BUSINESS AREA ANALYSIS
         10.5.1 Process Modeling
         10.5.2 Information Flow Modeling
         10.6 PRODUCT ENGINEERING
         10.6.1 System Analysis
         10.6.2 Identification of Need
         10.6.3 Feasibility Study
         10.6.4 EconomicAnalysis
         10.6.5 Technical Analysis
         10.7 MODELNNG THE SYSTEM ARCHITECTURE
         10.8 SYSTEM MODEUNG AND SIMUIATION
         10.9 SYSTEM SPECIFICATION
         10.10SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 11 ANALYSIS CONCEPTS AND PRINCIPLES
         11.1 REQUIREMENTS ANALYSIS
         11.2 COMMUNICATION TECHNIQUES
         11.2.1 Initiating the Process
         11.2.2 Facilitaled Application Specification Techniques
         11.2.3 Qualily Function Deployment
         11.3 ANALYSIS PRINCIPLES
         11.3.1 The Information Domain
         11.3.2 Modeling
         11.3.3 Partitioning
         11.3.4 Essential and Implementation Views
         11.4 SOFTWARE PROTOTYPING
         11.4.1 Selecting the Protolyping Approach
         11.4.2 Protolyping Methods and Tools
         11.5 SPECIFICATION
         11.5.1 Specification Principles
         11.5.2 Representation
         11.5.3 The Software Requirements Specification
         11.6 SPECIFICATION REVIEW
         11.7 SUMMARY
         REFERENCES
         PROBIEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 12 ANALYSIS MODELING
         12.1 A BRIEF HISTORY
         12.2 THE ELEMENTS OF THE ANALYSIS MODEL
         12.3 DATAMODELING
         12.3.1 Data Objects, Altributes, and Relationships
         12.3.2 Cardinalityand Modality
         12.3.3 Entily-RelalionshipDiagrams
         12.4 FUNCTIONAl MODELING AND INFORMATION FLOW
         12.4.1 Data Flow Diagrams
         12.4.2 Extensions for Real-Time Syslems
         12.4.3 Ward and Mellor Extensions
         12.4.4 Hatley and Pirbhai Extensions
         12.5 BEHAVIORAL MODEUNG
         12.6 THE MECHANICS OF STRUCTURED ANAIYSIS
         12.6.1 Creating an Entily-RelationshipDiagram
         12.6.2 Creating a Data Flow Model
         12.6.3 Creating a Control Flow Model
         12.6.4 The Control Specification
         12.6.5 The Process Specification
         12.7 THE DATA DICTIONARY
         12.8 AN OVERVIEW OF OTHER CIASSICAL ANALYSIS METHODS
         12.8.1 Data Structured Systems Development
         12.8.2 Jackson System Development
         12.8.3 SADT
         12.9 SUMMARY
         REFERENCES
         PROBIEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 13 DESIGN CONCEPTS AND PRINCIPLES
         13.1 SOFTWARE DESIGN AND SOFTWARE ENGINEERING
         13.2 THE DESIGN PROCESS
         13.2.1 Design dnd Software Qualily
         13.2.2 The Evolution of Soflware Design
         13.3 DESIGN PRINCIPLES
         13.4 DESIGN CONCEPTS
         13.4.1 Abstraction
         13.4.2 Refinement
         13.4.3 Modularily
         13.4.4 Soflware Architectre
         13.4.5 Control Hierarchy
         13.4.6 Structural Partitioning
         13.4.7 Data Structure
         13.4.8 Software Procedure
         13.4.9 Information Hiding
         13.5 EFFECTIVE MODUIAR DESIGN
         13.5.1 Functional Independence
         13.5.2 Cohesion
         13.5.3 Coupling
         13.6 DESIGN HEURISTICS FOR EFFECTIVE MODULARITY
         13.7 THE DESIGN MODEL
         13.8 DESIGN DOCUMENTATION
         13.9 SUMMARY
         REFERENCES
         PROBtEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 14 DESIGN METHODS
         14.1 DATADESIGN
         14.2 ARCHITECTURAL DESIGN
         14.2.1 Contributors
         14.2.2 Areas of Application
         14.3 THE ARCHITECTURAL DESIGN PROCESS
         14.3.1 Transform Flow
         14.3.2 Transaction Flow
         14.4 TRANSFORM MAPPING
         14.4.1 An Example
         14.4.2 Design Steps
         14.5 TRANSACTION MAPPING
         14.5.1 An Example
         14.5.2 DesignSteps
         14.6 DESIGN POSTPROCESSING
         14.7 ARCHITECTURAL DESIGN OPTIMIZATION
         14.8 INTERFACE DESIGN
         14.8.1 Intemal and External Interface Design
         14.8.2 User Interface Design
         14.9 HUMAN-COMPUTER INTERFACE DESIGN
         14.9.1 Interface Design Models
         14.9.2 Task Analysis and Modeling
         14.9.3 Design Issues
         14.9.4 Implementation Tools
         14.9.5 Design Evaluation
         14.10 INTERFACE DESIGN GUIDELINES
         14.10.1 General Interaction
         14.10.2 Information Display
         14.10.3 Datalnput
         14.11 PROCEDURAL DESIGN
         14.11.1 Structured Programming
         14.11.2 Graphical Design Notation
         14.11.3 Tabular Design Notation
         14.11.4 Program Design Language
         14.11.5 APDLExample
         14.12 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 15 DESIGN FOR REAl-TIME SYSTEMS
         15.1 SYSTEM CONSIDERATIONS
         15.2 REAL-TIME SYSTEMS
         15.2.1 Integration and Performance Issues
         15.2.2 Interrupt Handling
         15.2.3 Real-Time Data Bases
         15.2.4. Real-Time Operating Systems
         15.2.5 Real-Time Languages
         15.2.6 Task Synchromzation and Communication
         15.3 ANALYSIS AND SIMUIATION OF REAL-TIME SYSTEMS
         15.3.1 Mathematical Tools for Real-Time System Analysis
         15.3.2 Simulation and Modeling Techniques
         15.4 REAL-TIME DESIGN
         15.5 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 16 SOFTWARE TESTING METHODS
         16.1 SOFTWARE TESTING FUNDAMENTALS
         16.1.1 Testing Obiectives
         16.1.2 Testing Principles
         16.1.3 Testability
         16.2 TEST CASE DESIGN
         16.3 WHITE BOX TESTING
         16.4 BASIS PATH TESTING
         16.4.1 Flow Graph Notation
         16.4.2 Cyclomatic Complexity
         16.4.3 Deriving Test Cases
         16.4.4 Graph Matrices
         16.5 CONTROL STRUCTURE TESTING
         16.5.1 Condition Testing
         16.5.2 Data Flow Testing
         16.5.3 Loop Testing
         16.6 BIACK-BOX TESTING
         16.6.1 Graph-Based Testing Methods
         16.6.2 Equivalence Partitioning
         16.6.3 Boundary Value Analysis
         16.6.4 Comparison Testing
         16.7 TESTING FOR SPECIALIZED ENVIRONMENTS
         16.7.1 TestingGUls
         16.7.2 Testing of Client/Server Architectures
         16.7.3 Testing Documentation and Help Facilities
         16.7.4 Testing fof Real-Time Systems
         16.8 SUMMARY
         REFERENCES .
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 17 SOFTWARE TESTING STRATEGIES
         17.1 A STRATEGIC APPROACH -TO SOFTWARE TESTING
         17.1.1 Verification and Validation
         17.1.2 Organizing for Software Testing
         17.1.3 A Soflware Testing Strategy
         17.1.4 Criteria for Completion or Testing
         17.2 STRATEGIC ISSUES
         17.3 UNITTESTING
         17.3.1 Unit Test Considerations
         17.3.2 Unit Test Procedures
         17.4 INTEGRATLON TESTING
         17.4.1 Top-Down Integration
         17.4.2 Bottom-Up Integration
         17.4.3 Regression Testing
         17.4.4 Comments on Integration Testing
         17.4.5 Integration Test Documentation
         17.5 VALIDATION TESTING
         17.5.1 Validation Test Criteria
         17.5.2 Configuration Review
         17.5.3 Alpha and Beta Testing
         17.6 SYSTEM TESTING
         17.6.1 Recovery Testing
         17.6.2 Securily Testing
         17.6.3 StressTesting
         17.6.4 Performance Testing
         17.7 THE ARTOF DEBUGGING
         17.7.1 The Debugging Process
         17.7.2 Psychological Considerations
         17.7.3 Debugging Approaches
         17.8 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 18 TECHNICAL METRICS FOR SOFTWARE
         18.1 SOFTWARE QUAUTY
         18.1.1 McCall's Qualily Factors
         18.1.2 FURPS
         18.1.3 The Transition to a Quantitative View
         18.2 A FRAMEWORK FOR TECHNICAL SOFTWARE METRICS
         18.2.1 The Challenge of Technical Metrics
         18.2.2 Measurement Principles
         18.2.3 The Attributes of Effective Software Metrics
         18.3 METRICS FOR THE ANALYSIS MODEl
         18.3.1 Function-Based Metrics
         18.3.2 The Bang Metric
         18.3.3 Metrics for Specification Quality
         18.4 METRICS FOR THE DESIGN MODEL
         18.4.1 Highlevel Design Metrics
         18.4.2 Component level Design Metrics
         18.4.3 Interface Design Metrics
         18.5 METRICS FOR SOURCE CODE
         18.6 METRICS FOR TESTING
         18.7 METRICS FOR MAINTENANCE
         18.8 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         PART POUR OBJECT-ORIENTED SOFTWARE ENOINEERINO
         CHAPTER 19 OBJECT-ORIENTED CONCEPTS AND PRINCIPLES
         19.1 THE OBJECTORIENTED PARADIGM
         19.2 OBJECTORIENTED CONCEPTS
         19.2.1 Classes and Objects
         19.2.2 Attributes
         19.2.3 Operations, Methods and Services
         19.2.4 Messages
         19.2.5 Encapsuhtion, Inheritance, and Polymorphism
         19.3 IDENTIFYING THE ELEMENTS OF AN OBJECT MODEL
         19.3.1 Identifying Classes and Objects
         19.3.2 Specifying Attributes
         19.3.3 Defining Operations
         19.3.4 Finalizing the ObIect Definition
         19.4 MANAGEMENT OF OBJECT-ORIENTED SOFTWARE PROJECTS
         19.4.1 The Common Process Framework for 00
         19.4.2 ObjeclOriented Project Metrics and Estimation
         19.4.3 An 00 Estimoting and Scheduling Approach
         19.4.4 Progress for an ObjectOriented Proiect
         19.5 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 20 OBJECT-ORIENTED ANALYSIS
         20.1 OBIECTORIENTED ANALYSIS
         20.1.1 Conventional vs. 00 Approaches
         20.1.2 The OOA Landscape
         20.2 DOMAIN ANALYSIS
         20.2.1 Reuse and Domain Analysis
         20.2.2 The Domain Analysis Process
         20.3 GENERIC COMPONENTS OF THE 00 ANALYSIS MODEL
         20.4 THE OOA PROCESS
         20.4.1 UseCases
         20.4.2 Class-Responsibility-CollaboratorModeling
         20.4.3 Defining Structures and Hierarchies
         20.4.4 Defining Subjects and Subsystems
         20.5 THE OBJECT-REIATIONSHIP MODEL
         20.6 THE OBJECT-BEHAVIOR MODEL
         20.6.1 Event Identification with Use Cases
         20.6.2 State Representations
         20.7 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 21 OBJECT-ORIENTEDDESIGN
         21.1 DESIGN FOR OBJECT-ORIENTED SYSTEMS
         21.1.1 Conventional vs. 00 Approoches
         21.1.2 Design Issues
         21.1.3 The OOD Landscape
         21.2 THE GENERIC COMPONENTS OF THE 00 DESIGN MODEL
         21.3 THE SYSTEM DESIGN PROCESS
         21.3.1 Partitioning the Analysis Model
         21.3.2 Concurrency and Subsystem Allocation
         21.3.3 The Task Management Component
         21.3.4 The Data Management Component
         21.3.5 The Resource Management Component
         21.3.6 The Human-Computer Interface Component
         21.3.7 Inter-Subsystem Communication
         21.4 THE OBJECT DESIGN PROCESS
         21.4.1 ObjectDescriptions
         21.4.2 Designing Algorithms and Data Structures
         21.4.3 Program Components and Interfaces
         21.5 DESIGN PATTERNS
         21.5.1 Describing a Design Pattern
         21.5.2 Using Patterns in Design
         21.6 OBJECt-ORIENTEDPROGRAMMING
         21.7 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 22 OBJECT-ORIENTED TESTING
         22.1 BROADENING THE VIEW OF TESTING
         22.2 TESTING OOA AND OOD MODELS
         22.2.1 Correctness of OOA and OOD Models
         22.2.2 Consistency of OOA and OOD Models
         22.3 OBJECTORIENTED TESTING STRATEGIES
         22.3.1 Unit Testing in the 00 Context
         22.3.2 Infegration Testing in the 00 Context
         22.3.3 Validation Testing in an 00 Context
         22.4 TEST CASE DESIGN FOR 00 SOFTWARE
         22.4.1 The Test Case Design Implications of 00 Concepts
         22.4.2 Applicability of Conventional Test Case Design Methods
         22.4.3 Fault-Based Testing
         22.4.4 The Impact of 00 Programming on Testing
         22.4.5 Test Cases and the Class Hierarchy
         22.4.6 Scenario-Based Test Design
         22.4.7 Testing Surface Structure and Deep Structure
         22.5 TESTING METHODS APPLICABLE AT THE CIASS LEVEL
         22.5.1 Random Testing for 00 Classes
         22.5.2 Partition Testing at the Class Level
         22.6 INTERCIASS TEST CASE DESIGN
         22.6.1 Multiple Class Testing
         22.6.2 Tests Derived from Behavior Models
         22.7 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 23 TECHNICAL METRICS FOR OBJECT-ORIENTED SYSTEMS
         23.1 THE INTENT OF OBJECTORIENTED METRICS
         23.2 THE DISTINGUISHING CHARACTERISTICS
         23.2.1 Localization
         23.2.2 Encapsulation
         23.2.3 Information hiding
         23.2.4 Inheritance
         23.2.5 Abstraction
         23.3 METRICS FOR THE 00 DESIGN MODEL
         23.4 CLASS-ORIENTED METRICS
         23.4.1 The CK Metrics Suite
         23.4.2 Metrics Proposed by Lorenz and Kidd
         23.5 OPERATION-ORIENTED METRICS
         23.6 METRICS FOR OBJECT-ORIENTED TESTING
         23.7 METRICS FOR OBJECTORIENTED PROJECTS
         23.8 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 24 FORMAL METHODS
         24.1 BASIC CONCEPTS
         24.1.1 Deficiencies of Less Formal Approaches
         24.1.2 Mathematics in Soflware Development
         24.1.3 Formal Methods Concepts
         24.2 MATHEMATICAl PRELIMINARIES
         24.2.1 Sets and Constructive Specification
         24.2.2 Set.Operators
         24.2.3 Logic Operators
         24.3 APPLYING MATHEMATICAl NOTATION FOR FORMAL SPECIFICATION
         24.4 FORMAL SPECIFICATION LANGUAGES
         24.5 USING Z TO REPRESENT AN EXAMPLE SOFTWARE COMPONENT
         24.6 THE TEN COMMANDMENTS OF FORMAL METHODS
         24.7 FORMAL METHODS-THE ROAD AHEAD
         24.8 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 25 CLEANROOM SOFTWARE ENGINEERING
         25.1 THE CLEANROOM APPROACH
         25.1.1 The Cleanroom Strategy
         25.1.2 What Makes Cleanroom Different?
         25.2 FUNCTIONAL SPECIFICATION
         25.2.1 Black-Box Specification
         25.2.2 State-Box Specification
         25.2.3 Clear-Box Specification
         25.3 DESIGN REFINEMENT AND VERIFICATION
         25.3.1 Design Refinement and Verification
         25.3.2 Advantages of Design Verification
         25.4 CLEANROOM TESTING
         25.4.1 Statistical Use Testing
         25.4.2 Gertificotion
         25.5 SUMMARY .
         REFERENCES
         PROBIEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 26 SOFTWARE REUSE
         26.1 MANAGEMENT ISSUES
         26.1.1 Roadblocks to Reuse
         26.1.2 A Hardware Analogy
         26.1.3 Some Suggestions for Establishing an Approach to Reuse
         26.2 THE REUSE PROCESS
         26.2.1 Reusable Artifacts
         26.2.2 A Process Model
         26.3 DOMAIN ENGINEERING
         26.3.1 The Domain Analysis Process
         26.3.2 Characterization Functions
         26.3.3 Structural Modeling and Structure Points
         26.4 BUILDING REUSABLE COMPONENTS
         26.4.1 Analysis and Design for Reuse
         26.4.2 Construction Methods
         26.4.3 Component-Based Development
         26.5 CIASSIFYING AND RETRIEVING COMPONENTS
         26.5.1 Describing Reusable Components
         26.5.2 The Reuse Environment
         26.6 ECONOMICS OF SOFTWARE REUSE
         26.6.1 Impact on Quality, Productivity and Cost
         26.6.2 Cost Analysis Using Structure Points
         26.6.3 Reuse Metrics
         26.7 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 27 REENGINEERING
         27.1 BUSINESS PROCESS REENGINEERING
         27.1.1 Business Processes
         27.1.2 Principles of Business Process Reengineering
         27.1.3 ABPRModel
         27.1.4 Words of Warning
         27.2 SOFTWARE REENGINEERING
         27.2.1 Software Maintenance
         27.2.2 A SoftwareReengineering Process Model
         27.3 REVERSE ENGINEERING
         27.3.1 Reverse Engineering to Understand Processing
         27.3.2 Reverse Engineering to Understand Data
         27.3.3 Reverse Engineering User Interfaces
         27.4 RESTRUCTURING
         27.4.1 Code Restructuring
         27.4.2 Data Restructuring
         27.5 FORWARD ENGINEERING
         27.5.1 Forward Engineering for Client/Server Architectures
         27.5.2 Forward Engineering for Object-Oriented Architectures
         27.5.3 Forward Engineering User Interfaces
         27.6 THE ECONOMICS OF REENGINEERING
         27.7 SUMMARY
         REFERENCES
         PROBLEMS AND POINTS TO PONDER
         FURTHER READINGS AND OTHER INFORMATION SOURCES
         CHAPTER 28 CLlENT/SERVER SOFTWARE ENGlNEERlNG
         28.l THE STRUCTURE OF CLlENT/SERVER SYSTEMS
         28.l.l Soflware Components for C/S Systems
         28.l.2 The Distribution of Software Components
         28.l.3 Guidelines for Distributing Application Components
         28.l.4 linking C/S Software Components
         28.l.5 Middfeware and Obiect Request Broker
         28.2 SOFTWARE ENGlNEERlNG FOR C/S SYSTEMS
         28.3 ANALYSlS MODEUNG iSSUES
         28.4 DESlGN FOR C/S SYSTEMS
         28.4. l Conventional Design Approaches
         28.4.2 Databose Design
         28.4.3 An Overview of a Design Approach
         28.4.4 Process Design iteration
         28.5 TESTlNG iSSUES
         28.5.1 Overall C/S Testing Strategy
         28.5.2 C/S Testing Tactics
         28.6 SUMMARY
         REFERENCES
         PROBLEMS AND POlNTS TO PONDER
         FURTHER READlNGS AND OTHER INFORMATlON SOURCES
         CHAPTER 29 COMPUTER-AlDED SOFTWARE ENGlNEERlNG
         29.1 WHATlSCASE?
         29.2 BUlLDlNG BLOCKS FOR CASE
         29.3 A TAXONOMY OF CASE TOOLS
         29.4 INTEGRATED CASE ENVlRONMENTS
         29.5 THE INTEGRATlON ARCHlTECTURE
         29.6 THE CASE REPOSlTORY
         29.6.l The Roe of the Repository in l-CASE
         29.6.2 Features and Content
         29.7 SUMMARY
         REFERENCES
         PROBlEMS AND POlNTS TO PONDER
         FURTHER READlNGS AND OTHER INFORMATlON SOURCES
         CHAPTER 30 THE ROAD AHEAD
         30.1 THE IMPORTANCE OF SOFTWARE-REVlSlTED
         30.2 THE SCOPE OF CHANGE
         30.3 PEOPLE AND THE WAY THEY BUlLD SYSTEMS
         30.4 THE "NEW" SOFTWARE PROCESS
         30.5 NEW MODES FOR REPRESENTlNG INFORMATlON
         30.6 TECHNOLOGY AS A DRlVER
         30.7 A CONCLUDlNG COMMENT
         REFERENCES
         PROBLEMS AND POlNTS TO PONDER
         FURTHER READlNGS AND OTHER INFORMATlON SOURCES
      · · · · · ·     (
收起)