Tuesday, October 12, 2010

Project 11 - Problems Solving Techniques (part 1)

The top-down design for programming puts emphasis on planning and having a complete understanding of the system before you start to do any coding. It is particularly good for larger projects with many inter-connecting parts so that as you code you run into unexpected difficulties connecting pieces of the project together.

When using the top-down method the programmers will write a main procedure that names all the major functions it will need. Than the team looks at the requirements for each of those functions and the process is repeated. As the coders get farther down the sub-routines will perform simple actions that can be easily and concisely coded, and once you have all the building blocks made up all the programmers need to do is work their way back up the design.

The top-down approach:
  • Leads to a modular design
  • Modular design allows the development to be self contained
  • Illustrates clearly how lower level modules integrate
  • Work more easily spread between the programmers
  • Easy to maintain
Two important things about top-down design:
  1. Stepwise refinement: The process of writing software where you gradually add in error checking and functionality. Often, you take the results to show the end user to see if experimenting with a the prototype changes their mind at all about the overall program specifications.
  2. Process Modules: Additional resources that are loaded into a running process (DLL's basically)
Top-down design can be used in other aspects of your life. Just take a big idea, and brake it down into smaller parts until you have the base components of what you need. For instance, you want to plan a party, so that's the big thing. What else do you want? Decorations, food, guests could all be considered slightly smaller modules. So what decorations? Confetti? Balloons? From there you would go through all the other things asking the same kind of questions (what kind of food, which guests etc.) and see if anything could go together (matching cake colors with party color themes). Separating things out like this is also good to divide up the tasks, asking different people to go out and handle different things. Sending person A out to handle the cake, person B out to get party decorations, etc. Or, just building a good checklist of things for you to do yourself, making an otherwise large and daunting task seem simple by breaking them down into their simple base components.

No comments:

Post a Comment