You are previewing Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices.
O'Reilly logo
Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices

Book Description

"The potential impact of this book cannot be overstressed. Software systems that are not continually and adequately evolved and, in particular, legacy systems that have not been so maintained, can threaten an organization's very survival. I recommend the book as a must for people directly involved in such evolution, whether as customers, managers and resource providers, or as implementers."

--M. M. Lehman, Emeritus Professor, Middlesex University

Businesses inevitably face a critical choice in the design and maintenance of their software systems: Dismantle older systems and completely replace them, or incrementally modernize existing systems. Many businesses choose the latter course, seeking to maximize their existing investment and preserve valuable business knowledge, while adapting to rapidly evolving technologies. Modernizing Legacy Systems is a much-needed guide, showing how to implement a successful modernization strategy and describing specifically a risk-managed, incremental approach--one that encompasses changes in software technologies, engineering processes, and business practices.

Key topics include:

  • Making a case for modernization

  • Understanding requirements and constraints

  • Maintaining performance, data integrity, and security

  • Designing and deploying the target architecture

  • Migrating code and data

  • Estimating costs

  • Planning the modernization effort

For every topic, this book presents current standards and available products that support legacy system modernization. In addition, a large retail-supply-system case study--a system written in COBOL being modernized to one based on the J2EE architecture--runs throughout this book to demonstrate a real-world legacy system modernization effort.



0321118847B01232003

