My favorite approach to large-scale software system design is DeMarco's Structured Design. It addresses all the issues raised by Henry, mainly through producing a design that is actually AMENABLE to iterative change.