| Preface | xv |
| Who should read this book | xv |
| Why I wrote this book | xv |
| How this book is organized | xviii |
| Acknowledgments | xviii |
| References | xix |
Part I | Introduction | 1 |
Chapter 1 | Software in perspective | 3 |
1.1 | The software crisis | 4 |
1.2 | No silver bullet | 5 |
1.3 | Attempts to resolve the software crisis | 5 |
1.4 | Understanding the nature of software | 7 |
1.5 | Summary | 10 |
| References | 10 |
Chapter 2 | Software development lifecycle models | 13 |
2.1 | The waterfall model | 14 |
2.2 | The DoD-2167A model | 16 |
2.3 | The rapid prototyping model | 18 |
2.4 | The spiral model | 19 |
2.5 | Hybrid models | 22 |
2.6 | Model-based development | 23 |
2.7 | Object-oriented models | 24 |
2.8 | Summary | 26 |
| References | 26 |
Chapter 3 | The software development process | 29 |
3.1 | Software development process FAQs | 31 |
| Why is it important that the process be written? | 31 |
| Won't a written process stifle creativity? | 31 |
| We have a process that isn't written down, but it seems to work. Why should we change it? | 32 |
| How can I convince the software engineering manager to follow a written procedure? | 32 |
| How can having a written process improve software quality? | 32 |
| We do not have a written procedure (or we have one but do not follow it), and the quality of our software is not too bad. | |
| Why should we change? | 33 |
| What is software quality anyway? | 34 |
| So we take the process that we currently use and write it down. Then what? | 34 |
| How can you build in flexibility so that the process can be tailored to suit the needs of the project team? | 35 |
| How can information collected from using the process be used to improve the process? | 35 |
| Who should be responsible for enforcing the process? | 35 |
| Who should be the keeper of the process? | 36 |
3.2 | Summary | 36 |
| References | 36 |
Chapter 4 | Economic justification | 39 |
4.1 | Economic justification | 40 |
4.2 | Software defect cost models | 43 |
4.3 | Measuring the cost of quality | 47 |
4.4 | Summary | 48 |
| References | 49 |
Part II | Overview of software verification activities | 51 |
| Reference | 52 |
Chapter 5 | The inspection process | 53 |
5.1 | Inspection process FAQs | 55 |
| What is an inspection? | 55 |
| Why is an inspection considered formal? | 55 |
| Who participates in an inspection? | 56 |
| What are the responsibilities of each role? | 56 |
| Who attends the inspection meeting? | 56 |
| Why is the producer present? | 56 |
| How are inspections different from walk-throughs? | 57 |
| What are the key attributes of the inspection process? | 57 |
| Who decides what to inspect? | 58 |
| How do you know if you are ready to perform an inspection? | 59 |
| What materials are required to conduct an inspection? | 59 |
| How are these materials disseminated? | 61 |
| What if the inspection team does not have five working days to review the materials? | 61 |
| We are having our first inspection and I am one of the inspectors. What should I do to prepare? | 61 |
| Who decides what is a problem? | 62 |
| What is an error? | 62 |
| What is a defect? | 62 |
| What if the producer doesn't agree? | 62 |
| I am an inspector, I have completed my preparation, and it is time for the inspection meeting. What happens now? | 62 |
| How does the moderator know if the inspectors are prepared? | 63 |
| How does the moderator keep the meeting focused? | 63 |
| What happens if the producer becomes defensive? | 63 |
| How do you justify the preparation time required for an inspection? | 64 |
| Why are inspection meetings limited to two hours? What happens if the meeting runs over? | 64 |
| What information (if any) should be made public regarding inspections? | 64 |
| When is the inspection officially complete? | 64 |
5.2 | Summary | 64 |
| References | 65 |
| Further reading | 65 |
| Resources on the WWW | 66 |
Chapter 6 | Applying the inspection process | 67 |
6.1 | Attributes of a good process | 68 |
6.2 | Requirements inspections | 70 |
6.3 | Design inspection | 74 |
6.4 | Code inspection | 78 |
6.5 | Test procedure inspection | 82 |
6.6 | Summary | 85 |
| References | 85 |
Chapter 7 | Software quality metrics | 87 |
7.1 | A strategy for implementing a software metrics program | 89 |
7.2 | Software quality metrics framework | 90 |
7.3 | Metrics that support software verification activities | 101 |
7.4 | Summary | 105 |
| References | 106 |
| Further information | 106 |
Chapter 8 | Configuration management | 109 |
8.1 | Software configuration management basics | 111 |
8.2 | Identification | 116 |
8.3 | Baseline management | 119 |
| What baselines are required to be defined and managed? | 120 |
| How is the current software configuration defined? | 120 |
| Who must approve changes to baselines? | 120 |
| How and where are baselines created and physically controlled? | 120 |
| How are people informed of changes? | 121 |
| How are baselines verified? | 121 |
| Are baselines tied to project milestones? | 121 |
| What information is required to process a change to a baseline? | 121 |
| What tools, resources, and training are required to perform baseline change assessments? | 122 |
| What metrics should be used to assess changes to a baseline? | 122 |
| How are unauthorized changes to source code prevented, detected, and corrected? | 123 |
| What tools, resources, and training are required to perform baseline management? | 123 |
8.4 | Auditing and reporting | 124 |
8.5 | Summary | 127 |
| References | 128 |
Part III | Overview of software validation activities | 129 |
| Reference | 130 |
Chapter 9 | Testing | 131 |
9.1 | Testing: levels and methods | 134 |
9.2 | Testing procedures | 135 |
9.3 | Summary | 147 |
| References | 147 |
Chapter 10 | Software validation metrics | 149 |
10.1 | Time measures | 150 |
10.2 | Test coverage metrics | 153 |
10.3 | Quality metric | 154 |
10.4 | Summary | 157 |
| References | 157 |
| Further information | 157 |
Chapter 11 | Software reliability growth | 159 |
11.1 | Definitions | 160 |
11.2 | The test-analyze-fix process | 161 |
11.3 | Reliability growth modeling | 161 |
11.4 | Summary | 167 |
| References | 168 |
Appendix A | Inspection roles and responsibilities | 171 |
A.1 | Roles | 171 |
A.2 | Responsibilities | 172 |
Appendix B | A sample inspection process | 177 |
B.1 | Planning | 178 |
B.2 | Overview meeting (optional) | 180 |
B.3 | Preparation | 181 |
B.4 | Inspection meeting | 182 |
B.5 | Follow-up | 184 |
Appendix C | Inspection process forms | 187 |
Appendix D | Inspection checklists | 191 |
D.1 | Requirements inspection checklist | 192 |
D.2 | Design inspection checklist: high-level design | 192 |
D.3 | Design inspection checklist: detailed design | 194 |
D.4 | Code inspection checklist for C code | 196 |
D.5 | A C++ code inspection checklist | 198 |
D.6 | Test procedure inspection checklist | 215 |
Appendix E | Attributes of good requirements specifications | 217 |
Appendix F | Sample criteria for selecting modules for code inspection | 219 |
Appendix G | Sample software development process based on the waterfall model | 221 |
G.1 | Requirements analysis phase | 222 |
G.2 | Requirements definition phase | 223 |
G.3 | Design phase | 224 |
G.4 | Coding phase | 225 |
G.5 | Testing phase | 227 |
G.6 | Maintenance phase | 228 |
Appendix H | Document outlines | 231 |
H.1 | Product concept document | 232 |
H.2 | Software requirements specification (SRS) | 233 |
H.3 | Software design description (SDD) | 235 |
H.4 | Software development plan (SDP) | 236 |
H.5 | Software quality assurance plan (SQAP) | 240 |
H.6 | Software validation test plan | 242 |
H.7 | Software validation test procedure | 245 |
H.8 | Software validation test script | 245 |
H.9 | Software validation test report | 247 |
H.10 | Software configuration management plan | 247 |
H.11 | Software release procedure | 249 |
Appendix I | Test cases for triangle program | 251 |
| Reference | 252 |
Appendix J | Software reliability models | 253 |
J.1 | Jelinski-Moranda model | 254 |
J.2 | Geometric model | 254 |
J.3 | Schick-Wolverton model | 255 |
J.4 | Goel-Okumoto nonhomogeneous poisson process | 256 |
J.5 | Generalized poisson model | 256 |
J.6 | Brooks-Motley model | 257 |
| About the Author | 259 |
| Index | 261 |