Software Development Life Cycle (SDLC) is a systematic approach/ process of developing software through business needs, analysis, design, implementation and maintenance. In software engineering, the SDLC concept supports many kinds of software development methodologies. These methodologies help to design a framework for planning, analysis, implementation, testing, monitoring and finally delivering a quality product to end users.
There are several models for software development process, each describing approaches to a variety of tasks or activities that take place during the process. The SDLC process may be tailored to include only those activities appropriate for a particular project, whether the system is automated or manual, whether it is a new system, or an enhancement to existing systems. Followings are some common activities in software development process:
Planning, Defining and Requirement gathering
Establishes a high-level view of the intended project requirements and determines its goals. It starts with extracting the requirements or requirements analysis. Clients typically have an abstract idea of what they want as an end result, but not what/ how software should do it. Once the initial requirements are gathered from the client, an analysis of the scope of the development should be determined and agreed with stakeholders.
Planning also includes prioritization of project functional requirements, database and hardware/ network requirements. The main challenge in planning is the assignment of skilled team and resources to accomplish the project within time and budget.
Desinging, Building and Testing
Design describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudo code and other documentation. Documenting the internal design of software for the purpose of future maintenance and enhancement is done throughout development. A prototype should be developed during the logical design phase if possible. The detailed design phase modifies the logical design and produces a final detailed design, which includes technology choices, specifies system architecture, meets all system goals for performance, and still has all of the application functionality and behavior specified in the logical design.
Based on software requirements, business process, business rules, software design and customer specifications, the software coding begins. Coding and Implementation is the part of the process where software engineers actually program the code for the project as per coding standard agreement.
Software testing is an integral and important phase of the software development process. It brings all the pieces together into a special testing environment, then checks for errors, bugs and interoperability. The goal is to ensure that defects are recognized as soon as possible.
Deployment and Maintenance
Deployment is the final stage of initial development, where the software is put into production and runs actual business. Deployment should be done only when code is appropriately tested, approved for release. Software training and support is essential task because software is only effective if it is used correctly.
Software maintenance is the modification of a software product after delivery to correct faults, to improve performance or other attributes. Maintaining and enhancing software to manage with newly discovered faults or requirements can take substantial time and effort, as missed requirements may force redesign of the software.