# Software Development Lifecycle ## The Nine Process Areas IEC 62304 defines nine process areas that together constitute the software development lifecycle: 1. **Software development planning** -- establish a plan for conducting the development activities, including the methods, tools, and deliverables for each phase. 2. **Software requirements analysis** -- define and document what the software must do, including functional requirements, performance requirements, and interface requirements. 3. **Software architectural design** -- define the major structural components (software units and software items) and their interfaces. Decompose the system into manageable pieces. 4. **Software detailed design** -- specify each software unit in enough detail that it can be implemented and verified. This includes algorithms, data structures, and interfaces. 5. **Software unit implementation** -- write the source code for each software unit according to the detailed design. 6. **Software unit verification** -- verify that each software unit meets its detailed design specification. This typically involves unit testing and code review. 7. **Software integration testing** -- test the integrated software items and software units to verify that they work together as specified in the architectural design. 8. **Software system testing** -- test the complete integrated software system to verify that it meets the software requirements. 9. **Software release** -- verify that all required activities are complete, outputs are documented, and the software is ready for distribution. This includes confirming that known residual anomalies are evaluated and documented. ## The V-Model IEC 62304's activities map naturally to a V-model, where each development phase on the left side of the "V" has a corresponding verification phase on the right side: ``` Planning \ / System Testing Requirements Analysis / \ / Integration Testing Architectural Design / \ / Unit Verification Detailed Design / \ / Unit Implementation ``` The key principle is that each level of specification is verified by a corresponding level of testing: requirements are verified by system testing, architecture by integration testing, and detailed design by unit verification. This structure ensures that every design decision has a corresponding verification activity, creating a closed loop from specification to proof.