Understanding Systems Development Life Cycles
SDLC is the acronym for Software or Systems Development Life Cycles. Some organizations prefer to substitute the word software with the words Systems or Solutions. They are all valid renditions of the SDLC acronym, based on contextual use.
An SDLC defines the approach to developing Software or IT systems from the initial concept through release and deployment. Fundamentally, Software and IT systems development practices are highly technical, encompassing numerous engineering disciplines, skills, and resources. The work is often complicated and relatively unique and often managed under discrete projects with specific funding, goals, and deliverables outlined and approved before starting work.
The term SDLC is often associated with the traditional Waterfall-based software development approach. In this context, the life cycle activities tend to include distinct phases of work such as concept development, requirements analysis, architecture & design, development/ coding, testing, deployment, and support. I’ll touch on this subject again, in an article titled Why not Waterfall?, in a later post, but let’s move on for now.
Lightweight, but still full SDLCs
If we eliminate the legacy terminology bias, I submit the SDLC term is still useful. The fact is that there are lots of new and legacy methods that help guide the development process. Some methods look more like the traditional model, such as the V-shaped model. Other life cycle development methods (a.k.a. lightweight methods) came along as precedents guiding early agile concepts. These include, for example, Adaptive Software Development (ASD), Crystal Clear, Extreme Programming (XP), Rapid Application Development (RAD), and Scrum. The key is these methodologies were all examples of complete software development life cycles models.
Useful practices, but not full SDLCs
Now, I do not include practices such as prototyping, feature-driven development, and iterative and incremental development (IID) in the SDLC list. Those practices are incomplete in terms of accomplishing the entire software development life cycle set of activities. (i.e., Product conception, design, development, testing, provisioning, and delivery.) Instead, those practices tend to serve as component activities of more extensive Agile-based practices.
Modern full software development lifecycles
Many modern Scrum and Lean-Agile-based practices fall into the category of full product development life cycles. Here I include Scrum, Scrum of Scrums, Scrum@Scale, The Nexus Framework, Large-Scale Scrum (LeSS), Disciplined Agile, and the Scaled Agile Framework® (SAFe)®. You can learn more about these practices in my book titled “Scaling Scrum Across Modern Enterprises: Create efficiencies and value by applying best Scrum and Lean-Agile practices across the organization. The book is also available directly from PACKT Publishing. Also, if you are not familiar with SDLC concepts, feel free to read my book SDLC Foundations.
OK, enough of my shameless self promotions. I can feel the darts and arrows coming my way already.
I told you I would be controversial. But here’s the thing, if we agree that the term SDLC encompasses the activities to conceive, design, develop and deliver a product, then all these other methods meet the definition.
Do you agree? If not, why not?