Publications

Export 61 results:
Sort by: Author Title [ Type  (Desc)] Year
Conference Paper
Towards Systematic Spreadsheet Construction Processes (Abstract/Poster), Mendes, Jorge, Cunha Jácome, Duarte Francisco, Engels Gregor, Saraiva João, and Sauer Stefan , Proceedings of the 39th International Conference on Software Engineering (ICSE 2017), Buenos Aires, Argentina, (2017) paper.pdfposter.pdf
Towards the Design and Implementation of Aspect-Oriented Programming for Spreadsheets, Maia, Pedro, Mendes Jorge, Cunha Jácome, Rebêlo Henrique, and Saraiva João , Proceedings of the 2nd Workshop on Software Engineering methods in Spreadsheets co-located with the 37th International Conference on Software Engineering (ICSE 2015), (2015) Abstractsems15.pdf

A spreadsheet usually starts as a simple and single- user software artifact, but, as frequent as in other software systems, quickly evolves into a complex system developed by many actors. Often, different users work on different aspects of the same spreadsheet: while a secretary may be only involved in adding plain data to the spreadsheet, an accountant may define new business rules, while an engineer may need to adapt the spreadsheet content so it can be used by other software systems. Unfortunately, spreadsheet systems do not offer modular mechanisms, and as a consequence, some of the previous tasks may be defined by adding intrusive “code” to the spreadsheet.

In this paper we go through the design and implementation of an aspect-oriented language for spreadsheets so that users can work on different aspects of a spreadsheet in a modular way. For example, aspects can be defined in order to introduce new business rules to an existing spreadsheet, or to manipulate the spreadsheet data to be ported to another system. Aspects are defined as aspect-oriented program specifications that are dynamically woven into the underlying spreadsheet by an aspect weaver. In this aspect-oriented style of spreadsheet development, different users develop, or reuse, aspects without adding intrusive code to the original spreadsheet. Such code is added/executed by the spreadsheet weaving mechanism proposed in this paper.

A Type-Level Approach to Component Prototyping, Barbosa, Luís, Cunha Jácome, and Visser Joost , International Workshop on Synthesis and Analysis of Component Connectors: in Conjunction with the 6th ESEC/FSE Joint Meeting, New York, NY, USA, p.23–36, (2007) Abstractsyanco07.pdf

Algebraic theories for modeling components and their interactions offer abstraction over the specifics of component states and interfaces. For example, such theories deal with forms of sequential composition of two components in a manner independent of the type of data stored in the states of the components, and independent of the number and types of methods offered by the interfaces of the combinators. General purpose programming languages do not offer this level of abstraction, which implies that a gap must be bridged when turning component models into implementations. In this paper, we present an approach to prototyping of component-based systems that employs so-called type-level programming (or compile-time computation) to bridge the gap between abstract component models and their type-safe implementation in a functional programming language. We demonstrate our approach using Barbosa's model of components as generalized Mealy machines. For this model, we develop a combinator library in Haskell, which uses type-level programming with two effects. Firstly, wiring between components is computed during compilation. Secondly, the well-formedness of the component compositions is guarded by Haskell's strong type system.

Type-Safe Evolution of Spreadsheets, Cunha, Jácome, Visser Joost, Alves Tiago, and Saraiva João , Proceedings of the 14th International Conference Fundamental Approaches to Software Engineering (FASE '11): Part of the Joint European Conferences on Theory and Practice of Software (ETAPS '11), Volume 6603, p.186–201, (2011) Abstractfase11.pdf

Spreadsheets are notoriously error-prone. To help avoid the introduction of errors when changing spreadsheets, models that capture the structure and interdependencies of spreadsheets at a conceptual level have been proposed. Thus, spreadsheet evolution can be made safe within the confines of a model. As in any other model/instance setting, evolution may not only require changes at the instance level but also at the model level. When model changes are required, the safety of instance evolution can not be guarded by the model alone. We have designed an appropriate representation of spreadsheet models, including the fundamental notions of formulæand references. For these models and their instances, we have designed coupled transformation rules that cover specific spreadsheet evolution steps, such as the insertion of columns in all occurrences of a repeated block of cells. Each model-level transformation rule is coupled with instance level migration rules from the source to the target model and vice versa. These coupled rules can be composed to create compound transformations at the model level inducing compound transformations at the instance level. This approach guarantees safe evolution of spreadsheets even when models change.

