BRlEF CONTENTS
Prologue 1
PART 1
Introduction to the
Software Process
CNAPTER l
Scope of Soflware Engineering
CNAPTER 2
The Software Process and
Its Problems
CNAPTER 3
Software Life-Cycle Models
CMAPTER 4
Stepwise Retinement, CASE, and
Other Tools of the Trade
CNAPTER 5
Testing Principles
CHAPTER 6
Introduction to Objects
PART 2
The Phases of the Software Process
CNAPTER l
Requirements Phase
CNAPTER 8
Specification Phase
CMAPTER
Object-Oriented
Analysis Phase
CMAPTER lO
Planning Phase
CMAPTER ll
Design Phase
CNAPTER 12
implementation Phase
CMAPTER 13
Implementation and
Integration Phase
CMAPTER
Maintenance Phase
Epilogue
Appendices
APPENDlX A
Osbert Oglesby, Art Dealer
APPENDlX B
Software
Engineering Resources
APPEHDlX C
MSG Case Study:
Rapid Prototype
APPENDlX D
MSG Case Study: Structured
Systems Analysis
BRIEFCONTENTS
APPENDIX E
MSG Case Study:
Object-Oriented Analysis
APPBNDIX F
MSG Case Study: Software Project
Management Plan
APPENDIX O
MSG Case Study: Design
APPENDIX H
MSG Case Study: Black-Box
Test Cases
APPENDIX I
MSG Case Study: Source
Code
Bibliography
Author Inde
Subject Inde
CONTENTS
Prologue
PART 1
Introduction to the
Software Process
CHAPTIR 1
Scope of Software Engineering
1.1 Historical Aspects
1.2 Economic Aspects
1.3 Maintenance Aspects
1.4 Specification and Design Aspects
1.5 Team Programming Aspects
1.6 The Object-Oriented Paradignr.
1.7 Tenninology
Chapter Review
For Further Reading
Problems
References
CHAPTIR 2
The Software Process and
Its Problems
2.1 Client, Developer, and User
2.2 Requirements Phase
2.2.1Requirements Phase Testing
2.3 Specification Phase
2.3.1Specification Phase Tesring
2.4 Planning Phase
2.4.1Planning Phase Testing
2.5 Design Phase
2.5.1Design Phase Testing
2.6 Implementation Phase
2.6.1Implementation Phase Testing
2.7 Integration Phase
2.7.1Integration Phase Testing
2.8 Maintenance Phase
2.8.1Maintenance Phase Testing
2.9 Retirement
2.10Problems with Software Production:
Essence and Accidents
2.10.1Complexity
2.10.2Confonnity
2.10.3Changeability
2.10.4Invisibility
2.10.5No Silver Bullet?
Chapter Review
For Further Reading
Problems
References
CHAPTIR 3
Software Life-Cycle Models
3.1 Build-and-Fix Model
3.2 Waterfall Model
3.2.1 Analysis of the Waterfall Model
3.3 Rapid Prototyping Model
3.3.1Integrating the Waterfall and Rapid
Prototyping Models
3.4 Incremental Model
3.4.1Analysis of the Incremcntal Model
3.5 SpiralModel
3.5.1 Analysis of the Spiral Model
3.6 Comparison of Life-Cycle Models
3.7 Capability Maturity Model
3.8 ISO 9000
Chapter Review
For Further Reading
Problems
References
CHAPTIR 4
Stepwise Refinement, CASE, and
Other Tools of the Trade
4.1 Stepwise Refinement
4.1.1Stepwise Refinemcnt Example
4.2 Cost-Benefit Analysis
4.3 CASE (Computer-Aided Software
Engineering)
4.3.1Taxonomy of CASE
4.4 Scope of CASE
4.5 Software Versions
4.5.1Revisions
4.5.2Variations
4.6 Configuration Control
4.6.1Configuration Control during Product
Maintenance
4.6.2Baselines
4.6.3Configuration Control during Product
Development
4.7Build Tools
4.8 Productivity Gains with CASE Technology
4.9 Software Metrics
Chapter Review
For Further Reading
Problems
References
CHAPTIR 5
Testing Principles
5.1 Quality Issues
5.1.1 Software Quality Assurance
5.1.2Managerial Independence
5.2 Nonexecution-Based Testing
5.2.1Walkthroughs
5.2.2Managing Walkthroughs
5.2.3Inspections
5.2.4Comparison of Inspections and Walkthroughs
5.2.5Metrics for Inspections
5.3 Execution-Based Testing
5.4 What Should Be Tested?
5.4.1Utility
5.4.2Reliability
5.4.3Robustness
5.4.4Perfonnance
5.4.5Correctness
5.5Testing versus Correctness Proofs
5.5.1Example of a Correctness Proof
5.5.2Correctness Proof Case Study
5.5.3Correctness Proofs and Software
Engineering 129
5.6 Who Should Perform Execution-Based
Testing?
5.7 When Testing Stops
Chapter Review
For Further Reading
Problems
References
CHAPTIR 6
Introduction to Objects
6.1 What Is a Module?
6.2 Cohesion
6.2.1Coincidental Cohesion
6.2.2Logical Cohesion
6.2.3Temporal Cohesion
6.2.4Procedural Cohesion
6.2.5Conununicational Cohesion
6.2.6Informational Cohesion
6.2.7Functional Cohesion
6.2.8Cohesion Example
6.3 Coupling
6.3.1Content Coupling
6.3.2Common Coupling
6.3.3Control Coupling
6.3.4Stamp Coupling
6.3.5Data Coupling
6.3.6Coupling Example
6.4 Data Encapsulation
6.4.1Data Encapsulation and Product
Development
6.4.2Data Encapsulation and Product
Maintenance
6.5Abstract Data Types
6.6Information Hiding
6.7Objects
6.8Polymorphism and Dynamic Binding
6.9Cohesion and Coupling of Objects
6.10Reuse
6.10.1Impediments to Reuse
6.11 Reuse Case Studies
6.11.1Raytheon Missile Systems
Division
6.11.2Toshiba Software Factory
6.11.3NASASoftware
6.11.4GTE Data Services
6.11.5HcwIett-Packard
6.12 Reuse and Maintenance
6.13 Objects and Productivity
Chapter Review
For Further Reading
Problems
References
PART
The Phases of the
Software Process
CHAPTIR 7
Requirements Phase
7.1 Requirements Analysis Techniques
7.2 Rapid Prototyping
7.3 Human Factors
7.4 Rapid Prototyping as a Specification
Technique
7.5 Reusing the Rapid Prototype
7.6 Other Uses of Rapid Prototyping
7.7 Management Implications of the Rapid
Prototyping Model
7.8 Experiences with Rapid Prototyping
7.9 Joint Application Design
7.10 Comparison of Requirements Analysis
Techniques
7.11 Testing during the Requirements Phase
7.12 CASE Tools for the Requirements
Phase 212
7.13 Metrics for the Requirements Phase
7.14 MSG Case Study: Requirements Phase
7.15 MSG Case Study: Rapid Prototype
Chapter Review
For Further Reading
Problems
References
CHAPTIR 8
Specification Phase
8.1 The Specification Document
8.2 Informal Specifications
8.2.1Case Study: Text Processing
8.3 Structured Systems Analysis
8.3.1Sally's Software Shop
8.4Other Semiformal Techniques
8.5Entity-Relationship Modeling
8.6Finite State Machines
8.6.1Elevator Problem: Finite State
Machines
8.7 Petri Nets
8.7.1Elevator Problem: Petri Nets
8.8 Z 250
8.8.1Elevator Problem: Z
8.8.2Analysis of Z
8.9 Other Formal Techniques
8.10 Comparison of Specification
Techniques
8.11 Testing during the Specification Phase
8.12 CASE Tools for the Specification Phase
8.13 Metrics for the Specification Phase
8.14 MSG Case Study: Structured Systems
Analysis
Chapter Review
For Further Readine
Problems
References
CHAPTIR 9
Object-Oriented
Analysis Phase
9.1 Object-Oriented versus Structured Paradigm
9.2 Object-Oriented Analysis
9.3 Elevator Problem Object-Oriented Analysis
9.3.1Class Modeling
9.3.2Dynamic Modeling
9.3.3Functional Modeling
9.4 Object-Oriented Life-Cycle Models
9.5 CASE Tools for the Object-Oriented
Analysis Phase
9.6 MSG Case Study: Object-Oriented
Analysis
Chapter Review
For Further Reading
Problems
References
CHAPTlR lO
Planning Phase
l0.l Estimating Duration and Cost
l0.l.lMetrics for the Size of . Product
l0.1.2Techniques of Cost Estimation
l0.l.3 Intennediate COCOMO
l0.l.4Tracking Duration and Cost
Estimates
10.2 Components of a Software Project
Management Plan
l0.3 Software Project Management Plan
Framework
10.4 IEEE Software Project Management
Plan
l0.5 Planning of Testing
l0.6 Planning of Object-Oriented Projects
l0.7 Training Requirements
l0.8 Documentation Standards
l0.9 CASE Tools for the Planning Phase
l0.l0 Testing during the Planning Phase
l0.l1 MSG Case Study: Planning Phase
Chapter Review
For Further Reaamg
Problems
References
CHAPTlR ll
Design Phase
ll.l Design and Abstraction
11.2 Action-Oriented Design
ll .3 Data Flow Analysis
ll .3.l Data Flow Analysis Example
ll.3.2 Extensions
ll.4 Transaction Analysis
ll.5 Data-Oriented Design
ll.6 Jackson System Development
ll.6.lOverview of Jackson System
Development
ll.6.2 Why Jackson System Development
is Presented in This Chapter
l1.6.3Elevator Problcm: Jackson System
Dcvelopment
ll.6.4Analysis of Jackson System
Development
l1.7 Techniques of Jackson, Wamier, and
On-
ll.8 Object-Oriented Design
ll.8.l Elevator Problem: Object-Oriented
Design
ll.9 Detailed Oesign
ll.l0 Comparison of Action-, Data-, and
Object-Oriented Design
ll.ll Difficulties Associated with Real-Time
Systems 353
ll.l2 Real-Time Design Techniques
ll.13 Testing during the Design Phase
ll.14 CASE Tools for the Design Phase
11.15 Metrics for the Design Phase
ll.16 MSG Case Study: Object-Oriented
Design
Chapter Review
For Further Reading
Problems
References
CHAPTlR
Implementation Phase
12.1 Choice of Programming Language
12.2 Fourth Generation Languages
12.3 Structured Programming
l2.3.lHistory of Structured
Programming
l2.3.2Why the goto Statement Is
Considered Harmful
l2.4 Good Programming Practice
12.5 Coding Standards
l2.6 Team Organization
12.7 Democratic Team Approach
12.7.1Analysis of the Democratic Team
Approach
l2.8Classical Chief Programmer Team
Approach 388
12.8.1 The New York Times Project
12.8.2Impracticality of the Qassical Chief
Programmer Team Approach
12.9 Beyond Chief Programmer and
Democratic Teams
12.10 Portability
12.10.1 Hardware Incompatibilities
12.10.2 Operating System Incompatibilities
12.10.3 Numerical Software Incompatibilities
12.10.4 Compiler Incompatibilities
12.11 Why Portability?
12.12 Techniques for Achieving Portability
12.12.1 Portable System Software
12.12.2 Portable Application Software
12.12.3 PortableData
12.13 ModuleReuse
12.14 Module Test Case Selection
12.14.1 Testing to Specifications versus
Testing to Code
12.14.2 Feasibility of Testing to
Specifications
12.14.3 Fcasibility of Testing to Code
12.15 Black-Box Module-Testing
Techniques
12.15.1 Equivalence Testing and Boundary
Value Analysis
12.15.2 Functional Testing
12.16 Glass-Box Module-Testing
Techniques
12.16.1 Structural Testing: Statement,
Branch, and Path Coverage
12.16.2 Complexity Metrics
12.17 Code Walkthroughs and Inspections
12.18 Comparison of Module-Testing
Techniques
12.19 Cleanroom
12.20 Testing Objects
12.21 Management Aspects of Module-
Testing
12.21.1 When to Rewrite Rather Than
Debug a Module
12.22 Testing Distributed Software
12.23 Testing Real-Time Software
12.24 CASE Tools for the Implementation Phase
12.25 MSG Case Study: Black-Box Test Cases
Chapter Review
For Further Reading
Problems
References
CHAPTIR 13
Implementation and
Integration Phase
13.1Implementation and Integration
13.1.1Top-Down Implementation and
Integration
13.1.2Bottom-Up Implementation and
Integration
13.1.3Sandwich Implementation and
Integration
13.1.4Implementation and Integration of
Object-Orientcd Products
13.1.5 Management Issues during the
Implementation and Integration Phase
13.2 Testing during the Implementation and
Integration Phase
13.3Integration Testing of Graphical User
Interfaces
13.4Product Testing
13.5Acceptance Testing
13.6 CASE Tools for the Implementation and
Integration Phase
13.7 CASE Tools for the Complete Software
Process
13.8 Language-Centered Environments
13.9 Structure-Oriented Environments
13.10 Toolkit Environments
13.11 Integrated Environments
13.11.1 Process Integration
13.11.2 Tool Integration
13.11.3 Other Fonns of Integration
13.12 Environments for Business
Applications
13.13 Public Tool Infrastructures
13.14 Comparison of Environment Types
13.15 Metrics for the Implementation and
Integration Phase
13.16 MSG Case Study: Implementation and
Integration Phase
Chapter Review
For Further Reading
Problems
References
CHAPTIR 14
Maintenance Phase
14.1 Why Maintenance Is Necessary
14.2 What Is Required of Maintenance
Progranuners
14.3 Maintenance Case Study
14.4 Management of Maintenance
14.4.1Fault Reports
14.4.2Authorizing Changes to the
Product
14.4.3 Ensuring Maintainability
14.4.4Problem of Repeated Maintenance
14.5 Maintenance of Object-Oriented
Software
14.6 Maintenance Skills versus Development
Skills
14.7 Reverse Engineering
14.8 Testing during the Maintenance
Phase
14.9 CASE Tools for the Maintenance
Phase
14.10 Metrics for the Maintenance Phase
Chapter Review
For Further Reading
Problems
References
Epilogue
Appendices
APPIMDIX A
Osbert Oglesby--Art Dealer
APPINDIX ?B
Software
Engineering Resources
APPINDIX c
MSG Case Study:
Rapid Prototype
APPINDIX D
MSG Case Study: Structured
Systems Analysis
APPINDIX E
MSG Case Study:
Object-Oriented Analysis
APPINDIX F
MSG Case Study: Software Project
Management Plan
APPINDIX O
MSG Case Study: Design
APPINDIX H
MSG Case Study: Black-Box
TestCases 539
APPINDIX 1
MSG Case Study: Source
Code
Bibliography
Author Index