Software Development Lifecycle

SDLC (Software Development Life Cycle) is essentially a process that consists of a series of planned activities to develop, alter, or manage the software or pieces of software. SDLC is a structure to develop a software product that defines the process of planning, implementation, testing, documentation, deployment, and ongoing maintenance and support. The methodology within the SDLC process can vary across industry and organization, but the steps or phases remain same.
SDLC is a process followed by a software organization to develop high-quality software within a timeframe and on budget. It also defines the methodology to improve the quality and development process of software. This term is mainly used in Software Engineering.
Following are the phases of SDLC 
  1. Requirement gathering
  2. Analysis
  3. Design
  4. Implementation (Coding)
  5. Testing
  6. Deployment
  7. Maintenance
Software Development Lifecycle 
Requirement gathering
This is a fundamental phase of SDLC where user requirement or business requirement is gathered. The requirement is often gathered as an answer to the following questions.
  • What is the purpose of developing software?
  • Who is going to use the software?
  • How the end user will use the software?
  • What should be the input for software?
  • What will be the output of the software?
  • Where will the software be used?
Requirements are usually written in natural language and supplemented by diagrams for better understanding. This phase may include Functional and Non-functional requirements.
  • A functional requirement defines a function of a system or its components. A function is described as a set of inputs, the behavior, and outputs.
  • The non-functional requirements define system attributes, such as Performance, Scalability, Capacity, Availability, Reliability, Recoverability, Maintainability, and Serviceability.
Analysis represents the “What” (What are the actual requirements?) and “How” (How are requirements accomplished independently?) phase. After requirement gathering, the requirement will be analyzed for validity and fulfillment.
The analysis phase starts with the document delivered by the requirement gathering phase and maps it into a full architecture. Detailed information on a programming language, the environment to accomplish  the task, team, resources, platforms and algorithms etc. are established in this phase.
In this phase, all systems and software designs are prepared from the specification which comes from the analysis phase. The design phase clearly defines all modules of a system with the help of relational diagrams. Testers will also define their Test Strategy (like what to test and how to test) in this phase.
The clear determination of how the system will look and how it will function can be done in a detailed manner.
Implementation (Coding)
Given the architecture document from the design phase and the requirement document from the analysis phase, the team should implement or build exactly what has been requested through programming code. The main focus of the developer is code here. High-level programming languages are used for coding (such as C#, JAVA, PHP etc). In this phase, the system can be ready to deploy in the user’s live environment.
Simply everyone knows the quality of the system is very important and the testing phase helps to create good quality. At this phase the whole system is tested to make sure that the system actually fulfills the entire requirement gathered in the Requirement Phase.
As everyone knows, it is hard to find one's own mistake and a fresh eye can find it better. So, the testing team finds defects, flaws, errors or bugs that can be made by the developer and resends it to the respective phase to fix it. All the Functional Testing like Unit Testing, Integration Testing, System Testing, and Non-Functional Testing will be done at this phase.
Once the system is developed and tested properly, it will be ready to deploy, which means ready to deliver to the user. The system is not released fully in the first place or we can say that release can be done in a limited segment first and tested. It is called “Beta Version”. If any bugs are found at this stage, it will be reported to the engineering team and after solving it the final deployment will take place.
Once the system is delivered to the customer, the maintenance phase starts. While using the system, if the user gets any problem it will be solved in this phase by the organizations’ support team. The team at this stage makes sure that the released system will not make any problems for the users who are using it.
SDLC Models
There are various Software Development Life Cycle Models that have  been defined according to different requirements. Each model has its unique series of steps or approaches to successfully accomplish user requirements.
Following are some popular SDLC models,
  • Waterfall Model
  • Iterative Model
  • Spiral Model
  • Agile Model
  • V Model
  • Big Bang Model
  • RAD Model