Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where João Saraiva is active.

Publication


Featured researches published by João Saraiva.


International School on Advanced Functional Programming | 1998

Designing and Implementing Combinator Languages

S. Doaitse Swierstra; Pablo R. Azero Alcocer; João Saraiva

Ever since the Computer Science community has discovered the concept of a programming language there has been a continuous quest for the ideal, all-encompassing programming language; despite this we have been overwhelmed by an everlasting flow of all kinds of special purpose programming languages. Attempts to bridge this gap between a single language and infinitely many caused research into so-called extensible programming languages.


partial evaluation and semantic-based program manipulation | 2009

From spreadsheets to relational databases and back

Jácome Miguel Costa Cunha; João Saraiva; Joost Visser

This paper presents techniques and tools to transform spreadsheets into relational databases and back. A set of data refinement rules is introduced to map a tabular datatype into a relational database schema. Having expressed the transformation of the two data models as data refinements, we obtain for free the functions that migrate the data. We use well-known relational database techniques to optimize and query the data. Because data refinements define bi-directional transformations we can map such database back to an optimized spreadsheet. We have implemented the data refinement rules and we constructed Haskell-based tools to manipulate, optimize and refactor Excel-like spreadsheets.


international conference on computational science and its applications | 2012

Towards a catalog of spreadsheet smells

Jácome Miguel Costa Cunha; João Paulo Fernandes; Hugo Ribeiro; João Saraiva

Spreadsheets are considered to be the most widely used programming language in the world, and reports have shown that 90% of real-world spreadsheets contain errors. In this work, we try to identify spreadsheet smells, a concept adapted from software, which consists of a surface indication that usually corresponds to a deeper problem. Our smells have been integrated in a tool, and were computed for a large spreadsheet repository. Finally, the analysis of the results we obtained led to the refinement of our initial catalog.


symposium on visual languages and human-centric computing | 2010

Automatically Inferring ClassSheet Models from Spreadsheets

Jácome Miguel Costa Cunha; Martin Erwig; João Saraiva

Many errors in spreadsheet formulas can be avoided if spreadsheets are built automatically from higher-level models that can encode and enforce consistency constraints. However, designing such models is time consuming and requires expertise beyond the knowledge to work with spreadsheets. Legacy spreadsheets pose a particular challenge to the approach of controlling spreadsheet evolution through higher-level models, because the need for a model might be overshadowed by two problems: (A) The benefit of creating a spreadsheet is lacking since the legacy spreadsheet already exists, and (B) existing data must be transferred into the new model-generated spreadsheet. To address these problems and to support the model-driven spreadsheet engineering approach, we have developed a tool that can automatically infer ClassSheet models from spreadsheets. To this end, we have adapted a method to infer entity/relationship models from relational database to the spreadsheets/ClassSheets realm. We have implemented our techniques in the HaExcel framework and integrated it with the ViTSL/Gencel spreadsheet generator, which allows the automatic generation of refactored spreadsheets from the inferred ClassSheet model. The resulting spreadsheet guides further changes and provably safeguards the spreadsheet against a large class of formula errors. The developed tool is a significant contribution to spreadsheet (reverse) engineering, because it fills an important gap and allows a promising design method (ClassSheets) to be applied to a huge collection of legacy spreadsheets with minimal effort.


international conference on software engineering | 2012

MDSheet: a framework for model-driven spreadsheet engineering

Jácome Miguel Costa Cunha; João Paulo Fernandes; Jorge Mendes; João Saraiva

In this paper, we present MDSheet, a framework for the embedding, evolution and inference of spreadsheet models. This framework offers a model-driven software development mechanism for spreadsheet users.


engineering interactive computing system | 2010

The GUISurfer tool: towards a language independent approach to reverse engineering GUI code

João Carlos Silva; Carlos Eduardo Silva; Rui D. Gonçalo; João Saraiva; José Creissac Campos

Graphical user interfaces (GUIs) are critical components of todays software. Developers are dedicating a larger portion of code to implementing them. Given their increased importance, correctness of GUIs code is becoming essential. This paper describes the latest results in the development of GUISurfer, a tool to reverse engineer the GUI layer of interactive computing systems. The ultimate goal of the tool is to enable analysis of interactive system from source code.


international conference on model transformation | 2012

Bidirectional transformation of model-driven spreadsheets

Jácome Miguel Costa Cunha; João Paulo Fernandes; Jorge Mendes; Hugo Pacheco; João Saraiva

Spreadsheets play an important role in software organizations. Indeed, in large software organizations, spreadsheets are not only used to define sheets containing data and formulas, but also to collect information from different systems, to adapt data coming from one system to the format required by another, to perform operations to enrich or simplify data, etc. In fact, over time many spreadsheets turn out to be used for storing and processing increasing amounts of data and supporting increasing numbers of users. Unfortunately, spreadsheet systems provide poor support for modularity, abstraction, and transformation, thus, making the maintenance, update and evolution of spreadsheets a very complex and error-prone task. We present techniques for model-driven spreadsheet engineering where we employ bidirectional transformations to maintain spreadsheet models and instances synchronized. In our setting, the business logic of spreadsheets is defined by ClassSheet models to which the spreadsheet data conforms, and spreadsheet users may evolve both the model and the data instances. Our techniques are implemented as part of the MDSheet framework: an extension for a traditional spreadsheet system.


model driven engineering languages and systems | 2008

The Objects and Arrows of Computational Design

Don S. Batory; Maider Azanza; João Saraiva

ComputationalDesign(CD) is a paradigm where both program design and program synthesis are computations. CD merges Model Driven Engineering (MDE)which synthesizes programs by transforming models, with Software Product Lines (SPL)where programs are synthesized by composing transforma tions called features. In this paper, basic relationships between MDE and SPL are explored using the language of modern mathematics. Note: Although jointly authored, this paper is written as presented by Batory in his MODELS 2008 keynote.


compiler construction | 2000

Functional Incremental Attribute Evaluation

João Saraiva; S. Doaitse Swierstra; Matthijs F. Kuiper

This paper presents a news trict, purely functional implementation of attribute grammars. Incremental evaluation is obtained via standard function memoization. Our new implementation of attribute grammars increases the incremental behaviour of the evaluators by both reducing the memoization overhead and increasing their potential incrementallity. We present also an attribute grammar transformation, which increases the incremental performance of the attribute evaluators after a change that propagates its effects to all parts of the syntax tree. These techniques have been implemented in a purely functional attribute grammar system and the first experimental results are presented.


symposium on visual languages and human-centric computing | 2011

Embedding and evolution of spreadsheet models in spreadsheet systems

Jácome Miguel Costa Cunha; Jorge Mendes; João Saraiva; João Paulo Fernandes

This paper describes the embedding of ClassSheet models in spreadsheet systems. ClassSheet models are well-known and describe the business logic of spreadsheet data. We embed this domain specific model representation on the (general purpose) spreadsheet system. By defining such an embedding, we provide end users a model-driven engineering spreadsheet developing environment. End users can interact with both the model and the spreadsheet data in the same environment. Moreover, we use advanced techniques to evolve spreadsheets and models and to have them synchronized. In this paper we present our work on extending a widely used spreadsheet system with such a model-driven spreadsheet engineering environment.

Collaboration


Dive into the João Saraiva's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Joost Visser

Radboud University Nijmegen

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge