No engineered structure is designed to be built and then neglected or ignored. — Henry Petroski
Henry Petroski, in an interview on Tech Nation, says that a common rule of thumb is that maintenance costs on engineering structures cost about 4% of the initial construction cost per year. Painting the bridge has cost far more than building it as it is painted continuously: as soon as the painters reach the end of the bridge, they go to other side and start over. The engineers who designed the bridge knew this would happen. When you build something out of steel and put it outside, it will need to be painted. It was all part of the design.
The idea of software maintenance may sound absurd but the reasons why the Golden Gate Bridge needs to be maintained is very similar to why software needs to be maintained?
Software doesn’t change, but the world changes out from under it.
- The technological environment of the software changes. Operating systems, networks, and hardware.
- The programming language that the software was coded in evolves and periodically changes the way things are coded. A good example is all the changes in the PHP programming language https://php.net/ChangeLog-5.php
- People discover bugs. This does not change the software but rather our knowledge of the software and its security.
- As people use the software, they get new ideas regarding how they want to use it.
- New possibilities emerge and make us less content with old possibilities.The human environment around the software changes. Organizational priorities change. Laws change. Project sponsors and users turn over.