The concept
Software Development Life Cycle, or SDLC, is a standard theoretical process for developing software. It is a chain of activities, with each stage contributing a particular goal to development.
Typical question: What is Software Development Life Cycle (SDLC)?
How to state the stages
There are two common ways to describe the SDLC stages.
The first uses technical words that represent the activity itself, which makes each step fairly easy to understand:
- Gather requirements and analyse
- Design the software product
- Implement the software
- Test the software
- Deploy the software
- Maintain the software
The second is more academic and harder to read because it leans towards business language:
- Initiation: start the project, gather requirements and create a proposal — produce the URD (User Requirements Document) and proposal.
- Definition: analyse requirements and plan — produce the Project Plan, Test Plan and a prototype or mock-up.
- Solution: create the product solution — produce high-level and low-level Design Documents.
- Construction: build and test the product — produce the completed build, its manual, a test report and Bug Log.
- Transition: install the product for the customer and let them perform Acceptance Testing — produce the Project Report, Test Report and Acceptance Report.
- Termination: formally close the project, sign off and hand over the codebase, and archive its resources.
The two descriptions are basically equivalent.
Typical question: What stages are there in the SDLC?
Development models
SDLC is still only theory. Now imagine someone saying:
Now that you know SDLC, go and build a piece of software for me.
Bruh, HOW?
That is the problem hiding in the word how. To apply SDLC to an actual software development process, we need a model.
A development model guides how each SDLC stage is carried out. There are many models, each with its own advantages and disadvantages, and each suited to particular projects. Traditional models include:
- Waterfall
- Iterative
- Rapid Development
- Spiral
And the modern model, also the most common one for modern software products:
- Agile
Typical question: What do you know about development models?
Typical question: Why do we need a development model?