82,268 research outputs found

    A Reverse Engineering Methodology for Extracting Parallelism From Design Abstractions.

    Get PDF
    Migration of code from sequential environments to the parallel processing environments is often done in an ad hoc manner. The purpose of this research is to develop a reverse engineering methodology to facilitate systematic migration of code from sequential to the parallel processing environments. The research results include the development of a three-phase methodology and the design and development of a reverse engineering toolkit (abbreviated as RETK) which serves to establish a working model for the methodology. The methodology consists of three phases: Analysis, Synthesis, and Transformation. The Analysis phase uses concepts from reverse engineering research to recover the sequential design description from programs using a new design recovery technique. The Synthesis phase is comprised of processes that compute the data and control dependences by using the design abstractions produced by the Analysis phase to construct the program dependence graph. The Transformation phase consists of processes that require knowledge-based analysis of the program and dependence information produced by the Analysis and Synthesis phases, respectively. Design recommendations for parallel environments are the key output of the Transformation phase. The main components of RETK are an Information Extractor, a Dependence Analyzer, and a Design Assistant that implement the processes of the Analysis, Synthesis, and Transformation phases, respectively. The object-oriented design and implementation of the Information Extractor and Dependence Analyzer are described. The design and implementation of the Design Assistant using C Language Interface Production System (CLIPS) are described. In addition, experimental results of applying the methodology to test programs by RETK are presented. The results include analysis of a Numerical Aerodynamic Simulation (NAS) benchmark program. By uniquely combining research in reverse engineering, dependence analysis, and knowledge-based analysis, the methodology provides a systematic approach for code migration. The benefits of using the methodology are increased comprehensibility and improved efficiency in migrating sequential systems to parallel environments

    A Syntactical Reverse Engineering Approach to Fourth Generation Programming Languages Using Formal Methods

    Get PDF
    Fourth-generation programming languages (4GLs) feature rapid development with minimum configuration required by developers. However, 4GLs can suffer from limitations such as high maintenance cost and legacy software practices. Reverse engineering an existing large legacy 4GL system into a currently maintainable programming language can be a cheaper and more effective solution than rewriting from scratch. Tools do not exist so far, for reverse engineering proprietary XML-like and model-driven 4GLs where the full language specification is not in the public domain. This research has developed a novel method of reverse engineering some of the syntax of such 4GLs (with Uniface as an exemplar) derived from a particular system, with a view to providing a reliable method to translate/transpile that system's code and data structures into a modern object-oriented language (such as C\#). The method was also applied, although only to a limited extent, to some other 4GLs, Informix and Apex, to show that it was in principle more broadly applicable. A novel testing method that the syntax had been successfully translated was provided using 'abstract syntax trees'. The novel method took manually crafted grammar rules, together with Encapsulated Document Object Model based data from the source language and then used parsers to produce syntactically valid and equivalent code in the target/output language. This proof of concept research has provided a methodology plus sample code to automate part of the process. The methodology comprised a set of manual or semi-automated steps. Further automation is left for future research. In principle, the author's method could be extended to allow the reverse engineering recovery of the syntax of systems developed in other proprietary 4GLs. This would reduce time and cost for the ongoing maintenance of such systems by enabling their software engineers to work using modern object-oriented languages, methodologies, tools and techniques

    FORM: The FORTRAN Object Recovery Model. A Methodology to Extract Object-Oriented Designs From Imperative Code.

    Get PDF
    A majority of legacy systems in use in the scientific and engineering application domains are coded in imperative languages, specifically, COBOL or FORTRAN-77. These systems have an average age of 15 years or more and have undergone years of extensive maintenance. They suffer from either poor documentation or no documentation, and antiquated coding practices and paradigms (Chik94) (Osbo90). The purpose of this research is to develop a reverse-engineering methodology to extract an object-oriented design from legacy systems written in imperative languages. This research defines a three-phase methodology that inputs source code and outputs an object-oriented design. The three phases of the methodology include: Object Extraction, Class Abstraction, and Formation of the Inheritance Hierarchy. Additionally, there is a pre-processing phase that involves code structuring, alias resolution, and resolution of the COMMON block. Object Extraction is divided into two stages: Attribute Identification and Method Identification. The output of phase one is a set of candidate objects that will serve as input for phase two, Class Abstraction. The Class Abstraction phase uses clustering techniques to form classes and define the concept of identical objects. The output of phase two is a set of classes that will serve as input to the third phase, Formation of the Inheritance Hierarchy. The Formation of the Inheritance Hierarchy phase defines a similarity measure which determines class similarity and further refines the clustering performed in phase two, Class Abstraction. The result of the methodology is an object-oriented design including hierarchy diagrams and interaction diagrams. Additionally, the results of applying the methodology in two case studies are presented. The research has resulted in the development of a unique methodology to extract object-oriented designs from imperative legacy systems. The benefits of using the methodology include: the ability to capture system functionality which may not be apparent due to poor system structure, and the reduction of future maintenance costs of the system as a direct effect of accurate system documentation and updated programming technologies

    Reengineering of Legacy Systems to Distributed Environments.

    Get PDF
    The object-oriented paradigm and client/server and distributed technologies have become widely used in the last decade. There is an increasing interest to migrate and reengineer legacy systems to these new hardware technologies and software development paradigms. Software engineers who wish to reengineer such legacy systems face challenges, such as lack of documentation and programs that are difficult to comprehend. Middleware technologies such as CORBA and DCOM make the development of new distributed systems, as well as the migration of legacy systems to distributed platforms, more feasible. Distribution of a system consists of two parts: (1) subsystem decomposition and (2) allocation of the subsystems to different sites. In this research, we define a reengineering environment that assists with the migration of legacy systems to distributed environments. We define a reengineering methodology that uses reverse engineering, software metrics, clustering, and data mining to migrate legacy systems to object-based distributed environments. The reengineering environment includes the methodology and an integrated set of tools that support the implementation of the methodology. The methodology consists of multiple phases. First, we use reverse engineering techniques for program comprehension and design recovery. We then decompose the system into a hierarchy of subsystems by defining relationships between the entities of the underlying paradigm of the legacy system. The decomposition is driven by data mining, software metrics, and clustering techniques. Next, if the underlying paradigm of the legacy system is not object-based, we perform object-based adaptations on the subsystems. We then create components by wrapping objects and defining an interface. Finally, we allocate components to different sites by specifying the requirements of the system and characteristics of the network as an integer-programming model that minimizes the remote communication. We use middleware technologies for the implementation of the distributed object system

    Ingeniería inversa aplicado a sistemas desarrollados con programación orientada a objetos para obtener la documentación

    Get PDF
    El presente trabajo tiene por objetivo proponer una metodología basada en la ingeniería inversa con el fin de recuperar la documentación funcional y las especificaciones de diseño de sistemas desarrollados con metodología orientada a objetos, facilitando con esto el mantenimiento del mismo. Nosotros presentamos un enfoque basado en vistas de diseño utilizando el estándar UML, apoyándonos en una Herramienta CASE para la recuperación de diagramas (diagrama de clases) desde el código fuente. -- Palabras claves: Sistemas, Software, Ingeniería Inversa, UML, Herramienta CASE-- The present work has as objective proposes a methodology based on reverse engineering with the purpose of recovering the functional documentation and the design specifications of system developed with Object Oriented Methodology facilitating with this the maintenance of itself. We presented an approach based on design views using standard UML, supporting in a Tool CASE for the recovery of diagrams (diagram of classes) from the source code. -- Keywords: Systems, Software, Reverse Engineering, UML, Tool CASETesi

    Structured Review of the Evidence for Effects of Code Duplication on Software Quality

    Get PDF
    This report presents the detailed steps and results of a structured review of code clone literature. The aim of the review is to investigate the evidence for the claim that code duplication has a negative effect on code changeability. This report contains only the details of the review for which there is not enough place to include them in the companion paper published at a conference (Hordijk, Ponisio et al. 2009 - Harmfulness of Code Duplication - A Structured Review of the Evidence)
    corecore