Understand the Stages of Software Development and Different Models Used to Execute Them

Photo by Austin Distel on UnsplashSoftware development is a complex process. It’s not just coding and deployment. Software development involves a set of practices dedicated to designing and delivery of software. The development process goes through var…


This content originally appeared on Level Up Coding - Medium and was authored by Kunal Nalawade

Photo by Austin Distel on Unsplash

Software development is a complex process. It’s not just coding and deployment. Software development involves a set of practices dedicated to designing and delivery of software. The development process goes through various stages before the final product is delivered. This is referred to as Software Development Life Cycle (SDLC).

SDLC does not end after the product release. The product needs to go through regular maintenance to ensure the best end-user experience. To develop software, several models are followed with each being a different way of approaching the software development process. In this post, I am going to explain four software development models with their pros and cons.

First, let us understand the various stages of software development.

Stages of SDLC

Photo by Ashim D’Silva on Unsplash

SDLC aims to produce and deliver high-quality software with efficient use of resources. To achieve this, it goes through the following stages:

1. Planning and Requirements Analysis

In the planning phase, the project manager defines the scope of the project, its estimated cost and schedule, relevant stakeholders, project team structure, and goals at each stage of the development. It helps ensure the project stays on the right track.

Requirements analysis involves defining the requirements of the software in the current life cycle. It also defines what resources are needed for the development process. The requirements and resources are clearly documented before starting the development.

2. Design

This phase involves designing various components of the software given the above requirements. Depending on the software, several types of designs are created. Architecture diagrams, use-case diagrams, E-R diagrams, and class diagrams are a few examples.

Designing also involves defining the programming languages, problem-solving methods, and the platforms on which the software would run. Other factors such as availability, reliability, scalability, and security are also defined.

3. Coding and Implementation

This is where the actual development starts. A team of developers works on coding the logical part of the software by referring to the design or prototype and using the specified technologies. For this phase, developers may have to learn the skills and technologies necessary for the implementation.

Developers have to collaborate and ensure that whatever they are doing is in line with the requirements of the project. After coding, developers can provide appropriate documentation for their work.

4. Testing

After implementation, several parts of the software go through a testing phase to ensure all the functionalities run correctly in every scenario. It also tries to reduce the number of bugs in the software. Security testing is also performed on the source code to ensure security and compliance with the company’s policies.

Testing also includes Quality Assurance (QA) which is done by the QA team. QA ensures the quality of the software with respect to the software requirements and the company standards. It aims to deliver the best quality software to the customers.

5. Deployment

In this phase, the software is pushed to production and delivered to the users. An organization has several deployment platforms where the software can be deployed.

Deployment should only be done after the entire software is tried and tested multiple times.

6. Maintenance

At this point, the software has been delivered to the customers. But the SDLC does not end here. Even after rigorous testing, a user is bound to discover some bugs or issues in the software.

The maintenance team takes care of any new issues with the software after it has been delivered. This ensures that the software stays in top condition and the users continue using it.

Software Development Models

Now that you have a basic idea about the stages of SDLC, it’s time to explain different types of software development models. Each model goes through these stages but in a different manner.

Waterfall model

Photo by Christian Joudrey on Unsplash

Waterfall model follows the concept of “one after the other”. It is a sequential model where the next stage starts only after finishing the previous stage. Two stages cannot work together. Once a stage is done, the next stage is started and the previous stage is not visited again.

For instance, if you are done with the design phase, you start the coding and implementation. You cannot go back to the design phase. In this way, all the subsequent stages are performed and the software is delivered.

Advantages

  • This model is very simple and easy to understand.
  • Each phase must be completed before the next one, so each step is tried and tested before moving to the next one.
  • Since there is not much involvement of clients or stakeholders beyond the planning stage, the development process is straightforward.

Disadvantages

The concept of sequential phases itself is flawed. It is extremely rigid. Following are the disadvantages of the waterfall model:

  • Since you cannot go back to the previous phase, you cannot fix any mistakes or make improvements to a phase.
  • It is very easy to deviate from the initial plan.
  • Client may not get the expected product.
  • Nothing is delivered to the client till the deployment phase which arrives much later in the lifecycle.
  • The model needs well-defined requirements which is rarely the case. Nowadays, requirements are often rough ideas and are not very clear.
  • During the lifecycle, changing requirements is a common scenario. This model cannot accommodate them.

Iterative model

Photo by Tine Ivanič on Unsplash

Iterative model starts with a small working implementation of the software. It follows the stages of SDLC and delivers the first version of the software.

