Development Methodologies

There are two different methodologies that can be used when developing software:

  • Waterfall Method  – Iterative 
  • Agile Application Development 

Waterfall Method

Traditional software development methodologies follow a set of steps in a specific order. This method is known as the waterfall method.

Iteration

Iteration means to repeat. If a programmer is following the waterfall approach, they will repeat stages like design, implementation and testing fairly regularly.

Iteration can be between stages, for example, repeating design and implementation after finding errors in testing.

Iteration can also be within stages, for example, using a dry run to alter code during implementation or re-interviewing an end user during analysis.

Iteration between Stages

Revisiting the design stage because of problems identified during implementation is an example of iteration. Once alterations are made to the design, implementation continues.

During testing, a programmer may realise that there are problems with the source code. Programmers would then revisit implementation and continue onto testing once the errors had been rectified. This is another example of iteration between stages.

When a programmer carries out any form of maintenance they may have to revisit the design stage and then follow the rest of the model through. This is another example of iteration.

Agile

Agile methodologies are by definition, agile! This means that they contain enough flexibility to allow software developers to create software in whatever way is most suited to the circumstances that they are faced with.

Agile methods place a great deal of emphasis on communication and team work. 

Agile software development describes an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).  It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.

Client Interaction

Iterative 

The client is heavily involved in the initial analysis stage and at the end of development, when evaluating if the software meets their needs and matches the agreed specification

Agile

The client is involved throughout the process, giving constant feedback on prototypes of the software during development. This feedback is acted upon, quickly ensuring the software evolves throughout the project. Changing goals during the development can be positive in terms of final client satisfaction with the product.

Team Work

Iterative 

Teams of analysts, programmers, testers and documenters work independently on each phase of development. Teams mainly work in isolation with some communication required between each phase. 

Agile

Teams of developers communicate and collaborate, rather than teams of experts operating in isolation.

During a project, fast, face-to-face communication between individuals with different skills is an important factor in progressing the project quickly.

Documentation

Iterative 

A detailed project specification is created at the beginning of a project. Significant time is spent during the project on design, program commentary and test plans.

While modelling solutions remains important, creating large documents that are never updated or referred to again upon completion of the project are not.

Agile

Agile focuses on reducing documentation. It spends time on small cycles of coding, testing and adapting to change.

Any documentation produced (for example internal commentary in code) should focus purely on progressing the project.

Progress Measurement

Iterative 

Follows a strict plan, with progress measured against timescales set at the beginning of the project.

Agile

Breaks a project down into a series of short development goals (often called “sprints”). 

This involves cross-functional teams working on: planning, analysis, design, coding, unit testing, and acceptance testing.

Progress is measured by the time it takes to produce prototypes or working components of the software.

Agile focuses on delivering software as quickly as possible.

Predictive

Iterative 

A predictive methodology, focusing on analysing and planning the future in detail and catering for known risks.

Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction.

Predictive teams often institute a change control board to ensure they consider only the most valuable changes.

Adaptive

Agile

An adaptive methodology, focusing on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well.

An adaptive team has difficulty describing exactly what they will do next week but could report on which features they plan for next month.

The further away a date is, the vaguer an adaptive method is about what will happen on that date.

Testing

Iterative 

Testing is carried out when the implementation phase of the project is complete.

Agile

There is no recognised testing phase, as testing is carried out in conjunction with programming.