Program Design (Bottom Up and Stepwise Refinement) – AS Computing Revision (F452)


  • A program is a set of instructions (statements) that a computer can execute, to produce a desired outcome
  • An algorithm is a series of steps which can be followed to solve a problem
  • Creating a piece of software to solve a problem involves first understanding the problem (identifying any assumptions you’ll be making)
  • The next step is to devise a solution, using design tools to help
  • The final step is to test the solution and make sure the program works as required
  • (Well, that’s if you’re creating a little, unimportant program. If you’re doing it for a company, you’ll probably find yourself going through the systems development life cycle, as seen in AS Computing F451)
  • You can use a top-down method or a bottom-up method to design your program…


  • This tends to be used for small programs
  • It also tends to be used for programs that monitor or control devices
  • It starts with the smaller, lower-down, more crucial parts of the problem…
  • …and eventually works up to the high-up overall things like the user interface
  • It works well for a lone programmer
  • It’s not as popular these days as it was in the past
  • If you make a mistake early on, in the small crucial parts, you’re in big trouble later!
  • You don’t get to take a detached view of the project, using this method (there’s no opportunity to ‘stand back and look at it’ until the very end

Top-Down / Stepwise Refinement / Modular Design

  • Top Down Design, Stepwise Refinement and Modular Design are all the same
  • It starts with the very top level and works its way down to the fine detail
  • (hence the name top down design)
  • (step by step, hence the name stepwise refinement)
  • It allows the solution to be developed as several self-contained modules
  • (hence the name modular design)
  • Nasty problems can be split up again and again until you’re left with individual modules that are each pretty easy to code
  • The modules tend to be procedures and functions (or methods, if you’re OOP)
  • Using modules has several advantages…

Advantages of Modules

  • You can divide the modules up between several programmers
  • Having several modules in development at once, by several people means time is saved
  • You can also divide up the modules by expertise, so the experts on certain things are coding the modules that involve those certain thing
  • Each module does one thing (since the code has been split up), so they’re easy to write
  • You can incorporate existing code by using modules more than once
  • Since the modules are relatively short, fewer errors will be made, and they’re easier to spot
  • You can test the modules individually, independent of each other
  • If you need to change a module, only the code in that module (and perhaps the modules logically below it) is affected
  • Basically, using modules is faster, more reliable, more accurate, more efficient, more error-proof…

About Matt

I like writing, filmmaking, programming and gaming, and prefer creating media to consuming it. On the topic of consumption, I'm also a big fan of eating.
This entry was posted in AS Computing Revision, Programming, Revision and tagged , , , , , , , , , , , , , , , . Bookmark the permalink.

Enter comment:

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s