Top-Down Design - Breaking Great Problems into Manageable Chunks
Top-down design is built on a foundation of advance analysis. Top-down design, also known as step-wise design, takes a hierarchical approach to design, where a high level framework is created first to solve a problem, and then additional detail is applied to that framework. Each iteration of detail brings the solution closer to a workable state until finally enough detail is present to bring the solution to a fully complete state. This process of iteration until an atomic level of detail is achieved is called Stepwise refinement. A Top-down approach leverages the capabilities of modular solutions that can be plugged into the overall framework.
Top-down design is most useful in instances when the process is known in advance. The method of creating a high level framework and then drilling down into more and more detail is especially useful when complex software is being written by many individuals, necessitating a modular approach. It even allows the architect of the program to create a framework, and then others can create "black box" modules for the application that fit the needs of specific sections of the overall application without the individual programmer needing to know the details of the whole program.
A Top-down design is often the only way to tackle an exceedingly large software design project. While it is too complex for someone to sit down and design all of the software to run a space shuttle, with the right framework to develop against, an individual programmer could build a module that fires maneuvering jets based on inputs from radar as the shuttle approaches the space station.
Another advantage of Top-down design is that the individual sections or modules can be written in a way that invites easy reuse, speeding up the pace of development over time. In the process of creating these reusable modules, there are two types of modules that can be created to carry out the work of the overall framework. Process modules take information that has been inputted, and through the use of algorithms, creates a new set of output. Control modules direct the flow of the program between various process modules. The high level framework's architecture is carried out via control modules.
Top-down design is a method that individuals use in their everyday life to solve highly complex problems as well, making this methodology applicable outside of programming. For any sufficiently large task in life, it is often too much to try to complete everything at once. For example, there is no single college class that will result in a degree (at least from an accredited university). Instead of trying to learn all of the varied skills necessary to achieve a college degree in one sitting, a freshman might start out with a high level idea of what they want to study in college. They might then go through iterations where they coordinate with a guidance counselor to define a major, a minor, and areas of focus. The perspective student might then create a plan for what classes they intend to take that will fulfill both the college's requirements for graduation, as well as the student’s personal desires for growth.
Once at that level of detail, the college student might take the individual classes, which are akin to the modules of a program. In this case, the program is a program of study. At the beginning of the class, the student might take the syllabus and create a study plan to ensure that all tasks are completed by the end of the semester. Once at that level of detail on a class-by-class basis, the student carries out the day to day work of completing classes. In this way, the student is able to accomplish the enormous task of getting a college degree by breaking up the task into manageable chunks.
No comments:
Post a Comment