Type-Safe Evolution of Web Services, Campinhos, João, Seco João Costa, and Cunha Jácome , Proceedings of the 2nd International Workshop on Variability and Complexity in Software Design (VACE 2017), a ICSE workshop, Buenos Aires, Argentina, (2017) main.pdf
User-Friendly Spreadsheet Querying: An Empirical Study, Pereira, Rui, Saraiva João, Cunha Jácome, and Fernandes João P. , 31st Annual ACM Symposium on Applied Computing (SAC'16), Smart Human Computer Interaction Track, Poster Paper, Pisa, Italy, (2016) sac-hci16.pdf
Book Chapter
Combining Smells and Fault Localization in Spreadsheets (in preparation), Abreu, Rui, Cunha Jácome, Fernandes João P., Martins Pedro, Perez Alexandre, and Saraiva João , (Submitted) paper.pdf
Graphical Querying of Model-Driven Spreadsheets, Cunha, Jácome, Fernandes João Paulo, Pereira Rui, and Saraiva João , Human Interface and the Management of Information. Information and Knowledge Design and Evaluation, Volume 8521, p.419–430, (2014) Abstracthci14.pdf

This paper presents a graphical interface to query model-driven spreadsheets, based on experience with previous work and empirical studies in querying systems, to simplify query construction for typical end-users with little to no knowledge of SQL. We briefly show our previous text based model-driven querying system. Afterwards, we detail our graphical model-driven querying interface, explaining each part of the interface and showing an example. To validate our work, we executed an empirical study, comparing our graphical querying approach to an alternative querying tool, which produced positive results.

Model-Based Programming Environments for Spreadsheets, Cunha, Jácome, Saraiva João, and Visser Joost , Programming Languages, Volume 7554, p.117–133, (2012) Abstractsblp12.pdf

Although spreadsheets can be seen as a flexible programming environment, they lack some of the concepts of regular programming languages, such as structured data types. This can lead the user to edit the spreadsheet in a wrong way and perhaps cause corrupt or redundant data. We devised a method for extraction of a relational model from a spreadsheet and the subsequent embedding of the model back into the spreadsheet to create a model-based spreadsheet programming environment. The extraction algorithm is specific for spreadsheets since it considers particularities such as layout and column arrangement. The extracted model is used to generate formulas and visual elements that are then embedded in the spreadsheet helping the user to edit data in a correct way. We present preliminary experimental results from applying our approach to a sample of spreadsheets from the EUSES Spreadsheet Corpus.

Watch out for that tree! A Tutorial on Shortcut Deforestation, Fernandes, João P., Cunha Jácome, Pardo Alberto, and Saraiva João , 2015 Central European Functional Programming School, Revised Selected Papers, (2016) cefp15.pdf
Book
Model-based Spreadsheet Engineering: Using Relational Models to Improve Spreadsheets, Cunha, Jácome , (2012) Abstractbook.pdf

Spreadsheets can be viewed as programming languages for non-professional programmers. These so-called ``end-user'' programmers vastly outnumber professional programmers creating millions of new spreadsheets every year. As a programming language, spreadsheets lack support for abstraction, testing, encapsulation, or structured programming. As a result, and as numerous studies have shown, the high rate of production is accompanied by an alarming high rate of errors. Some studies report that up to 90% of real-world spreadsheets contain errors. After their initial creation, many spreadsheets turn out to be used for storing and processing increasing amounts of data and supporting increasing numbers of users over long periods of time, making them complicated systems. An emerging solution to handle the complex and evolving software systems is Model-driven Engineering (MDE). To consider models as first class entities and any software artifact as a model or a model element is one of the basic principles of MDE. We adopted some techniques from MDE to solve spreadsheet problems. Most spreadsheets (if not all) lack a proper specification or a model. Using reverse engineering techniques we are able to derive various models from legacy spreadsheets. We use functional dependencies (a formalism that allow us to define how some column values depend on other column values) as building blocks for these models. Models can be used for several spreadsheet improvements, namely refactoring, safe evolution, migration or even generation of edit assistance. The techniques presented in this work are available under the framework HAEXCEL that we developed. It is composed of online and batch tools, reusable HASKELL libraries and OpenOffice.org extensions. A study with several end-users was organized to survey the impact of the techniques we designed. The results of this study indicate that the models can bring great benefits to spreadsheet engineering helping users to commit fewer errors and to work faster.