Cookies Policy
The website need some cookies and similar means to function. If you permit us, we will use those means to collect data on your visits for aggregated statistics to improve our service. Find out More
Accept Reject
  • Menu
Publications

Publications by Nuno Feixa Rodrigues

2010

Identifying Clones in Functional Programs for Refactoring

Authors
Rodrigues, N; Vilaca, JL;

Publication
ENTERPRISE INFORMATION SYSTEMS PT I

Abstract
Clone detection is well established for imperative programs. It works mostly on the statement level and therefore is ill-suited for functional programs, whose main constituents are expressions and types. In this paper we introduce clone detection for functional programs using a new intermediate program representation, dubbed Functional Control Tree. We extend clone detection to the identification of non-trivial functional program clones based on the recursion patterns from the so-called Bird-Meertens formalism.

2012

Type checking cryptography implementations

Authors
Barbosa, M; Moss, A; Page, D; Rodrigues, NF; Silva, PF;

Publication
Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

Abstract
Cryptographic software development is a challenging field: high performance must be achieved, while ensuring correctness and compliance with low-level security policies. CAO is a domain specific language designed to assist development of cryptographic software. An important feature of this language is the design of a novel type system introducing native types such as predefined sized vectors, matrices and bit strings, residue classes modulo an integer, finite fields and finite field extensions, allowing for extensive static validation of source code. We present the formalisation, validation and implementation of this type system. © 2012 Springer-Verlag.

2008

On The Discovery of Business Processes Orchestration Patterns

Authors
Rodrigues, NF; Barbosa, LS;

Publication
IEEE CONGRESS ON SERVICES 2008, PT I, PROCEEDINGS

Abstract
COORDINSPECTOR is a Software Tool aiming at extracting the coordination layer of a software system. Such a reverse engineering process provides a clear view of the actually invoked services as well as the logic behind such invocations. The analysis process is based on program slicing techniques and the generation of, System Dependence Graphs and Coordination Dependence Graphs. The tool analyzes Common Intermediate Language (CIL), the native language of the Microsoft Net Framework, thus making suitable for processing systems developed in any Net Framework compilable language. COORDINSPECTOR generates graphical representations of the coordination layer together with business process orchestrations specified in WS-BPEL 2.0.

2008

COORDINSPECTOR: a tool for extracting coordination data from legacy code

Authors
Rodrigues, NF; Barbosa, LS;

Publication
EIGHTH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS

Abstract
More and more current software systems rely on non trivial coordination logic for combining autonomous services typically running on different platforms and often owned by different organizations. Often, however, coordination data is deeply entangled in the code and, therefore, difficult to isolate and analyse separately. COORDINSPECTOR is a software tool which combines slicing and program analysis techniques to isolate all coordination elements from the source code of an existing application. Such a reverse engineering process provides a clear view of the actually invoked services as well as of the orchestration patterns which bind them together. The tool analyses Common Intermediate Language (CIL) code, the native language of Microsoft Net Framework. Therefore, the scope of application Of COORDINSPECTOR is quite large: potentially any piece of code developed in any of the programming languages which compiles to the Net Framework. The tool generates graphical representations of the coordination layer together and identifies the underlying business process orchestrations, rendering them as Ore specifications.

2010

Slicing for architectural analysis

Authors
Rodrigues, NF; Barbosa, LS;

Publication
SCIENCE OF COMPUTER PROGRAMMING

Abstract
Current software development often relies on non-trivial coordination logic for combining autonomous services, eventually running on different platforms. As a rule, however, such a coordination layer is strongly woven within the application at source code level. Therefore, its precise identification becomes a major methodological (and technical) problem and a challenge to any program understanding or refactoring process. The approach introduced in this paper resorts to slicing techniques to extract coordination data from source code. Such data are captured in a specific dependency graph structure from which a coordination model can be recovered either in the form of an ORC specification or as a collection of code fragments corresponding to the identification of typical coordination patterns in the system. Tool support is also discussed.

2006

Component Identification Through Program Slicing

Authors
Rodrigues, NF; Barbosa, LS;

Publication
Electronic Notes in Theoretical Computer Science

Abstract
This paper reports on the development of specific slicing techniques for functional programs and their use for the identification of possible coherent components from monolithic code. An associated tool is also introduced. This piece of research is part of a broader project on program understanding and re-engineering of legacy code supported by formal methods.

  • 10
  • 15