Subsequent versions of the software are delivered as necessary, following the same stages from the beginning. Going through the lifecycle to create a new version of the software is referred to as an iteration.

Initially, during the planning phase, you may not know the complete requirements of the software. So, in this model, you start with what you know and deliver an initial version of the software. This may be subject to feedback from the stakeholders or customers.

After each iteration, requirements may change which are then discussed in the next iteration’s planning phase. This is like the waterfall model performed several times until you deliver the required software.

Advantages

  • Unlike waterfall model, the iterative model can adapt to changing requirements.
  • Testing the software is easier if the iterations are small.
  • Parallel Development: While a team is developing the first version, you can start planning the subsequent versions.
  • This model is best suited for large projects since working software is delivered in every iteration. This helps especially when the iterations are small. When software is delivered periodically, valuable feedback can be obtained from customers or stakeholders.

Disadvantages

  • The model is not suitable for smaller projects as it could add unnecessary cost and complexity.
  • Due to changing requirements, the final product could be a far cry from what was initially planned.
  • Designs could have to be made again and again as the requirements are not clear at the start.
  • It is difficult to estimate the project completion date due to constant changing requirements.

Incremental model

Photo by Jungwoo Hong on Unsplash

In this model, the software is broken down into several modules. Each module has its own lifecycle from the planning to the deployment phase. In the next cycle, another module is developed which adds to the previously delivered software. Each deliverable is referred to as an increment.

The first increment often delivers the core product that contains the basic requirements of the software. This product can then be analyzed by the stakeholders and decisions can be made on the next steps. The subsequent increments add more functionality to the core product.

Higher priority features are delivered first. For example, if you are designing a social media application, your first priority is to implement uploading and viewing posts. After that, you may proceed to add other functionalities like reacting to the posts, user login, profile creation, etc.

Following is a diagrammatic representation of the incremental model.

Source: GeeksForGeeks

Here, initially, A was delivered. After that, B and C were built on top of the previous deliverables.

Advantages

  • As the software is broken down into several modules, the delivery time of each increment is shorter. Thus, the software is delivered quickly.
  • This model is quite flexible to changing requirements. The development of each increment goes through a requirement-gathering phase. So, the next increment is delivered according to the new requirements.
  • Project Scope can be controlled. You can keep adding more features to an already existing software.
  • Customers can experience each new increment and provide valuable feedback.
  • Bugs and errors in the software can be easily identified as compared to the other models.

Disadvantages

  • Development of each increment is rigid and once decided, it is very difficult to change anything related to the process.
  • Suppose you add a new feature and it creates issues in your software. Identifying the issue is easy but solving it is very difficult. It could often involve making corrections in the earlier modules which is a very tedious process.
  • Due to changing requirements, newer modules may not be compatible with the existing ones which were developed with older requirements.
  • Problems might arise while creating the architecture of the software as each component might be developed with different requirements.
  • The model requires meticulous planning and coordination.

Difference between incremental and iterative model

Understanding both incremental and iterative models can be confusing. Both models go through SDLC several times and involve multiple deliverables. But there is a difference in the way the software is delivered.

In the iterative model, the idea is to deliver the full working software in each iteration according to the requirements in that iteration. In the incremental model, each iteration delivers smaller parts until the complete software is delivered.

Let’s take a simple example. Suppose you are painting the following image.

Photo by caveman on Wallpaper Cave

Let’s consider the iterative model. You would first paint a rough sketch of the trees, the grass, and the road. Then you would add more detail to the sketch. After that, you keep adding colors and modifying them in the subsequent iterations.

While in the incremental model, you would first draw the road and paint it. You would then move to the trees and the grass until you have the final painting.

Which one do you think is better?

Agile Model

Photo by Patrick Perkins on Unsplash

Agile model does not follow a fixed process. It aims to handle every project differently and adapts its methods according to the project requirements. Agile believes in constant feedback from the customers or stakeholders according to which the development is planned.

Agile can be considered as a combination of incremental and iterative models. The software is delivered in small increments and each increment is delivered over several iterations.

The iterations, usually lasting one to four weeks, are referred to as sprints. Each sprint goes through the same SDLC stages at the end of which, feedback is obtained in a sprint review meeting.

The agile model involves a lot of customer interaction which ensures that the software meets their needs. If there is a change in requirements, the development process can be planned accordingly.

Agile works with a concept called user stories. It is like a general explanation of a new feature written from the end user’s perspective. Read more about them here.

