Software Evolution
Discussed the paper Software Evolution by Meir Lehman and Juan C. Fernández-Ramil, as published in chapter 1 of Software Evolution and Feedback: Theory and Practice by N. Madhavji, J. Ramil, and D. Perry (editors).
Interesting notions on display here. The authors reuse a classification of programs into S-type and E-type, where S-type programs hew precisely to a formal specification (and, consequently, appear principally in academic contexts or as subsets of E-type programs) and E-type programs are of the more conventional sort, meant to be used by actual users and, accordingly, are subject to evolutionary forces over its lifetime as its developers attempt to satisfy the users.
"Evolution," they say, specifically refers to the effects of maintenance, or to maintenance itself. "Maintenance," then, would be a misnomer. Driven by user feedback, or by a motivation to retain user satisfaction, programs will increase in functionality and other measures, such as size or some notion of complexity, or so the thesis goes. This can (and, in fact, was) observed in several programs; the article makes reference to a study tracking the size of IBM OS/360 over many releases, demonstrating that the size of the operating system increased steadily for twenty releases, then becomes unstable. An exploration of the instability ensues; a possible explanation is that the "ripple" resembles a feedback loop: tenuous, but plausible. The original study may provide necessary detail.
Thinking of software development as a self-directing process yields a degree of insight. The authors specifically note that evolutionary behavior is evident in software once more than one level of management is involved, as individual groups' activity may be directed, but the interaction between them is more chaotic.
