Successful software development depends on an in-depth understanding of how the phases and supporting activities of the software development life cycle work together. Each phase of the life cycle contributes to a reliable, maintainable product that satisfies user requirements. The application of good engineering practices throughout the cycle dramatically improves the likelihood of delivering a quality software project on time, in scope and within budget. While there are many rigorous methodologies, in fact most approaches and tools have a mixture of strengths and weaknesses. Traditional
development approaches result in models that are incomplete and quickly become out-of-sync with the application source code. Many modeling approaches focus on
describing software designs, rather than solving business problems.


This course presents modern software engineering techniques and examines the
software life-cycle, including software specification, design, implementation, testing
and maintenance. The course evaluates past and current trends in software development practices including agile software development methods such as Extreme
Programming (XP), Agile Modeling (AM), Scrum, ASD, DSDM, Crystal, Feature
Driven Development (FDD), Incremental Funding Method (IFM), DevOps, and Site
Reliability Engineering. Agile software processes, DevOps, and SRE are the most
recent trends in the software industry and promise strong productivity improvements,
increased software quality, higher customer satisfaction and reduced developer
turnover. Agile development techniques empower teams to overcome time-to-market
pressures and volatile requirements. The course gives an overview of methods and
techniques used in agile software processes, contrasts agile approaches with traditional
software development methods, and discuss the sweet spots of both classes of
methodologies. Other non-agile approaches that are widely used in industry such as the
Rational Unified Process (RUP) and the Open Process Framework (OPF) will also be
covered. Process improvement initiatives such as the Capability Maturity Model
(CMM) and Personal Software Process (PSP) will be discussed