The main stages are called proof-of-principle, prototype, alpha and beta release, and product. With the exception of the proof-of-principle stage, these stages should not be new concepts to software engineers. The proof-of-principle stage represents the more traditional specification stage. Rapid prototyping offers a similar proof-of-principle stage.