You've decided to create a new tech solution that's valuable to the market. You are wondering what the process of developing such software might look like. What do software companies do to provide you with a product that will meet your requirements and respond well to market needs? The answer to this question lies in the process that professional software development companies use.
One of the first decisions to be made before embarking on an IT project is choosing the right method. Each software project, no matter how big or small, requires a good plan and the right tools that lead to creating quality solutions in a particular business context. To make sure that every requirement is met, and to give you control over the project, a software house (company that creates software) should use a well-tested process to design, develop, test and maintain software. Such a process is called Software Development Life Cycle (also known as Software Development Process) or SDLC in short.
Software Development Life Cycle is a process which aims to provide the client with a solution that will meet the estimates, keep costs low, and keep the time required to complete the project to a minimum. It is important to note that SDLC may have different forms depending on the model (eg. agile model, waterfall model or spiral model) that the software house will use to deliver the project.
We will first describe what the process looks like (phases of the SDLC), and then compare two most popular models used in IT - waterfall model and agile development.
Software Development Life Cycle phases
Software Development Life Cycle usually consists of 5 following steps:
Stage 1. Planning and analysis – first, let’s think what you want in the project.
This is the crucial stage where all project participants can discuss and define project requirements in detail. During this period all members of the team and the client can understand what tasks need to be done and how the various stages of the project will be implemented. At this moment, you as a client can create a detailed and well thought out vision of the final product.
Stage 2. Design phase – let’s see what we really need for the project.
This is the moment when your project takes the form of something tangible. Developers create the overall description of the architecture, and all the elements of the system are designed including system requirements and hardware. It also specifies the budget, technologies, time frames and work load. From the developers’ point of view this step is really important because in this SDLC phase everything materializes for the next stage.
Stage 3. Development – let’s build it!
At this stage the IT team delivers what you need based on your requirements and the design. It means programmers sit down, divide each module into tasks and start working on changing the design into real code. This is the longest phase of the SDLC process, and it usually has 4 stages:
- Developing algorithms
- Writing a source code
- Testing and debugging
This is the phase of Software Development Life Cycle where actuall software is being build.
Stage 4. Testing phase – let’s check the code
Every code must be checked for errors before being released to the client. To make sure everything works smoothly, testers come into play. Their task is to verify the code and check whether the delivered software agrees with what was previously specified in the requirements. Very often tests are performed in the whole SDLC process, but this is the moment when thorough testing is conducted. Multiple methods are used in this process: system testing, regression, performance testing, UAT, functional testing, etc.
Stage 5. Deployment & Maintenance – let’s start to use the solution
There comes a day when your software finally goes to the market to be battle-tested. It may be released on a piece of the market for observation. At this stage, real problems with the use of the product emerge and a lot of valuable knowledge can be gathered about what fixes should be made.
Agile vs Waterfall - two examples of SDLC model
SDLC is a process that helps software houses organize the various stages of software development so that each phase of the project is well thought-out, allows to reduce costs and provides a foundation for the next stage. Different software development methodologies are used throughout the process depending on the type and size of the project. Creating a relatively simple website does not require as complex methodologies as creating a medical system with AI. Therefore, we shouldn’t say that in general one model is better than the other. Among the most popular Software Development Life Cycle models are:
- Waterfall model
- Agile model - eg. Scrum or XP
- V model
- Spiral model
- Rapid Application Development RAD
- Iterative model - eg. Rational Unified Process (RUP)
- Big bang model
We need to know under what circumstances a particular model would be the best choice. Every industry will have different software needs. So, let’s go through two of the SDLC models to see what they are and when each of them might be the right choice.
The Waterfall model is also called a cascade model. It gets its name from the fact that, like a fountain, the various stages of the project move seamlessly from one stage to the next. IT teams follow a specific sequence of steps, and each step must be completed before going further. It is also a model widely used by other industries, such as construction and manufacturing because in these fields the projects are repeatable.
Let’s quickly look at the stages of the waterfall model development cycle:
- Gathering requirement and analysis – here the team gathers and documents information on the project.
- Design – the system design is prepared.
- Implementation – the system is developed in small parts called units.
- Integration and testing – all the units that were previously created are now integrated into a system and tested for errors.
- Deployment – the project is released into the market or deployed in a special customer environment.
- Maintenance – here after the product has been released the team creates updates and patches if any issues arise.
- The documentation is clear right from the beginning.
- There are clear milestones and deadlines, so everybody knows what and when should be done.
- The process is simple for both the IT and the client.
- The model is inflexible because it’s hard to introduce changes during the process.
- You’re not able to estimate budget or time with precision.
- It’s not the right method for more complex projects.
- Waterfall methodology is a time-consuming method, as the team has to complete each step before going into the next one.
Waterfall is a methodology that has some shortcomings. In the past, when there was no Agile, sticking to a predetermined process often resulted in the customer having to wait a long time for the final product, with market conditions changing in the meantime. This meant that many projects remained unfinished, and those that were delivered sometimes no longer matched what the market needed. So, in order to speed up and improve steps of the software development process, in 2001 a group of people from IT created an Agile Manifesto which, through 4 values and 12 principles, allows to organize the way IT teams work nowadays. Agile methodology is a set of certain principles that assume a more flexible and iterative approach to software development than a classic SDLC methodology.
Let’s quickly explain the 4 values of Agile:
- Agile puts people and interactions first because they play a more important role in software development than tools and processes.
- Agile is more about making software work than it is about having a lot of documentation.
- It is better to be focused on collaborating with the customer than negotiating contract terms.
- It is more important to be responsive to changes in the project than to stick to a rigid plan.
And then let’s see the 12 principles of Agile taken from agilemanifesto.org:
„Our highest priority is to satisfy the customerthrough early and continuous deliveryof valuable software. Welcome changing requirements, even late indevelopment. Agile processes harness change forthe customer's competitive advantage. Deliver working software frequently, from acouple of weeks to a couple of months, with apreference to the shorter timescale. Business people and developers must worktogether daily throughout the project. Build projects around motivated individuals.Give them the environment and support they need,and trust them to get the job done. The most efficient and effective method ofconveying information to and within a developmentteam is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development.The sponsors, developers, and users should be ableto maintain a constant pace indefinitely. Continuous attention to technical excellenceand good design enhances agility. Simplicity--the art of maximizing the amountof work not done--is essential. The best architectures, requirements, and designsemerge from self-organizing teams. At regular intervals, the team reflects on howto become more effective, then tunes and adjustsits behavior accordingly.”
How Agile works
An important aspect of the Agile approach is the assumption that the project team should not plan the project and its progress in advance. The work is done in short cycles called „sprints" (One sprint usually lasts from 1 to 4 weeks). During this time the project team independently develops the project plan, turns the plan into code, tests what they have created, and then collects feedback from the client. In this way, the specialists can deliver smaller parts of the product on a regular basis and make necessary corrections in the project as needed. Teams use a so-called Product Backlog – a list of priorities that changes as the project progresses.
Teams working in Agile are organized in a slightly different way than those working with previously known methodologies. In this approach, teams organize themselves, which means that they decide for themselves what the schedule will look like and what the pace of the project will be. In this case, team members must have the necessary competencies to work in an Agile project.
The Agile approach can be implemented through several well-known methodologies such as SCRUM, Extreme Programming (XP), Kanban, and Lean Startup.
- The project approach is flexible enough to avoid the rigidity that Waterfall imposes due to the detailed project scope prepared in advance. Flexibility increases the probability that the final product will be exactly what the client expected.
- The way the project is implemented promotes responsibility, team play and self-organization in teams, so that the work in the project is stimulated enough that teams feel more motivated to complete the project.
- Since the Agile approach allows new parts of the project to be delivered and tested quickly, teams can deliver a better and more refined solution.
- Designs are highly flexible and allow for frequent changes. This requires a great deal of accountability and the right management to help the team maintain their focus on the main objectives. If a project is not managed properly, it can become protracted in time.
- An Agile project requires the right team at every stage. If any member of the team or management makes a mistake, they become the weak link in the project, which can lead to wasted time and money.
Does agile software development and agile project management work only in IT?
Nowadays this approach is very much welcomed by experienced software houses and smaller IT companies because it allows to get better results than Waterfall in case of bigger projects and reduce the risk in some way. It’s also worth mentioning here that Agile does not refer only to software development. The approach itself is so versatile and produces amazing results that it is also used in other industries such as manufacturing, logistics, marketing, and even sales. It is also important to note that the flexibility in Agile is within reason, as teams still keep in mind the main goal and that the right project outcome is critical.
How to choose the right software development process?
We should remember that Agile is not the only right way of software development. Depending on the type of the project, its scope and the type of organization the team works for, both Agile and Waterfall can be applied.
- RIGID PROCESSES AND RULES - If an organization sticks to rigid processes and rules, implementing other agile methodologies can be problematic. Then consider using the Waterfall model, which is solidly structured and transparent from the start. However, when the organization does not follow rigid rules and values process flexibility, it is worth using agile techniques.
- TYPE OF PROJECT - When the team must add a functionality to an existing product, and the functionality itself is predetermined, it makes sense to use Waterfall. If, on the other hand, the team is faced with creating an innovative and more complex project whose scope is not fully defined and which requires more flexibility, it is worth considering using agile methods.
- TIMELINE - When the project timeline has been predetermined and cannot be changed, it makes more sense to use Waterfall, which will produce a more predictable result. If you’ve got less time and the timeline can be flexible, you may use more agile methods.
- BUDGET - If the budget includes some flexibility, it is better to use agile techniques. However, when the budget is predetermined and cannot be changed, the Waterfall model will be more appropriate.
Want to build some high quality software or improve existing one? Need help with your product or system system development? Don't know how to start or which Software Development Life Cycle SDLC model to choose? Don't worry, we are here to help.