Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Top Down approach works great for smaller or exploratory projects, yet i have had a few unpleasant cases of "cornering myself" - cases where a significant rewrite was pretty much required because a crucial implementation constraint was not visible from the top.

With small or ill defined projects, throwing out bits here and there is expected - but i suspect the method can pose serious issues to larger ones.

Example : Quote of Feynman's report on the space shuttle

http://science.ksc.nasa.gov/shuttle/missions/51-l/docs/roger...

        The Space Shuttle Main Engine [design] was handled in a different manner,
   top down, we might say. The engine was designed and put together all
   at once with relatively little detailed preliminary study of the
   material and components.  Then when troubles are found in the
   bearings, turbine blades, coolant pipes, etc., it is more expensive
   and difficult to discover the causes and make changes. For example,
   cracks have been found in the turbine blades of the high pressure
   oxygen turbopump. Are they caused by flaws in the material, the effect
   of the oxygen atmosphere on the properties of the material, the
   thermal stresses of startup or shutdown, the vibration and stresses of
   steady running, or mainly at some resonance at certain speeds, etc.?
   How long can we run from crack initiation to crack failure, and how
   does this depend on power level? Using the completed engine as a test
   bed to resolve such questions is extremely expensive. One does not
   wish to lose an entire engine in order to find out where and how
   failure occurs.  Yet, an accurate knowledge of this information is
   essential to acquire a confidence in the engine reliability in use.
   Without detailed understanding, confidence can not be attained.
   
      A further disadvantage of the top-down method is that, if an
   understanding of a fault is obtained, a simple fix, such as a new
   shape for the turbine housing, may be impossible to implement without
   a redesign of the entire engine.


> cases where a significant rewrite was pretty much required because a crucial implementation constraint was not visible from the top.

That happens sometimes no matter which way you go. I've had the assumptions of what lower level libraries work off have to be completely rewritten as well because the top level system didn't make sense with the verbs and nouns given to it when you looked at it full on in the end.

The difference between redoing code gluing together lower level modules and redesigning a spacecraft make that anecdote perhaps a bit of an exaggeration on the details of work required when Top down fails.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: