Topic: Tip 51: Don't Gather Requirements - Dig for Them Develop requirements for a language to navigate through object structures starting point: Alloy, Demeter, XPath ---- AOP and the tips 11. DRY Logging aspect: write advice only once 12. Make it easy to reuse Use abstract aspects 13. Eliminate Effects Between Unrelated Things (Orthogonality) 14. There are no Final Decisions make reversible; change from one aspect to another. 17. Program Close To The Problem Domain Make your programs look like designs. Implement mini language -> Demeter. Avoid scattering and tangling. 29. Write Code That Writes Code aspects as active code generators 31. Design with Contracts lazy code; contracts for aspects 36. Minimize Coupling between Modules Include aspects 37. Configure, Don't Integrate use aspects for configuration 38. Put Abstractions in Code, Details in Metadata =========== Debugging using aspects