Legacy system modernization efforts fail for a variety of reasons that, in our experience, reduce to a handful of factors: complexity, software technology and engineering processes, risk, commercial components , and business objectives. ComplexityBecause of the size and inherent inscrutability of most legacy systems, it is critical to reduce complexity where possible and to manage complexity where it cannot be eliminated. More than anything else, complexity is the greatest limiter in legacy system modernization. This complexity stems from a need to
Software Technology and Engineering ProcessesSoftware engineering processes and software technology are often separated by a large chasm . Technologists often look on software engineering as irrelevant. Software engineers , on the other hand, often fail to recognize that even the most advanced processes do not guarantee success if the product is not competitive. To succeed in building an enterprise system, it is necessary to understand the theory behind engineering processes, the "bits and bytes" of software technology, and the business requirements. However, the intersection of these concepts is a no-man's-land where programmer, software engineer, or manager dare not tread. Communication among these splintered groups is sporadic and ineffective , and successes are often the result of accidents and individual heroics. Although mastering the range of concepts and techniques required may be daunting, the alternative ”backing into success while avoiding the many pitfalls ”should be frightening. RiskUnfortunately, many organizations are unable or unwilling to properly manage risk. This may stem from a misbelief that "what I don't know can't hurt me" or a lack of time, usually stemming from an unwillingness to properly manage past risk. It may also stem from an insufficient understanding of risk management and risk mitigation techniques, such as contingency planning. Of course, not all software modernization risks are bad risks; accepting some risk is essential if we are to accomplish anything meaningful. However, much advantage can be gained by simply identifying risks early in the project, maintaining and monitoring these risks, and asking, "How will this activity help mitigate risk identified in my modernization effort?" Commercial ComponentsThe use of commercial components in a modernization effort is a practical necessity but is not without problems. Almost all software systems show signs of aging even before they are released. This is especially true for those developed with a large number of commercial components, because new component versions are released regularly. Software development efforts are often confronted with the problem of when to adopt and when to ignore these new releases. Many times, products are adopted when they fix an existing problem, less often when they provide a new capability, unless this new capability solves an existing problem. If the system is already well into the test phase, the configuration management board will be unlikely to accept the introduction of new versions of commercial software products, because the risk of introducing instabilities in the system is too great. As a result, it is likely that the released software contains old or obsolete component versions. Business ObjectivesWhen asked, many software engineering professionals tell you that they are in the business of making software; in reality, however, they are in the business of making money. As information technology (IT) is often considered overhead, this typically translates to increased efficiencies to accomplish the same or additional functions at lower costs. Legacy system modernization is an important tool in accomplishing this goal but must be performed within this context. Any modernization effort that falls outside business objectives, as management understands them, is headed for cancellation. |