The Software Development Life Cycle
From children under the age of 10 to senior citizens over 100, thanks to trends such as smartphones, tablets, and social media networks the average person interacts with an amazing amount of software for hours a day.
The key to creating software experiences that result in such widespread user adoption and engagement rests with the processes, strategies and methodologies used to develop.According to Technopedia, the Software Development Lifecycle (SDLC) is a process followed by a development team within a software organization that defines tasks performed at each step in the software creation process.
It is a structure and a framework that consists of a detailed methodology describing how to create, maintain, enhance and replace specific software. The lifecycle defines a plan for improving software quality as well as the overall development process.
Though SDLC or SDL is classified as a Software Development Lifecycle, it often gets confused with another SDLC, System Development Lifecycle. The System Development Lifecycle is a superset of the software life cycle and is a much broader aspect of the development phase covering both software and hardware requirements.
The SDLC is also often confused with the Project Life Cycle (PLC) which is comprised of the initiation of project planning as well as management of execution and delivery. The SDLC falls in the execution part of the broader PLC.
Requirements Gathering and Analysis
This is the analysis and requirements gathering phase of the project and the most important part of software development. There can be many iterations of this phase however the most important types of analysis can be boiled down to three areas.
The first being environmental analysis where functions, processes and data models are analyzed. Second is the client-level environmental analysis which focuses on the functions and processes at the client side. The third component encompasses application level analysis and is considered to be the most detailed.
During this phase an initial assessment of the project is conducted and a feasibility study is carried out (often a sub-stage called Feasibility Analysis) by the most experienced software professionals in the organization.
A detailed blueprint is then outlined for all developers, designers, project managers and testers involved with the project. This stage involves extensive research with input from both the organization and its client.
The next step is the design phase that describes how the proposed solution (identified in the analysis phase) should be designed. System analysts convert the data model agreed upon in the analysis phase into a logical design. This occurs by breaking the information into logical chunks and then converting it into a physical design solution that is specific to and stored in the system’s technical environment.
Visual design also occurs in this stage. Aligning functional requirements with a pleasing and intuitive interface design is critical to the success of the application. Form and function must align perfectly for a truly impactful design.
The goal of the development phase in the software development life cycle is to implement and translate the vision of the design phase in the best possible manner. In this phase a team of programmers configure and develop code for software in accordance with what is agreed upon and finalized.
Each developer is assigned his separate development tasks such as developing, compiling and refining codes, creating databases, or preparing testing environments among others. Along with the development stage user documentation and creation of user procedure manuals are usually carried out in parallel.
The subsequent stages of integration, testing, maintenance, evaluation and enhancements will go smoother if optimal development processes are followed. If not, the client faces an expanded scope and increased budget.
Maintenance and Evaluation
The maintenance phase of the software development life cycle describes tasks to maintain and evaluate the software systems in a production environment. Application support services and the operations teams are responsible for providing on-going support and maintenance of developed products and the related documentation.
Even though all the stages in an SDLC are independent not every project will have all the phases sequentially executed. According to Wikipedia, depending upon the size and complexity of the project phases in an SDLC may be combined or may overlap.
In the end, the structure of an SDLC can adapt according to the nuances of each client and individual software project. But the importance of taking a structured, methodical, and feedback driven approach is crucial to creating software that is accepted by stakeholders and widely adopted by the targeted user base.