The software requirements are specified, analyzed, structured and prioritized A software architecture design is specified that identifies the components of the software and describes their interfaces and the dynamic interactions between the software components A detailed design is specified for each software component Software units are developed according to the software detailed design