Cookies
O website necessita de alguns cookies e outros recursos semelhantes para funcionar. Caso o permita, o INESC TEC irá utilizar cookies para recolher dados sobre as suas visitas, contribuindo, assim, para estatísticas agregadas que permitem melhorar o nosso serviço. Ver mais
Aceitar Rejeitar
  • Menu
Publicações

Publicações por João Alexandre Saraiva

2017

Energy Consumption Measurement of C/C++ Programs Using Clang Tooling

Autores
Santos, M; Saraiva, J; Porkoláb, Z; Krupp, D;

Publicação
Proceedings of the Sixth Workshop on Software Quality Analysis, Monitoring, Improvement, and Applications, Belgrade, Serbia, September 11-13, 2017.

Abstract
The green computing has an important role in today's software technology. Either speaking about small IoT devices or large cloud servers, there is a generic requirement of minimizing energy consumption. For this purpose, we usually first have to identify which parts of the system is responsible for the critical energy peaks. In this paper we suggest a new method to measure the energy consumption based on Low Level Virtual Machine (LLVM)/Clang tooling. The method has been tested on 2 open source systems and the output is visualized via the well-known Kcachegrind tool. © Copyright 2017 by the paper's authors.

2016

Towards an Automated Classification of Spreadsheets

Autores
Mendes, J; Do, KN; Saraiva, J;

Publicação
SOFTWARE TECHNOLOGIES: APPLICATIONS AND FOUNDATIONS (STAF 2016)

Abstract
Many spreadsheets in the wild do not have documentation nor categorization associated with them. This makes difficult to apply spreadsheet research that targets specific spreadsheet domains such as financial or database. We introduce with this paper a methodology to automatically classify spreadsheets into different domains. We exploit existing data mining classification algorithms using spreadsheet-specific features. The algorithms were trained and validated with cross-validation using the EUSES corpus, with an up to 89% accuracy. The best algorithm was applied to the larger Enron corpus in order to get some insight from it and to demonstrate the usefulness of this work.

2013

Multiple intermediate structure deforestation by shortcut fusion

Autores
Pardo, A; Fernandes, JP; Saraiva, J;

Publicação
Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

Abstract
Shortcut fusion is a well-known optimization technique for functional programs. Its aim is to transform multi-pass algorithms into single pass ones, achieving deforestation of the intermediate structures that multi-pass algorithms need to construct. Shortcut fusion has already been extended in several ways. It can be applied to monadic programs, maintaining the global effects, and also to obtain circular and higher-order programs. The techniques proposed so far, however, only consider programs defined as the composition of a single producer with a single consumer. In this paper, we analyse shortcut fusion laws to deal with programs consisting of an arbitrary number of function compositions. © 2013 Springer-Verlag.

2017

Systematic Spreadsheet Construction Processes

Autores
Mendes, J; Cunha, J; Duarte, F; Engels, G; Saraiva, J; Sauer, S;

Publicação
2017 IEEE SYMPOSIUM ON VISUAL LANGUAGES AND HUMAN-CENTRIC COMPUTING (VL/HCC)

Abstract
Spreadsheets are used in professional business contexts to make decisions based on collected data. Usually, these spreadsheets are developed by end users in an ad-hoc way. Thus, the business logic of a concrete spreadsheet is not explicit to end users, making its correctness hard to assess and users have to trust. We present an approach where structure and computational behavior of a spreadsheet are specified by a model with a process-like notation based on pre-defined functional spreadsheet services with typed interfaces. This enables a consistent construction process of a spreadsheet that comprises defining its structure and computational behavior as well as filling it with data and executing the defined computational behavior. Thus, concrete spreadsheets are equipped with a specification of their construction process. This supports their understanding and correct usage, even in case of legacy spreadsheets. The approach has been developed in cooperation with an industrial partner.

2015

Establishing Energy Consumption Plans for Green Star-Queries in Data Warehousing Systems

Autores
Belo, O; Goncalves, R; Saraiva, J;

Publicação
2015 IEEE INTERNATIONAL CONFERENCE ON DATA SCIENCE AND DATA INTENSIVE SYSTEMS

Abstract
During the last few years many initiatives were taken away in response to high levels of energy consumption verified in data centers. We all know that this is a critical issue nowadays. Many studies carried out raised a lot of concerns about the energy demands of data centers, discussing solutions to reduce it effectively without affecting their day-by-day operation. In this work we made a small contribution to help that. We studied in a data warehousing system how could be possible to establish an energy consumption plan for a star-query. With these plans, we can establish in each phase of a star-query execution the energy consumed by all the elementary tasks that were executed to satisfy it. With this purpose in mind, and motivated by the usual methods and heuristics used on query execution optimization, we designed and developed a method to estimate the energy consumption of each element (operator) integrated in the execution plan of a query at compile time. With it, we also build up the corresponding energy consumption used on executing the star-query, taking into consideration the characteristics of the computational platforms used for.

2015

BiYacc: Roll your parser and reflective printer into one

Autores
Zhu, Z; Ko, HS; Martins, P; Saraiva, J; Hu, Z;

Publicação
CEUR Workshop Proceedings

Abstract
Language designers usually need to implement parsers and printers. Despite being two related programs, in practice they are designed and implemented separately. This approach has an obvious disadvantage: as a language evolves, both its parser and printer need to be separately revised and kept synchronised. Such tasks are routine but complicated and error-prone. To facilitate these tasks, we propose a language called BiYacc, whose programs denote both a parser and a printer. In essence, BiYacc is a domain-specific language for writing putback-based bidirectional transformations - the printer is a putback transformation, and the parser is the corresponding get transformation. The pairs of parsers and printers generated by BiYacc are thus always guaranteed to satisfy the usual round-trip properties. The highlight that distinguishes this reflective printer from others is that the printer - being a putback transformation - accepts not only an abstract syntax tree but also a string, and produces an updated string consistent with the given abstract syntax tree. We can thus make use of the additional input string, with mechanisms such as simultaneous pattern matching on the view and the source, to provide users with full control over the printing-strategies. Copyright © by the paper's authors. Copying permitted for private and academic purposes.

  • 7
  • 26