Cookies
Usamos cookies para melhorar nosso site e a sua experiência. Ao continuar a navegar no site, você aceita a nossa política de cookies. Ver mais
Aceitar Rejeitar
  • Menu
Sobre
Download foto HD

Sobre

João Saraiva é Professor Auxiliar no Departmento de Informática da Universidade do Minho em Braga, Portugal, e um investigador no  HASLab/INESC TEC. Ele obteve o grau de Mestre pela University do Minho em 1993 e o Doutoramento em Ciências da Computação pela Universidade de Utreque, Holanda em 1999. As suas maiores contribuições científicas são nas áreas de linguagens de programação, análise e transformação de programas  e na programação funcional.  Ele foi supervisor de 4 projetos de  PostDoc (financiados pela FCT), 8 projetos de doutoramento (5 concluidos e 3 em execução)  e mais de 30  teses de Mestrado  (Pos-Bologna). Ele publicou mais de 80  atigos científicos (scopus)  em conferências e revistas. Ele foi membro de mais de 60 comites de programa de eventos internacionais e ainda na avaliação de projetos de 5 agências científicas:  ANII (Uruguai), FRS-FNRS (Belgica), NWO (Holanda), FWF (Austria), e FCT (Portugal).

Ele tem experiências na participação e coordenação de projetos de investigação nas suas área de investigação, quer a nível nacional  (projectos financiados pela FCT: PURe, IVY, AMADEUS, CROSS, SSaaPP, AutoSeer, FATBIT, and GreenSwLab), quer a nível internacional com projetos financiados pela  EPSRC (UK), FLAD/NSF (USA) a pela União Europeia.

João Saraiva é um dos fundadores da pretigiada escola  verão  GTTSE - Grand Timely Topics in Software Engineering (inicialmente designada Generative and Transformational Techniques in Software Engineering), que co-organizou em  2005, 2007, 2009, 2011, and 2015 (volumes 4143, 5235, 6491, and 7680 of LNCS - Tutorial by Springer-Verlag) em  Braga. Ele foi o organizador principal  ETAPS'07, The European Joint Conferences on Theory and Practice of Software, em Braga em 2007,  e um membro do seu comité científico (2007-2012).

Tópicos
de interesse
Detalhes

Detalhes

  • Nome

    João Alexandre Saraiva
  • Cargo

    Investigador Sénior
  • Desde

    01 novembro 2011
  • Nacionalidade

    Portugal
  • Contactos

    +351253604440
    joao.a.saraiva@inesctec.pt
001
Publicações

2020

SPELLing out energy leaks: Aiding developers locate energy inefficient code

Autores
Pereira, R; Carcao, T; Couto, M; Cunha, J; Fernandes, JP; Saraiva, J;

Publicação
Journal of Systems and Software

Abstract
Although hardware is generally seen as the main culprit for a computer's energy usage, software too has a tremendous impact on the energy spent. Unfortunately, there is still not enough support for software developers so they can make their code more energy-aware. This paper proposes a technique to detect energy inefficient fragments in the source code of a software system. Test cases are executed to obtain energy consumption measurements, and a statistical method, based on spectrum-based fault localization, is introduced to relate energy consumption to the source code. The result of our technique is an energy ranking of source code fragments pointing developers to possible energy leaks in their code. This technique was implemented in the SPELL toolkit. Finally, in order to evaluate our technique, we conducted an empirical study where we asked participants to optimize the energy efficiency of a software system using our tool, while also having two other groups using no tool assistance and a profiler, respectively. We showed statistical evidence that developers using our technique were able to improve the energy efficiency by 43% on average, and even out performing a profiler for energy optimization. © 2019 Elsevier Inc.

2020

Energy Refactorings for Android in the Large and in the Wild

Autores
Couto, M; Saraiva, J; Fernandes, JP;

Publicação
2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER)

Abstract

2020

Expressing disambiguation filters as combinators

Autores
Macedo, JN; Saraiva, J;

Publicação
SAC '20: The 35th ACM/SIGAPP Symposium on Applied Computing, online event, [Brno, Czech Republic], March 30 - April 3, 2020

Abstract

2020

Unifying Parsing and Reflective Printing for Fully Disambiguated Grammars

Autores
Zhu, ZR; Ko, HS; Zhang, YZ; Martins, P; Saraiva, J; Hu, ZJ;

Publicação
NEW GENERATION COMPUTING

Abstract
Language designers usually need to implement parsers and printers. Despite being two closely related programs, in practice they are often designed separately, and then need to be revised and kept consistent as the language evolves. It will be more convenient if the parser and printer can be unified and developed in a single program, with their consistency guaranteed automatically. Furthermore, in certain scenarios (like showing compiler optimisation results to the programmer), it is desirable to have a more powerful reflective printer that, when an abstract syntax tree corresponding to a piece of program text is modified, can propagate the modification to the program text while preserving layouts, comments, and syntactic sugar. To address these needs, we propose a domain-specific language BiYacc, whose programs denote both a parser and a reflective printer for a fully disambiguated context-free grammar. BiYacc is based on the theory of bidirectional transformations, which helps to guarantee by construction that the generated pairs of parsers and reflective printers are consistent. Handling grammatical ambiguity is particularly challenging: we propose an approach based on generalised parsing and disambiguation filters, which produce all the parse results and (try to) select the only correct one in the parsing direction; the filters are carefully bidirectionalised so that they also work in the printing direction and do not break the consistency between the parsers and reflective printers. We show that BiYacc is capable of facilitating many tasks such as Pombrio and Krishnamurthi's 'resugaring', simple refactoring, and language evolution.

2019

Memoized zipper-based attribute grammars and their higher order extension

Autores
Fernandes, JP; Martins, P; Pardo, A; Saraiva, J; Viera, M;

Publicação
Science of Computer Programming

Abstract
Attribute grammars are a powerfull, well-known formalism to implement and reason about programs which, by design, are conveniently modular. In this work we focus on a state of the art zipper-based embedding of classic attribute grammars and higher-order attribute grammars. We improve their execution performance through controlling attribute (re)evaluation by means of memoization techniques. We present the results of our optimizations by comparing their impact in various implementations of different, well-studied, attribute grammars and their Higher-Order extensions. © 2018 Elsevier B.V.

Teses
supervisionadas

2019

Green Software in the Large: Energy-driven Techniques, Tools and Repositories

Autor
Rui António Ramada Rua

Instituição
UP-FCUP

2019

Explaining Software Faults in Source Code

Autor
Francisco José Torres Ribeiro

Instituição
UP-FCUP

2019

Energy-aware Software Product Lines

Autor
Marco Rafael Linhares Couto

Instituição
UP-FCUP

2019

Automatic generation of program executions

Autor
José Nuno Castro de Macedo

Instituição
UP-FCUP

2018

Energyware Engineering: Techniques and Tools for Green Software Development

Autor
Rui Alexandre Afonso Pereira

Instituição
Outra