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.
2010, Innovations and Advances in Computer Sciences and Engineering
Emergent advancements in technology, new business requirements and stakeholder's needs escort to frequent migration from legacy systems to more powerful, dedicated, secure and reliable computing systems. Different reverse engineering methodologies, techniques and tools are used to extract artifacts from existing legacy systems starting from the implementations and going back to design, architecture and requirements. Most presented techniques supplemented with tool support are specific to particular projects and their generalization and customization is always questionable. This paper presents customizable software reverse engineering technique integrated with different recovery techniques and tools to extract different artifacts from legacy systems. The concept of technique is validated through different examples.
As a software system evolves, new features are added and obsolete are removed, the design artifacts gradually diverge from its original design. Many approaches for design recovery or reverse engineering has been suggested, most with some type of support tool. Since a project's time constraints may prohibit use of sophisticated techniques and/or tools due to the learning curves associated with the techniques and tools, methods that can be applied in lieu of complex support tools may be required. Reverse engineering produces a high-level representation of a software system from a low-level one. This paper describes a case study, which use the methodology for reverse engineering that recovers the design artifacts of a software system from its source code and related documentation. The methodology consists of five phases, which can be attempted at different levels of abstraction according to the task at hand to recover the design artifacts. The methodology also makes use of tools, approaches and representations typically found in the forward software development process.
2000
Extremely large software systems which have been developed and maintained by many di erent people are termed legacy systems. These legacy systems were traditionally developed using methods such as structured analysis and design, or even individual programming techniques and styles. Over time, maintenance has changed the original program structure and speci cations. However, usually the speci cations have not been maintained, and the current design and program understanding is lost. Maintenance of these systems becomes so costly, that they become candidate for reengineering. Reverse engineering of legacy systems aims at discovering design and speci cation of existing software programs. The recovered designs are then forward engineered to improved systems. This di cult task can be assisted by CASE tools, but still requires human expertise and domain knowledge. With a technology shift from structured to object-oriented software construction, an additional problem arises i.e. transforming the structured legacy system to an object-oriented system. We outline the current state of CASE tools, followed by research directions. Further, we indicate that a two staged approach may be advantageous, where self-contained subsystems can be abstracted for design recovery and object discovery.
Abstract Reverse engineering is a crucial task to support software comprehension and maintenance, especially when software systems lack of up-to-date and adequate documentation. This paper overviews key achievements in different areas of reverse engineering, discusses the role of reverse engineering in today's' software development practice, and outlines new challenges deriving from new and emerging software development scenarios.
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.
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 is focused on the challenging task of understanding legacy program code without having suitable documentation. Reverse Engineering means a Process to Design the principle of applications which analysis its structure, function and their operations. This paper tries to describe what is Reverse Engineering, is it necessary, different types of R.E., its uses and applications.
Proceedings of the conference on The future of Software engineering - ICSE '00, 2000
By the early 1990s the need for reengineering legacy systems was already acute, but recently the demand has increased sig- nificantly with the shift toward web-based user interfaces. The demand by all business sectors to adapt their informa- tion systems to the Web has created a tremendous need for methods, tools, and infrastructures to evolve and exploit ex- isting applications
Progressions and Innovations in Model-Driven Software Engineering
Modernization of legacy systems is a new research area in the software industry that is intended to provide support for transforming an existing software system to a new one that satisfies new demands. Software modernization requires technical frameworks for information integration and tool interoperability that allow managing new platform technologies, design techniques, and processes. The new OMG (Object Management Group) initiative for modernization aligned with this requirement is Architecture-Driven Modernization (ADM). Reverse engineering techniques play a crucial role in system modernization. In this chapter, the authors describe the state-of-the-art in the model-driven modernization area, reverse engineering in particular, and discuss about existing tools and future trends. In addition, they describe a framework to reverse engineering models from object-oriented code that distinguishes three different abstraction levels linked to models, metamodels, and formal specifications...
Empirical Software Engineering, 2007
Starting with the aim of modernizing legacy systems, often written in old programming languages, reverse engineering has extended its applicability to virtually every kind of software system. Moreover, the methods originally designed to recover a diagrammatic, high-level view of the target system have been extended to address several other problems faced by programmers when they need to understand and modify existing software. The authors' position is that the next stage of development for this discipline will necessarily be based on empirical evaluation of methods. In fact, this evaluation is required to gain knowledge about the actual effects of applying a given approach, as well as to convince the end users of the positive cost-benefit trade offs. The contribution of this paper to the state of the art is a roadmap for the future research in the field, which includes: clarifying the scope of investigation, defining a reference taxonomy, and adopting a common framework for the execution of the experiments.
Journal of Object Technology, 2009
Due to the constant change in technology, lack of standardization, difficulties of changes and absence of distributed architecture, the business value of legacy systems have become weaker. We cannot undermine the importance of legacy systems because some of their functions are too valuable to be discarded and too expensive to reproduce. The software industry and researchers have recently paid more
International Journal of Software Engineering and Its Applications, 2017
As the stages of software development reveal, the method of analysis comprises of all the stages starting from specifications to the final product release. Although prevalent, this method has resulted in neglecting the final stages of development such as maintenance and evolution. One other approach to software development known as reverse engineering, is the synthesis process of software development and integration. Initially, it was introduced and used just for the modernization of old legacy systems. With time, the usage of software reverse engineering has become more extensive. It can be used with virtually every kind of software system that exists, making it one of the most powerful tools of development. Understanding the already existing system to improve the capabilities and performance is the in-thing today.
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 and Evolution: Research and Practice, 2000
Instability is the nature of any application. An Application may strive for and helps a business or company for some time (may be 10 or 15 years), during that time it has been corrected, adapted and enhanced many times. But every time a change is made into the application, unexpected and serious side effects occur. Yet the application must continue to evolve. Unmaintainable software is not a new problem. In the following sections, we are going to analyze the Software Re-engineering and Reverse-engineering processes and how they help any application to maintain the Quality standards.
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.
International Research Journal of Modernization in Engineering Technology and Science, 2024
This paper aims to provide a comprehensive overview of reverse engineering, discussing its various techniques, applications, challenges, and opportunities. By exploring these aspects, we can better appreciate the role of reverse engineering in advancing technology and solving complex problems. The primary objective of this paper is to elucidate the process and importance of reverse engineering across different domains. We aim to highlight the techniques used in reverse engineering, its applications in various industries, the challenges faced during the process, and the opportunities it presents for future advancements. Reverse engineering has a wide range of applications. In software development and maintenance, it aids in maintaining legacy systems and ensuring interoperability with modern technologies. It also drives product development and innovation by allowing companies to analyze competitors' products and enhance their own. Additionally, reverse engineering is used in legal and forensic contexts to resolve intellectual property disputes and conduct digital forensics. The process of reverse engineering faces several challenges, including technical, legal, and resource limitations. Technical challenges involve complex obfuscation techniques and evolving technologies that complicate the analysis. Legal and ethical challenges include navigating intellectual property laws and maintaining ethical integrity. Resource and expertise limitations involve the need for specialized tools, skilled personnel, and the significant time and cost involved in the process. Despite the challenges, reverse engineering presents numerous opportunities. Advancements in AI and machine learning have enhanced reverse engineering tools, making them more efficient and accurate.
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.
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
2008
Abstract Software reverse engineering is a crucial task to reconstruct high-level views of a software system-with the purpose of understanding and/or maintaining it-when the only reliable source of information is the source code, or even the system binaries. This paper discusses key reverse engineering concepts through a UML conceptual model. Specifically, the model is composed of a set of UML class diagrams describing relationships existing among reverse engineering processes, tools, artifacts, and stakeholders.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.