Software Development Methodologies

When creating software, there are many different software development methodologies someone can use to help organize the workflow. Each methodology defines how the programmer or programmers goes about creating the program, and the steps taken may be different between each type. While some software may be easier to program with certain methodologies, this usually comes down to preference. This article will go through the many different methodologies so you know which ones exist, and what you can choose from.

Waterfall Method

This is a very linear approach to software development, as each step essentially leads to the next until the entire software is complete. The entirety of the project is split into essential phases, such as design and implementation. The phases themselves may have overlapping steps, or the steps from a previous phase may be seen in the next one.

Before the software even begins, plans are drawn up that detail schedules and target dates for when the phases will be complete. Everything is tightly controlled, even the budget, through the use of documentation and formal reviews. In the waterfall method, one phase cannot go to the next until the last phase’s work has been reviewed by a manager or supervisor who approves the work. If the client or supervisor denies the phase’s work, then programmers have to go back and fix the problems.

This is known as the traditional methodology, as it is one of the first to be created and used, but it is quite strict and has lost favor over the years because it lacks flexibility.

Incremental Method

In many ways, the incremental method emulates the waterfall method, but it is still unique. Instead of many different phases, only three phases are used: needs, design and implementation. Unlike the waterfall method, where each requirement is tackled all at once, only one is done at a time.

That means the team will assess the needs of one feature, and then the team will design and implement that single feature. When that is done, they will go back to complete the next feature.

The steps needed to complete each phase are often very short, and each phase has major overlapping to streamline the entire process. This tends to make it easier to work on all the different sections of a program without a huge list of restrictions and needs to hold developers back. However, the process is still controlled to ensure that the software does not run over budget or overtime.

Spiral Method

In some ways, the spiral method is like a larger, more intensive version of incremental programming. The methodology itself is rather confusing to new programmers, but it has proven to be effective both with programmers and their clients. This method is also known for turning out perfect programs that clients cannot deny or go back and change when the software is considered finished.

There are four steps, and every time a feature is programmed, it goes through these steps. It starts by determining the needs of the feature and to look at the programming as a whole. Then, everyone on the team pitches ideas on how to best make the feature, and risks are tallied up for each idea. Next, after determining the best way of going about the programming, the feature is actually developed. Lastly, the next feature goes into planning.

There is a fifth step, but this is considered separate from the major four quadrants of the spiral. After planning, the feature is presented to the client. He or she will use the section of the software that was developed, and will either accept or deny it. If denied, the team will go back and keep correcting it until it is passes the client’s approval.

While this is one of the most intensive software development methodologies, and clients that do not have major time restrictions often use it, its effectiveness makes it a very popular model.

Rapid Application Development

Most of the other methodologies discussed so far have emphasized excellence and control. This method is all about getting software done quickly. There is less emphasis on technological perfection, though major bugs will not be accepted, and more emphasis on the business needs of the client. Developers have to move quickly, and clients use this method when they need software now, and they need at with a low investment.

If possible, the development team will break development into segments, which allows some time between each phase for small changes to be made to the program if the features are unacceptable. Programmers also focus on using code generators and other tools that simplify programming. The client must be an active party, and must be willing to quickly test features as they are complete to accept or deny them.

Unlike the spiral method, where programmers go back through the entire process to fix a feature, it is corrected in the fastest possible way. Not only that, but if the project has the chance of running overtime, managers will frequently scale back the project by removing tools and features, ensuring the software can be delivered on time. If any features are taken out of the major implementation of the software, then the development team will often add them later as an upgrade.

Also unlike the other methods, prototypes are not made in rapid application development. The team focuses on building the actual program itself, not a throwaway prototype. Since speed is a major issue with rapid application development, the programmers using this method must be experts at taking effective shortcuts, and they must know how to use the quickest programming techniques.

Prototyping Method

In the prototyping method, the software is like an onion. When the project first starts, the team focuses on building a prototype with all or most of the features and builds an entire working program for the client to use. The program is often scaled down, with few graphics and potentially many bugs. Programming excellence is not expected at this stage, just a working prototype.

After the client accepts the prototype, the programming team creates the next layer by fixing any issues and building up on the features. If there were any tools that were too difficult to make during the first prototype, then they are made in subsequent stages.

User interaction is very important, as clients are expected to evaluate each layer to accept the new changes. This is considered risk management, and it helps the programming team reduce the chances of having to go back and make major fixes.

At the last stage, all of the graphics are made and the prototypes changes into a fully working program as per the client’s instructions. This method is often used if the client wants to see a whole working program from the start of the process.

Agile Project Management

Also known as “scrum,” this methodology is completely different from the others. In other methodologies, the method itself determined how the program was to be made. For example, rapid application development focused on making the program quickly, while the spiral method focused on going through the four quadrants.

In agile project management, there is a basic skeleton of best practices based on common sense, but the overall management borrows from other methods. Before programming, the team sits down and thinks about the best ways to go about creating the program. From there, the steps are then created. Agile project management focuses more on common sense and versatility, as each program is made according to that software’s particular needs.

At the same time, a fair amount of creative and planning work is needed beforehand. Unlike the other methods, where programmers know exactly what steps to follow, the team has to make the steps before starting anything. However, by following the common sense principles, this often does not take too long, and the project can often take off without major bickering or arguing about what steps would best work with the program.

Final Thoughts

There are many different types of software development methodologies to choose from, and many software developers even splice and borrow from different methods to create an entirely customized approach to software development, depending on what the client needs and how the program would be best made.

Sometimes a software development firm sticks with one method for all projects, while others consider the program before choosing a method. Regardless of what is chosen, these are the major methods and they are often seen in many of the customized approaches to software development. Since these methodologies exist to simplify organization, it is normally best to pick from a method that has worked for years, rather than trying to invent a new one.