SDLC: System Development Life Cycle, is a software lifecycle management methodology that typically consists of five to seven phases (requirements gathering, design, construction/test, implementation, post-implementation support).

SHORT DESCRIPTION (by Bobbi Markley)

1) WHAT IS SDLC? SDLC: System Development Life Cycle, is a software lifecycle management methodology that typically consists of five to seven phases. It most often includes requirements gathering, design, construction/test, implementation and post-implementation support. It guides the software development process and prescribes various documents and deliverables for each phase. Each successive phase of SDLC leverages the documentation and knowledge gained from the previous phases. For instance, the detailed business requirements must be known in order to determine functional design followed by technical design and coding. The tenets of SDLC are not standards per se, but merely guideposts for managing software and systems from cradle to grave.

The State of Pennsylvania's (U.S.) application development home page introduces SDLC as follows:

"Proper engineering of any software application should involve the following distinct phases during the lifecycle of application systems development ............. Systems Development Methodology (SDM) is a set of guidelines, procedures and standards intended to ensure the development of quality application systems that meet the users' needs in an efficient manner."

2) WHAT SDLC IS NOT. SDLC is not a software engineering or a project man-agement methodology. It doesn't dictate software engineering quality standards or relate best practices, but rather serves as anenabler for them.

3) WHAT'S THE PURPOSE OF SDLC? The purpose of SDLC is to institute a standard practice, or methodology, that is both duplicatable and repeatable, leading high software quality. This translates into lower total cost of ownership and greater return on investment, resulting in direct savings to the corporate "bottom line". This is the real business case for SDLC. Cost effectiveness is the desired outcome, more favorably the end result if done properly. SDLC focuses on the steps required to ensure software quality (i.e., software that is engineered and developed in such a way as to be reliable, maintainable, and supportable in a cost effective manner for the life of the system). Robust software engineering and project management practices act in concert with a good SDLC model to make this happen.

4) WHAT IS THE SDLC APPROACH? Software development can be done in a linear fashion (waterfall) or more recursively/iteratively.

  • If done in the traditional linear fashion, each phase occurs once, and each must finish before the next can begin. It's true that this model tends to extend the development lifecycle. It can also be said that this model generally leads to a fair amount of rework and enhancements to correct flaws or add functionality after deployment. In other words, the cost of quality is great (read Demming's perspectives on TQM). As a result, we've evolved to a more iterative model.
  • The visual for iterative development is a spiraling circle divided into four quad-rants (basically the first four phases of the waterfall method). Each "phase" occurs many times over before the product is deployed in production. One usually sees a lot of prototyping in this model, and it's done with heavy user involvement in Joint Application Development (JAD) and Rapid Application Development (RAD) sessions. This is also the model commonly used for web development.

5) ADDITIONAL RESOURCES FOR A COMPREHENSIVE APPROACH. The Software Engineering Institute (SEI) at Carnegie Mellon University (partnered with the US Department of Defense) provides several capability maturity models, including one for software acquisition. Standards provided by organizations like SEI and IEEE and others form the technical foundation for software quality.