Skip to content

Iterative Development

The software development lifecycle describes the steps typically involved in building programs. These include:

  1. Requirements Analysis
  2. Software Design
  3. Implementation
  4. Testing
  5. Deployment

Requirements analysis involves understanding what software needs to be built, resulting in a list of functional and quality requirements. This requires you to discuss the program with its stakeholders, understanding what they require from the software and how it will be used.

Once you have the requirements, you can start to design your solution. This involves sketching out the plan for how the software will work. You need to think through the steps the computer will perform, and the data that it will need to meet the system’s requirements.

With your plan in hand, the next step is to turn that plan into code — the implementation. If you have a sufficiently detailed plan, then this action is relatively mechanical. In most cases though, you will need to flesh out the plan as you go. This is where you will use the syntax rules of the language to realise the concepts you need to achieve your design.

To make sure the plan has worked, you move on to testing your implementation next. Testing can start with making sure your software works with the intended interactions, but should also include actively trying to break it. Thinking of the unintended ways your program can be used is a challenging task, but the more ways you can test the more reliable your resulting program will be.

While these steps are listed in sequence, you are most likely going to jump between the first four steps as your project progresses. For example, as you design the algorithm you may want to test out your ideas by building some code. Similarly, while coding you may realise that you need to rethink the design, or you may realise that you need to get some additional details about how the system should work. When testing you are extremely likely to need to jump back and re-code, redesign, or reanalyze things as you find issues.

At some point you will have something that is ready for the users to interact with. This is when you can deploy the software, which means making the program available for others to use. With web applications, deployment would involve setting up the software on a server. With installed software you need to provide a way for users to download, install, and run your program.

Iteration is important throughout all of these steps. You are best to design, implement, and test your solution frequently as it grows. Agile software development practices focus on this, with the suggestion that, for professional teams, you would have something the client can run every two weeks. This helps ensure that you are building the right product, as it can be easy to misunderstand what the client wants.

As you are learning to code you can apply some of these ideas on a smaller scale. Make sure to design, implement, and test your projects frequently. Don’t plan too far ahead — design a small part and get that going, then build the next feature on top of that.