Software Engineering Institute Carnegie Mellon

About the logo

Options Analysis for Reengineering (OAR) Method

Challenges:
How do you make the best use of legacy software when migrating to a software product line or new single system?

  • How do you efficiently and cost-effectively rehabilitate legacy software?
  • Which legacy components are worth extracting for reuse in a new software product line or with a new architecture?
  • What types of changes need to be made to the components?
  • What are the risks and costs involved in identifying and reusing legacy components?

Overview:
The Options Analysis for Reengineering (OAR) method is a systematic, architecture-centric approach for identifying and mining reusable software components. Mining involves rehabilitating parts of an old system for use in a new system or software product line.

Benefits:
The Options Analysis for Reengineering (OAR) method enables users to obtain maximum value from legacy assets by determining the cost, effort, benefits, and risk of mining software components.

Who Would Benefit:
Software product or project managers, software product line managers, software reengineering specialists, software architects.

Example Use:
During a recent initial three-day OAR working session, the SEI and a customer team identified and processed six candidate components out of a potential million lines of code. The team developed initial cost, schedule, and risk estimates for mining the components. The team looked at alternative scenarios for obtaining the software capabilities required and identified a set of mining issues and concerns.

Description:
The OAR method consists of five activities with scalable tasks:

The five activities of the OAR method.

  • Establish Mining Context: understand the organization's product line* needs, legacy base, and expectations for mining legacy components
  • Inventory Components: identify the legacy system components that can potentially be mined for use as product line* components in core asset base
  • Analyze Candidate Components: analyze a candidate set of legacy components to evaluate their potential for use as product line* components
  • Plan Mining Options: develop alternative plans for mining based on schedule, cost, effort, risk, and resource considerations
  • Select Mining Option: select which mining option or combination of options can best satisfy the organization's mining goals by balancing the programmatic and technical considerations

* Note: Every place the term "product line" appears you can easily substitute "new software architecture" if a product line is not the immediate goal.

OAR enables users to screen candidate software components; identify the best candidates for reuse; analyze, isolate and aggregate candidate components; and estimate the level of difficulty, cost, and effort required to mine and rehabilitate the software components selected. Using OAR results, a reengineering team can focus its efforts on those high-value components that meet the technical and programmatic needs of the software product line or the new single system architecture.

Outputs of OAR include:

  • Inventory of existing legacy components and related documentation
  • Component Table identifying reusable components, their characteristics, estimates of changes needed, level of difficulty, estimated effort and cost
  • Options Table that identifies a set of mining options that reflects the organization's elicited needs, priorities, and concerns
  • List of product line or new single system components that can, and cannot, be satisfied by mining

Availability:
SEI staff will work with a customer reengineering team to apply the OAR method.

Additional Information:

  • For additional information or to arranging OAR services: Linda Northrop

Related SEI Products and Services:
Migration Planning
Architecture Reconstruction
Mining Architectures for Product Line Evaluation (MAP)
Framework for Software Product Line Practice
Product Line Quick Look (PLQL)
Product Line Technical Probe (PLTP)

Keywords:
Reverse engineering, reengineering, component mining, legacy software reuse, software product lines, mining, and legacy systems.