This course follows Software Engineering-1 course as it continues the investigation into software development life cycle to its end. Students will be exposed to an in-depth coverage of design (architectural design, interface design). They will be introduced to different approaches to software development (e.g. Rapid Software Development, Extreme programming, and Component Based Software Engineering) and software validation and verification (inspections, dynamic testing techniques).