If you look at the construction of the Leaning Tower of Pisa you can see some parallels with what you can find when looking at how some software systems are built :
•1173 AD - First floor completed
•1178 AD - Second floor construction - Tower starts to sink due to weak unstable subsoil/clay (This should have been the warning point)
•1272 AD - 3rd, 4th, 5th and 6th floors constructed with one side taller than the other to compensate (the tower is now curved)
•1319 AD - Seventh floor completed
•1372 AD - Bell chamber added
•1838 AD - Decision made to dig out a walkway so visitors could see the carefully crafted base (this made the lean worse). Mussolini intervened to try and straighten the tower. He ordered the foundation to be filled with concrete. This sunk into the clay and the tower leaned further.
•1934 AD - An engineer drilled 360 holes into the base and filled them with mortar. The tower leaned over further.
•1993 AD - 650 tons of lead were hung from the North side to stop the lean and it worked for a while.
•1995 AD - Decision made to try and increase the foundations on the South side. They froze the ground with liquid nitrogen to stop it moving and started to remove stones that could be replaced with metal rods. The stones were part of the original foundation of the building (this is the nearest the tower has come to disaster). To counter this quicker lean they quickly added 250 tonnes of lead and decided on a re-think.
•1999 AD - British engineer came up with a plan to remove ground from under the high side (instead of adding under the low side).
•2001 AD - Work on latest plan complete and tower back straight by 16 inches (to 1838 levels of lean)
There was another similar tower built nearby in Pavia which fell over in 1989.
There are some concerns now about the masonry that has suffered from an increased load over the years and the worry is that this may eventually crumble.
Trying to make an inappropriate design work :
So many system designs are so much like the Leaning Tower of Pisa. People charge ahead with a rushed design and objects get put on top. Because the design doesn't work right they have to use lots of code to correct the design, and then more code, then some code to fix the problems.
Unlike compiled executables, database designs are hardly ever corrected and re-worked. If a program doesn't compile the code is corrected until it does.
A good system design works with the code and also eliminates the need for thousands of lines of code.
No comments:
Post a Comment