Tools/method to help developers looking at "the big picture"

Hi all,

as a developer of projects that have a medium-to-large codebase, I sometimes end up losing the sight of the “big picture”, i.e. the code works, but I don’t remember exactly why I choose some kind of interaction or decoupling among classes instead of some different implementation.

I tend to properly document the code with comments and doxygen, but my feeling is that all that information is too “sparse” to be really helpful when I go back looking at it months later.

Sure, I could concentrate all of the technical decisions made (with proper explaination) writing them in a separate document, but sure enough you all know how easy it is for that kind of documentation to end up un-updated, especially when the person that should write it is the developer itself.

This said, is there some kind of tool/method/suggestion that works for you in helping remembering the important details and the overall picture of a whole project?