1,721,005 research outputs found
Object-Oriented Design Patterns Recovery
Object-Oriented design patterns are an emergent technology: they are reusable micro-architectures, high level building blocks. A system which has been designed using well-known, documented and accepted design patterns is also likely to exhibit good properties such as modularity, separation of concerns and maintainability. While for forward engineering the benefits of using design patterns are clear, using reverse engineering technologies to discover instances of patterns in a software artifact (e.g., design or code) may help in several key areas, among which program understanding, design to code traceability and quality assessment. This paper describes a conservative approach and experimental results, based on a multi-stage reduction stragegy using OO software metrics and structural properties to extract structural design patterns from OO design or C++ code. To assess the effectiveness of the pattern recovery process a portable environment written in Java, remotely accessible by means of any WEB browser, has been developed. The developed system and experimental results on 8 industrial sofware (design and code) and 300.000 line of public domain C++ code are presented
Using Metrics to identify Design Patterns in Object-Oriented Software
Object-Oriented design patterns are an emergent technology. They are reusable micro-architectures, high level building blocks. This paper presents a conservative approach, based on a multi-stage reduction strategy using OO software metrics and structural properties to extract structural design patterns from OO design or code. Code and design are mapped into an intermediate representation, called Abstract Object Language, to maintain independence from the programming language and the adopted CASE tools. To assess the effectiveness of the pattern recovery process a portable environment written in Java, remotely accessible by means of any WEB browser, has been developed. Based on this environment, experimental results obtained on public domain and industrial software are discussed in this paper
Design Pattern Recovery in Object-Oriented Software
An approach to recover object oriented design patterns from C++ code is presented. The pattern recovery process is based on a multi-stage filtering strategy to avoid combinatorial explosion on large software systems. To maintain independence from the language and the case tools adopted in developing software, both design and code are mapped into an intermediate representation. The multi-stage searching strategy allows to safely determine patters candidates. To assess the effectiveness of the pattern recovery process a portable environment written in Java has been developed. Based on this environment, experimental results on public domain and industrial software were obtained and are discussed in the paper. Evidence is shown that, by exploiting information about method calls as a further constraint beyond the structural ones, the number of false alarm is reduced
Migrating a Basic Character Oriented Application Interface to a Visual C++ Graphical User Interface under Windows
In this paper, an approach to reengineer BASIC PC legacy code into modern graphical systems is proposed. BASIC has historically been one of the first languages available on PCs. Based on it, small or medium size companies have developed throughout the time systems that represent valuable company assets to be preserved.
Our goal is the automatic migration from the BASIC character oriented user interface to a graphical environment which includes a GUI builder, and compiles event driven C/C++ code. For this purpose a conceptual representation in terms of abstract graphical objects and callbacks has been inferred from the original code, and a translator from BASIC to C has been developed. Moreover the GUI builder internal representation has been generated, so that the user interface can be interactively fine-tuned by the programmer.
We will present and discuss our approach to user interface migration, with some preliminary experimental results. For the explanation of our approach, an example will be used throughout the tex
Language Translation from Basic to C
In this paper, an approach to reengineer BASIC PC legacy code into modern graphical systems and languages is proposed. BASIC has historically been one of the first language available on PCs. Based on it, small or medium size companies have developed throughout the time systems that represent valuable company assets to be preserved.
Our goal is the automatic migration from the BASIC character oriented user interface to a graphical environment which includes a GUI builder, and compiles event driven C/C++ code.
We will present and discuss BASIC peculiarities, with preliminary results on code translatio
CANTO, un ambiente per l'analisi del codice e dell'architettura di sistemi di software
CANTO, acronimo per Code and Architecture aNalysis TOol, è un ambiente per l'analisi statica di sistemi software. Opera sia a livello dell'architettura del sistema sotto esame, sia a livello del codice che implementa il sistema, ed i due livelli sono strettamente integrati tra di loro. I risultati delle analisi sono presentati all'utente soto forma di grafi o tramite un editor personalizzato che cambia il coloro di fondo in corrispondenza delle linee di codice che risultano da una particolare analisi per evidenziare l'insieme delle istruzioni interessate.
L'ambiente si presta ad essere utilizzato dagli sviluppatori e dai manutentori di sistemi software allo scopo di capirne l'organizzazione architetturale, e di valutare le dipendenze tra le istruzioni responsabili dela computazione. E' possibile analizzare un sistema, modificarlo e ricalcolare le analisi sul sistem modificato in ciclo chiuso, così che il programmatore è costantemente assistito dall'ambiente durante lo sviluppo e la modifica del sistema. L'ambiente, sviluppato per analizzare programmi C, è in corso di estensione al fine di gestire anche altri linguaggi, sia mperativi che orientati agli oggett
Reengineering 4.7 million lines of code
The ITC-Irst Reverse Engineering group was charged with analyzing a software application of approximately 4.7 million lines of C code. It was an old legacy system, maintained for a long time, on which several successive adaptive and corrective maintenance interventions produced a degradation of the original structure. The company decided to reengineer the software instead of replacing it because the complexity and costs of re-implementing the application from scratch could not be afforded. Several problems were encountered during reengineering, including identifying dependencies and detecting redundant functions that have no further use.
In order to accomplish these goals, we had to adopt a conservative approach. Before performing any kind of analysis on the whole code, we carefully evaluated the expected benefits. This phase was supported by a preliminary asset of the impact of the analysis, usually performed on a selected set of code modules. When the obtained results were interesting, we carefully balanced the expected benefits of the analysis and the amount of the resources needed to perform it.
This paper summarizes that experience, pointing out how we approached to the problem, the way we managed the limited resources available in order to complete the task within the assigned deadlines, and the lessons we learne
- …
