How is it possible to design systems that can withstand the test of time by being able to accommodate developments in technology, and remain maintainable (meaning that changes, whether defect corrections or new features, can be made at a reasonable cost? Of course, there is no panacea here, and the second law of thermodynamics applies as much to software as it does physical and biological systems. This is no mere metaphor. Entropy is a key concept in information theory, and not only is its definition analogous to entropy in physical systems, but there are genuine limits on the capabilities of computer systems that can be reduced to basic physics. But I digress, the principles of good software engineering are generally much more prosaic than the…