The development of the software involves constant collaboration between cross-functional teams, stakeholders, and customers. It’s important that all of them are on the same page. Scrum meetings make sure that all the tasks are performed smoothly and within the required time frame. Know more about scrum meetings here.

Agile works on 12 principles that developers must follow while developing software. Some of them are:

  • Satisfy customers through early and continuous delivery of software.
  • Welcome changing requirements.
  • Deliver working software frequently.
  • Promote sustainable development.

Know more about them here.

Disadvantages

  • To follow this model, a project leader and a proper plan are necessary. An agile mindset needs to be cultivated among each and every developer. The absence of either could mean disaster.
  • Iterations are short and working software is a must. This increases pressure on meeting the project deadlines. Functionalities delivered could be different from the ones initially planned as they could be adjusted to prioritize working software.
  • This model heavily depends on customer collaboration. Sometimes, the customer is not clear about the requirements. This may lead to confusion.
  • Agile is often a long-term process. Team members leave and get replaced. It is very difficult for new team members to start working where the previous ones left off.

Advantages

  • The agile model can easily adapt to changing requirements which is often the case in the real world.
  • Customers are able to stay in the loop and participate in the software development process.
  • Working software is delivered at the end of each iteration. The customers can get an idea about the software and provide valuable feedback.
  • Scrum meetings ensure all the parties involved stay in sync and are working in line with the project objectives.
  • Developers have a lot of flexibility. They can choose their own working location and hours as long as they meet the necessary deadlines.
  • The project is divided into small increments (or builds) and each increment is developed over several iterations. Hence, very little upfront planning is required.
  • It encourages teamwork and collaboration among cross-functional teams. Developers can collaborate with the testing and the QA team, the operations team, and at times, the stakeholders.
  • New functionalities can be delivered quickly which can help the software stay ahead in the game.
  • It reduces the total development time of the software.

Other models

The software development landscape is not restricted to these four models. Other models like Spiral, RAD, RUP, V-Model, Prototype model, etc. are also part of the landscape.

Modern software development is continuously evolving. Software development organizations educate themselves with the best practices to gain an advantage in the market. Practices like DevOps and DevSecOps are widely followed by organizations.

Conclusion

Software development is not a straightforward process. A lot of work is required to deliver the best quality software to the customers. In this post, I have explained the stages involved in the software development life cycle. Each stage is important and dependent on the previous one.

I have explained four software development models in detail with their pros and cons. I hope you have gotten a good idea about these models. This article will surely help you make an informed decision on the model to choose for your next project.

If you are unable to understand the content or find the explanation unsatisfactory, comment your thoughts below. New ideas are always appreciated! Give a few claps if you liked this post. Subscribe and follow me for weekly content. Feel free to DM me on Twitter if you want to discuss anything. Till then, Goodbye!!

Level Up Coding

Thanks for being a part of our community! More content in the Level Up Coding publication.
Follow: Twitter, LinkedIn, Newsletter
Level Up is transforming tech recruiting 👉 Join our talent collective


Understand the Stages of Software Development and Different Models Used to Execute Them was originally published in Level Up Coding on Medium, where people are continuing the conversation by highlighting and responding to this story.


This content originally appeared on Level Up Coding - Medium and was authored by Kunal Nalawade


Print Share Comment Cite Upload Translate Updates
APA

Kunal Nalawade | Sciencx (2022-07-18T00:31:03+00:00) Understand the Stages of Software Development and Different Models Used to Execute Them. Retrieved from https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/

MLA
" » Understand the Stages of Software Development and Different Models Used to Execute Them." Kunal Nalawade | Sciencx - Monday July 18, 2022, https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/
HARVARD
Kunal Nalawade | Sciencx Monday July 18, 2022 » Understand the Stages of Software Development and Different Models Used to Execute Them., viewed ,<https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/>
VANCOUVER
Kunal Nalawade | Sciencx - » Understand the Stages of Software Development and Different Models Used to Execute Them. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/
CHICAGO
" » Understand the Stages of Software Development and Different Models Used to Execute Them." Kunal Nalawade | Sciencx - Accessed . https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/
IEEE
" » Understand the Stages of Software Development and Different Models Used to Execute Them." Kunal Nalawade | Sciencx [Online]. Available: https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/. [Accessed: ]
rf:citation
» Understand the Stages of Software Development and Different Models Used to Execute Them | Kunal Nalawade | Sciencx | https://www.scien.cx/2022/07/18/understand-the-stages-of-software-development-and-different-models-used-to-execute-them/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.