Software Development Life Cycle
Software development life cycle or SDLC is a framework which defines which task to be performed at each step in the software development process. SDLC is a structure followed by a development team within an organization. The concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only or a combination of both. SDLC usually consist of the following stages.
1. Requirement Analysis/Planning:
Requirement analysis is the most important part of an SDLC, this stage is of SDLC means getting input from everyone that is involved, the customers, stakeholders, programmers and so on. It is to help identify what is the problem and roughly determine the resources, costs, time, and other items.
2. Defining Requirements
This stage is about thoroughly defining what exactly is required and the risks involved and providing counter-measures to soften or eliminate those risks.
This stage is where an architecture is clearly defined with dataflow representation and so on.
This stage is where actual coding starts to take place and programmers follow coding guidelines defined by the requirements.
This stage is where the product is thoroughly tested and checked if the product has reached the quality the requirements has asked for.
6. Deployment and Maintenance
This stage is where the product is released, and feedback will be taken which can be used to improve the product as well as help maintain it.
Waterfall model or Linear-Sequential Life Cycle Model.
It is a model where the outcome of one phase acts as the input for the next phase. Which means that the next phase will only begin when the previous phase is completed.
Requirements: The first stage involves understanding what the problem is, what solutions need to be developed to fix the problem and what are the functions and purpose etc. All possible requirements will be documented in this phase.
System Design: The requirement specification from the first phase are used as the input and the system design is prepared from it. System design will help define hardware and software requirements as well as overall system architecture.
Implementation: With the input from system design, the system will be developed slowly, in small programs called units, which are integrated in the next phase.
Integration and Testing: All units developed in the implementation phase are integrated into the system after testing. This is where each code will be tested in order to check if it meets the Requirements.
Deployment of System: Once the functional and non-functional testing is completed. The product will be deployed in production market.
Maintenance: This step occurs after deployment, and it involves making modification to the system in order to improve/maintain performances as well as fix any error that may occur over time.
Spiral models have four phases. A software project will repeatedly pass through theses phases in iterations called Spirals.
Identification: This phase starts with gathering the requirements in the baseline spiral. As a software project mature over multiple iterations, any additional requirements required will be done here as well.
Design: The design phase starts with the conceptual de sign in the baseline spiral and involves the architectural design, logical design of modules, physical product design and the final design in the subsequent spirals.
Construct: The construct phase refers to the production of the actual software product at every spiral, in the baseline spiral, a product called a “Proof of concept” will be developed to gather customer feedback for future iterations.
Evaluation and Risk Analysis: Risk analysis includes identifying, estimating and monitoring the management risk and technical feasibility. Which basically means, at the end of each iteration, the customer will evaluate the product and feedback will be collected here.
Agile model is similar to the Spiral model as explained previously as there are multiple iterations as well. It is popular due to its flexibility and adaptability.
Here are the following Agile Principles
Individuals and interactions: In Agile development, customers, developers and testers will constantly interact with each other and provide feedback constantly.
Working software: Software will be delivered frequently in order to help understand customer needs and wants rather than developing a huge software at the expense of a long waiting time which the customer may not even want at all.
Customer collaboration: As in this model, requirements are not thoroughly gathered right from the start, continuous customer interaction will be paramount in order to provide feedback and deliver the right product.
Responding to changes: As previously mentioned, there will be continuous development ongoing in small bursts and from customer, testers and developer interaction. Fixes and modifications will constantly be applied to the product over time.