Software Development Lifecycle (SDLC)
What is the SDLC?
The Software Development Life Cycle (SDLC) is a process for quality assurance. It divides the software development into phases, which must be gone through for each change. Usually the following phases are distinguished:
- Requirement analysis
- Planning
- Software design (e.g. design of the architecture)
- Development
- Test with final deployment if appropriate
These phases also fit into the well-established “Plan – Code – Build – Test” cycle.
SDLC Toolchain
For the implementation of these phases, different tools are required. Ideally, they work together in a toolchain. An example of a simple toolchain looks as follows:
- Requirements analysis and planning: using issue trackers and wikis, information is collected and tasks are defined. Tools include Redmine, JIRA, Confluence, or Smeagol.
- Development, testing and deployment: these phases are difficult to separate in terms of tools, as the tools interact very strongly with each other. However, these tools are needed:
- Source Code Management: SCM-Manager (management of Git, SVN and Mercurial repositories).
- Build Server and Deployment: Jenkins
- Artifact Repository: Nexus Repository
- Issue Tracking and Wiki: see Requirements Analysis and Planning
These tools can be easily run in the Cloudogu EcoSystem platform.
SDLC and Agile
The SDLC fits very well with agile ways of working, as it contributes to quality assurance through the recurring phases. Agile projects go through the phases of the SDLC for each change in each iteration, in Scrum this means in each sprint. This ensures that each change is planned, designed, developed, and tested.
Advantage of the agile lifecycle
Working agile is characterized by the fact that an "all-encompassing" requirements analysis is not first performed at the start of the project. Instead, the most important topics are identified through continuous analysis, prioritization and planning. However, there is also a disadvantage to this approach.
Disadvantage of the agile life cycle
Both, agile methods and the SDLC have the disadvantage that they do not have an institutionalized customer focus in their basic form. The SDLC ends after the deployment and therefore has no reference to customers. Agile methods basically have a strong focus on customers, but there are no processes integrated into the methods to really interact with customers. It is up to you to find ways. In Scrum, for example, stakeholders can represent the opinion of customers if you cannot get feedback directly. This is because Scrum is essentially about development. For a holistic approach that encompasses the entire life cycle of a software product, additional ideas are needed.
SDLC and DevOps
Both SDLC and DevOps encompass both the development and operation of software and aim to improve the quality of software. The major difference, however, is that SDLC is a process for software development, while DevOps describes a culture or mindset that is lived in organizations. Despite these different approaches, however, there is no contradiction in using the SDLC process in the context of DevOps, e.g., by establishing a Continuous Delivery process.