Stages of Software Development


I’ve noticed a trend in searches, where people are trying to find out what phrases like “RTM” mean.  And I’ve explained it in a post on Windows 7, but I wanted to go a little more in depth for those who are interested.  So, I’m going to take you through the stages of software development.

The early stages:

Software development begins with the customer requesting a specific task or software feature.  Or, it can be that the developer decides that some feature would be interesting to make (read as will become something people will want).  Typically there will be documentation and consultation with potential users to refine the plan.

Some of the documentation you’ll see are “IPO charts” (Input, Processing and Output), flowcharts, pseudocode, and request forms.  After these charts are created, and the project is approved, then the actual source code will be written.

The source code is human-readable code that will be compiled into computer-language (assembly language or binary language).  It will be in any number of programming languages, such as Visual Basic, C#, C++, Java, COBOL, or others.  In “closed source” systems, this code is not released to the general public.  In “open source” systems, the code is released and anyone is allowed to modify and contribute to it.

The code is compiled and tested in development.  Then it’s compiled and made into executable files (or operating systems).  This leads into the next stage of software development: Testing.

Testing Stages:

Alpha Testing: This is the first stage of testing. It could even be considered part of the development testing.  Typically the executable is bare-bones and has a lot of bugs or performance issues.  This will very rarely be released outside of the development team—as it’s considered extremely unstable.

Beta Testing: When the development team starts to create a more stable version of the software, they will release it to a more widespread audience.  Sometimes this is in a private beta (or Technical Beta), and other times it’s a public beta (where anyone can download the software).  Examples of each are Acronis TrueImage (private), Windows Vista (private), Windows 7 (private/public), Windows Live Messenger (public), and Office (private/public).  This is where the users have their chance to find bugs (or errors) and suggest improvements.

Release Candidate: In a perfect world, this is the final stage of the beta testing process.  The version of the software is essentially what the final product will look like.  It’s close enough to “perfect” that the developers are no longer taking suggestions for features or improvements, but are mainly trying to fix the major bugs. Major bugs are considered “Showstopper” bugs, because they are critical to the success of the software.

Final Product (Gold)

RTW: If the product is a download only or download preferred, then this stands for “Release to Web”.  It means that you can go to the company’s website, and download the installer for the product.

RTM: If the product is going to be released in disc form, or installed on computers, then it’s called “Release to Manufacturing”.  Typically the product is released to the manufacturers a couple of months before it will be available to the general public.  This gives the manufacturers time to create discs, install the product, and tailor it to their desires (add their specialized programs to the computer, for example).

General Availability: This is the point where you can purchase the product.  If it’s a download, and the manufacturers were bundling it with other products, then this will be the time that it’s available for download.  If the software was developed for an internal use, then this would be the time where it’s released to the entire corporation or entire network.

Hopefully this has cleared up some of the stages and explained some of the terms that you read online.  If you have comments, suggestions, or questions, please feel free to add them.

Have a great day:)
Patrick.

Leave a comment

Your email address will not be published. Required fields are marked *