The field of software development is constantly and rapidly evolving; better technologies are becoming available to developers and new development methodologies are being used to build software more efficiently. It is essential to be up-to-date with efficient software development methodologies. This article is about one of the Software Development Life Cycle (SDLC) methodologies that is called iterative development.
Let us begin with understanding what iterative development is. An iterative development model works on a systematic repetition of small cycles of software development known as iterations. It aims to achieve an optimal product towards the end. The process begins with specifying and implementing a part of the software. Then it is repeated to produce a new version of the software for each iteration until the finished product is achieved. That is why the iterative model does not attempt to start with a full specification of requirements.
At this point, you must be thinking how iterative software development model is different from the rest of the SDLC methodologies. Don’t worry! We will begin with a brief history of iterative model. Then, we will move onto the iterative approach to software development, where we will explore some of the best practises involved in the iterative process model. Finally, we will end this article by looking at the pros and cons of it.
So, let’s begin!
The History of Iterative Development Model
Before we delve into the iterative development process, let’s have a look at the history.
Back in the 1950s, the introduction of Kanban method opened possibilities for the iterative SDLC model. The method was based on lean production which focuses on efficiency, swift delivery and iterative improvements. It could easily be upgraded to iterative methodology as well as applied to other SDLC methodologies.
Later, the iterative process model was studied in 1995. It was believed that the process of human learning is an iterative, trial and error one. Therefore, the same approach was considered to be applied in software development phases to develop better software, faster, and with fewer imperfections.
In 2004, Microsoft adopted iterative strategy in software development, followed by other developers. In more recent years, with the introduction of Agile and lean methodology in software development the focus has shifted to the approaches based on the iterative model to reduce life cycles and ensure efficient product development process.
The Process For Iterative Development
The Iterative development process is cyclical; unlike waterfall model, it does not follow a rigid process. Once you are done with your initial planning, which does not necessarily has to be very well-defined, the rest of the steps for each iteration are repeated again and again with extensive testing in between until you reach the overall deployment stage.
Each iterative cycle is tested at its initial stage for software and system integration. The decision is made on every step to determine whether the produced outcome will be kept or discarded for the next cycle. This is also referred to as incremental prototyping because the software is developed by working on smaller chunks during each iteration.
In other words, this SDLC iterative model allows the developers to access previous cycles which can be reviewed and changed, if necessary until all the requirements are met and the final product is delivered.
Following is the iterative development methodology for each cycle. To make it further easier for you, we will understand the steps with the help of an example:
Step #1: Planning and Analysis
The first step of the iterative life cycle is the planning, where the developers and clients sit together to identify software requirements, business and stakeholders’ requirements. At this stage, it is not necessary to identify risks associated with the project or worry about quality assurance requirements because this step will be repeated again for your next iteration which will make sure that the risks are overcome and quality is ensured.
Once all the requirements are identified, analysis is done to streamline the development process such as identifying database models.
For your ease, let’s understand through an example.
Suppose, you want to develop a gaming application and that too in the least possible time. You have to incorporate three requirements for now: menu page, the game and the scoreboard. Once you are done with your initial planning for each requirement where you will identify overall project requirements, your target audience, content of the game, client’s requirements, etc. you will start with your first iteration which will focus on the basic template of the menu page, game and scoreboard.
Only when you are done with this step, you will proceed to the next one.
Step #2: Design
Even though in iterative development, design does not play an important role as compared to other steps. However, in this step, the design team can establish technical requirements such as language, services, and data layers and so on, for the architecture of the software.
In the case of our gaming application example, at this step, the design team defines business rules, database along with data layers, languages, etc. you will require to develop basic version of the three features. When you are done with this step, you will proceed to the next one i.e. implementation.
Step #3: Implementation
Now when you are done with the previous three steps, your next step is to start writing the code for your first version of the software. You will follow the coding guidelines and use programming tools such as compilers, interpreters, debuggers, etc. to write the code.
At this step, you will build the technical architecture as well as the database and programs of your first iteration module.
Now, keep in mind, sometimes implementation and testing (which I am going to discuss next) are repeated side-by-side to ensure there are no errors left. Hence, if you doubt that you have written some part of the code wrong, after testing you can rewrite your code and proceed to your next iteration.
As in the case of our game app example, developers will start writing the code where they will make sure that every guideline from planning to design step is incorporated well. At this point, after developer’s level testing, if you feel the code is wrong or the software needs an upgradation, you go back to the planning step and start your second iteration.
Step #3: Testing
Once your code is written for your initial iteration module, it is time to test it for potential bugs or issues that might have been overlooked during the implementation step. You will perform unit testing that is testing individual units of codes; integration testing that is verifying units of code functioning properly when integrated; and will run a user acceptance test that is determining whether the systems satisfies the user requirements for that iteration.
Additionally, you will test your iteration module for potential hacks using different methodologies, which are not only limited to black box (having no access to source code), grey box (having partial access to source code) and white box (having full access to source code) methods.
In the case of our gaming application, once you reach testing, you will test using multiple testing methodologies. One of the most important testing methods is play testing; you will provide your application to different audiences who will try to test it through different ways. In this case, they will choose the number of players from the menu page and play the game from different devices. If they find any problems, you will have to go back to the planning step and start working on your second iteration.
Step #4: Evaluation
Once all your steps are followed for each iteration, you will finally evaluate the entire project. You will hand over the project to the client, who will review the final product for its efficiency and validity.
So, according to our example, after testing, your audience or even you as a developer might have faced some issues in terms of functionality, user interface (UI) design, user experience (UI) design, etc. Therefore, at this stage, you will gather feedback and will start your next iteration from the very first step that is the planning.
Now, this is the first iteration cycle where you have successfully developed the basic version of your gaming application. To incorporate further changes in the final product, for example to add new game levels, along with the client feedback, you will take your go back to step #1 that is planning and follow every step again for your next iteration cycle, which will be an improved version of your software. The process will repeat until there are no improvements to be made.
After you have successfully completed all the iterations, in our case your gaming application, the project is ready to be released. You will provide user documentation to the client where you will specify the guidelines to use the software.
If the client wishes to use maintenance facility, you will also provide weekly or monthly maintenance to them.
When to use Iterative Model?
Now that we know the science behind iterative process model, the important question which comes up is when to use it? You will use it when:
- A software application is large
- Requirements are not well-defined but easy to understand
- When there is a need to change any requirements in future.
- When the resources for few iterations are not available at the time of use but can be used in later iterations.
Furthermore, to choose the best method for your software, we have listed the pros and cons of the model.
Pros for Iterative Development
Cons for Iterative Development
|✓ Adaptable to the changing requirements of the project as well as the client||✖ Each iteration is rigid and does not overlap|
|✓ Each step can be divided into small iterations to speed up the process||✖ Defining increments may need more resources, which were otherwise neglected in the planning step.|
|✓ Focuses on designing and implementation more rather than other steps||✖ Limited attention on planning and analysing step|
|✓ Cost-effective model||✖ Due to limited attention on the planning step, an unforeseen issue arising later may increase the cost|
|✓ Progress can be assessed after each iteration||✖ Measuring progress is dependent upon the risk analysis phase.|
|✓ Instant feedback in between the iteration process||✖ There is a fair chance of getting undesired feedback|
|✓ Risks can be identified and resolved during iteration||✖ Requires user engagement throughout to identify risks and bugs|
|✓ Easier to test and debug during iterations||✖ More resources may be required over the life cycle|
|✓ Preferable for large projects||✖ Not suitable for small projects.|
To sum up what iterative development is, it is simply a software development life cycle model which works through small iterations to ensure efficiency and high quality software at the end. This model can be a great choice for large software that needs to incorporate d feedback and review progressively during development rather than towards the very end. If you follow each step of this model properly, you will end up with a great product that is more likely to be in line with the desired functionality at the end, unlike software developed using the more rigid waterfall model.
We hope we were able to answer all your questions regarding iterative process. If you still have any query, feel free to reach out to us and we will be happy to assist you. And If you are wondering what SDLC methodologies does GoodCore use while developing amazing custom software for clients, reach out to us and we shall let you know!