Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
1993
Understanding the structure of large information spaces can be enhanced using reverse engineering technologies. The understanding process is dependent on an individual's cognitive abilities and preferences, on one's familiarity with the application domain, and on the set of support facilities provided by the reverse engineering toolset. Unfortunately, most reverse engineering environments provide a xed palette of knowledge organization, data gathering, and information navigation, analysis, and presentation techniques.
Science of Computer Programming, 2010
The Rigi environment is a mature research tool that provides functionality to reverse engineer software systems. With Rigi large systems can be analyzed, interactively explored, summarized, and documented. This is supported with parsers to extract information from source code, an exchange format to store extracted information, analyses to transform and abstract information, a scripting language and library to automate the process, and a visualization engine to interactively explore and manipulate information in the form of typed, directed, hierarchical graphs. In this paper we describe Rigi's main components and functionalities, and assess its impact on reverse engineering research. Furthermore, we discuss Rigi's architecture and design decisions that led to a decoupling of major functionalities, and enable tool extensibility, interoperability and end-user programmability.
Information and Software Technology, 1994
Maintenance of large information systems typically suffers from a failure to fully understand both the software and the broader context in which it operates. In particular, effective maintenance requires knowledge of not only the source code, but also user documentation, system design and the business goals and objectives the system aims to support. The Esprit DOCKET project seeks to develop an integrated set of tools, and supporting method of use, to enable software maintainers to gain a richer understanding of a software system and its components. This is achieved by enhancing traditional, reverse engineering tools with other sources of knowledge, such as test cases, documentation and user expertise, in order to provide a more comprehensive picture of a system. Underpinning the DOCKET toolset is an organizational meta-model called the Global System Model. This model seeks to represent all aspects of an information system, necessary for system understanding and software maintenance, at different levels of abstraction. This paper presents the Global System Model and discusses its benefits to the software maintenance process. The associated issues and characteristics of the model are also examined.
2000
By the early 1990s the need for reengineering legacy systems was already acute, but recently the demand has increased significantly with the shift toward web-based user interfaces. The demand by all business sectors to adapt their information systems to the Web has created a tremendous need for methods, tools, and infrastructures to evolve and exploit existing applications efficiently and cost-effectively. Reverse engineering has been heralded as one of the most promising technologies to combat this legacy systems problem. This paper presents a roadmap for reverse engineering research for the first decade of the new millennium, building on the program comprehension theories of the 1980s and the reverse engineering technology of the 1990s.
Journal of Software Maintenance: Research and Practice, 1995
With the growing awareness of the importance of software maintenance has come a re-evaluation of software maintenance tools. Such tools range from source code analysers to semi-intelligent tools which seek to reconstruct system designs and specification documents from source code. However, it is clear that relying solely upon source code as a basis for reverse engineering has many problems. These problems include poor abstraction which leads to over detailed specification models and the inability to link other parts of a software system, such as documentation and user expertise, to the underlying code. This paper describes the work of the Esprit DOCKET project which has developed a prototype environment to support the development of a system model linking user-oriented, business aspects of a system, to operational code using a variety of knowledge source inputs: code, documents and user expertise. The aim is to provide a coherent model to form the basis for system understanding and to support the software change and evolution process.
Electronic Notes in Theoretical Computer Science, 2004
Reverse Engineering refers to understanding an existing software system, and documenting the understanding in a desired format. Depending upon the purpose, which can be problem diagnosis, impact analysis, functional enhancements, or re-engineering to newer technologies or newer design, the reverse engineering artifacts vary in their definition, the abstraction level, and contents. Current state of practice relies on pre-cast tools, which extract a set of pre-defined information, with little or no inputs from the analyst. We propose a specification-based approach that allows analyst to specify and control the contents and abstraction level of the reverse engineering artifacts, while allowing user-interaction during extraction.
2000
In the last years, the requirements of the end-users are notably evolved. A good software must not have only a good functionality cover but it also must have good usability features. From this point of view, the most recent design methodologies focus on the interaction between the end-user and its user experience; in this way, the design focus there is
Proceedings Eighth IEEE International Workshop on Software Technology and Engineering Practice incorporating Computer Aided Software Engineering, 1997
The paper presents a case study in the development of software modularisation tools. The tools are produced by using a system for developing code analysers that uses a database to store both a no-loss fine-grained intermediate representation and the analyses' results. The analysers are automatically generated from a high-level specification of the desired analyses expressed in a domain-oriented language. We use a program intermediate representation, called F( p), as the user-visible data base conceptual model. Analysers are specified in a declarative language, called F( p) − , which allows the specification of an analysis in the form of a traversal of an algebraic expression, with accesses to, and stores of, the database information the algebraic expression indexes. A foreign language interface allows the analysers to be embedded into C programs. This is useful, for example, to implement the user interface of an analyser or to facilitate interoperation of the generated analysers with pre-existing tools.
International Journal of Innovative Research in Computer and Communication Engineering, 2014
During software evolution, programmers spend time and effort in the comprehension of programs and that is due to the fact that the documentation is often incomplete, inconsistent and outdated. In order to avoid these problems, software could be re-documented. Software re-documentation enables the understanding of software that aids the support, maintenance and evolution of software. Re-documentation is implemented by different approaches. Reverse Engineering is one of these approaches that provide a better understanding of an existing system by maintainers and developers, especially when faced by a large and evolving legacy system. This study proposes a framework for systems re-documentation based on reverse engineering approach. The re-documentation is done using a reverse engineering tool that generates graphical representations of a system which are then used to produce documentation in a form of a standard document UML notation. Since the quality of the generated documentation i...
The Kluwer International Series in Engineering and Computer Science, 2003
Maintenance and evolution of complex software systems (such as mobile telephones) involves activities such as reverse engineering (RE) and software visualisation. The RE conceptual framework for describing software understanding and concept abstraction is implemented up to different degrees by several RE tools. We found the architecture of most such tools hard to adapt to the domain specific requirements posed by our current practice in Nokia. We believe that the architecture of a RE tool should reflect the conceptual framework's logical steps. We propose such an architecture and present a concrete RE toolkit that implements it. The toolkit provides a flexible way to build RE scenarios by subclassing and composition of a few basic components. We pay special attention to the visual and interactive requirements of the RE process. We show our plans to use it for further research on visualising the complex software structures that we extract from our products. 'agents' that a generic RE tool should provide: views, queries, and domain models.
Working Conference on Reverse Engineering, 1995
This paper proposes a general architecture for Information systems (or data-centered applications) reverse engineering CASE environments. Recovering the specifications of such applications requires recovering first those of their data, i.e. database reverse engineering (DBRE). First, the paper describes a generic DMS-independent DBRE methodology, then it analyses the main characteristics of DBRE activities in order to collect a set of minimum
Working Conference on Reverse Engineering, 1999
One of the challenges of reverse engineering is the extraction of a specification from source code. Our work proposes a singular approach to the construction of reverse engineering tools. Using a transformation based software machine we have built two languages designed to help the construction of reverse engineering tools. Each one of these languages embodies an important domain in reverse engineering. This approach is based on the idea that reuse in a high level of abstraction is possible, if a domain is written for a class of problems. This is the premise of the Draco paradigm, a reuse based strategy for software construction. We also demonstrate the use of these languages, by writing a reverse engineering tool that was able to derive a specification from a system built by others and of which we had no previous knowledge. This paper explains how we have built the languages and how they were reused for building a reverse engineering tool
2004
Currently, the demand for the reverse engineering has been growing significantly. The need of different business sectors to adapt their systems to Web or to use other technologies is stimulating the research for methods, tools and infrastructures that support the evolution of existing applications. In this paper, we present the main research trends on reverse engineering, and discuss how should be an efficient reverse engineering approach, aiming at higher reuse levels.
Journal of Software Engineering & Intelligent Systems, 2018
During software evolution, programmers spend time and effort in the comprehension of programs and that is due to the fact that the documentation is often incomplete, inconsistent and outdated. In order to avoid these problems, software could be re-documented. Software re-documentation enables the understanding of software that aids the support, maintenance and evolution of software. Re-documentation is implemented by different approaches. Reverse engineering is one of these approaches that provide a better understanding of an existing system by maintainers and developers, especially when faced by a large and evolving legacy system. This study proposes a framework for systems re-documentation based on reverse engineering approach. The redocumentation is done using a reverse engineering tool that generates graphical representations of a system which are then used to produce documentation in the form of a standard document UML notation. Since, the quality of the generated documentation is important for program understanding and software evolution, the study also proposes a model for evaluating the quality of the generated documentation. The Documentation Quality Model (DQM) was validated and result of the evaluation showed that the documentation generated using reverse engineering was usable, up-to-date and complete.
Automated Software Engineering, 1999
The paper presents a case study in the development of software modularisation tools. The tools are produced by using a system for developing code analysers that uses a database to store both a no-loss fine-grained intermediate representation and the analyses' results. The analysers are automatically generated from a high-level specification of the desired analyses expressed in a domain-oriented language. We use a program intermediate representation, called F( p), as the user-visible data base conceptual model. Analysers are specified in a declarative language, called F( p) − , which allows the specification of an analysis in the form of a traversal of an algebraic expression, with accesses to, and stores of, the database information the algebraic expression indexes. A foreign language interface allows the analysers to be embedded into C programs. This is useful, for example, to implement the user interface of an analyser or to facilitate interoperation of the generated analysers with pre-existing tools.
Software reverse engineering is a subfield of software engineering that is concerned with the analysis of an existing software system-often legacy-with the goal to synthesize information about the target system so that certain aspects of it can be reasoned about. System artifacts such as requirements specification, design documents, source code, version histories, documentation, use cases, or execution traces are analyzed with the goal to reveal or synthesize abstractions and to generate visualizations that expose call graphs, subsystem structures, high-level architectures, functional decompositions, code duplications, metrics, and run-time behavior. An important aspect of reverse engineering is that it generates information about the subject system at various levels of abstraction, ranging from code-centric views such as program slices to domain knowledge such as business rules. This synthesized information includes mappings and concept assignments between abstraction layers. Thus, reverse engineering provides valuable input for evolving software systems including activities such as program comprehension, reengineering, or maintenance.
Advances in Web Technologies and Engineering
This chapter presents the early stages of a metadata application profile (MAP) development that uses a process of reverse engineering. The context of this development is the European poetry, more specifically the poetry metrics and all dimensions that exist around this context. This community of practice has a certain number of digital repertoires that store this information and that are not interoperable. This chapter presents some steps of the definition of the MAP Domain Model. It shows how the developers having as starting point these repertoires, and by means of a reverse engineering process are modeling the functional requirements of each repertoire using the use-case modeling technique and are analyzing every database logical models to extract the conceptual model of each repertoire. The final goal is to develop a common conceptual model in order to use it as basis, together with other sources of information, for the definition of the Domain Model.
PhD in Computer Science - Software Engineering, University of Nantes, 2018
Nowadays, companies face more and more the problem of managing, maintaining, evolving or replacing their existing software systems. Reverse Engineering is the required phase of obtaining various representations of these systems to provide a better comprehension of their purposes/states. Model Driven Engineering (MDE) is a Software Engineering paradigm relying on intensive model creation, manipulation and use within design, development, deployment, integration, maintenance and evolution tasks. Model Driven Reverse Engineering (MDRE) has been proposed to enhance traditional Reverse Engineering approaches via the application of MDE. It aims at obtaining models from an existing system according to various aspects, and then possibly federating them via coherent views for further comprehension. However, existing solutions are limited as they quite often rely on case-specific integrations of different tools. Moreover, they can sometimes be (very) heterogeneous which may hinder their practical deployments. Generic and extensible solutions are still missing for MDRE to be combined with model view / federation capabilities. In this thesis, we propose to rely on two complementary, generic and extensible model-based approaches and their Eclipse/EMF-based implementations in open source: (i) To facilitate the elaboration of MDRE solutions in many different contexts, by obtaining different kinds of models from existing systems (e.g. their source code, data). (ii) To specify, build and manipulate views federating different models (e.g. resulting from MDRE) according to comprehension objectives (e.g. for different stakeholders).
2005
Abstract Understanding a software system by just analyzing the structure of the system reveals only half of the picture, since the structure tells us only how the code is working but not what the code is about. What the code is about can be found in the semantics of the source code: names of identifiers, comments etc. In this paper, we analyze how these terms are spread over the source artifacts using latent semantic indexing, an information retrieval technique.
2008
Much of the knowledge about software systems is implicit, and therefore difficult to recover by purely automated techniques. Architectural layers and the externally visible features of software systems are two examples of information that can be difficult to detect from source code alone, and that would benefit from additional human knowledge. Typical approaches to reasoning about data involve encoding an explicit meta-model and expressing analyses at that level.
1991
ABSTRACT Reverse engineering promises improvements in software maintenance and reuse. However, its definition, scope, problems, and potential exploitation remain unclear. It is the purpose of this paper to present a personal view of these aspects of reverse engineering with discussions of several of its fundamental problems.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.