+ 1
I think the easiest way to know is to learn from experience. It differs from project to project depending on the size and nature of the projects (like the audience, cost of things, the project type) There are too many fine details for anyone to just pin point you on what to do if you just ask this question generally.
+ 1
I have been through a project that starts off with us gathering info from the business. Once we gather as much info as we can, we brainstorm what solutions we can come up with. We pick the best solution and then start designing a framework and a skeleton of the software. We identify the functionalities that needs to be implemented. Depending on how many people are on the project, the work can be split up from there. When we complete implementing a functionality, we give the code some test runs ourselves to make sure we don't have obvious mistakes. We then pass it to the testers who run in depth test cases on the code to make sure there are no edge cases or rare cases we missed checking, or if there are performance issues. The project is than tested over time in the test server. Once everything is smooth it is deployed to be tested with users(beta-testing). After a while when everything goes smoothly it goes out to production. Feedback is continuously asked for to identify if any improvements are needed