Ah, one of life's great questions. There are many ways to answer this question and the answer that works for you will depend entirely on:
- The skill and professionalism of the development team
- The nature of the development work
- How the customers interact with the development team
- How the development team is financed
- The character of the manager / company owner responsible for the development team
- The latest management buzz words on software development
Ohh, who am I kidding, the list is infinite.
Software development is always done somewhere on the spectrum between complete chaos, and a defined development methodology that has some flaws, but its how we have decided to do it here. Most developers believe its closer to the chaos end, and managers think its following the methodology
The steps you have described are part of several methodologies, but are not appropriate to be used in other situations. Take for example, the start-up company boldly going to launch a new product in a new market sector with no existing customers. Its very difficult to write clear and definitive user stories when you don't yet know who your customers are going to be, or what they expect your service to do in the kind of detail needed to do this properly.
Other environments, are very formal, This IS the set of requirements, That IS what you will deliver, and last month IS when you will have delivered it. (Otherwise characterised as industry standard software - costs too much to develop, doesn't do what the end customer wanted, full of bugs and delivered years late)
In reality, the practical solution is this:
There are a range of process approaches that have strengths and weaknesses. You make a choice from these approaches of which aspects fit within the business and team constraints about how the world around the development team operate, and develop accordingly.
If your customer is big on requirements, specifications etc, then you are more likely going to be developing along a waterfall approach.
If your customer is problem focused, 'solve this problem for me' then you are much more likely going to be doing agile or rapid prototyping development.