In the most recent issue of The Annals of the History of Computing, Dr. Ralph Kneuper, of the International University of Applied Sciences, takes the reader on a journey through the history of Software Development Life Cycle Models (“SDLCs”). This is a great read for business analysts and project managers alike.
Dr. Kneuper begins the journey with the rudimentary mathematical approaches used for early computer applications. In the early days of mathematical computing, developers worked out the math, then programmed and verified the results. Increasingly complex computing problems as well as opportunities to automate programming tasks prompted engineers to formulate formal approaches to system and software development. These formal approaches quickly became known as Software Development Life Cycle Models (“SDLCs”).
Dr. Kneuper goes on to describe how early SDLCs were heavily influenced by the established engineering disciplines and emphasized planning, requirements, and the sequential execution of development activities. The first formal SDLC, “Program Production Life Cycle,” was presented in by 1956 Herbert Bennington and by 1968 had been extended by others to include information feedback loops and iterative development. Systems Development Corporation, which at the time had trained more programmers than any other company in the world, was instrumental in disseminating these ideas to the industry at large.
In 1970, Winston Royce, a TRW employee working on spacecraft systems, described what would become known as the Waterfall SDLC. Dr. Kneuper points out that, contrary to modern criticisms, Royce extended his model to include feedback loops, development iterations, and prototyping.
By the 1980s, structured analysis and design came into wider use as software engineers shifted their focus to the challenges of scalability and productivity. Work on the existing SDLCs aimed to build in quality by prescribing the details of project activities, work products, and roles. Throughout the decade, IBM and the Defense Department were instrumental in driving the SDLCs towards quality.
In the early 1990s, the World Wide Web made its debut and gave rise to the time-to-market imperative. At the same time, Object Oriented Programming was coming into its own. Dr. Kneuper describes how firms turned to plan-driven, iterative SDLCs to meet these challenges. These efforts began with Barry Boehm’s Spiral Model in 1988 and culminated with the Rational Unified Process (“RUP”) ten years later. RUP combined the concept of iterative development with a plan-driven approach to software development that emphasized the use of models for expressing requirements.
During the late 1990s, the action in SDLCs shifted to iterative and lightweight processes including Scrum, Extreme Program, and Feature Driven Development. These SDLCs variously extended the concept of iterative development with adaptive principles such as intensive communication, fast feedback, and self-organizing teams. The principles under-girding these approaches were documented in The Agile Manifesto of 2001.
Today, the SDLC communities are divided into plan-driven and agile approaches, with the former focused on formalizing engineering-based approaches through standards bodies and the latter seeking ways to scale the agile approaches for larger organizations and more complex projects. Meanwhile, new SDLCs, including Kanban and DevOps, are beginning to emerge as the software development community comes to grips with challenges like distributed project teams and open source development. Dr. Kneuper predicts that firms will need to develop hybrid SDLCs that adopt the best practices of both plan-based and agile SDLCs.