Software releases are huge events! And as time has progressed, the method of software releases has also undergone a number of changes. There come various stages in the release of software. And though it is not a very complex phenomenon to understand, many people don’t actually know why there are different stages of software releases and which one they should look for! In this post, I give a very brief overview of the software release life-cycle.

Please note, this is a very basic piece of info written so that next time you see a software release coming up – you know what it is being released for and exactly how mature it is. And tell your friends. 🙂 For more info on the terms, you can visit the linked pages.

Pre-alpha – This is basically the most primitive stage of a software release. The pre-alpha stage consists primarily of the activities that have to be carried out prior to testing – requirement analysis (the analysis of the needs and demands of the software and met by the software) and unit testing (testing the small fragments of codes which will later be a part of the software) are the main activities apart from software design and development which is pretty much a common feature across all stages.

Alpha – In an alpha stage, the software evaluation is done using white-box and black-box (and sometimes gray-box) techniques. White-box techniques are the methods in which the different blocks of a software are checked and evaluated for correct and desired operation. Black-box techniques are the methods in which the software is evaluated on the basis of its functionality – is it able to achieve its purpose? Is it able to deliver the required results with optimized performance? – are the primary questions that are asked and answered during this stage. Gray-box testing or translucent testing is a combination of these two and is primarily used to generate test cases.

After the alpha stage, the software is said to be in a feature-freeze i.e. no more features will be added to the software after this. It is also referred to as a feature-complete software.

Beta – This is a very important part of the software life-cycle and is indispensable regardless of the software being open-source or proprietary. Feature-complete software from the alpha stage is distributed to users to carry out usability testing – how fit is the software in its current form for use by its customers? This stage brings to notice a large number of bugs in the software. There are are two types of beta – open and closed and they differ only in the number of customers to whom the software is open to. Open beta is open to everyone and hence anyone on the face of this planet can report bugs. For instance, Ubuntu 12.04 had two public betas – 1st March and 29th March. As of this date, it has been released to the public. Closed beta is made open to a very small section – mostly the company employees for usability testing of the software.

Release Candidate – This is the stage after beta release when the reported bugs have been taken care of and the resulting version at hand has the potential to be a final end-product. If a software has a release candidate, it means that the software has been tested fully and does not have a bug that can bring the entire show to a halt.

Release to Marketing/Manufacturing (RTM) – If the software is in RTM, it means that it is ready for delivery to the consumer. It is basically an indication that mass manufacturing and/or distribution is the next stage.

General availability/acceptance (GA) – This stage indicates that the software has been successfully delivered to the customer. Different companies use different terms like First Customer Shipment (FCS) or gold release – but the idea is the same – the software has successfully reached the consumer.

The following block diagram from this page, shows the sequence of events in a software release.

Block diagram - software release life cycle

Hope this post was/will be helpful to you.