12936831
On designing an experiment to evaluate a reverse engineering tool
The Rigi reverse engineering system is designed to analyze and summarize the structure of large software systems. Two contrasting approaches are available for visualizing software structures in the Rigi graph editor. The first approach displays the structures through multiple, individual windows. The second approach, simple hierarchical multi-perspective (SHriMP) views, employs fisheye views of nested graphs. The paper describes the design of an experiment to evaluate these alternative user interfaces. Various results from a preliminary pilot study to test the experiment design are reported.
15226793
Code migration through transformations: an experience report
One approach to dealing with spiraling maintenance costs, manpower shortages and frequent breakdowns for legacy code is to "migrate" the code into a new platform and/or programming language. The objective of this paper is to explore the feasibility of semi-automating such a migration process in the presence of performance and other constraints for the migrant code. In particular, the paper reports on an experiment involving a medium-size software system written in PL/IX. Several modules of the system were migrated to C++, first by hand and then through a semiautomatic tool. After discovering that the migrant code was performing up to 50% slower than the original, a second migration effort was conducted which improved the performance of the migrant code substantially. The paper reports on the transformation techniques used by the transformation process and the effectiveness of the prototype tools that were developed. In addition, the paper presents preliminary results on the evaluation of the experiment.
62300434
How do program understanding tools affect how programmers understand programs?
Abstract In this paper, we explore the question of whether program understanding tools enhance or change the way that programmers understand programs. The strategies that programmers use to comprehend programs vary widely. Program understanding tools should enhance or ease the programmer's preferred strategies, rather than impose a fixed strategy that may not always be suitable. We present observations from a user study that compares three tools for browsing program source code and exploring software structures. In this study, 30 participants used these tools to solve several high-level program understanding tasks. These tasks required a broad range of comprehension strategies. We describe how these tools supported or hindered the diverse comprehension strategies used.
11319559
On inserting program understanding technology into the software change process
Program understanding technologies can be applied effectively in the analysis phase of a software change process. The analysis phase naturally follows a goal driven metaprocess. Described are issues involved with inserting program understanding technology into existing practice and into such a metaprocess. The implied processes of program understanding and reverse engineering tools play an important role. These issues pose major problems for the acceptance of redocumentation tools such as Rigi, an evolvable reverse engineering tool. An example using Rigi and its analysis methodology for change impact analysis is considered.
1805653
Domain-retargetable reverse engineering
A user programmable approach to reverse engineering is described. The approach uses a scripting language that enables users to write their own routines for these activities, making the system domain-retargetable. The environment supported by this programmable approach subsumes existing reverse engineering systems by being able to simulate facets of each one and provides a smooth transition from semi-automatic to automatic reverse engineering.<<ETX>>
991816
Wrapping coarse-grained objects using standard infrastructure technology
There are two basic approaches to migrating a particular subsystem: reengineering and wrapping. The author considers coarse-grained object wrapping. In wrapping, the original subsystem is essentially integrated into the new setting using infrastructure technologies. Legacy systems that have evolved over many years are notoriously difficult to decompose. Wrapping is most effective if the legacy system can be decomposed into a few large chunks where the number of communication paths among subsystems is minimized. The author discusses the use of infrastructure technology such as CORBA (Common Object Request Broker Architecture)
12048594
Camera Calibration from Symmetry
This paper addresses the problem of calibrating a pinhole camera from images of a surface of revolution. Camera calibration is the process of determining the intrinsic or internal parameters (i.e. aspect ratio, focal length and principal point) of a camera, and is important for both motion estimation and metric reconstruction of 3D models. In this paper, a novel and simple calibration technique has been introduced which is based on the symmetry of images of surfaces of revolution. Traditional techniques for camera calibration involve taking images of some precisely machined calibration pattern (such as a calibration grid). The use of surfaces of revolution, which are commonly found in daily life (e.g. bowls and vases), makes the process easier as a result of the reduced cost and increased accessibility of the calibration objects. In this paper, it is shown that 2 images of surface of revolution will provide enough information for determining the aspect ratio, focal length and principal point of a camera. An analytical error model is developed, providing variances and confidence intervals of the parameters estimated. The techniques presented in this paper have been implemented and tested with both synthetic and real data. Experiment results show that the camera calibration method presented here is both practical and accurate.
30764934
Ad Hoc Routing Protocol Performance Comparisons for Vehicular Ad Hoc Networks
31921180
Fast elliptic scalar multiplication using new double-base chain and point halving
The fast implementation of elliptic curve cryptosystems relies on the efficient computation of scalar multiplication. Based on the double-base chain representation of scalar using powers of 2 and 3, we propose a new representation with powers of 1/2 and 3 instead. Thus the efficient point halving operation can be incorporated in the new double-base chain to achieve fast scalar multiplication. Experimental results show that our approach leads to a lower complexity which contributes to the efficient implementation of elliptic curve cryptosystems.
38414976
An industrial experience in reverse engineering
This paper describes a reverse engineering case studywith an industrial-scale software system. The steps followedin the study involved: establishing a more comprehensivedomain model for representing structural factsabout C/C++ software; adapting a robust C/C++ parserthat focuses on source code before the preprocessing stage;decomposing or clustering the extracted artifacts in variousways for different understanding needs; generating reportsto highlight anomalies in the system; and clarifyingknowledge about its conceptual architecture. Also summarizedare lessons learned from this experience.
20123288
Report from the 3rd International Symposium on Software Engineering Course Projects (SWECP 2006)
This paper reports on the activities and results from the 3rd International Symposium on Software Engineering Course Projects (SWECP 2006), which was held on October 19, 2006 in Toronto, Canada as part of the IBM CASCON 2006 conference. The symposium explored how educators, students, and industry can work together to develop a more rewarding educational experience for all stakeholders involved in the context of senior design classes and team-based course projects. Several key topics were discussed at the symposium, including team dynamics, the choice of software development process, and the role of advanced software engineering tools in design project courses. SWECP 2006 was a sequel to the workshops that were held in 2002 and 2005.