@article {8826, title = {Analyzing and Classifying Energy Consumption in Android Applications (in preparation)}, year = {Submitted}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper.pdf}, author = {Couto, Marco and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Rui Pereira and Saraiva, Jo{\~a}o} } @inbook {8827, title = {Combining Smells and Fault Localization in Spreadsheets (in preparation)}, year = {Submitted}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_0.pdf}, author = {Abreu, Rui and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Martins, Pedro and Perez, Alexandre and Saraiva, Jo{\~a}o} } @conference {12060, title = {Memoization for Saving Energy in Android Applications: When and how to di it}, year = {Submitted}, abstract = {

Over the last few years, the interest in the analysis of the energy consumption of Android applications has been increasing significantly. Indeed, there are a considerable number of studies which aim at analyzing the energy consumption in various ways, such as measuring/estimating the energy consumed by an application or block of code, or even detecting energy expensive coding patterns or API{\textquoteright}s.

Nevertheless, when it comes to actually improving the energy efficiency of an application, we face a whole new challenge, which can only be achieved through source code improvements that can take advantage of energy saving techniques. However, there is still a lack of information about such techniques and their impact on energy consumption.

In this paper, we analyze the impact of the memoization technique in the energy consumption of Android applications. We present a systematic study of the use of memoization, where we compare implementations of 18 method from different applications, with and without using memoization, and measure the energy consumption of both of them. Using this approach, we are able to characterize Android methods that should be memoized.

Our results show that using memoization can clearly be a good approach for saving energy. For the 18 tested methods, 13 of them decreased significantly their energy consumption, while for the remaining 5 we observed unpredictable behavior in 3 of them and an overall increase of energy consumption in the last 2. We also included a discussion about when is actually beneficial to use memoization for saving energy, and what is the expected percentage of gain/loss when memoization works and when it does not.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_8.pdf}, author = {Adriano Pinto and Couto, Marco and Cunha, J{\'a}come} } @article {8825, title = {A Structured Approach to Document Spreadsheets (in preparation)}, year = {Submitted}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/inforum2015_0.pdf}, author = {Cunha, J{\'a}come and Canteiro, Diogo} } @conference {11142, title = {Products go Green: Worst-Case Energy Consumption in Software Product Lines}, booktitle = {21st International Systems and Software Product Line Conference}, year = {2017}, month = {Sept 25-29}, address = {Sevilla, Spain}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_5.pdf}, author = {Couto, Marco and Paulo Borba and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Rui Pereira and Saraiva, Jo{\~a}o} } @conference {11155, title = {Energy Efficiency across Programming Languages: How Do Energy, Time, and Memory Relate?}, booktitle = {10th ACM SIGPLAN International Conference on Software Language Engineering (SLE{\textquoteright}17)}, year = {2017}, month = {23-24 October}, publisher = {ACM}, organization = {ACM}, address = {Vancouver, Canada}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_6.pdf}, author = {Rui Pereira and Couto, Marco and Francisco Ribeiro and Rui Rua and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Saraiva, Jo{\~a}o} } @conference {11205, title = {Systematic Spreadsheet Construction Processes}, booktitle = {IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)}, year = {2017}, month = {11-14 Oct.}, publisher = {IEEE}, organization = {IEEE}, address = {Raleigh, North Carolina, USA}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_7.pdf}, author = {Mendes, Jorge and Cunha, J{\'a}come and Francisco Duarte and Gregor Engels and Saraiva, Jo{\~a}o and Stefan Sauer} } @conference {8830, title = {Helping Programmers Improve the Energy Efficiency of Source Code (Abstract/Poster)}, booktitle = {Proceedings of the 39th International Conference on Software Engineering (ICSE 2017)}, year = {2017}, publisher = {ACM and IEEE CS}, organization = {ACM and IEEE CS}, address = {Buenos Aires, Argentina}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_3.pdf , https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/postera3.pdf}, author = {Rui Pereira and Car{\c c}{\~a}o, Tiago and Couto, Marco and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Saraiva, Jo{\~a}o} } @conference {8829, title = {Towards Systematic Spreadsheet Construction Processes (Abstract/Poster)}, booktitle = {Proceedings of the 39th International Conference on Software Engineering (ICSE 2017)}, year = {2017}, publisher = {ACM and IEEE CS}, organization = {ACM and IEEE CS}, address = {Buenos Aires, Argentina}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_4.pdf , https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/poster_0.pdf}, author = {Mendes, Jorge and Cunha, J{\'a}come and Francisco Duarte and Gregor Engels and Saraiva, Jo{\~a}o and Stefan Sauer} } @conference {10134, title = {Type-Safe Evolution of Web Services}, booktitle = {Proceedings of the 2nd International Workshop on Variability and Complexity in Software Design (VACE 2017), a ICSE workshop}, year = {2017}, publisher = {ACM SIGSOFT and IEEE TCSE}, organization = {ACM SIGSOFT and IEEE TCSE}, address = {Buenos Aires, Argentina}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/main_1.pdf}, author = {Jo{\~a}o Campinhos and Jo{\~a}o Costa Seco and Cunha, J{\'a}come} } @conference {c37, title = {Static Energy Consumption Analysis in Variability Systems}, booktitle = {2nd Green in Software Engineering Workshop (GInSEng{\textquoteright}16), an event of the 4th International Conference on ICT for Sustainability (ICT4S)}, year = {2016}, note = {

n/a

}, month = {29 Aug. - 1 Sep.}, address = {Amsterdam, The Netherlands}, abstract = {

Energy consumption is becoming an evident concern to software developers. This is even more notorious due to the propagation of mobile devices. Such propagation of devices is also influencing software development: a software system is now developed has a set of similar products sharing common features.
In this short paper, we describe our methodology aim at static and accurately predict the energy consumption of software products in such variability systems, typically called software product lines.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/ginseng_2016_paper_1-2.pdf}, author = {Couto, Marco and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Rui Pereira and Saraiva, Jo{\~a}o Alexandre} } @conference {c34, title = {The Influence of the Java Collection Framework on Overall Energy Consumption}, booktitle = {5th International Workshop on Green and Sustainable Software (ICSE 2016)}, year = {2016}, month = {15-21}, pages = {{\textendash}}, abstract = {

This paper presents a detailed study of the energy consumption of the different Java Collection Framework (JFC) implementations. For each method of an implementation in this framework, we present its energy consumption when handling different amounts of data. Knowing the greenest methods for each implementation, we present an energy optimization approach for Java programs: based on calls to JFC methods in the source code of a program, we select the greenest implementation. Finally, we present preliminary results of optimizing a set of Java programs where we obtained 6.2\% energy savings.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/greens.pdf}, author = {Rui Pereira and Couto, Marco and Saraiva, Jo{\~a}o and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P.} } @article {jase14, title = {Automatically Inferring Models from Spreadsheets}, journal = {Automated Software Engineering (ASE)}, volume = {23}, year = {2016}, note = {

in press.

}, pages = {361-392}, publisher = {Springer}, abstract = {

Many errors in spreadsheet formulas can be avoided if spreadsheets are built automatically from higher-level models that can encode and enforce consistency constraints in the generated spreadsheets. Employing this strategy for legacy spreadsheets is difficult, because the model has to be reverse engineered from an existing spreadsheet and existing data must be transferred into the new model-generated spreadsheet. We have developed and implemented a technique that automatically infers relational schemas from spreadsheets. This technique uses particularities from the spreadsheet realm to create better schemas. We have evaluated this technique in two ways: First, we have demonstrated its applicability by using it on a set of real-world spreadsheets. Second, we have run an empirical study with users. The study has shown that the results produced by our technique are comparable to the ones developed by experts starting from the same (legacy) spreadsheet data. Although relational schemas are very useful to model data, they do not fit well spreadsheets as they do not allow to express layout. Thus, we have also introduced a mapping between relational schemas and ClassSheets. A ClassSheet controls further changes to the spreadsheet and safeguards it against a large class of formula errors. The developed tool is a 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.

}, keywords = {Automatic Model Inference, ClassSheets, Empirical Validation, Relational Model, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1007/s10515-014-0167-x}}, url = {http://link.springer.com/article/10.1007/s10515-014-0167-x}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/ase14.pdf}, author = {Cunha, J{\'a}come and Erwig, Martin and Mendes, Jorge and Saraiva, Jo{\~a}o} } @article {j4, title = {Evaluating Refactorings for Spreadsheet Models}, journal = {Journal of Systems and Software}, volume = {118}, year = {2016}, note = {

to appear.

}, pages = {234-250}, abstract = {

Software refactoring is a well-known technique that provides transformations on software artifacts with the aim of improving their overall quality.

In the past, we have proposed a catalog of refactoring for spreadsheet models expressed in the ClassSheets modeling language, which allows us to specify the business logic of a spreadsheet in an object-oriented fashion.

Reasoning about spreadsheets at the model level enhances a model-driven spreadsheet environment where a ClassSheet model and its conforming instance (the spreadsheet data) automatically co-evolves after a refactoring is applied at the model level. Our motivation for such research was to improve the model and its conforming instance: the spreadsheet data.

In this paper we define such refactorings using previously proposed evolution steps for models and instances.

We also present an empirical study we designed and conducted in order to confirm our original intuition that these refactorings have a positive impact on end-user productivity, both in terms of effectiveness and efficiency.

The results are presented not only in terms of productivity changes between refactored and non-refactored scenarios, but also in terms of overall user satisfaction, relevance, and experience.

In almost all cases the refactorings indeed improved end-users productivity. Moreover, in most cases users were more engaged with the refactored version of the spreadsheets they worked with.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/main.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o Alexandre and Martins, Pedro} } @booklet {8828, title = {Evolu{\c c}{\~a}o Controlada de Arquitecturas de Servi{\c c}os Web}, year = {2016}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/poster6.1.pdf , https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/main_0.pdf}, author = {Jo{\~a}o Campinhos and Jo{\~a}o Costa Seco and Cunha, J{\'a}come} } @conference {8736, title = {Modeling the Impact of UAVs in Sustainability}, booktitle = {5th International Workshop on Requirements Engineering for Sustainable Systems (RE4SuSy) @RE16}, year = {2016}, publisher = {IEEE CS}, organization = {IEEE CS}, address = {Beijing, China}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/2016-modeling-impact.pdf}, author = {Jos{\'e} Conejero and Isabel Brito and Moreira, Ana and Cunha, J{\'a}come and Ara{\'u}jo, Jo{\~a}o} } @conference {7924, title = {User-Friendly Spreadsheet Querying: An Empirical Study}, booktitle = {31st Annual ACM Symposium on Applied Computing (SAC{\textquoteright}16), Smart Human Computer Interaction Track, Poster Paper}, year = {2016}, publisher = {ACM}, organization = {ACM}, address = {Pisa, Italy}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_2.pdf}, author = {Rui Pereira and Saraiva, Jo{\~a}o and Cunha, J{\'a}come and Fernandes, Jo{\~a}o P.} } @inbook {8429, title = {Watch out for that tree! A Tutorial on Shortcut Deforestation}, booktitle = {2015 Central European Functional Programming School, Revised Selected Papers}, year = {2016}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/cefp15.pdf}, author = {Fernandes, Jo{\~a}o P. and Cunha, J{\'a}come and Alberto Pardo and Saraiva, Jo{\~a}o} } @conference {7557, title = {GreenDroid: A Tool for Analysing Power Consumption in the Android Ecosystem}, booktitle = {Proceedings of the 13th International Conference Informatics{\textquoteright}2015}, year = {2015}, pages = {73-78}, address = {Propad, Slovakia}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/paper_1.pdf}, author = {Couto, Marco and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo} } @conference {7311, title = {SpreadsheetDoc: An Excel Add-in for Documenting Spreadsheets}, booktitle = {Proceedings of the 6th National Symposium of Informatics (INForum{\textquoteright}15)}, year = {2015}, address = {Covilh{\~a}, Portugal}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/inforum2015.pdf}, author = {Canteiro, Diogo and Cunha, J{\'a}come} } @conference {conf/sems/CunhaFMP15, title = {Towards the Design and Implementation of Aspect-Oriented Programming for Spreadsheets}, booktitle = {Proceedings of the 2nd Workshop on Software Engineering methods in Spreadsheets co-located with the 37th International Conference on Software Engineering (ICSE 2015)}, series = {SEMS {\textquoteright}15}, year = {2015}, abstract = {

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 {\textquotedblleft}code{\textquotedblright} 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.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/sems15.pdf}, author = {Pedro Maia and Mendes, Jorge and Cunha, J{\'a}come and Henrique Reb{\^e}lo and Saraiva, Jo{\~a}o}, editor = {Felienne Hermans and Richard F. Paige and Peter Sestof} } @conference {DBLP:conf/cefp/query, title = {Design and Implementation of Queries for Model-Driven Spreadsheets}, booktitle = {Central European Functional Programming School - 5th Summer School, CEFP 2013, Revised Selected Papers}, series = {Lecture Notes in Computer Science}, year = {2014}, note = {

to appear.

}, month = {July}, publisher = {Springer}, organization = {Springer}, address = {Heidelberg}, abstract = {

This paper presents a domain-specific querying language for model-driven spreadsheets. We briefly show the design of the language and present in detail its implementation, from the denormalization of data and translation of our user-friendly query language to a more efficient query, to the execution of the query using Google. To validate our work, we executed an empirical study, comparing QuerySheet with an alternative spreadsheet querying tool, which produced positive results.

}, keywords = {Model-driven engineering, Model-Driven Spreadsheets, Querying, Spreadsheets}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/dsl13_query.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o}, editor = {Vikt{\'o}ria Zs{\'o}k and et al} } @conference {DBLP:conf/cefp/notes, title = {Spreadsheet Engineering}, booktitle = {Central European Functional Programming School - 5th Summer School, CEFP 2013, Revised Selected Papers}, series = {Lecture Notes in Computer Science}, year = {2014}, note = {

to appear.

}, month = {July}, address = {Springer, Heidelberg}, abstract = {

These tutorial notes present a methodology for spreadsheet engineering. First, we present data mining and database techniques to reason about spreadsheet data. These techniques are used to compute relationships between spreadsheet elements (cells/columns/rows). These relations are then used to infer a model defining the business logic of the spreadsheet. Such a model of a spreadsheet data is a visual domain specific language that we embed in a well-known spreadsheet system. The embedded model is the building block to define techniques for model-driven spreadsheet development, where advanced techniques are used to guarantee the model-instance synchronization. In this model-driven environment, any user data update as to follow the the model-instance conformance relation, thus, guiding spreadsheet users to introduce correct data. Data refinement techniques are used to synchronize models and instances after users update/evolve the model. These notes briefly describe our model-driven spreadsheet environment, the MDSheet environment, that implements the presented methodology. To evaluate both proposed techniques and the MDSheet tool, we have conducted, in laboratory sessions, an empirical study with the summer school participants. The results of this study are presented in these notes.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/dsl13_notes.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o}, editor = {Vikt{\'o}ria Zs{\'o}k and et al} } @conference {conf/sblp/CunhaFMPS14, title = {Detecting Anomalous Energy Consumption in Android Applications}, booktitle = {Proceedings of the 18th Brazilian Symposium on Programming Languages}, series = {SBLP {\textquoteright}14}, year = {2014}, pages = {77-91}, abstract = {

The use of powerful mobile devices, like smartphones, tablets and laptops, are changing the way programmers develop software. While in the past the primary goal to optimize software was the run time optimization, nowadays there is a growing awareness of the need to reduce energy consumption. This paper presents a technique and a tool to detect anomalous energy consumption in Android applications, and to relate it directly with the source code of the application. We propose a dynamically calibrated model for energy consumption for the Android ecosystem, and that supports different devices. The model is then used as an API to monitor the application execution: first, we instrument the application source code so that we can relate energy consumption to the application source code; second, we use a statistical approach, based on fault-localization techniques, to localize abnormal energy consumption in the source code.

}, keywords = {Energy-aware Software, Green Computing, Source Code Analysis}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/sblp14.pdf}, author = {Car{\c c}{\~a}o, Tiago and Couto, Marco and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o} } @conference {conf/vl/CunhaFMPS14, title = {Embedding Model-Driven Spreadsheet Queries in Spreadsheet Systems}, booktitle = {Proceedings of the 2014 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}14}, year = {2014}, note = {

n/a

}, pages = {151-154}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

Spreadsheets are widely used not only to define mathematical expressions, but also to store large and complex data. To query such data is usually a difficult task to perform, usually for end user. In this work we embed the textual query language in the model-driven spreadsheet environment as a spreadsheet itself. The result is an expressive and powerful query environment that has knowledge of the business logic defined by the spreadsheet data (the spreadsheet model) to guide end users constructing correct queries.

}, keywords = {Embedding, Querying, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2014.6883039}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc14.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o} } @article {tse14, title = {Embedding, Evolution, and Validation of Spreadsheet Models in Spreadsheet Systems}, journal = {IEEE Transactions on Software Engineering}, volume = {41}, year = {2014}, note = {

in press.

}, pages = {241-263}, publisher = {IEEE Computer Society}, abstract = {

This paper proposes and validates a model-driven software engineering technique for spreadsheets. The technique that we envision builds on the embedding of spreadsheet models under a widely used spreadsheet system. This means that we enable the creation and evolution of spreadsheet models under a spreadsheet system. More precisely, we embed ClassSheets, a visual language with a syntax similar to the one offered by common spreadsheets, that was created with the aim of specifying spreadsheets. Our embedding allows models and their conforming instances to be developed under the same environment. In practice, this convenient environment enhances evolution steps at the model level while the corresponding instance is automatically co-evolved. Finally, we have designed and conducted an empirical study with human users in order to assess our technique in production environments. The results of this study are promising and suggest that productivity gains are realizable under our model-driven spreadsheet development setting.

}, keywords = {ClassSheets, Embedding, Empirical Validation, Evolution, Models, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/TSE.2014.2361141}}, url = {http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6915751}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/tse14.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Mendes, Jorge and Saraiva, Jo{\~a}o} } @booklet {tr_embedding, title = {Embedding, Evolution, and Validation of Spreadsheet Models in Spreadsheet Systems}, number = {TR-HASLab:01:2014}, year = {2014}, note = {

n/a

}, publisher = {HASLab - High-Assurance Software Laboratory \& Universidade do Minho}, abstract = {

This paper proposes and validates a model-driven software engineering technique for spreadsheets. The technique that we envision builds on the embedding of spreadsheet models under a widely used spreadsheet system, so that models and their conforming instances are developed under the same environment. In practice, this convenient environment enhances evolution steps at the model level while the corresponding instance is automatically co-evolved. Finally, we have designed and conducted an empirical study with human users in order to assess our technique in production environments. The results of this study are promising and suggest that productivity gains are realizable under our model-driven spreadsheet development setting.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/tr_embedding.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Mendes, Jorge and Saraiva, Jo{\~a}o} } @conference {conf/vl/CunhaFMP14, title = {ES-SQL: Visually Querying Spreadsheets}, booktitle = {Proceedings of the 2014 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}14}, year = {2014}, note = {

n/a

}, pages = {203{\textendash}204}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

