Just in time and lightweight requirements:
Keep the requirement level at the minimum required to start the development process.
Automated repeatable unit tests :
Test must be integrated throughout the lifecycle, not at the end .Test scenarios should be written before the development starts (knowing that you would write them anyway!).
Software release must rely on customer feedback :
Don’t waste your time developing unusable functionalities that wouldn’t add any business value to your software; focus on getting the most important features and items first to the market. Make them prioritized to get the better of agility and flexibility.
Stick to a regular software release cycle:
Fixed release cycle (iteration, sprint) is vital, it creates routine (stakeholders, departments, team members) and routine increases productivity. At the end of each release, all features must be completely done and functional, this ensures a clear and complete vision toward the software development progress, reduced risk and higher value.
Get the best of your stakeholders:
By making them working toward a shared goal.
Remember, the success of your project is all about making your stakeholders happy :).