Featured White Paper
Download Now
Improving productivity and saving money with an Executive Assessment
Legacy Modernization RemediationEnterprise Evolution, a discipline in the legacy modernization domain, is a collection of tool-enabled disciplines that facilitates the understanding, improvement, migration, reuse and/or transformation of existing software systems. This is the second in a 3-part series of white papers that discusses the remediation options in an Enterprise Evolution modernization initiative, which may be applied to a variety of IT project initiatives. Remediation, as a modernization discipline, is defined as a collective set of tool-enabled disciplines that support or provide for the re-factoring, stabilization and improvement in the packaging and design of existing software systems. Remediation, unlike the concept of architecture transformation, delivers application improvements and upgrades within the context of the existing architecture. (1) This last aspect of remediation is an important consideration because remediation does not “transform” existing functional, data or technical architectures. Rather, remediation is based on the concept of significantly improving and evolving programs or systems within the context of existing software architectures. This article discusses remediation benefits, disciplines and options available to organizations seeking to make existing systems more agile and adaptable to changing business requirements.
Remediation BenefitsThere are short-term and long-term benefits of remediating a given program or system. Remediation tasks can be incorporated into larger projects or be applied stand alone as a way to evolve applications and increase their functional life. Remediation benefits can be summarized as follows.
Remediation can target any aspect of an application environment including user interfaces, program logic, cross-system data definitions and data usage, system modularity and functional redundancies. (1) Note that the Object Management Group’s Modernization Task Force uses the terms “Refactoring and Stabilization” to define this same set of remediation disciplines. Each of these remediation aspects is discussed in the following sections.
User Interface RetoolingWhile applying new front-ends to older applications and related interfaces is not a new or unique concept, remediation of front-ends may also be viewed as a first in a series of incremental steps in a modernization initiative. This involves working with frontline users to automate and streamline certain processes, create front-end systems that connect to multiple back-end applications and replace old style interfaces with modern interfaces. Interface retooling projects may also consolidate multiple interfaces and incorporate logic in front-end applications that utilize extracted back-end logic. This approach may be coupled with the modularization and reuse of back-end systems and serves as a driver of subsequent modernization activities while evolving a business process-driven front-end architecture.
Program Level RemediationProgram-level remediation involves resolving programmatic flaws, structuring poorly modularized source code and applying program-level design improvements. Program flaws represent structural and design anomalies in source code and include program-level recursion, runaway logic, premature procedure exits and syntactically and semantically dead code. These programming anomalies can stymie projects ranging from simple enhancements to rule extractions. Remediation tools and techniques facilitate the identification and resolution of these problematic constructs. Structuring source code creates a series of modular, single entry / single exit procedures that can be invoked and relied upon to return control to the point of invocation. A structured module creates source code that can be changed more quickly and adapted to business requirements more reliably and more efficiently. Structuring also creates a modularized baseline that more readily supports various migration and transformation projects. Program-level design review and improvement resolves poor programming techniques such as the nonuse of tables or arrays, reliance on spurious switches, poorly constructed decision logic and other issues. Remediation through this stage is recommended for any programs or systems that will continue to serve as viable software assets over the long-term. Design improvements also ensure that problematic designs are not migrated into target architectures.
Data Rationalization & StandardizationData definitions, which cross program and system boundaries, can be a limiting factor in applying enhancements to existing systems as well as in the migration and transformation of application and data architectures. Consider a single physical file structure defined by hundreds of related physical data layouts that contain discrepancies across data definitions, attributes and naming conventions. No analyst or project team can reliably depend on a given view to fully represent that data structure. This problem may be replicated across hundreds of data structures and systems, creating confusion in projects relying on or impacting those structures. Efforts to understand, change or reuse these data structures, including file update, field expansion, data migration, platform migration and rule extraction projects, are put at risk from widespread redundancies and inconsistencies. Data definition rationalization and standardization projects involve tool-enabled cross-systems analysis, business definition mapping and the reconciliation and re-factoring of layouts, names and attributes. Data definition remediation activities are analyst-assisted, tool-enabled processes that involve subject matter review and input as well as fine tuning based on the particular scenarios or initiatives that an organization wishes to pursue. ModularizationModularizing or componentizing existing systems creates more adaptable, reusable applications. Modularization is the process of selectively slicing, isolating, consolidating or otherwise realigning application functionality across a system. Key objectives include streamlining module size; creating reusable routines; eliminating inconsistencies across modules; isolating business, user access and data access logic; and reducing systems to a subset of essential functionality. Creating modular, reusable components from existing systems involves various approaches based on the intended end-state results. At the most simplistic level of modularization is the process of slicing large, unwieldy programs into more streamlined programs. More sophisticated options involve isolating and consolidating business, user access and data access logic, which prepares systems for data, platform and language migrations. Reconciling and consolidating redundancy also creates a baseline for rule extraction and architecture transformation. Consider that when inconsistent, redundant functionality infects target architectures, whether those architectures involve language-based services or functional models, those architectures will be corrupted along with the business areas they support. Mapping Remediation Tasks to Project InitiativesRemediation work is typically driven by one or more scenarios. These may be general improvement projects geared at streamlining ongoing maintenance or enhancements or be tied to a given migration or transformation initiative. Certain project initiatives can be mapped to remediation activities as shown below:
Note that the above bullets refer only to remediation tasks and do not represent the entire set of tasks for a given project. Phased deployment of individual steps in various remediation roadmaps ensures that ROI can be accrued on an incremental basis. This approach also allows application support teams to apply ongoing maintenance work to systems without freezing software changes for long periods of time. In addition, depending on the type of remediation work planned, project teams will need to complete certain assessment activities. For example, a data enhancement project would require data definition analysis as a prerequisite to any data definition remediation work. Similarly, program remediation or modularization requires process flow analysis. The bottom line is that application remediation activities can benefit a wide range of projects. Evolving applications through continuous improvement allows application project teams to deliver more streamlined and robust enhancements as well as other project-driven changes to systems. Remediation also plays a key role in longer term initiatives including language and platform migration, data architecture migration or transformation to various target architectures. While the first two white papers in this series discussed the assessment and remediation of existing systems, this paper discusses the third leg of modernization – transformation. While remediation can be thought of as “modernizing systems in place”, the concept of transformation goes further by transforming existing data and application architectures into target architectures and environments. |