Multi-level design can be done in a top-down manner, bottom-up manner, or as a mix.
Agile design can be contrasted with full upfront design as follows:
Agile designs are emergent; they are not defined up front. Your overall system design will emerge over time, evolving to fulfill new requirements and take advantage of new technologies as appropriate. Although you will often do some initial architectural modeling at the very beginning of a project, this will be just enough to get your team going. This approach does not produce a fully documented set of models before you can begin coding. -- adapted from agilemodeling.com