Software Development Life Cycle – chaos tamed
Software development is a complex undertaking, prone to failure if it is not undertaken using a proven methodology. The Software Development Life Cycle (SDLC) allows applications to be built within a strict sequence of steps and techniques. Standardisation means lower costs, fewer errors, reduced “joyful creativity” in favour of controlled creativity. Combined with sensible management, the SDLC increases the chances of delivering projects as expected, on time and within budget.
SDLC objectives
Operating in IT projects in line with the software development lifecycle (SDLC):
- Helps deliver applications that meet or exceed customer expectations as agreed initially and within estimated costs
- Provides a framework for developing quality systems using a traceable, measurable and repeatable process
- Establishes a project management structure to ensure that each application/system development project is effectively managed
- Supports the identification and assignment of roles and responsibilities to all parties involved
The purpose of using the SDLC is to:
- Establish appropriate levels of management to ensure timely direction, coordination, control, review and approval of project deliverables
- Ensure accountability for individual project activities
- Document customer requirements and maintain traceability of these requirements throughout the application development and deployment process
- Use resources effectively
- Ensure projects develop within the current and planned IT infrastructure
- Identify project risks and issues early and manage them before they become problems
SDLC phases
All application building projects must go through a well-defined lifecycle. Project participants are responsible for acting in accordance with the SDLC and saving the resulting artifacts[1] in a way that makes them accessible to stakeholders (customers, developers, testers, etc.). Depending on the authors of theoretical considerations or software development practitioners, the SDLC can typically consist of 5 to 7 phases[2], although there are some with 10 phases described[3]. The most commonly considered are:
- Initiation – the initial phase of the project, involving the generation of an idea that improves an existing solution or develops a completely new one; helps to determine the size of the project in order to plan resources and an initial work plan.
- Requirements Analysis – collection of requirements to formulate the project plan; includes a thorough analysis of user needs, feasibility, expected improvements; it is important to gather documentation to clarify requirements and prepare a record of expected solutions; technical and functional requirements are documented in this phase.
- Design – the defined requirements are transformed into an application design plan with a detailed set of specifications; in this phase the design of IT architecture, databases, system interfaces, user interfaces is prepared;
- Development – developers focus on building a prototype of the solution to conduct code reviews and ultimately create the solution itself; the project team works to transform the software specification into a working and reliable product.
- Testing – activities aimed at confirming that the prepared application or change in the system works as intended and expected; in this phase defects and bugs in the software are detected, as well as deficiencies resulting from incomplete specification of requirements; all activities in this phase are conducted in a test environment.
- Implementation – in this phase the application is launched and made available to end users; the software runs in a production environment, and users receive user manuals and participate in training.
- Maintenance – ensuring the application is fully operational, updating it to meet standards (quality, legal) and improving the software throughout its lifetime.
SDLC models
Depending on the level of concretisation of the application development goal, the complexity of the project task, the size of the portfolio, as well as the skills and experience of the project participants, there are different models of the software development cycle. Individual SDLC phases may follow one another or overlap. Running a project may involve going through the entire cycle multiple times. The most frequently used SDLC models:
- Waterfall model
- Prototyping
- Spiral
- Agile
- V model
In summary, software development should be a process. It needs a well-defined goal, the means to achieve it, and ways to measure, maintain and improve the results.
[1] Artefacts are documents, diagrams, etc. that are produced as a result of following phases of the SDLC
[2] https://clarusway.com/what-is-software-development-life-cycle/, https://websensa.com/pl/2021/03/10/software-development-life-cycle-fazy-i-modele-sdlc/
[3] https://www.justice.gov/archive/jmd/irm/lifecycle/table.htm