We've already looked at some of the challenges of modernization, but what are its root causes? One is software size . The amount of legacy code is immense and growing. This became evident in the late 1990s, when organizations hired legions of COBOL programmers and consultants to fix Y2K- related problems. In 1990, an estimated 120 billion lines of source code ”primarily COBOL and FORTRAN ”were being maintained [Ulrich 90]. Since 1990, there has been a huge increase in computers for business process support. One estimate is that roughly 250 billion lines of source code are now being maintained and that this number is increasing all the time [Sommerville 01]. Information systems tend to expand with time, as efforts to remove unused code are seldom funded . The average Fortune 100 company, for example, maintains 35 million lines of code and adds 10 percent each year only in enhancements, updates, and other maintenance. As a result, the amount of code maintained by these companies doubles in size every seven years [M ¼ller 94]. So what is the problem with having all this software? Succinctly stated, more software means having more software to evolve and maintain. For example, companies modify software in response to changing business practices, to correct errors, or to improve performance, maintainability, or other quality attributes. This is all in accordance to Lehman's first law: "A large program that is used undergoes continuing change or becomes progressively less useful." [Lehman 85, p. 250] Reasons for software change fall into the following four categories:
Figure 1-1 shows the average distribution of software maintenance activities. In particular, more than 75 percent of maintenance costs are for providing enhancements in the form of adaptive and perfective maintenance. This data is based on information collected more than 20 years ago [Martin 83]. Nonetheless, recent studies indicate that the distribution remains largely unchanged [Nosek 90, van Vliet 00]. Figure 1-1. Distribution of maintenance by categories [Martin 83]
Cumulative code changes over many years often leads to less maintainable code. Lehman's second law describes the effects of change on a system: "As a large program is continuously changed, its complexity, which reflects deteriorating structure, increases unless work is done to maintain or reduce it." [Lehman 85, p. 253] Increased complexity means that the system becomes increasingly brittle because there is a greater chance of side effects with every change that is made. In turn , software maintenance becomes increasingly difficult, requiring more and better-trained software engineers . The total cost of these types of modifications, which are considered maintenance or evolution activities, tend to exceed the initial development costs over the software's life cycle. As shown in Figure 1-2, the relative cost for maintaining and evolving the software has been steadily increasing and now represents more than 90 percent of the total cost [Moad 90, Erlikh 00]. Thus, most of the life-cycle costs for software occur after the initial delivery [Grady 87]. Figure 1-2. Software costs devoted to system evolution
Therefore, software change, which leads to more code and more complex code, is another root cause of modernization. In the next section, we discuss how software size and software change have led to a legacy crisis. |