Software Development Life Cycle
As a software developer, there are certain models and guidelines that one must follow in order to build a good software. A process that ensures this happens is the Software Development Life Cycle. Software Development Life Cycle is a well-defined, structured sequence of stages that are used to develop a software product. Each stage in the cycle produces deliverables that are required in the next stage. In all, there are six stages in a Software Development Life Cycle, which are:
- Requirements Gathering and Analysis
- Design
- Coding
- Testing
- Implementation/Deployment
- Operation and Maintenance
Requirements Gathering
The curtain raiser is the most critical to the success of the software development. Communication is the key to this phase, as you need to fish out as much detail as possible. In order to do so, meetings with managers, stakeholders and end users are conducted to gather requirements. This requires the team to ask general questions that pertain to the people who are going to use the system, the data that should be input into and output by the system and the action that the user will take. Upon gathering, the requirements are analyzed for validity, and possibilities of incorporating them into the system.
Design
In this phase, technical system and software design requirements are prepared from the requirements that were gathered and studied in the first phase. The design specifies the hardware and system requirements, details the database tables that need to be added, and eventually aids in defining the overall system architecture. This stage involves three processes, namely risk analysis, functional specification and non-functional specification. Risk analysis involves evaluation of threats and vulnerabilities from other systems, analyzing external codes for security vulnerabilities and a legal department review for high-risk privacy project. Functional specifications include a description of interface requirements, workflow details, an audit trail and other important details. Non-functional specifications include extensibility of the system, performance and response times and resource constraints.
Coding
This is generally the longest phase of the Software Development Life Cycle. The implementation of the software design starts in this phase, which is also known as the programming phase. The program code is written in suitable programming language once the work is divided in modules (or units). Developers need to remain open-minded and flexible in this stage, as tweaks and enhancements may be required at any point.
Testing
Once the code is developed, the application is migrated to a test environment. In this phase, the product is tested against the requirements to ensure that it addresses the information and needs that were gathered in the first phase. To do this, different types of testing like unit testing, integration testing and system testing are performed. Finally, the user acceptance testing is performed, wherein the testing is performed by the end users to make sure that their expectations are met.
Implementation and Deployment
In this phase, the software is installed on the user machines, for the customers to begin using it. Once delivered, the product is tested for issues like portability, adaptability and other issues. If found, changes are made and the bugs are fixed, upon which the final deployment happens.
Operation and Maintenance
In this phase, the customer starts using the product, once they are trained on how to operate the software. This is the time when problems may pop up, and will need to be fixed and avoided through timely maintenance.