Table of Contents

  1. Copyright
    1. Dedication
  2. Preface
    1. Audience
    2. Organization and Content
    3. Acknowledgments
  3. 1. The Legacy Crisis
    1. 1.1. Modernization Challenges
      1. Complexity
      2. Software Technology and Engineering Processes
      3. Risk
      4. Commercial Components
      5. Business Objectives
    2. 1.2. How Did We Get Here?
    3. 1.3. The Legacy Crisis
    4. 1.4. Evolving Legacy Systems
      1. Maintenance
      2. Modernization
        1. White-Box Modernization
        2. Black-Box Modernization
      3. Replacement
    5. 1.5. Software Reengineering
      1. Retargeting
      2. Revamping
      3. Commercial Components
      4. Source Code Translation
      5. Code Reduction
      6. Functional Transformation
    6. 1.6. Incremental Development and Deployment
    7. 1.7. Summary
    8. 1.8. For Further Reading
  4. 2. The Beast
    1. 2.1. The Retail Supply System
      1. Database
      2. User Interface
      3. Transactions
    2. 2.2. Recent History
      1. Web Enablement
      2. Reports
    3. 2.3. Summary
  5. 3. Risk-Managed Modernization
    1. 3.1. Risk Management
      1. Portfolio Analysis
      2. Identify Stakeholders
      3. Understand Requirements
      4. Create the Business Case
      5. Understand the Legacy System
      6. Understand Existing Software Technologies
      7. Evaluate Technology
      8. Define Target Architecture
      9. Define Modernization Strategy
      10. Reconcile Modernization Strategy with Stakeholders
      11. Estimate Resources for Modernization Strategy
    2. 3.2. Summary
  6. 4. Developing the Business Case
    1. 4.1. Where Are We?
    2. 4.2. Identify Stakeholders
    3. 4.3. Understand Requirements
      1. Requirements
        1. Legacy System
        2. Business Process Reengineering
        3. Stakeholders
        4. Technology Advances
      2. Constraints
    4. 4.4. RSS Requirements
      1. New Functionality
      2. Architecture Compliance
      3. Incremental Development and Deployment
      4. Modernization Goals
        1. Minimized Development and Deployment Costs
        2. Schedule
        3. Quality
        4. Minimized Risk
        5. System Performance
        6. Minimized Complexity
    5. 4.5. Create a Business Case
      1. General Structure and Contents
      2. Incremental Modernization
        1. Modernization Benefits
        2. Metrics
    6. 4.6. The RSS Business Case
      1. Problem Statement
      2. Solution
        1. Architecture Team
        2. Development Team
        3. Maintenance Team
        4. Cost Estimation
      3. Risks
      4. Benefits
    7. 4.7. Summary
    8. 4.8. For Further Reading
  7. 5. Understanding the Legacy System
    1. 5.1. Where Are We?
    2. 5.2. The Context for Program Understanding: The Horseshoe Model
      1. Code Transformations
      2. Functional Transformations
      3. Architectural Transformations
    3. 5.3. Reconstruction
      1. Code-Structure Representation
        1. Manual Code Reading
        2. Artifact Extraction
        3. Static Analysis
        4. Dynamic Analysis
        5. Slicing
      2. Function-Level Representation
        1. Semantic and Behavioral Pattern Matching
        2. Redocumentation
        3. Plan Recognition
        4. Aggregation Hierarchies
        5. Refactoring
      3. Architectural-Level Representation
        1. Structural Pattern Matching
        2. Concept Assignment and Reasoning
        3. Architecture and Structure Identification
    4. 5.4. Architecture Reconstruction
    5. 5.5. Issues
      1. Tool Support Versus Manual Effort
      2. Decompilation/Disassembly
    6. 5.6. Summary
    7. 5.7. For Further Reading
  8. 6. Architecture Representation
    1. 6.1. Where Are We?
    2. 6.2. Purpose of Architecture Representation
    3. 6.3. Architecture Representation Requirements
      1. Views of the System
      2. Levels of Granularity
    4. 6.4. Architectural Views
      1. Module Views
        1. Decomposition View
        2. Generalization View
        3. Layered View
      2. Component-and-Connector Views
        1. Notation
          1. Use Case Maps
          2. Sequence Diagrams
          3. Collaboration Diagrams
      3. Deployment View
    5. 6.5. Additional Considerations
      1. System Context
      2. Hybrid Views
    6. 6.6. Summary
    7. 6.7. For Further Reading
  9. 7. Languages and Data Management
    1. 7.1. Where Are We?
    2. 7.2. COBOL
      1. History
      2. General Structure
      3. Arithmetic
      4. Variables
      5. Calling and Parameter Passing
      6. Composing Source Files
      7. Obsolete Language Features
      8. Standards
        1. COBOL X3.23-1968
        2. COBOL X3.23-1974
        3. ANSI COBOL X3.23-1985
      9. Products
        1. ASCII COBOL
        2. Universal Compiling System (UCS) COBOL
        3. Object-Oriented COBOL
        4. Micro Focus COBOL
    3. 7.3. Java
      1. History
      2. General Structure
      3. The Java Platform
        1. Java Virtual Machine
        2. Java Application Programming Interface
      4. Characteristics of the Java Language
        1. Object Orientation
        2. Interpreted
        3. Portability
        4. Memory Management
        5. Multithreading
        6. Dynamic Loading and Binding
        7. Security
      5. Types of Java Programs
      6. Java Application Programming Interfaces (APIS)
        1. Java Native Interface
        2. Remote Method Invocation
        3. Object Request Broker
      7. Products
    4. 7.4. Data Repositories
      1. Database Management Systems
        1. Hierarchical Databases
        2. Network Databases
        3. Relational Databases
        4. Object-Oriented Databases
      2. Data Warehouses
      3. Standards
        1. CODASYL (Conference on Data Systems Languages)
        2. SQL (Structured Query Language)
        3. Open Database Connectivity
        4. Java Database Connectivity
        5. Object Data Management Group
        6. Object Query Language
      4. Products
        1. Data Management System 2200
        2. Oracle Database
        3. Oracle Discoverer
        4. Relational Data Management System 2200
        5. UniAccess for OS 2200
        6. Unisys Data Access
        7. Universal Data Management System 2200
    5. 7.5. Data Representations for Information Exchange
      1. EDI
      2. XML
        1. DTD
        2. XML Schemas
        3. XML Parsers
      3. Standards
        1. XML 1.0
        2. XML Schema
        3. SAX
      4. Products
        1. Apache Xerces
        2. IBM XML4J
        3. SUN JAXP
    6. 7.6. Summary
  10. 8. Transaction Technology
    1. 8.1. Where Are We?
    2. 8.2. Distributed Communication
    3. 8.3. Transactions
      1. Flat Transactions
      2. Flat Transactions with Save Points
      3. Chained Transactions
      4. Closed Nested Transactions
      5. Open Nested Transactions
      6. Multilevel Transactions
      7. Distributed-Access Transactions
    4. 8.4. Distributed Transactional Operations
      1. Distributed-Transaction Model
      2. Resource Manager Component
      3. Communication Resource Manager Component
      4. Transaction Manager Component
      5. Application Components
      6. Queued-Transaction Model
    5. 8.5. Comparison of Transactional Models
    6. 8.6. Standards
      1. Object Transaction Service
      2. Java Transaction API and Java Transaction Service
    7. 8.7. Products
      1. BEA Tuxedo
      2. IBM Transarc Encina
      3. Open/DTP
    8. 8.8. Summary
  11. 9. Software Infrfastructure
    1. 9.1. Where Are We?
    2. 9.2. Enterprise JavaBeans
      1. Enterprise Javabean Types
      2. Persistence for Entity Beans
      3. Support for Transactions
      4. Security
      5. Products
        1. JBoss
        2. WebLogic
        3. WebSphere
    3. 9.3. Message-Oriented Middleware
      1. Messages
      2. Queues
      3. Queue Manager
      4. Triggers
      5. Message Queue Interface
      6. Transaction Support
      7. Products
        1. MQSeries for ClearPath OS 2200
        2. WebSphere MQ
    4. 9.4. Java 2 Enterprise Edition
      1. J2EE Services
      2. Deployment
    5. 9.5. XML Messaging
      1. XML Messaging Components
      2. BizTalk
      3. Electronic Business XML
      4. Open Applications Group Integration Specification
      5. RosettaNet
      6. How These Standards Relate
      7. Other Standards Related to XML Messaging
        1. Simple Object Access Protocol (SOAP)
        2. Universal Description, Discovery, and Integration (UDDI)
        3. Web Services Description Language (WSDL)
    6. 9.6. Summary
  12. 10. Maintaining Transactional Context
    1. 10.1. Where Are We?
    2. 10.2. Model Problem: Retail Supply System
    3. 10.3. Contingency Planning
      1. MQSeries
      2. Object Transaction Service
      3. Oracle Pro*COBOL
      4. Net Express
        1. Wrapping COBOL Code
        2. Calling Java from COBOL
    4. 10.4. Definition of the Model Problem
    5. 10.5. Solution of the Model Problem
      1. Design of the Model Solution
      2. Building the Test Adapter
    6. 10.6. Evaluation
    7. 10.7. Summary
  13. 11. Business Object Integration
    1. 11.1. Where Are We?
    2. 11.2. A Tale of Two Architectures
      1. J2EE Architecture
      2. B2B Architecture
    3. 11.3. Quality Attributes
      1. Performance
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      2. Security
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      3. Availability
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      4. Data Integrity
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      5. Modifiability
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      6. Portability
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      7. Reusability
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
      8. Integrability
        1. Scenario
        2. B2B
        3. J2EE
        4. Evaluation
    4. 11.4. Summary
  14. 12. Target Architecture
    1. 12.1. Where Are We?
    2. 12.2. Forces Affecting the Architecture
      1. Data Requirements
        1. Reports and Queries
        2. Persistent Summaries and Roll-ups
        3. Data Warehousing
        4. Complex Transactions
      2. Organizational Requirements
      3. Technology Requirements
    3. 12.3. Overview of the Architecture
      1. Application Components
      2. Business Objects
      3. Service Components
      4. Data Components
      5. Wrapper Components
      6. BSR Interface
    4. 12.4. Architectural Patterns
      1. Data Access Within the System
        1. Motivation
        2. Interaction Sequence
      2. Data Access Involving An External System
        1. Motivation
        2. Interaction Sequence
      3. Report
        1. Motivation
        2. Interaction Sequence from an Application Component
        3. Interaction Sequence from a Service Component
      4. Ad Hoc Query
        1. Motivation
        2. Interaction Sequence
      5. Roll-Ups
      6. Batch Roll-Up
        1. Motivation
        2. Interaction Sequence
      7. Continuously Updated Roll-Up
        1. Motivation
        2. Interaction Sequence
      8. Transactions
        1. Motivation
        2. Interaction Sequence
      9. Data Warehouses
        1. Motivation
        2. Interaction Sequence using BSRs
        3. Interaction Sequence Using the Reporting Layer
        4. Motivation
        5. Interaction Sequence Using the BSRs
        6. Interaction Sequence Using a Wrapper Component
    5. 12.5. Summary
  15. 13. Architecture Transformation
    1. 13.1. Where Are We?
    2. 13.2. Data Adapters
      1. Data Replication
        1. Scripts
        2. Extraction, Transformation, and Loading (ETL)
        3. Database Triggers
      2. Data-Access Layer
      3. Database Gateway
      4. Hybrids
      5. Comparison
    3. 13.3. Logic Adapters
      1. Object-Oriented Wrapping
      2. Component Wrapping
      3. Comparison
    4. 13.4. Architecture Transformation Strategy
      1. Code Migration
        1. User Transactions
        2. Related Functionality
      2. Data Migration
        1. Data Migration before Code Migration
        2. Data Migration during Code Migration
        3. Data Migration after Code Migration
      3. Deployment Strategy
        1. Parallel Operations
        2. Non-Parallel Operation
    5. 13.5. Componentization Trail Maps
    6. 13.6. Use of Adapters in RSS
    7. 13.7. Summary
  16. 14. System Preparation
    1. 14.1. Where Are We?
    2. 14.2. Analysis of Alternatives
      1. Plan 1: DMS on OS 2200
        1. Data Access
        2. Control Integration
        3. Transactions
        4. Evaluation
      2. Plan 2: RDMS on OS 2200
        1. Data Access
        2. Control Integration
        3. Transactions
        4. Evaluation
      3. Plan 3: Oracle on the Solaris Platform
        1. Data Access
        2. Control Integration
        3. Transactions
        4. Evaluation
      4. Plan 4: Everything on the Solaris Platform
        1. Data Access
        2. Control Integration
        3. Transactions
        4. Evaluation
      5. Plan 5: Everything on Solaris+
      6. Evaluation of Alternatives
    3. 14.3. Summary
  17. 15. Code and Data Migration
    1. 15.1. Where Are We?
    2. 15.2. Structural Analysis
      1. Initial Plan
      2. Revised Plan
    3. 15.3. Code Migration Plan
    4. 15.4. Data Migration Plan
    5. 15.5. Summary
  18. 16. Integrated Plan
    1. 16.1. Where Are We?
    2. 16.2. Reconciliation Objectives
    3. 16.3. Reconciliation Plan
    4. 16.4. Stakeholder Priorities
      1. User Representatives
      2. Architecture Team
      3. Legacy System Maintainers
      4. Management
      5. Observations
    5. 16.5. Stakeholder Ideal Profiles
      1. User Representatives
      2. Architecture Team
      3. Legacy System Maintainers
      4. Management
    6. 16.6. Stakeholder Consensus Meetings
    7. 16.7. Code-Migration Prioritization Results
    8. 16.8. Summary
  19. 17. Resource Estimation
    1. 17.1. Where Are We?
    2. 17.2. Cost Estimation Overview
      1. FUNCTION-BASED ESTIMATION
      2. TASK-BASED ESTIMATION
    3. 17.3. Costing an Increment
      1. LEGACY SYSTEM SIZE
      2. ADAPTERS
      3. MAINTENANCE COSTS
      4. GROWTH FACTOR
    4. 17.4. Estimation of Cost and Duration
      1. PRODUCTIVITY RATIO APPROACH
      2. COST ESTIMATION MODELS
        1. Incremental Testing Cost
    5. 17.5. Costing the Preparation Work
    6. 17.6. Costing the Final Database Migration
    7. 17.7. Data Collection
    8. 17.8. Summary
    9. 17.9. For Further Reading
  20. 18. Recommendations
    1. 18.1. Find a Better Way
    2. 18.2. Use Commercial Components
    3. 18.3. Manage Complexity
    4. 18.4. Develop and Deploy Incrementally
    5. 18.5. Software Engineering Skills
    6. 18.6. Component-Centric Approach
    7. 18.7. Architecture-Centric Approach
    8. 18.8. High Levels of Concurrent Development
    9. 18.9. Continuous Integration
    10. 18.10. Risk-Managed Development
    11. 18.11. Final Word
  21. References
  22. Acronyms