This paper presents ES-SQL, an embedded tool for visually constructing queries over spreadsheets. This tool provides an expressive query environment which has knowledge on the business logic of spreadsheets, and by this knowledge it assists the user in defining the intended queries.

}, keywords = {Embedding, ES-SQL, Querying, Spreadsheets, Tool Demo}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2014.6883056}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc14-td.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o} } @conference {conf/icsme/CunhaFMPStd14, title = {FaultySheet Detective: When Smells Meet Fault Localization}, booktitle = {Proceedings of the 30th IEEE International Conference on Software Maintenance and Evolution}, series = {ICSME {\textquoteright}14}, year = {2014}, note = {

n/a

}, pages = {625{\textendash}628}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

This paper presents a tool, dubbed FaultySheet Detective, for aiding in spreadsheet fault localization, which combines the detection of bad smells with a generic spectrum-based fault localization algorithm.

}, keywords = {Errors, Fault Localization, FaultySheet Detective, Smells, Spreadsheets}, url = {\url{http://conferences.computer.org/icsme/2014/papers/6146a625.pdf}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/icsme14-td.pdf}, author = {Abreu, Rui and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Martins, Pedro and Perez, Alexandre and Saraiva, Jo{\~a}o} } @inbook {Cunha:2014zm, title = {Graphical Querying of Model-Driven Spreadsheets}, booktitle = {Human Interface and the Management of Information. Information and Knowledge Design and Evaluation}, series = {Lecture Notes in Computer Science}, volume = {8521}, year = {2014}, note = {

n/a

}, pages = {419{\textendash}430}, publisher = {Springer International Publishing}, organization = {Springer International Publishing}, abstract = {

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.

}, keywords = {graphical querying, Model-driven engineering, Spreadsheets}, isbn = {978-3-319-07730-7}, doi = {http://dx.doi.org/10.1007/978-3-319-07731-4_42}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/hci14.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Rui Pereira and Saraiva, Jo{\~a}o}, editor = {Yamamoto, Sakae} } @conference {conf/sems/CunhaFMP14, title = {MDSheet {\textendash} Model-Driven Spreadsheets}, booktitle = {Proceedings of the 1st Workshop on Software Engineering methods in Spreadsheets}, series = {SEMS {\textquoteright}14}, volume = {1209}, year = {2014}, note = {

n/a

}, pages = {31{\textendash}33}, publisher = {CEUR}, organization = {CEUR}, abstract = {

This paper showcases MDSheet, a framework aimed at improving the engineering of spreadsheets. This framework is model-driven, and has been fully integrated under a spreadsheet system. Also, its practical interest has been demonstrated by several empirical studies.

}, keywords = {Graphical Environments, Integrated Environments, Interactive Environments, MDSheet, Spreadsheets, Tools}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/sems14-td.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o}, editor = {Felienne Hermans and Richard F. Paige and Peter Sestof} } @article {scp14, title = {Model-Based Programming Environments for Spreadsheets}, journal = {Journal of Science of Computer Programming (SCP)}, volume = {96}, year = {2014}, note = {

in press.

}, pages = {254{\textendash}275}, publisher = {Elsevier}, abstract = {

n/a

}, keywords = {Empirical Validation, Model-driven engineering, Model-Driven Spreadsheets, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1016/j.scico.2014.02.002}}, url = {http://www.sciencedirect.com/science/article/pii/S0167642314000343}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/jscp-si-sblp12.pdf}, author = {Cunha, J{\'a}come and Mendes, Jorge and Saraiva, Jo{\~a}o and Visser, Joost} } @conference {conf/quatic/CunhaFPS14, title = {Refactoring meets Model-Driven Spreadsheet Evolution}, booktitle = {Proceedings of the 9th International Conference on the Quality of Information and Communications Technology, Quality in Model Driven Engineering Track}, year = {2014}, note = {

n/a

}, pages = {196{\textendash}201}, abstract = {

Software refactoring is a well-known technique that provides transformations on software artifacts with the aim of improving their overall quality. In this paper we present a set of refactorings for ClassSheets, a modeling language that allows to specify the business logic of a spreadsheet in an object-oriented fashion. The set of refactorings that we propose allows us to improve the quality of these spreadsheet models. Moreover, it is implemented in a setting that guarantees that all model refactorings are automatically carried to all the corresponding (spreadsheet) instances, thus providing an automatic evolution of the data so it is always synchronized with the model.

}, keywords = {Evolution, Model-Driven Spreadsheets, Models, Refactoring}, doi = {\url{http://dx.doi.org/10.1109/QUATIC.2014.34}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/quatic14.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Martins, Pedro and Rui Pereira and Saraiva, Jo{\~a}o} } @conference {conf/icsme/CunhaFMPS14, title = {Smelling Faults in Spreadsheets}, booktitle = {Proceedings of the 30th IEEE International Conference on Software Maintenance and Evolution}, series = {ICSME {\textquoteright}14}, year = {2014}, note = {

n/a

}, pages = {111{\textendash}120}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

Despite being staggeringly error prone, spreadsheets are a highly flexible programming environment that is widely used in industry. In fact, spreadsheets are widely adopted for decision making, and decisions taken upon wrong (spreadsheet-based) assumptions may have serious economical impacts on businesses, among other consequences. This paper proposes a technique to automatically pinpoint potential faults in spreadsheets. It combines a catalog of spreadsheet smells that provide a first indication of a potential fault, with a generic spectrum-based fault localization strategy in order to improve (in terms of accuracy and false positive rate) on these initial results. Our technique has been implemented in a tool which helps users detecting faults. To validate the proposed technique, we consider a well-known and well-documented catalog of faulty spreadsheets. Our experiments yield two main results: we were able to distinguish between smells that can point to faulty cells from smells and those that are not capable of doing so; and we provide a technique capable of detecting a significant number of errors: two thirds of the cells labeled as faulty are in fact (documented) errors.

}, keywords = {Faults, Smells, Spreadsheets}, url = {\url{http://conferences.computer.org/icsme/2014/papers/6146a111.pdf}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/icsme14.pdf}, author = {Abreu, Rui and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Martins, Pedro and Perez, Alexandre and Saraiva, Jo{\~a}o} } @booklet {tr_ssaapp, title = {SSaaPP: SpreadSheets as a Programming Paradigm {\textendash} Project{\textquoteright}s Final Report}, number = {TR-HASLab:02:2014}, year = {2014}, note = {

n/a

}, publisher = {HASLab - High-Assurance Software Laboratory \& Universidade do Minho}, abstract = {

This technical report describes the research goals and results of the SpreadSheet as a Programming Paradigm research project. This was a project funded by Funda{\c c}{\~a}o para a Ciencia e Tecnologia {\textendash} FCT: the Portuguese research foundation, under reference FCOMP-01-0124-FEDER-010048, that ran from May 2010 till July 2013. This report includes the complete document reporting the results achieved during the project execution, which was submitted to FCT for evaluation on October 2013. It describes the goals of the project, and the different research tasks presenting the deliver- ables of each of them. It also presents the management and result dissemination work performed during the project{\textquoteright}s execution. The document includes also a self assess- ment of the achieved results, and a complete list of scientific publications describing the contributions of the project. Finally, this document includes the FCT evaluation report.

}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/tr_ssaapp.pdf}, author = {Abreu, Rui and Tiago Alves and Belo, Orlando and Jos{\'e} C. Campos and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Martins, Pedro and Mendes, Jorge and Hugo Pacheco and Christophe Peixoto and Rui Pereira and Perez, Alexandre and Ribeiro, Hugo and Andr{\'e} Riboira and Saraiva, Jo{\~a}o and Andr{\'e} Silva and Jo{\~a}o Carlos Silva and Visser, Joost} } @conference {conf/iccsa/CunhaFMS13, title = {Complexity Metrics for Spreadsheet Models}, booktitle = {The 13th International Conference on Computational Science and Its Applications}, series = {ICCSA{\textquoteright}13}, volume = {7972}, year = {2013}, note = {

n/a

}, pages = {459{\textendash}474}, publisher = {LNCS}, organization = {LNCS}, abstract = {

This paper proposes a set of metrics for the assessment of the complexity of models defining the business logic of spreadsheets. This set can be considered the first step in the direction of building a quality standard for spreadsheet models, that is still to be defined. The computation of concrete metric values has further been integrated under a well-established model-driven spreadsheet development environment, providing a framework for the analysis of spreadsheet models under spreadsheets themselves.

}, keywords = {ClassSheets, Metrics, Models, quality, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1007/978-3-642-39643-4_33}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/iccsa-sq13.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o}, editor = {B. Murgante and et al} } @conference {conf/vl/CunhaFMPS13, title = {Querying Model-Driven Spreadsheets}, booktitle = {Proceedings of the 2013 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}13}, year = {2013}, note = {

n/a

}, pages = {83{\textendash}86}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

