Papers by Alejandra Garrido
There are alternative approaches to link creation in hypermedia applications. The first distincti... more There are alternative approaches to link creation in hypermedia applications. The first distinction differs in the direct or indirect involvement of a human author in the process. The second distinction among computed links refers to when the computation is done, i.e. whether links are dynamically computed or precomputed. The aim is to investigate the relative merits of these different approaches. The approaches are exemplified with three projects familiar to the authors. While most of the paper is concerned with raising the issues involved, it also outlines two methodologies to help hypermedia designers choose the best approach or combination of them to include in their developments, depending on the type of application, data characteristics and user and operational requirements.

The C preprocessor is heavily used in C programs because it provides useful and even necessary ad... more The C preprocessor is heavily used in C programs because it provides useful and even necessary additions to the C language. Since preprocessor directives are not part of C, they are removed before parsing and program analysis take place, during the phase called preprocessing. In the context of refactoring, it is inappropriate to remove preprocessor directives: if changes are applied on the preprocessed version of a program, it may not be possible to recover the un-preprocessed version. This means that after refactoring, all the source code would be contained in a single unit, targeted to a single configuration and without preprocessor macros. This thesis describes a novel approach to preserve preprocessor directives during parsing and program analysis, and integrate them in the program representations. Furthermore, it illustrates how the program representations are used during refactoring and how transformations preserve preprocessor directives. Additionally, the semantics of the C ...
Integrating Preprocessor Conditionals in Refactoring
OO-Navigator: un framework para hipermedia
Refactoring: secuencia de aplicación
Warden: A Pattern for Object Distribution
Handling preprocessor macros in refactoring

Refactoring has become a popular technique for the development and maintenance of object-oriented... more Refactoring has become a popular technique for the development and maintenance of object-oriented systems. We have been working on the refactoring of C programs, including the C preprocessor (Cpp), and we have built CRefactory, a refactoring tool for C programs. The independence of Cpp from the underlying programming language complicates the analysis and refactoring of programs that use Cpp. Nevertheless, that independence is helpful when implementing refactorings on Cpp directives. While refactorings are defined as "behavior preserving transformations", there is usually no formal proof of their correctness. By using rewriting logic and its Maude implementation, we have formally specified the semantics of Cpp and also of some refactorings on Cpp directives. The specifications are then used to formally prove refactoring correctness. This paper describes the formal specifications of Cpp and of three of its refactorings, and presents the proofs of their correctness.
Analyzing multiple configurations of a C program
Preprocessor conditionals are heavily used in C pro- grams since they allow the source code to be... more Preprocessor conditionals are heavily used in C pro- grams since they allow the source code to be configured for different platforms or capabilities. However, preproces- sor conditionals, as well as other preprocessor directives, are not part of the C language. They need to be evaluated and removed, and so a single configuration selected, before parsing can take place. Most analysis

Embracing the C preprocessor during refactoring
Journal of Software: Evolution and Process, 2013
ABSTRACT C preprocessor directives are heavily used in C programs because they provide useful and... more ABSTRACT C preprocessor directives are heavily used in C programs because they provide useful and even necessary additions to the C language. However, they are usually executed and discarded before any analysis is applied on C programs. In refactoring, preprocessor directives must be preserved through the whole process of parsing, analysis and transformation to retain editable yet correct source code. We propose a new preprocessing approach and special program representations that allow a program to be analyzed and transformed without losing its preprocessor directives, but treating them as first-class program entities. These representations are essential for a correct refactoring tool. We also describe the challenges that preprocessor directives bring to refactoring and how the program representations that we propose solve those challenges. Finally, we give details of two refactorings and present some case studies with our successfully applied solution.
Proceedings of the international workshop on Principles of software evolution - IWPSE '02, 2002
Refactoriug has become a well-known technique for transforming code in a way that preserves behav... more Refactoriug has become a well-known technique for transforming code in a way that preserves behavior. Refactorings may be applied manually, although manual code manipulation is error prone and cumbersome, so maintainers need tools to make automatic refactorings. There is currently extensive Literature on refactoring object-oriented programs and sorae very good tools for refactoring Sinai[talk and Java code. Although there is more code written in C or C++ than in any other language, refactoring tools for C with full support for preprocessor directives have not yet appeared.
The C preprocessor is heavily used in C programs because it provides useful and even necessary ad... more The C preprocessor is heavily used in C programs because it provides useful and even necessary additions to the C language. Since preprocessor directives are not part of C, they are removed before parsing and program analysis take place, during the phase called preprocessing. In the context of refactoring, it is inappropriate to remove preprocessor directives: if changes are applied on the preprocessed version of a program, it may not be possible to recover the un-preprocessed version. This means that after refactoring, all the source code would be contained in a single unit, targeted to a single configuration and without preprocessor macros.
Automated Software Engineering, …, 2003
Refactoring, an important technique for increasing flexibility of the source code, can be applied... more Refactoring, an important technique for increasing flexibility of the source code, can be applied with much ease and efficiency by using automated tools. There is currently a lack of refactoring tools for C with full support for preprocessor directives because directives ...
Bodyguard
Design patterns in communications software, 2001
... Bodyguard. Authors: Fernando Das Neves, Virginia Tech. Alejandra Garrido, Published in: · Boo... more ... Bodyguard. Authors: Fernando Das Neves, Virginia Tech. Alejandra Garrido, Published in: · Book. Design patterns in communications software. Cambridge University Press New York, NY, USA ©2001 table of contents ISBN:0-521-79040-9. 2001 Article. Bibliometrics. ...
A Catalog and Two Possible Classifications of Fortran Refactorings
Abstract: This paper presents a catalog of code refactorings that are intended to improve the dif... more Abstract: This paper presents a catalog of code refactorings that are intended to improve the different quality attributes of Fortran programs. We classify the refactorings according to their purpose, that is, the internal or external quality attribute (s) that each refactoring targets to ...
Framework for extending object-oriented applications with hypermedia functionality (abstract)
Acm Sigweb Newsletter, Jun 1, 1996
Uploads
Papers by Alejandra Garrido