Dreamhost Site Hosting     Dreamhost Site Hosting
SIMON METZ - SOFTWARE PROGRAMMING METHODOLOGY
Formalized software programming processes must be implemented with a thought to how your company or clients work in their day to day procedures. Some structured elements may not apply as cleanly as they do on paper and may actually frustrate development cycles, and therefore different approachs, such as top down programming or bottom up programming must be used.

Linus Torvalds, the project leader of the Linux kernel, made the following statement on the Linux kernel mailing list:
No major software project that has been successful in a general marketplace (as opposed to niches) has ever gone through those nice lifecycles they tell you about in CompSci classes.
Some important concepts should be analyzed before proceeding with software programming.

Top Down Programming is a programming style where design begins by specifying high level elements and then dividing them into smaller and more detailed pieces. As the elements of the application become smaller and lower level they are specific enough to be coded and the application can be written. The technique for writing a program using top down programming methods is to write a main procedure that names all the major functions it will need. Later, the programming team looks at the requirements of each of those functions and the process is repeated. These compartmentalized sub-routines eventually will perform actions so simple they can be easily and concisely coded. When all the various sub-routines have been coded the program is done.
Advantages of Top Down Programming
  • Programming team stays focused on the goal
  • There are few questions regarding design once programming begins
  • Code is easier to follow, since it is written methodically and with purpose.
Disadvantages of Top Down Programming
  • Top-down programming may complicate testing, since nothing executable will even exist until near the end of the project.
  • All decisions depend on the starting goal of the project, and some decisions cannot be made depending on how specific that description is.
Bottom up programming requires that the simpler programming components are accomplished first and the more complex programming is designed afterward to create a complete application. Bottom up programming tends to be more general, and thus more reusable, than pieces of programs written top-down. This fact greatly simplifies maintenance, in particular adding new features to the application. It also makes it possible to delay the final decision concerning the exact functionality of the application. Being able to delay this decision makes it less likely that the client has changed his or her mind between the establishment of the specifications of the application and its implementation.
Advantages of Bottom Up Programming
  • Testing is simplified since no stubs are needed.
  • Test cases are easier to write.
  • Code is more re-usable
Disadvantages of Bottom Up Programming
  • Components may be coded without having a clear idea of how they link to other
  • None of the system can be tested as a whole until later in a project often causing complications near the end of the project
All images and content © 2007 Simon Metz
Dreamhost Web Hosting
Dreamhost Site Hosting
adbright ads