This is how a typical software product lifecycle works : You gather requirements, build a prototype, detail out the architecture and design, develop the product, test it, deploy the product, handle migration and maintenance and ensure product support. This is a closed loop where the Product Support team gathers new requirements which are eventually deployed.