Spreadsheets are being used with many different purposes that range from toy applications to complete information systems. In any of these cases, they are often used as data repositories that can grow significantly. As the amount of data grows, it also becomes more difficult to extract concrete information out of them. This paper focuses on the problem of spreadsheet querying. In particular, we propose an expressive and composable technique where intuitive queries can be defined. Our approach builds on a model-driven spreadsheet development environment, and queries are expressed referencing entities in the model of a spreadsheet instead of in its actual data. Finally, the system that we have implemented relies on Google{\textquoteright}s query function for spreadsheets.

}, keywords = {Querying, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2013.6645247}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc2013-query.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o} } @conference {conf/vl/BeloCFMPS13, title = {QuerySheet: A Bidirectional Query Environment for Model-Driven Spreadsheets}, booktitle = {Proceedings of the 2013 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}13}, year = {2013}, note = {

n/a

}, pages = {199{\textendash}200}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

This paper presents a tool, named QUERYSHEET, to query spreadsheets. We defined a language to write the queries, which resembles SQL, the language to query databases. This allows to write queries which are more related to the spreadsheet content than with current approaches.

}, keywords = {Querying, Spreadsheets, Tools}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2013.6645267}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc2013-td.pdf}, author = {Belo, Orlando and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Rui Pereira and Saraiva, Jo{\~a}o} } @conference {conf/icse/CunhaFMS12a, title = {A Bidirectional Model-driven Spreadsheet Environment (Poster/Abstract)}, booktitle = {Proceedings of the 34rd International Conference on Software Engineering}, series = {ICSE {\textquoteright}12}, year = {2012}, note = {

n/a

}, pages = {1443{\textendash}1444}, abstract = {

n this extended abstract we present a bidirectional model-driven framework to develop spreadsheets. By being model driven, our approach allows to evolve a spreadsheet model and automatically have the data co-evolved. The bidirectional component achieves precisely the inverse, that is, to evolve the data and automatically obtain a new model to which the data conforms.

}, keywords = {Bidirectional Transformations, Model Evolution, Model-driven engineering, Software Evolution, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/ICSE.2012.6227073}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/abstract.pdf , https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/poster.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o} } @conference {conf/icmt/CunhaFMPS12, title = {Bidirectional Transformation of Model-Driven Spreadsheets}, booktitle = {Theory and Practice of Model Transformations}, series = {Lecture Notes in Computer Science}, volume = {7307}, year = {2012}, note = {

n/a

}, pages = {105{\textendash}120}, publisher = {Springer}, organization = {Springer}, abstract = {

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.

}, keywords = {Bidirectional Transformation, Data Evolution, Model Synchronization, Software Evolution, Spreadsheets}, isbn = {978-3-642-30475-0}, doi = {\url{http://dx.doi.org/10.1007/978-3-642-30476-7_7}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/icmt12.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Mendes, Jorge and Hugo Pacheco and Saraiva, Jo{\~a}o}, editor = {Zhenjiang Hu and Juan de Lara} } @conference {conf/vl/CunhaFMS12, title = {Extension and Implementation of ClassSheet Models}, booktitle = {Proceedings of the 2012 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}12}, year = {2012}, note = {

n/a

}, pages = {19{\textendash}22}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

n this paper we explore the use of models in the context of spreadsheet engineering. We review a successful spreadsheet modeling language, whose semantics we further extend. With this extension we bring spreadsheet models closer to the business models of spreadsheets themselves. An addon for a widely used spreadsheet system, providing bidirectional model-driven spreadsheet development, was also improved to include the proposed model extension.

}, keywords = {Bidirectional Software Evolution, Embedded Domain-Specific Languages, Model-driven engineering, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2012.6344473}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc12.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o} } @conference {conf/sac/CunhaFS12, title = {From Relational ClassSheets to UML+OCL}, booktitle = {Proceedings of the Software Engineering Track at the 27th Annual ACM Symposium On Applied Computing (SAC 2012)}, year = {2012}, note = {

n/a

}, pages = {1151{\textendash}1158}, publisher = {ACM}, organization = {ACM}, abstract = {

Spreadsheets are among the most popular programming languages in the world. Unfortunately, spreadsheet systems were not tailored from scratch with modern programming language features that guarantee, as much as possible, program correctness. As a consequence, spreadsheets are populated with unacceptable amounts of errors. In other programming language settings, model-based approaches have been proposed to increase productivity and program effectiveness. Within spreadsheets, this approach has also been followed, namely by ClassSheets. In this paper, we propose an extension to ClassSheets to allow the specification of spreadsheets that can be viewed as relational databases. Moreover, we present a transformation from ClassSheet models to UML class diagrams enriched with OCL constraints. This brings to the spreadsheet realm the entire paraphernalia of model validation techniques that are available for UML.

}, keywords = {ClassSheets, OCL, Spreadsheets, UML}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/sac-se12.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o} } @conference {conf/icse/CunhaFMS12, title = {MDSheet: A Framework for Model-driven Spreadsheet Engineering}, booktitle = {Proceedings of the 34rd International Conference on Software Engineering}, series = {ICSE{\textquoteright}12}, year = {2012}, note = {

n/a

}, pages = {1395{\textendash}1398}, publisher = {ACM}, organization = {ACM}, abstract = {

n 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.

}, keywords = {Embedded DSLs, Model Inference, Model-driven engineering, Software Evolution, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/ICSE.2012.6227239}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/icse12_tooldemo.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o} } @inbook {conf/sblp/CunhaSV12, title = {Model-Based Programming Environments for Spreadsheets}, booktitle = {Programming Languages}, series = {Lecture Notes in Computer Science}, volume = {7554}, year = {2012}, note = {

n/a

}, pages = {117{\textendash}133}, publisher = {Springer Berlin / Heidelberg}, organization = {Springer Berlin / Heidelberg}, abstract = {

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.

}, isbn = {978-3-642-33181-7}, doi = {\url{http://dx.doi.org/10.1007/978-3-642-33182-4_10}}, url = {http://dx.doi.org/10.1007/978-3-642-33182-4_10}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/sblp12.pdf}, author = {Cunha, J{\'a}come and Saraiva, Jo{\~a}o and Visser, Joost}, editor = {de Carvalho Junior, Francisco and Barbosa, Luis} } @book {jacomesthesisbook, title = {Model-based Spreadsheet Engineering: Using Relational Models to Improve Spreadsheets}, year = {2012}, note = {

n/a

}, publisher = {LAP LAMBERT Academic Publishing}, organization = {LAP LAMBERT Academic Publishing}, abstract = {

Spreadsheets can be viewed as programming languages for non-professional programmers. These so-called {\textquoteleft}{\textquoteleft}end-user{\textquoteright}{\textquoteright} 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.

}, keywords = {Edit Assitance, Empirical Validation, Evolution, Functional Dependencies Inference, MDSheet, Model Inference, Model-Based Spreadsheets, Refactored Model, Relational Model, Spreadsheets}, isbn = {3848430363}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/book.pdf}, author = {Cunha, J{\'a}come}, editor = {Shahanaz Soogah} } @conference {conf/quatic/CunhaFPS12, title = {A Quality Model for Spreadsheets}, booktitle = {Proceedings of the 8th International Conference on the Quality of Information and Communications Technology, Quality in ICT Evolution Track}, year = {2012}, note = {

n/a

}, pages = {231{\textendash}236}, abstract = {

In this paper we present a quality model for spreadsheets, based on the ISO/IEC 9126 standard that defines a generic quality model for software. To each of the software characteristics defined in the ISO/IEC 9126, we associate an equivalent spreadsheet characteristic. Then, we propose a set of spreadsheet specific metrics to assess the quality of a spreadsheet in each of the defined characteristics. In order to obtain the normal distribution of expected values for a spreadsheet in each of the metrics that we propose, we have executed them against all spreadsheets in the large and widely used EUSES spreadsheet corpus. Then, we quantify each characteristic of our quality model after computing the values of our metrics, and we define quality scores for the different ranges of values. Finally, to automate the atribution of a quality score to a given spreadsheet, according to our quality model, we have integrated the computation of the metrics it includes in both a batch and a web-based tool.

}, doi = {\url{http://dx.doi.org/10.1109/QUATIC.2012.16}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/quatic2012.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Christophe Peixoto and Saraiva, Jo{\~a}o} } @conference {conf/vl/CunhaFMMS12, title = {SmellSheet Detective: A Tool for Detecting Bad Smells in Spreadsheets}, booktitle = {Proceedings of the 2012 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}12}, year = {2012}, note = {

n/a

}, pages = {243{\textendash}244}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

This tool demo paper presents SmellSheet Detective: a tool for automatically detecting bad smells in spreadsheets. We have defined a catalog of bad smells in spreadsheet data which was fully implemented in a reusable library for the manipulation of spreadsheets. This library is the building block of the SmellSheet Detective tool, that has been used to detect smells in large, real-world spreadsheet within the EUSES corpus, in order to validate and evolve our bad smells catalog.

}, keywords = {Bad Smells, Spreadsheets}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc12-td.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Martins, Pedro and Saraiva, Jo{\~a}o} } @conference {conf/iccsa/CunhaFRS12, title = {Towards a Catalog of Spreadsheet Smells}, booktitle = {Proceedings of the 12th International Conference on Computational Science and Its Applications - Volume Part IV}, series = {ICCSA{\textquoteright}12}, year = {2012}, note = {

n/a

}, pages = {202{\textendash}216}, publisher = {Springer-Verlag}, organization = {Springer-Verlag}, address = {Berlin, Heidelberg}, abstract = {

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.

}, keywords = {code smells, EUSES corpus, Spreadsheets}, isbn = {978-3-642-31127-7}, doi = {http://dx.doi.org/10.1007/978-3-642-31128-4_15}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/iccsa-sq12.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o P. and Ribeiro, Hugo and Saraiva, Jo{\~a}o} } @conference {user12, title = {Towards an Evaluation of Bidirectional Model-driven Spreadsheets}, booktitle = {User evaluation for Software Engineering Researchers}, series = {USER{\textquoteright} 12}, year = {2012}, note = {

n/a

}, pages = {25{\textendash}28}, publisher = {ACM Digital Library}, organization = {ACM Digital Library}, abstract = {

Spreadsheets are widely recognized as popular programming systems with a huge number of spreadsheets being created every day. Also, spreadsheets are often used in the decision processes of profit-oriented companies. While this illustrates their practical importance, studies have shown that up to 90\% of real-world spreadsheets contain errors. In order to improve the productivity of spreadsheet end-users, the software engineering community has proposed to employ model-driven approaches to spreadsheet development. In this paper we describe the evaluation of a bidirectional model-driven spreadsheet environment. In this environment, models and data instances are kept in conformity, even after an update on any of these artifacts. We describe the issues of an empirical study we plan to conduct, based on our previous experience with end-user studies. Our goal is to assess if this model-driven spreadsheet development framework does in fact contribute to improve the productivity of spreadsheet users.

}, doi = {\url{http://dx.doi.org/10.1109/USER.2012.6226577}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/user12.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o} } @conference {vl-hccposter11, title = {HaExcel: A Model-Based Spreadsheet Evolution System (Poster)}, booktitle = {2011 IEEE Symposium on Visual Languages and Human-Centric Computing}, year = {2011}, note = {

n/a

}, month = {September}, publisher = {IEEE}, organization = {IEEE}, abstract = {

n/a

}, keywords = {HaExcel, Model-Based Spreadsheets, Software Evolution}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/poster.vlhcc11.png}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o} } @mastersthesis {jacomesthesis, title = {Model-Based Spreadsheet Engineering}, year = {2011}, note = {

n/a

}, month = {March}, school = {University of Minho}, type = {PhD thesis}, abstract = {

Spreadsheets can be viewed as programming languages for non-professional programmers. These so-called {\textquoteleft}{\textquoteleft}end-user{\textquoteright}{\textquoteright} 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 less errors and to work faster.

}, keywords = {Edit Assitance, Empirical Validation, Evolution, Functional Dependencies Inference, Haskell, MDSheet, Model Inference, Model-Based Spreadsheets, Refactored Model, Relational Model, Spreadsheets}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/thesis.pdf}, author = {Cunha, J{\'a}come} } @conference {conf/iseud/BeckwithCFS11, title = {End-users Productivity in Model-based Spreadsheets: An Empirical Study}, booktitle = {Proceedings of the Third International Symposium on End-User Development}, series = {IS-EUD {\textquoteright}11}, year = {2011}, note = {

n/a

}, month = {June}, pages = {282{\textendash}288}, publisher = {Springer}, organization = {Springer}, address = {Heidelberg}, abstract = {

Spreadsheetsarewidelyusedandstudiesshowthatmostoftheexisting ones contain non-trivial errors. To improve end-users productivity, recent research proposes the use of a model-driven engineering approach to spreadsheets. In this paper we conduct the first empirical study to assess the effectiveness and efficiency of this approach. A set of spreadsheet end users worked with two different model-based spreadsheets. We present and analyze here the results achieved.

}, keywords = {Empirical Validation, Model-Based Spreadsheets, productivity, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1007/978-3-642-21530-8_27}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/iseud11.pdf}, author = {Laura Beckwith and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o}, editor = {M. Costabile and Y. Dittrich and Fischer, G. and A. Piccinno} } @conference {journals/corr/abs-1112-4190, title = {An Empirical Study on End-users Productivity Using Model-based Spreadsheets}, booktitle = {Proceedings of the European Spreadsheet Risks Interest Group}, series = {EuSpRIG {\textquoteright}11}, year = {2011}, note = {

n/a

}, month = {July}, pages = {87{\textendash}100}, abstract = {

Spreadsheets are widely used, and studies have shown that most end-user spreadsheets contain non-trivial errors. To improve end-users productivity, recent research proposes the use of a model-driven engineering approach to spreadsheets. In this paper we conduct the first systematic empirical study to assess the effectiveness and efficiency of this approach. A set of spreadsheet end users worked with two different model-based spreadsheets, and we present and analyze here the results achieved.

}, keywords = {Empirical Validation, Model-Based Spreadsheets, productivity, Spreadsheets}, isbn = {978-0-9566256-9-4}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/eusprig11.pdf}, author = {Laura Beckwith and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o}, editor = {Simon Thorne and Grenville Croll} } @conference {conf/vl/CunhaMSF11, title = {Embedding and Evolution of Spreadsheet Models in Spreadsheet Systems}, booktitle = {Proceedings of the 2011 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}11}, year = {2011}, note = {

n/a

}, pages = {186{\textendash}201}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

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 it models. 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.

}, keywords = {Embedding ClassSheets, Spreadsheets}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2011.6070396}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc11.pdf}, author = {Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Mendes, Jorge and Saraiva, Jo{\~a}o} } @conference {conf/fase/CunhaVAS11, title = {Type-Safe Evolution of Spreadsheets}, booktitle = {Proceedings of the 14th International Conference Fundamental Approaches to Software Engineering (FASE {\textquoteright}11): Part of the Joint European Conferences on Theory and Practice of Software (ETAPS {\textquoteright}11)}, series = {Lecture Notes in Computer Science}, volume = {6603}, year = {2011}, note = {

n/a

}, pages = {186{\textendash}201}, publisher = {Springer}, organization = {Springer}, abstract = {

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{\ae}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.

}, keywords = {Haskell, Software Evolution, Spreadsheets, Type-Safe}, isbn = {978-3-642-19810-6}, doi = {\url{http://dx.doi.org/10.1007/978-3-642-19811-3_14}}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/fase11.pdf}, author = {Cunha, J{\'a}come and Visser, Joost and Tiago Alves and Saraiva, Jo{\~a}o}, editor = {Dimitra Giannakopoulou and Fernando Orejas} } @conference {conf/vl/CunhaES10, title = {Automatically Inferring ClassSheet Models from Spreadsheets}, booktitle = {Proceedings of the 2010 IEEE Symposium on Visual Languages and Human-Centric Computing}, series = {VLHCC {\textquoteright}10}, year = {2010}, note = {

n/a

}, pages = {93{\textendash}100}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

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.

}, keywords = {ClassSheets inference, Spreadsheets}, isbn = {978-0-7695-4206-5}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2010.22}}, url = {http://dx.doi.org/10.1109/VLHCC.2010.22}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vlhcc10.pdf}, author = {Cunha, J{\'a}come and Erwig, Martin and Saraiva, Jo{\~a}o} } @booklet {tr_study10, title = {End Users Productivity in Model-based Spreadsheets: An Empirical Study}, number = {DI-CCTC-10-10}, year = {2010}, note = {

n/a

}, publisher = {CCTC, Departamento de Inform{\'a}tica, Universidade do Minho}, abstract = {

Spreadsheets are widely used by end users, and studies have shown that most end-user spreadsheets contain non-trivial errors. To improve end users productivity, recent research proposes the use of a model-driven engineering approach to spreadsheets. In this paper we conduct the first systematic empirical study to assess the effectiveness and efficiency of this approach. A set of spreadsheet end users worked with two different model-based spreadsheets, and we present and analyze the results achieved.

}, keywords = {Empirical Validation, Model-Based Spreadsheets, productivity, Spreadsheets}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/tr_study.pdf}, author = {Laura Beckwith and Cunha, J{\'a}come and Fernandes, Jo{\~a}o Paulo and Saraiva, Jo{\~a}o} } @booklet {tr_evolution10, title = {Type-Safe Evolution of Spreadsheets}, number = {DI-CCTC-10-09}, year = {2010}, note = {

n/a

}, publisher = {CCTC, Departamento de Inform{\'a}tica, Universidade do Minho}, abstract = {

Spreadsheets are notoriously error-prone. To help avoid the introduction of errors when changing spreadsheets, models that capture the structure and inter-dependencies 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. Coupled transformation of models and instances are supported by the 2LT platform and have been applied for transformation of algebraic datatypes, XML schemas, and relational database models. We have extended 2LT to spreadsheet evolution. We have designed an appropriate representation of spreadsheet models, including the fundamental notions of formul{\ae}, references, and blocks of cells. For these models and their instances, we have designed coupled transformation rules that cover specific spreadsheet evolution steps, such as extraction of a block of cells into a separate sheet or 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 that induce compound transformations at the instance level. With this approach, spreadsheet evolution can be made safe, even when model changes are involved.

}, keywords = {Haskell, Software Evolution, Spreadsheets, Type-Safe}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/tr_evolution.pdf}, author = {Cunha, J{\'a}come and Visser, Joost and Tiago Alves and Saraiva, Jo{\~a}o} } @conference {conf/vl/CunhaSV09, title = {Discovery-Based Edit Assistance for Spreadsheets}, booktitle = {Proceedings of the 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)}, series = {VLHCC {\textquoteright}09}, year = {2009}, note = {

n/a

}, pages = {233{\textendash}237}, publisher = {IEEE Computer Society}, organization = {IEEE Computer Society}, address = {Washington, DC, USA}, abstract = {

Spreadsheets can be viewed as a highly flexible end-users programming environment which enjoys wide-spread adoption. But spreadsheets lack many of the structured programming concepts of regular programming paradigms. In particular, the lack of data structures in spreadsheets may lead spreadsheet users to cause redundancy, loss, or corruption of data during edit actions. In this paper, we demonstrate how implicit structural properties of spreadsheet data can be exploited to offer edit assistance to spreadsheet users. Our approach is based on the discovery of functional dependencies among data items which allow automatic reconstruction of a relational database schema. From this schema, new formulas and visual objects are embedded into the spreadsheet to offer features for auto-completion, guarded deletion, and controlled insertion. Schema discovery and spreadsheet enhancement are carried out automatically in the background and do not disturb normal user experience.

}, keywords = {Edit Assitance, Haskell, Spreadsheets}, isbn = {978-1-4244-4876-0}, doi = {\url{http://dx.doi.org/10.1109/VLHCC.2009.5295255}}, url = {http://dx.doi.org/10.1109/VLHCC.2009.5295255}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/vl-hcc09.pdf}, author = {Cunha, J{\'a}come and Saraiva, Jo{\~a}o and Visser, Joost} } @conference {conf/pepm/CunhaSV09, title = {From Spreadsheets to Relational Databases and Back}, booktitle = {Proceedings of the 2009 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation}, series = {PEPM {\textquoteright}09}, year = {2009}, note = {

n/a

}, pages = {179{\textendash}188}, publisher = {ACM}, organization = {ACM}, address = {New York, NY, USA}, abstract = {

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 bidirectional transformations we can map such database back to an optimized spreadsheet. We have implemented the data refinement rules and we have constructed tools to manipulate, optimize and refactor Excel-like spreadsheets.

}, keywords = {Bidirectional Transformations, Data Migration, functional programming, Haskell, Spreadsheets, Type-Safe}, isbn = {978-1-60558-327-3}, doi = {\url{http://doi.acm.org/10.1145/1480945.1480972}}, url = {http://doi.acm.org/10.1145/1480945.1480972}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/pepm09.pdf}, author = {Cunha, J{\'a}come and Saraiva, Jo{\~a}o and Visser, Joost} } @conference {conf/sigsoft/BarbosaCV07, title = {A Type-Level Approach to Component Prototyping}, booktitle = {International Workshop on Synthesis and Analysis of Component Connectors: in Conjunction with the 6th ESEC/FSE Joint Meeting}, series = {SYANCO {\textquoteright}07}, year = {2007}, note = {

n/a

}, pages = {23{\textendash}36}, publisher = {ACM}, organization = {ACM}, address = {New York, NY, USA}, abstract = {

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{\textquoteright}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{\textquoteright}s strong type system.

}, keywords = {Automata, coalgebra, combinator library, Computation by Abstract Devices, design, Design Tools and Techniques, Haskell, Languages, mealy machine, Models of Computation, software engineering, Software Libraries, Theory, type-level programming, verification}, isbn = {978-1-59593-720-9}, doi = {\url{http://doi.acm.org/10.1145/1294917.1294920}}, url = {http://doi.acm.org/10.1145/1294917.1294920}, attachments = {https://docentes.fct.unl.pt/sites/default/files/jmc-cunha/files/syanco07.pdf}, author = {Barbosa, Lu{\'\i}s and Cunha, J{\'a}come and Visser, Joost} }