If you’re stuck with a serial lifeycle, here’s how to make it less waterfallish and more flexible so you can adapt to reality:
Plan to iterate on everything, including planning, requirements, and prototyping.
Prototype and show your customer/customer surrogate as much as possible as early in the project as you can. The more feedback you incorporate from people who are your customers or who represent your customers, the better off you are.
Integrate testing into the project from the beginning. Work with the testers to provide feedback before an entire system is available.
Implement by feature, integrating and testing as you proceed.
If you must deliver documents (the typical milestones at the end of ...