CHAPTER 39

SOFTWARE DEVELOPMENT AND QUALITY ASSURANCE

Diane E. Levine, John Mason, and Jennifer Hadley

39.1 INTRODUCTION

39.2 GOALS OF SOFTWARE QUALITY ASSURANCE

39.2.1 Uncover All of a Program's Problems

39.2.2 Reduce the Likelihood that Defective Programs Will Enter Production

39.2.3 Safeguard the Interests of Users

39.2.4 Safeguard the Interests of Software Producers

39.3 SOFTWARE DEVELOPMENT LIFE CYCLE

39.3.1 Phases of the Traditional Software Development Life Cycle

39.3.2 Classic Waterfall Model

39.3.3 Rapid Application Development and Joint Application Design

39.3.4 Importance of Integrating Security at Every Phase

39.4 TYPES OF SOFTWARE ERRORS

39.4.1 Internal Design or Implementation Errors

39.4.2 User Interface

39.5 DESIGNING SOFTWARE TEST CASES

39.5.1 Good Tests

39.5.2 Emphasize Boundary Conditions.

39.5.3 Check All State Transitions.

39.5.4 Use Test-Coverage Monitors.

39.5.5 Seeding.

39.5.6 Building Test Data Sets

39.6 BEFORE GOING INTO PRODUCTION

39.6.1 Regression Testing

39.6.2 Automated Testing.

39.6.3 Tracking Bugs from Discovery to Removal

39.7 MANAGING CHANGE

39.7.1 Change Request

39.7.2 Tracking System

39.7.3 Regression Testing

39.7.4 Documentation

39.8 SOURCES OF BUGS AND PROBLEMS

39.8.1 Design Flaws

39.8.2 Implementation Flaws

39.8.3 Unauthorized Changes to Production Code

39.8.4 Insufficient or Substandard Programming Quality

39.8.5 Data Corruption

39.8.6 Hacking

39.9 CONCLUSION

39.10 FURTHER READING

39.1 INTRODUCTION.

Software development can affect all of ...

Get Computer Security Handbook, Fifth Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.