The Software Cycle
Posted on October 12, 2016
Near Wupatki National Monument (the site of an ancient Pueblo ) is Sunset Crater National Monument, the site of a comparatively recent (in geologic terms) eruption. I actually came upon it by accident, taking a side trip to visit Wupatki.
Of course, I was immediately struck by the beauty of the Quaking Aspens growing in the volcanic rock, and took this photo. But at the same time, I couldn’t help but think of a basic principle of geology: the rock cycle. You may recall that the rock cycle is the process rock goes through during its lifetime. It begins with magma, from which igneous rocks (such as basalt) are formed. Those rocks may erode, form sediments, and eventually form sedimentary rocks which, under heat and pressure may be transformed again to metamorphic rocks. But regardless, rocks are eventually buried, heated, and melted again to become magma.
If you think about it: software follows a similar process. At first software is developed from scratch (think of the Linux kernel). But it is eventually reworked and modified. Sometimes the change is gradual, but sometimes it is more dramatic, such as is the case with refactoring. Systems may retain their basic functionality, possibly adding new features, or they may be transformed in more basic ways. Again, the monolithic UNIX kernel was the model for the module based modern Linux kernel. The Mach operating system took the more radical (and fundamentally different) approach of building a UNIX-like operating system on top of a microkernel.
Notice that I am not talking about the development of single systems, as in lines of code, I’m talking about the ideas underlying those systems. To be sure, algorithms, patterns, and even individual lines of code are reused drone one system to another, much as the substances from which rocks are formed are transformed throughout the rock cycle. It may take time, maybe a very long time, but software systems always become obsolete, leaving behind only ideas that are incorporated into new types of systems, possibly based on technologies undreamed of before.