Waterfall and Agile methods are two types of software development life cycle
Software development life cycle or SDLC in essence if a series of phases or steps that provide a model for development and management of lifecycle of a piece of software or an application. It ensures that good software is built. The method or process could vary across organizations and industries. However, standards like ISO/IEC 12207 represent methods that establish a lifecycle for software and also provide a mode for developing, acquiring and configuring software systems.
Two types of software development life cycle could be used, the waterfall and agile method. The main difference between the two is that the waterfall is more traditional and starts with a well-thought of plan as well as defined set of requirements. The agile methodology in the life cycle on the other hand begins with less stringent guidelines and making adjustments as required throughout the process. Agile is known for its capability to translate an app that is in development to a full release at almost any stage quickly. It makes it great for apps that are frequently updated.
The intention of the SDLC is to help create a product that is effective, cost-efficient and high quality. When an application is created, the software development life cycle maps the right deployment and its decommissioning as soon as it becomes a legacy. The life cycle methodology typically contains several stages. These stages include analysis, construction, testing, release and then maintenance. Each stage or phase has its own deliverables and processes.
Analysis is a phase wherein business requirements are gathered. This stage is the main focus of project managers and stake holders. This is when requirements are determined, such as the people who will be using the system, how to use it, and what data should be input and output into the system. All these are general queries that get answered during the phase. When all these requirements are gathered, they are analyzed for validity. The design phase is when system design is prepared from the specifications that were studied during the phase one. System design helps to specify hardware needs and help define overall program architecture.
In coding or implementation development, the work is divided in units/modules and actual coding is started. In this stage the code is produced, thus it is the focus for a developer. Code is created based on the design. This step is considered the longest of the software development life cycle. Testing comes after coding. The program is tested against the requirements to ensure that the product actually is solving the needs gathered and addressed in the requirements stage. In the testing process, integration, system, acceptance testing is done.
Deployment is the next stage that comes after successful testing of the software delivered. It is now ready for deployment and deployed to the customer for use. Maintenance is the last step in the cycle which occurs when the customers start using the developed program. This is when the actual issues could come up after development and needs to be resolved regularly. The process is where the care is taken for a developed program is called the maintenance.