Around 50 percent of the software development life cycle should be dedicated to phases before coding.
Do not allow implementation considerations to affect the requirements analysis or design.
Model the application using UML diagrams. The Use Case, Class, and Sequence diagrams are the most important.
Do not assume that the software model is correct. Use various best practices and policies to validate the correctness of the model.
Check UML diagrams into source control for each public version of the product.
Snippets can further automate prototyping and instrumentation.
Use configuration files to remotely activate tracing.