1.2 How Did We Get Here?


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:

  1. Perfective . These changes are made to improve the product, such as adding new user requirements, or to enhance performance, usability, or other system attributes. These types of changes are also called enhancements.

  2. Corrective. These changes are made to repair defects in the system.

  3. Adaptive. These changes are made to keep pace with changing environments, such as new operating systems, language compilers and tools, database management systems and other commercial components .

  4. Preventive. These changes are made to improve the future maintainability and reliability of a system. Unlike the preceding three reactive reasons for change, preventive changes proactively seek to simplify future evolution.

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]

Is COBOL Dead?

Indicators suggest that COBOL remains ubiquitous.

  • The Giga Information Group (GIG) has compiled data revealing that 70 percent or more of the world's active business applications are written in COBOL and that 16,000 large enterprises worldwide still use COBOL.

  • The Gartner Group estimates that some 10,000 mainframe computers worldwide contain 200 billion lines of COBOL code.

Unfortunately, COBOL careers have little perceived growth. Most companies do not use COBOL for new development. COBOL code is being converted or replaced everywhere, limiting legacy COBOL programmers to maintenance tasks and data crunching . Young programmers do not want to learn COBOL because they do not want to be stuck doing maintenance. In fact, most universities don't teach COBOL anymore.

So how much longer will COBOL last? The answer is, until those 200 billion lines of COBOL are gone. That could be a long time.

”Grace

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.



Modernizing Legacy Systems
Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices
ISBN: 0321118847
EAN: 2147483647
Year: 2003
Pages: 142

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net