Software Development Process
A software development process is the progression of translating user needs into working software. It is necessary to have specific models to follow so work can be done in an organized and manageable way. The two main software process models to achieve this are the Waterfall model and Agile. These processes are extremely relevant to the growing software aspect of all companies. Agile, being the newer of the two processes has been adopted by many companies as their main way of producing software.
What is Agile?
In order to explain Agile, it is necessary to talk about Waterfall.
In the traditional Waterfall model, there are five steps.
With these steps in Waterfall you complete them chronologically. You finish one step, then move to the next. Waterfall begins with a gathering of all its requirements before developing any working software. These requirements are properly documented and finished before moving on to the next step of designing and implementing the code. Once the code is implemented then there is testing and quality assurance. Lastly, the customer verifies the product. The reason that the Waterfall approach doesn’t always end in the development of great software is because of its organizational methods. The customer is left in the dark for most of the project, being only included in the requirements step and the verification step. In a long-term project this may cause the team to make outdated software. Waterfall is great for small teams and small projects, when frequent check-ins with the customer may not be necessary. It is a predictive development process. This means the process is sequential and is consistent with the original requirements and cost. The focus is on the process rather than the people, with limited interaction between the customer and the firm.
Similar to Waterfall, the Agile model moves through the same steps, just iteratively and incrementally. What this means is that the project gets completed in increments while moving through the process iteratively. Often these increments are called “sprints.” A sprint is a short period of time where the software team completes a set amount of work.
How the Process flows
Requirements are defined or reviewed based on the product backlog. Then, based on the defined requirements, the software is designed. Implementation and verification are the coding and testing that happen within the sprint. Maintenance is ongoing after features are delivered. For example, an iteration could be two weeks. The team may start with 5 requirements for those two weeks, finish them, then meet with the customer to review. At the end of each sprint, the customer receives working software and gives feedback. In addition, the team holds a retrospective to discuss what went well and what could have gone better. This process happens until Minimum Viable Product (MVP) is achieved.
Agile is built on a foundation of values called the Agile Manifesto:
Individuals and Interactions over process and tools
Working Software over comprehensive documentation
Customer Collaboration over contract negotiation
Responding to Change over following a plan
Why Agile Has Become So Popular
Agile is iterative and incremental and that lets companies and workers adapt to changes and be better reminded of the products they are building. Agile works to combat the problem of software being outdated before it is released because of its unadaptable nature and long developmental time frame. The world changes after a project starts – business goals change, competition changes, your customer’s change – parts of the original plan obsolete. It is important to develop software in an environment that welcome’s change. There are several benefits to Agile such as: allowing the team to learn with each iteration, encouraging troubleshooting more often and for each piece of the software (eliminating the number of system bugs), and increasing stakeholder feedback which leads to a product that more closely matches their needs.
Benefits of Agile
Agile differs from other software process models because it is a dynamic process in which enough requirements are gathered to build the whole software project piece by piece. A working piece of software is delivered at every step and verified by the customer as early as possible. This allows for much more flexibility when it comes to changing the way the software works together or adding features the customer thinks of outside the initial requirements gathering.
Customer-Focused The main priority is satisfying the customer with early and continuous delivery of working software. Agile focuses on the people rather than the process.
Transparency The customer is involved throughout the entire process and are aware of every completed requirement and what remains.
Risk Mitigation There is testing done during every iteration. Troubleshooting early and often limits the risks.
Productivity Daily meetings and frequent check-ins keep the team motivated and productivity high. Everyone is focused on delivering high-quality software.
Quality Having customer feedback and reflecting at the end of every iteration improves the quality of the work.
Flexibility Changing requirements are welcomed, even late in development. Agile allows for adapting to change.
The result of Agile is a final product that works better, and more closely meets the customer’s needs. Since Agile is more than just a software process, but rather an organizational process, it can be used for not only IT and engineering, but also in many business aspects. Liventus uses both methods but has found greater success and happier clients with Agile.