Results 1 - 10
of
22
Understanding Software Systems Using Reverse Engineering Technology -- Perspectives from the Rigi Project
, 1993
"... Software engineering research has focused mainly on software construction and has neglected software maintenance and evolution. Proposed is a shift in research from synthesis to analysis. Reverse engineering is introduced as a possible solution to program understanding and software analysis. Present ..."
Abstract
-
Cited by 67 (4 self)
- Add to MetaCart
Software engineering research has focused mainly on software construction and has neglected software maintenance and evolution. Proposed is a shift in research from synthesis to analysis. Reverse engineering is introduced as a possible solution to program understanding and software analysis. Presented is reverse engineering technology developed as part of the Rigi project. The Rigi approach involves the identification of software artifacts in the subject system and the aggregation of these artifacts to form more abstract architectural models. Reported are some analyses on the source code of SQL/DS, performed by the authors while visiting the Program Understanding project at the IBM Centre for Advanced Studies in Toronto.
Managing Interprocedural Optimization
, 1991
"... This dissertation addresses a number of important issues related to interprocedural optimization. Interprocedural optimization is an integral component in a compilation system for high-performance computing. The importance of interprocedural optimization stems from two sources: it increases the cont ..."
Abstract
-
Cited by 60 (9 self)
- Add to MetaCart
This dissertation addresses a number of important issues related to interprocedural optimization. Interprocedural optimization is an integral component in a compilation system for high-performance computing. The importance of interprocedural optimization stems from two sources: it increases the context available to the optimizing compiler, and it enables programmers to use procedure calls without the concern of hurting execution time. While important, interprocedural optimization can introduce some significant compile-time costs. When interprocedural information is used to optimize a procedure, the procedure is then dependent on those interprocedural facts. Thus, even if the procedure is not edited, it may require recompilation due to changes in the interprocedural facts. In addition to these effects on recompilation, interprocedural information can also be expensive to compute. Furthermore, interprocedural optimizations can increase program size which can in turn increase compile tim...
A Categorization of Classes based on the Visualization of their Internal Structure: the Class Blueprint
- In Proceedings of OOPSLA 2001
"... The reengineering and reverse engineering of software systems is gaining importance in software industry, because the accelerated turnover in software companies creates legacy systems in a shorter period of time. Especially understanding classes is a key activity in object-oriented programming, sinc ..."
Abstract
-
Cited by 54 (16 self)
- Add to MetaCart
The reengineering and reverse engineering of software systems is gaining importance in software industry, because the accelerated turnover in software companies creates legacy systems in a shorter period of time. Especially understanding classes is a key activity in object-oriented programming, since classes represent the primary abstractions from which applications are built. The main problem of this task is to quickly grasp the purpose of a class and its inner structure. To help the reverse engineers in their first contact with a foreign system, we propose a categorization of classes based on the visualization of their internal structure. The contributions of this paper are a novel categorization of classes and a visualization of the classes which we call the class blueprint. We have validated the categorization on several case studies, two of which we present here. Keywords Reverse Engineering, Program Understanding, Software Visualization, Visual Patterns, Smalltalk 1.
CodeCrawler - Lessons Learned in Building a Software Visualization Tool
- In Proceedings of CSMR 2003
, 2003
"... Software visualization tools face many challenges in terms of their implementation, including scalability, usability, adaptability, and durability. Such tools, like many other research tools, tend to have a short life cycle and are vulnerable to software evolution processes because of the complex pr ..."
Abstract
-
Cited by 32 (8 self)
- Add to MetaCart
Software visualization tools face many challenges in terms of their implementation, including scalability, usability, adaptability, and durability. Such tools, like many other research tools, tend to have a short life cycle and are vulnerable to software evolution processes because of the complex problem domain and the constantly changing requirements which are dictated by research goals. In this paper we discuss the implementation of the software visualization tool CodeCrawler according to five criteria, namely the overall architecture, the internal architecture, the visualization engine, the metamodel and the interactive facilities. This discussion generates implementation recommendations and design guidelines that hold for our tool and the class of tools its stands for. We then also extract common design guidelines and recommendations that apply for other software visualization and general reverse engineering tools as well, and hope that these insights can be used fruitfully by other researchers in this field.
A Hybrid Reverse Engineering Approach Combining Metrics and Program Visualization
- Proc. of the Working Conference on Reverse Engineering (WCRE'99), IEEE
, 1999
"... The reverse engineering of large scale object-oriented legacy systems is a challenging task with a definite need for approaches helping to have a fast overview and to focus on the problematic parts. This paper investigates a hybrid approach, combining the immediate appeal of visualizations with the ..."
Abstract
-
Cited by 23 (2 self)
- Add to MetaCart
The reverse engineering of large scale object-oriented legacy systems is a challenging task with a definite need for approaches helping to have a fast overview and to focus on the problematic parts. This paper investigates a hybrid approach, combining the immediate appeal of visualizations with the scalability of metrics. We validate our approach by showing how CodeCrawler, the experimental platform we built allowed us to reengineer some applications. Keywords: Reverse Engineering, Program Visualization, Software Metrics, CodeCrawler 1 Introduction "While the benefits of object-oriented technology are widely recognized, the indiscriminate use of object-oriented mechanisms and weaknesses in analysis and design methods are rapidly leading to a new generation of inflexible legacy systems." [4]. The ability to reverse engineer object-oriented legacy systems has become a vital matter in today's software industry. Early adopters of the object-oriented programming paradigm are now fa...
Investigating Reverse Engineering Technologies: The CAS Program Understanding Project
- IBM Systems Journal
, 1994
"... Corporations face mounting maintenance and re-engineering costs for large legacy systems. Evolving over several years, these systems embody substantial corporate knowledge, including requirements, design decisions, and business rules. Such knowledge is difficult to recover after many years of operat ..."
Abstract
-
Cited by 22 (1 self)
- Add to MetaCart
Corporations face mounting maintenance and re-engineering costs for large legacy systems. Evolving over several years, these systems embody substantial corporate knowledge, including requirements, design decisions, and business rules. Such knowledge is difficult to recover after many years of operation, evolution, and personnel change. To address this problem, software engineers are spending an ever-growing amount of effort on program understanding and reverse engineering technologies. This article describes the scope and results of an on-going research project on program understanding undertaken by the IBM Software Solutions Toronto Laboratory Centre for Advanced Studies (CAS). The project involves, in addition to a team from CAS, five research groups working cooperatively on complementary reverse engineering approaches. All groups are using the source code of SQL/DS (a multi-million line relational database system) as the reference legacy system. The article also discusses the approa...
Combining Metrics and Graphs for Object Oriented Reverse Engineering
, 1999
"... A software system may become very large during its evolution, getting less maintainable while its complexity rises. Since replacing the system with a new one is often out of question because of economic considerations, reengineering techniques are being developed to change the system into a form whi ..."
Abstract
-
Cited by 18 (13 self)
- Add to MetaCart
A software system may become very large during its evolution, getting less maintainable while its complexity rises. Since replacing the system with a new one is often out of question because of economic considerations, reengineering techniques are being developed to change the system into a form which makes it easier to maintain and to further develop. However, before a system can be reengineered, it has to be reverse engineered in order to understand its nature and inner logic. This work deals with a lightweight approach to software reverse engineering combining simple graphs with simple object oriented metrics. Our goal is to obtain a simple and scalable graphical display of a system and its parts through which we succeed to visually extract information, which is useful to the understanding of the system and the detection of its design problems. The primary goal of this work is to put up a repository of combinations of graphs and metrics which are useful to reverse engineer an obje...
Documenting Software Systems with Views
, 1992
"... Software professionals rely on internal documentation as an aid in understanding programs. Unfortunately, the documentation for most programs is usually out-of-date and cannot be trusted. Without it, the only reliable and objective information is the source code itself. Personnel must spend an inord ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
Software professionals rely on internal documentation as an aid in understanding programs. Unfortunately, the documentation for most programs is usually out-of-date and cannot be trusted. Without it, the only reliable and objective information is the source code itself. Personnel must spend an inordinate amount of time exploring the system by looking at low-level source code to gain an understanding of its functionality. One way of producing accurate documentation for an existing software system is through reverse engineering. This paper outlines a reverse engineering methodology for building subsystem structures out of software building blocks, and describes how documenting a software system with views created by this process can produce numerous bene#ts. It addresses primarily the needs of the software engineer and technical manager as document users. Key words: Software documentation, reverse engineering, software maintenance. 1 Introduction As today's software ages, the task of ...
Visualisations of Large Object-Oriented Systems
- In Software Visualization. WorldScientific
, 1995
"... The use of ternary diagrams to represent normalised call graph directions permit the succinct visualisations of object-oriented (OO) systems. Important features of such diagrams include (i) the ability to compare different object-oriented applications; and (ii) the potential ability to make value ju ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
The use of ternary diagrams to represent normalised call graph directions permit the succinct visualisations of object-oriented (OO) systems. Important features of such diagrams include (i) the ability to compare different object-oriented applications; and (ii) the potential ability to make value judgments about partially completed systems. Ternary diagrams also permit an overview of very large graphs. For example, we present here a visualisation of five OO applications comprising 1,643 vertices and 194,451 edges. 1 Introduction A call graph is a directed graph whose vertices represent basic data values and whose edges represent how those basic data values are passed to sub-routines. An anonymous call graph is a call graph where all the vertices have been changed to anonymous variables (e.g. class0023) and the source of the call graph is not recorded with the graph. Call graphs offer a uniform view for a variety of programming systems. For example, the dependency network within a prop...
Management Decision Support Through Reverse Engineering Technology
, 1992
"... Managers of large software systems face enormous challenges when it comes to making informed project-related decisions. They require a high-level understanding of the entire system and in-depth information on selected components. Unfortunately, many software systems are so complex and/or old that su ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Managers of large software systems face enormous challenges when it comes to making informed project-related decisions. They require a high-level understanding of the entire system and in-depth information on selected components. Unfortunately, many software systems are so complex and/or old that such information is not readily available. Reverse engineering---the process of extracting system abstractions and design information from existing software systems---can provide some of this missing information. This paper outlines how a software system can benefit from reverse engineering, and describes how management personnel can use the information provided by this process as an aid in making informed decisions related to large software projects.

