
When software is customized to its hardware, it is difficult to break that bond. Software is then at risk for becoming obsolete just like the hardware. Three methods for combating this obsolescence are presented: specification documents, middleware, and model-driven development. Only model-driven development is capable of addressing this issue while simplifying software development, making global-level optimizations to the application’s structure and providing a general purpose solution instead of a finite set of algorithms.