Publications

Export 61 results:
Sort by: Author Title Type [ Year  (Desc)]
Submitted
Analyzing and Classifying Energy Consumption in Android Applications (in preparation), Couto, Marco, Cunha Jácome, Fernandes João P., Pereira Rui, and Saraiva João , (Submitted) paper.pdf
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
Memoization for Saving Energy in Android Applications: When and how to di it, Pinto, Adriano, Couto Marco, and Cunha Jácome , (Submitted) Abstractpaper.pdf

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

A Structured Approach to Document Spreadsheets (in preparation), Cunha, Jácome, and Canteiro Diogo , (Submitted) jvlc.pdf
2017
Products go Green: Worst-Case Energy Consumption in Software Product Lines, Couto, Marco, Borba Paulo, Cunha Jácome, Fernandes João P., Pereira Rui, and Saraiva João , 21st International Systems and Software Product Line Conference, Sept 25-29, Sevilla, Spain, (2017) paper.pdf
Energy Efficiency across Programming Languages: How Do Energy, Time, and Memory Relate?, Pereira, Rui, Couto Marco, Ribeiro Francisco, Rua Rui, Cunha Jácome, Fernandes João P., and Saraiva João , 10th ACM SIGPLAN International Conference on Software Language Engineering (SLE’17), 23-24 October, Vancouver, Canada, (2017) paper.pdf
Systematic Spreadsheet Construction Processes, Mendes, Jorge, Cunha Jácome, Duarte Francisco, Engels Gregor, Saraiva João, and Sauer Stefan , IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 11-14 Oct., Raleigh, North Carolina, USA, (2017) paper.pdf
Helping Programmers Improve the Energy Efficiency of Source Code (Abstract/Poster), Pereira, Rui, Carção Tiago, Couto Marco, Cunha Jácome, Fernandes João P., and Saraiva João , Proceedings of the 39th International Conference on Software Engineering (ICSE 2017), Buenos Aires, Argentina, (2017) paper.pdfpostera3.pdf
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
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
2016
Static Energy Consumption Analysis in Variability Systems, Couto, Marco, Cunha Jácome, Fernandes João Paulo, Pereira Rui, and Saraiva João Alexandre , 2nd Green in Software Engineering Workshop (GInSEng’16), an event of the 4th International Conference on ICT for Sustainability (ICT4S), 29 Aug. - 1 Sep., Amsterdam, The Netherlands, (2016) Abstractginseng_2016_paper_1-2.pdf

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.

The Influence of the Java Collection Framework on Overall Energy Consumption, Pereira, Rui, Couto Marco, Saraiva João, Cunha Jácome, and Fernandes João P. , 5th International Workshop on Green and Sustainable Software (ICSE 2016), 15-21, p.–, (2016) Abstractgreens.pdf

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.

Automatically Inferring Models from Spreadsheets, Cunha, Jácome, Erwig Martin, Mendes Jorge, and Saraiva João , Automated Software Engineering (ASE), Volume 23, Issue 3, p.361-392, (2016) Abstractase14.pdfWebsite

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.

Evaluating Refactorings for Spreadsheet Models, Cunha, Jácome, Fernandes João Paulo, Mendes Jorge, Pereira Rui, Saraiva João Alexandre, and Martins Pedro , Journal of Systems and Software, Volume 118, p.234-250, (2016) Abstractmain.pdf

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.

Evolução Controlada de Arquitecturas de Serviços Web, Campinhos, João, Seco João Costa, and Cunha Jácome , (2016) poster6.1.pdfmain.pdf
Modeling the Impact of UAVs in Sustainability, Conejero, José, Brito Isabel, Moreira Ana, Cunha Jácome, and Araújo João , 5th International Workshop on Requirements Engineering for Sustainable Systems (RE4SuSy) @RE16, Beijing, China, (2016) 2016-modeling-impact.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
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
2015
GreenDroid: A Tool for Analysing Power Consumption in the Android Ecosystem, Couto, Marco, Cunha Jácome, and Fernandes João Paulo , Proceedings of the 13th International Conference Informatics’2015, Propad, Slovakia, p.73-78, (2015) informatics2015.pdf
SpreadsheetDoc: An Excel Add-in for Documenting Spreadsheets, Canteiro, Diogo, and Cunha Jácome , Proceedings of the 6th National Symposium of Informatics (INForum’15), Covilhã, Portugal, (2015) inforum2015.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.

2014
Design and Implementation of Queries for Model-Driven Spreadsheets, Cunha, Jácome, Fernandes João Paulo, Mendes Jorge, Pereira Rui, and Saraiva João , Central European Functional Programming School - 5th Summer School, CEFP 2013, Revised Selected Papers, July, Heidelberg, (2014) Abstractdsl13_query.pdf

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.

Spreadsheet Engineering, Cunha, Jácome, Fernandes João Paulo, and Saraiva João , Central European Functional Programming School - 5th Summer School, CEFP 2013, Revised Selected Papers, July, Springer, Heidelberg, (2014) Abstractdsl13_notes.pdf

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.

Detecting Anomalous Energy Consumption in Android Applications, Carção, Tiago, Couto Marco, Cunha Jácome, Fernandes João Paulo, and Saraiva João , Proceedings of the 18th Brazilian Symposium on Programming Languages, p.77-91, (2014) Abstractsblp14.pdf

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.

Embedding Model-Driven Spreadsheet Queries in Spreadsheet Systems, Cunha, Jácome, Fernandes João Paulo, Mendes Jorge, Pereira Rui, and Saraiva João , Proceedings of the 2014 IEEE Symposium on Visual Languages and Human-Centric Computing, Washington, DC, USA, p.151-154, (2014) Abstractvlhcc14.pdf

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.