Initially, system engineering defines the role of software and leads to software requirements analysis, where the information domain, function, behavior, performance, constraints, and validation criteria for software are established. Moving inward along the spiral, we come to design and finally to coding. To develop computer software, we spiral in along streamlines that decrease the level of abstraction on each turn.
Unit testing makes heavy use of white-box testing.
Integration testing focuses on design and the construction of the software architecture. This testing addresses the issues associated with the dual problems of verification and program construction. In validation testing, the requirements are established as part of software requirements analysis are validated against the software that has been constructed. Validation testing provides final assurance that software meets all functional, behavioral, and preformance requirements. Modules are integrated by moving downward through the control hierarchy, beginning with the main control module.