Reengineering Legacy Systems Towards New Technologies

Reengineering Legacy Systems Towards New Technologies

Djelloul Bouchiha
Copyright: © 2021 |Pages: 17
DOI: 10.4018/978-1-7998-3479-3.ch084
OnDemand:
(Individual Chapters)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

This chapter presents all the concepts, techniques, and analyses in relation to the problem of reengineering existing (legacy) systems towards new technologies. Reengineering is a sub-problem of software engineering. It is the study and analysis of an existing system for purposes of understanding, maintenance, or migration towards new technologies that arise from day to day, without rewriting the software from scratch. This will save us time and money in the software development process. Author's objective is not to create new terms, but to introduce the terms already in use with new perspectives. So in this chapter, definitions and techniques are introduced, taxonomies and models are proposed, relevant questions are answered, some specialized conferences and journals are listed and compared; all this to highlight the ways to authors who are interested in writing research papers or surveys in the software reengineering field.
Chapter Preview
Top

Introduction

Software reengineering is an important area of the software engineering. The quest to maintain and understand operational legacy systems has always been a challenge for software practitioners. This chapter presents a compilation of notions and techniques covering major areas namely, reverse engineering, program understanding, software maintenance, migration and evolving. Our objective is not to create new terms, but to introduce the terms already in use with different perspectives.

Before starting with the reengineering of legacy systems towards new technologies, we must know: in which research field are we working? Which research community do we belong to? What research issue are we dealing with?

To answer all these questions, we use the ACM Computing Classification System (CCS). It has been built as a hierarchical ontology that can be used in semantic Web applications. It relies on a semantic terminology as the main source of concepts and categories that present the state of the art of the computing discipline. The 2012 ACM CCS (ACM-CCS, 2012) starts with thirteen computing fields. Browsing this hierarchy to attempt our goal gives us the following tree.

Figure 1.

Reengineering issues in the ACM CSS classification

978-1-7998-3479-3.ch084.f01

Leaves of the presented tree in Figure 1 are the sub-issues in relation to the reengineering problem, according to the ACM CSS classification.

The following sections give more details about the reengineering process, notably prerequisites, model, problem statement, taxonomy, techniques and future trends. We also list some specialized conferences and journals. Finally, we give conclusion and advices to the researchers belonging to the software engineering community.

Top

Reengineering Model

We propose, in Figure 2, a general model for software reengineering that depicts the sub-processes for all levels of the reengineering process.

Figure 2.

General model for software reengineering

978-1-7998-3479-3.ch084.f02

Key Terms in this Chapter

Restructuring: The transformation from one structure to another at the same relative level of abstraction: while preserving the external behavior (functionality and semantics) of the subject system. Restructuring allows changing structure without changing functionality. It can be performed based on the knowledge of structural form; however, it does not require understanding its meaning. For example, converting a set of If statements into a Case structure, or converting While loop to For loop.

Design Recovery: Creating design abstractions from a combination of source code: existing design documentation (if available), etc.

Software Maintenance: Modifying a software system after delivery to correct its faults: to improve its performance or other attributes, or to adapt the system to a changed environment.

Reverse Engineering: The analysis of a subject system to identify its components and their interrelationships, and to create its representations in another form, or at higher level of abstraction. Two subareas of reverse engineering are widely referred: redocumentation and design recovery .

Migration: Transporting legacy systems to a newer platform (hardware or operating system) or language. For example: move from a mainframe to a network-based computing environment. Migration focuses on conserving legacy systems functionalities in new environments. This needs eventually restructuring or refactoring .

Redocumentation: Creation or amendment of a semantically equivalent representation in the same relative abstraction level. It aims at recovering documentation about the subject system. It may give more explanation with alternate views: such as dataflow, data structure and control flow.

Reengineering: The examination and alteration of a subject system in order to reconstitute it in a new form, and the subsequent implementation of this new form (Chikofsky 1 AU79: Endnote Reference 1 & Cross, IEEE Software , January 1990). Reengineering involves both reverse engineering and forward engineering, and it has two main objectives: (1) Software maintenance that involves repairing (corrective) errors or improving (perfective) with new required functionalities. (2) Software migration that aims at evolving (adaptive) systems to new environment. In particularly, the reverse engineering phase may aim at understanding (predictive) the system.

Complete Chapter List

Search this Book:
Reset