In this article we will discuss software development life cycle. We all are familiar with the term life cycle which means a course of events or stages that bring something in existence. So in simple words software development life cycle means a course of events of development of a software. The aim of software development life cycle is to build a high quality and efficient software using the least amount of time. There are numerous software development life cycle procedures and methodologies but every development cycle has one thing in common and that is that they have 7 phases, steps or stages.
7 Phases of Software Development Life Cycle
As discussed earlier every software development life cycle has 7 phases. These phases are as follows:
- Planning: This phase of the software development life cycle is related to research of the product that is under consideration. Detailed market analysis is done in this step and feasibility of the product is calculated. Technical aspects of the products are also brought into consideration and detailed technical analysis is also done. In this step we analyze the advantages and disadvantages of the software development method that is being used. After figuring out this we can work on increasing the advantages and reducing the disadvantages. The most important step in this phase is to understand what the exact requirements of your customer are. In order to ensure that the customer requirements are clear the developers should take regular feedback from the customer. This feedback can be in the form of meetings with the customer, giving customers questionnaires to fill out, performing surveys etc. In some scenarios even the customer is not sure what they want and in such cases it is the job of the team to ensure that they provide customers with proper information, take proper feedback, understand their needs, and then propose a solution to them. Customer approval is the most important step in this phase.
- Requirement Analysis: This step in software development life cycle is about creation of a software requirements specification (SRS) document. This document includes all the information about the product that the developers are creating for the customer. This document includes all the requirements of a software application. This document is released before the creation of the software application. This document is created by the business analyst and product manager of the team. After the completion of the software requirements specification document it is shared with the customer and all the stakeholder. After the presentation of this document to the stakeholders and customer the developers wait for their decision. The process of decision making has a lot of constraints such as the time of the total development process, the financial requirements of the process, etc.
- Design: This step in the software development life cycle is related to the creation of the specification design document (SDD). This document is to be created by the product architects. The contents of this document include all the features of the software application that is to be developed by the team. This document also includes all the budget of the features of the software application and also the amount of time required for the development of the feature in the software. The design document software also has to be approved by the customer and all the stakeholders. In some cases, some changes are to be made in this document due to some limitations of the stakeholders, hence the approval of the stakeholders and customers is very important.
- Development/ Implementation: This phase in the software development life cycle is the most time consuming phase. In this phase the development of the software application takes place. In this phase the developers in the team start and complete development of the software and the features of the software that were written in the specification design document. This is the most crucial part of the software development life cycle and many important decisions are made by the developers in this phase. They have to choose an appropriate programming language for software development. Every step in this phase is to be conducted carefully and the communication between the team should be very good especially between the quality assurance team and the developers. It is the job of the quality assurance team to ensure that the quality of the developed product is according to the requirement of the customers. So having a good communication between the developers and quality assurance team will result in a product that is according to the requirement of the customer and they will genuinely enjoy using it.
- Testing: This phase of the software development life cycle is concerned with the testing of the developed product. Most work in this phase is done by the quality assurance team. The QA testers in the quality assurance team read all the lines of codes written by the developers and try to find any errors or mistakes in this code. If any errors are found in the code or the product they are sent back to the team of developers and they have to correct these errors. Then this modified code is again sent to the QA testers and they look for any other flaws in the code. This process is repeated until all the code is error free.
- Deployment: This phase of the software development cycle is related to the launch of a product in the market. The completed product is shown to the customer and the stakeholder. After this it is launched into the market and is ready for use.
- Maintenance/ Improvements: This is the last phase of the software development life cycle. This step is related to the maintenance of the developed software. After the product is released into the market the performance of the product and its popularity is observed. The trends related to the product are observed such as is the software fulfilling its requirements, is it easy to use by the consumers, etc. The feedback that we get from the consumers is observed and on the basis of this feedback changes are made to the software.
Pros and Cons of Software Development Life Cycle (SLDC)
If the phases and steps of the software development life cycle are followed strictly and properly we will be able to develop a product that is exceptionally good. As discussed earlier all the phases of the software development life cycle are precise and cover all the aspects that need to be covered for the creation of a software that is according to the customer and stakeholders requirements. The documentation done in the software development life cycle helps the developers get a proper guideline of what they have to create and what is the requirement of the customer whereas for customers the documentation helps them get an idea of what they are getting and if they need to change anything they can. This results in creation of a product that will definitely beat you competitors and make your customers want to work with you on more projects. Some of the pros of software development life cycle are as follows:
- Cost efficient
- Time efficient
- Helps improve coordination between a team
- Helps define proper roles for employees and improves transparency in workplace
- Minimal risk potential when the project is deployed
Some of the cons of the software development life cycle are as follows:
- If the planning is not done well the project can take more time and higher cost.
- Sometimes if there are a lot of bugs in the code correcting them will result in taking large periods of time and missed deadlines.
In short software development life cycles pros and cons depends on the team that is using this development method. If the team is efficient and hardworking and they follow the rules and parameters of the development model they will be able to develop an excellent software but if they are not coordinated and not follow the guideline of the development method the end product will leave the customers unsatisfied.
Software Development Life Cycle Models
In all honesty there are quite a lot of software development life cycle models. In this article we will discuss some of the most commonly used models. These models are as follows:
- Waterfall model: This is probably the oldest model and also the most famous model. As the name suggests, this model is in a waterfall like structure. Just as a waterfall flows from higher point to lower point till it reaches its destination such is the flow for this model. The output of one step acts as the input of the other step. This process takes place until the software is developed. The aspect that makes this model stand out is its simplicity. This model requires a lot of planning that is done in the first step of the software development life cycle followed by the creation of documents. The communication of the team in this model is also very effective as the steps are very simple and there are not many complications. The software development life cycle phases are followed religiously but the phase of planning takes more time as they need to come up with a proper end product. The time taken in the phase of implementation depends upon the complexity of the product and how many features it has. A drawback of this model is that the customers are not able to see the product in the working state until the very last stage. For example everybody who uses windows knows that until the new version of windows is not released they cannot use it. This shows that they are using the waterfall model to develop the new version of windows. In the last stage of the model when it is released we are able to get feedback from the customer and hence will be able to improve the product according to this feedback.
- This model is easily understandable and pretty straight forward. It makes coordinating really easy and everybody on the team is on the same page.
- The deadlines are easily met in this model. This is because the team is already provided with clear cut instructions and no time is wasted in figuring out steps.
- As we know that there is heavy documentation involved in this type of model so it is better suited for bigger projects which have large teams.
- One of the biggest disadvantages of this model is that making changes in the product at a later stage in the project is nearly impossible. This is because it is a sequential process and every step is connected with the other step and making changes will result in a lot of complication.
- Another disadvantage of this method is that the customers and stakeholders will not be able to see the product or use it immediately. They will have to wait for a few months to see the product which in some cases results in the customer being uncomfortable or leaves them unsatisfied.
- Another disadvantage is that there is no room for error as the product cannot be changed at a later time in the developing process. So very thorough research is needed. `
- Such a model is not suited for small teams as it requires too much research work which results in higher cost.
- Applications: As discussed earlier it is can be used in long term projects such as upgrading the operating systems in computers i.e. Microsoft windows vista, 8, 10, etc.
- Iterative Model: In this type of model there is not a lot of planning required. This model requires an approach in which the whole project is divided into smaller parts. Each small part is known as an iteration. After dividing the project into iterations each iteration goes through the whole software development life cycle and its 7 phases. The best part about this type of model is that once one iteration is complete a small chunk of project is complete and can be deployed in the market. This is a big plus for the customer and stakeholders as they are able to test the product out in the market and they are engaged with the whole development process of the product. Another plus point of such models is that they allow the team to work on more than one iteration at a time and this can help save time but be careful as it can also result in confusing the team members. The development team can also make changes in the product according to the feedback that they get from the consumer and market place but it should always be kept in mind that making changes in the model is not a good practise as every iteration and the project as a whole follows a set and defined procedure. Adapting to bigger changes is not easy even for this model so we need to be careful with the planning process
- Making small changes in the project is possible.
- This process does not require a lot of planning. Not as much planning as other models require.
- Small chunks of software can be released immediately which makes it easier to deploy and analyse the software in the market.
- The progress of the project can be monitored in real-time and the team can see the result of their efforts and this will keep them motivated.
- It is suitable for bigger projects having large teams.
- It is not advisable to make changes in a running project as this is a very delicate process and requires the involvement of a lot of management. It is advised to do better planning.
- Lack of planning will result in a not so specific requirements which can result in errors in the code.
- Highly skilled resources are required for this project.
- Applications: An application of iterative model is a scenario of upgrade of an e-commerce website. The whole upgrade can be divided into iterations and after each iteration is complete that specific part of the website is upgraded and the website also stay operational.
- Spiral Model: This model is not a very conventional model. It is a hybrid model which contains some aspects of the iterative model and some aspects of the waterfall method. The interesting aspect of this model is that it allows us to test the product at every stage which ensures the production of an excellent end product. The software development life cycle for this model is a bit different then the rest of the models. The software development model that it follows has four phases which are as follows:
- Identification: This is the phase of the software development life cycle in which the planning is done. All the documentations are also done in this phase. The planning is done by doing a lot of surveys, collecting feedback from the customers, having customers fill out questionnaires, etc. The documentations play a very important role as they explain to customers what is the product that they are making, what its features are, how much will it cost, how long will it take to build, etc. The more detailed the documentation and planning is the better will be the end product of the project. Knowing the exact requirements of the customer and stakeholders is a very important aspect of the whole process.
- Design: This part of the software development life cycle is related to the designing of the product. This includes all types of designing such as designing of the basic system of the software, the architecture of the product, and the designing of the module of the system. This step involves the analysis of the whole process of development and this analysis will help us in determining or finding any potential flaws or risks in the design of the software. If there are any risks we can start finding a solution for them before moving on to the next stage.
- Build: In this phase of the software development cycle the developers will develop the software. This is the stage in which the developers will create the software and make sure that it is in the working phase and ready for deployment in the market. The developers and the quality assurance teams’ work together to ensure that there are no bugs or errors in the software.
- Evaluation: This is the last stage in the software development life cycle. This stage is related to the feedback that we get when the product is deployed in the market. This is the part where we observe the spiral effect. The spiral effect can be explained as the feedback that you get when you implement or release the first iteration. You collect the response of the users and see what are the areas in which the iteration can improve and what are the areas in which the iteration excel. Then we observe the same practise for all the spirals until the final product is released in the market. The results of these spirals help you adapt and make positive changes and take out the negatives.
Now we will discuss the advantages and disadvantages of spiral method.
- It allows the developers to add new features to the existing software which was a difficult task to achieve in previous models.
- We are able to get feedback after every spiral which is a very positive feature as we are able to improve our product continuously.
- This model helps us deploy the software early and this has a positive impact on your customers as they can see the product working and also has a good impact on your team as they can see their product excelling in the market.
- We are able to prioritize tasks according to the needs of the market. For example we can work on iteration that is required by the market and complete other iterations later.
- Highly skilled managerial staff is required for handling these spirals. If the management is not great then there is a risk of spiraling going on indefinitely.
- This model is not suitable for small projects.
- This process is quite complex and the chances of mistakes are a bit higher than usual.
- Applications: Spiral models are used in projects where the risks are high. It can also be used in projects where the customers are unsure of what they need and they want the product to be based on the requirements of the users which they can find out from the feedback that they get in each spiral.
In the article we have discussed the basic steps of the software development life cycle (SDLC). We have also discussed the pros and cons of using SDLC and why we need them. We also discussed some types of SDLC. I hope that after reading this article you have sufficient knowledge about software development life cycle.