Preface | p. xv |
Introduction to Software Engineering | p. 1 |
The Scope of Software Engineering | p. 3 |
Historical Aspects | p. 4 |
Economic Aspects | p. 7 |
Maintenance Aspects | p. 8 |
Specification and Design Aspects | p. 13 |
Team Programming Aspects | p. 15 |
The Object-Oriented Paradigm | p. 17 |
Terminology | p. 21 |
The Software Process | p. 30 |
Client, Developer, and User | p. 32 |
Requirements Phase | p. 33 |
Specification Phase | p. 35 |
Design Phase | p. 38 |
Implementation Phase | p. 40 |
Integration Phase | p. 41 |
Maintenance Phase | p. 42 |
Retirement | p. 43 |
Problems with Software Production: Essence and Accidents | p. 44 |
Improving the Software Process | p. 51 |
Capability Maturity Models | p. 51 |
Other Software Process Improvement Initiatives | p. 54 |
Costs and Benefits of Software Process Improvement | p. 55 |
Software Life-Cycle Models | p. 64 |
Build-and-Fix Model | p. 64 |
Waterfall Model | p. 65 |
Rapid Prototyping Model | p. 70 |
Incremental Model | p. 72 |
Extreme Programming | p. 75 |
Synchronize-and-Stabilize Model | p. 77 |
Spiral Model | p. 78 |
Object-Oriented Life-Cycle Models | p. 82 |
Comparison of Life-Cycle Models | p. 84 |
Teams | p. 90 |
Team Organization | p. 90 |
Democratic Team Approach | p. 92 |
Classical Chief Programmer Team Approach | p. 93 |
Beyond Chief Programmer and Democratic Teams | p. 97 |
Synchronize-and-Stabilize Teams | p. 101 |
Extreme Programming Teams | p. 102 |
The Tools of the Trade | p. 106 |
Stepwise Refinement | p. 106 |
Cost-Benefit Analysis | p. 113 |
Software Metrics | p. 114 |
Case | p. 115 |
Taxonomy of Case | p. 116 |
Scope of Case | p. 118 |
Software Versions | p. 122 |
Configuration Control | p. 124 |
Build Tools | p. 128 |
Productivity Gains with Case Technology | p. 129 |
Testing | p. 136 |
Quality Issues | p. 137 |
Nonexecution-Based Testing | p. 139 |
Execution-Based Testing | p. 145 |
What Should Be Tested? | p. 145 |
Testing versus Correctness Proofs | p. 151 |
Who Should Perform Execution-Based Testing? | p. 158 |
When Testing Stops | p. 160 |
From Modules to Objects | p. 167 |
What Is a Module? | p. 167 |
Cohesion | p. 171 |
Coupling | p. 177 |
Data Encapsulation | p. 184 |
Abstract Data Types | p. 194 |
Infromation Hiding | p. 195 |
Objects | p. 198 |
Inheritance, Polymorphism, and Dynamic Binding | p. 201 |
Cohesion and Coupling of Objects | p. 203 |
The Object-Oriented Paradigm | p. 204 |
Reusability, Portability, and Interoperability | p. 212 |
Reuse Concepts | p. 212 |
Impediments to Reuse | p. 214 |
Reuse Case Studies | p. 216 |
Objects and Reuse | p. 222 |
Reuse during the Design and Implementation Phases | p. 222 |
Reuse and Maintenance | p. 230 |
Portability | p. 231 |
Why Portability? | p. 239 |
Techniques for Achieving Portability | p. 240 |
Interoperability | p. 243 |
Future Trends in Interoperability | p. 245 |
Planning and Estimating | p. 257 |
Planning and the Software Process | p. 257 |
Estimating Duration and Cost | p. 259 |
Components of a Software Project Management Plan | p. 272 |
Software Project Management Plan Framework | p. 274 |
IEEE Software Project Management Plan | p. 274 |
Planning Testing | p. 278 |
Planning Object-Oriented Projects | p. 279 |
Training Requirements | p. 280 |
Documentation Standards | p. 281 |
CASE Tools for Planning and Estimating | p. 282 |
Testing the Software Project Management Plan | p. 282 |
The Phases of the Software Life Cycle | p. 289 |
Requirements Phase | p. 290 |
Requirements Elicitation | p. 291 |
Requirements Analysis | p. 294 |
Rapid Prototyping | p. 294 |
Human Factors | p. 296 |
Rapid Prototyping as a Specification Technique | p. 298 |
Reusing the Rapid Prototype | p. 300 |
Management Implications of the Rapid Prototyping Model | p. 302 |
Experiences with Rapid Prototyping | p. 304 |
Techniques for Requirements Elicitation and Analysis | p. 305 |
Testing during the Requirements Phase | p. 305 |
CASE Tools for the Requirements Phase | p. 306 |
Metrics for the Requirements Phase | p. 307 |
Object-Oriented Requirements? | p. 308 |
Air Gourmet Case Study: Requirements Phase | p. 308 |
Air Gourmet Case Study: Rapid Prototype | p. 311 |
Challenges of the Requirements Phase | p. 313 |
Specification Phase | p. 319 |
The Specification Document | p. 319 |
Informal Specifications | p. 321 |
Structured Systems Analysis | p. 323 |
Other Semiformal Techniques | p. 331 |
Entity-Relationship Modeling | p. 332 |
Finite State Machines | p. 335 |
Petri Nets | p. 341 |
Z | p. 346 |
Other Formal Techniques | p. 351 |
Comparison of Specification Techniques | p. 352 |
Testing during the Specification Phase | p. 353 |
CASE Tools for the Specification Phase | p. 354 |
Metrics for the Specification Phase | p. 355 |
Air Gourmet Case Study: Structured Systems Analysis | p. 355 |
Air Gourmet Case Study: Software Project Management Plan | p. 357 |
Challenges of the Specification Phase | p. 358 |
Object-Oriented Analysis Phase | p. 366 |
Object-Oriented Analysis | p. 366 |
Elevator Problem: Object-Oriented Analysis | p. 369 |
Use-Case Modeling | p. 369 |
Class Modeling | p. 371 |
Dynamic Modeling | p. 375 |
Testing during the Object-Oriented Analysis Phase | p. 378 |
CASE Tools for the Object-Oriented Analysis Phase | p. 383 |
Air Gourmet Case Study: Object-Oriented Analysis | p. 383 |
Challenges of the Object-Oriented Analysis Phase | p. 390 |
Design Phase | p. 395 |
Design and Abstraction | p. 395 |
Action-Oriented Design | p. 396 |
Data Flow Analysis | p. 397 |
Transaction Analysis | p. 403 |
Data-Oriented Design | p. 406 |
Object-Oriented Design | p. 406 |
Elevator Problem: Object-Oriented Design | p. 407 |
Formal Techniques for Detailed Design | p. 415 |
Real-Time Design Techniques | p. 416 |
Testing during the Design Phase | p. 418 |
CASE Tools for the Design Phase | p. 418 |
Metrics for the Design Phase | p. 419 |
Air Gourmet Case Study: Object-Oriented Design | p. 420 |
Challenges of the Design Phase | p. 429 |
Implementation Phase | p. 434 |
Choice of Programming Language | p. 434 |
Fourth-Generation Languages | p. 437 |
Good Programming Practice | p. 440 |
Coding Standards | p. 445 |
Module Reuse | p. 446 |
Module Test Case Selection | p. 447 |
Black-Box Module-Testing Techniques | p. 451 |
Glass-Box Module-Testing Techniques | p. 454 |
Code Walkthroughs and Inspections | p. 458 |
Comparison of Module-Testing Techniques | p. 458 |
Cleanroom | p. 459 |
Potential Problems When Testing Objects | p. 460 |
Management Aspects of Module Testing | p. 463 |
When to Rewrite Rather than Debug a Module | p. 463 |
CASE Tools for the Implementation Phase | p. 465 |
Air Gourmet Case Study: Black-Box Test Cases | p. 465 |
Challenges of the Implementation Phase | p. 467 |
Implementation and Integration Phase | p. 474 |
Introduction to Implementation and Integration | p. 474 |
Testing during the Implementation and Integration Phase | p. 481 |
Integration Testing of Graphical User Interfaces | p. 481 |
Product Testing | p. 482 |
Acceptance Testing | p. 483 |
CASE Tools for the Implementation and Integration Phase | p. 484 |
CASE Tools for the Complete Software Process | p. 484 |
Integrated Environments | p. 485 |
Environments for Business Applications | p. 486 |
Public Tool Infrastructures | p. 487 |
Potential Problems with Environments | p. 487 |
Metrics for the Implementation and Integration Phase | p. 488 |
Air Gourmet Case Study: Implementation and Integration Phase | p. 488 |
Challenges of the Implementation and Integration Phase | p. 489 |
Maintenance Phase | p. 493 |
Why Maintenance Is Necessary | p. 493 |
What Is Required of Maintenance Programmers | p. 494 |
Maintenance Case Study | p. 497 |
Management of Maintenance | p. 498 |
Maintenance of Object-Oriented Software | p. 501 |
Maintenance Skills versus Development Skills | p. 504 |
Reverse Engineering | p. 505 |
Testing during the Maintenance Phase | p. 506 |
CASE Tools for the Maintenance Phase | p. 507 |
Metrics for the Maintenance Phase | p. 507 |
Air Gourmet Case Study: Maintenance Phase | p. 508 |
Challenges of the Maintenance Phase | p. 508 |
Broadlands Area Children's Hospital | p. 513 |
Software Engineering Resources | p. 518 |
Air Gourmet Case Study: C Rapid Prototype | p. 520 |
Air Gourmet Case Study: Java Rapid Prototype | p. 521 |
Air Gourmet Case Study: Structured Systems Analysis | p. 522 |
Air Gourmet Case Study: Software Project Management Plan | p. 529 |
Air Gourmet Case Study: Object-Oriented Analysis | p. 534 |
Air Gourmet Case Study: Design for C++ Implementation | p. 535 |
Air Gourmet Case Study: Design for Java Implementation | p. 560 |
Air Gourmet Case Study: Black-Box Test Cases | p. 582 |
Air Gourmet Case Study: C++ Source Code | p. 588 |
Air Gourmet Case Study: Java Source Code | p. 589 |
Bibliography | p. 590 |
Author Index | p. 617 |
Subject Index | p. 623 |
Table of Contents provided by Syndetics. All Rights Reserved. |