An approach to program development in which progress is made by defining required elements in terms of more basic elements, beginning with the required program and ending when the implementation language is reached. At every stage during top-down development each of the undefined elements from the previous stage is defined. In order to do this, an appropriate collection of more basic elements is introduced, and the undefined elements are defined in terms of these more basic elements (“more basic” meaning that the element is closer to the level that can be directly expressed in the implementation language). These more basic elements will in turn be defined at the next stage in terms of still more basic elements, and so on until at some stage the elements can be defined directly in the implementation language.
In practice, “pure” top-down development is not possible; the choice of more basic elements at each stage must always be guided by an awareness of the facilities of the implementation language, and even then it will often be discovered at a later stage that some earlier choice was inappropriate, leading to a need for iteration. Compare bottom-up development.