A program development design methodology in which the lower-level tasks of a program are defined first; the design of the higher-level functions proceeds from the design of the lower-level ones. See also bottom-up programming, top-down programming. Compare top-down design.