Are you doing new development or maintaining an already large code base? For new development I would suggest looking at Cyclone, which adds static analysis (in the form of type checking) to the language itself.
Understanding is always the understanding of a smaller problem in relation to a bigger problem. -- P.D. Ouspensky