What does Top-Down Design mean?
A top-down design is the decomposition of a system into smaller parts in order to comprehend its compositional sub-systems.
In top-down design, a system's overview is designed, specifying, yet not detailing any first-level subsystems. Then, every subsystem is refined in greater detail, for example, sometimes dividing into many different levels of subsystem, so that the whole specification is decomposed to basic elements.
As soon as these base elements are identified, it is easier to build these elements as computer modules. Once the modules are built, it is effortless to put them together, building the whole system from these individual elements.
A top-down design is also known as a stepwise design.
Techopedia explains Top-Down Design
A top-down design is generally a plan made in plain, simple English for the program. It is very important to note that a top-down design must be independent of any programming language. The top-down design must never incorporate references to library functions or syntactic elements specific to a particular language.
That is the reason why top-down designs are written in plain English. The concept driving a top-down design is to break up the task that a program executes into a very few extensive subtasks.
The highest level is known as the main module, top level or level 0. At this point, the volume of subtasks must be small. Most programs at this level usually include three to seven subtasks. For small-sized programs, the volume of subtasks must be at the low end of the mentioned range.
Division of tasks into subtasks essentially splits the problem into various smaller programs, which helps developers to easily code these simpler parts. It is usually possible that many of these subtasks are so basic that they can immediately determine how to write the code to complete that part.
However, this is generally not the case at the top level. If a subtask takes more than a very few lines of code, it is recommended to repeat the subdivision process. Typically, for every subtask at top level, a new module is started at level 1. These subtasks are then considered individually, and yet again divided into various other subtasks. This subdivision and new level creation processes should be continued until the coders can implement every portion of the problem using computer code.