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 HASLab

2017

Type-Safe Evolution of Web Services

Autores
Campinhos, J; Seco, JC; Cunha, J;

Publicação
VACE@ICSE

Abstract
Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.

2017

Grand Timely Topics in Software Engineering

Autores
Cunha, J; Fernandes, JP; Lämmel, R; Saraiva, J; Zaytsev, V;

Publicação
Lecture Notes in Computer Science

Abstract

2017

Promoting entrepreneurship among informatics engineering students: insights from a case study

Autores
Fernandes, JM; Afonso, P; Fonte, V; Alves, V; Ribeiro, AN;

Publicação
EUROPEAN JOURNAL OF ENGINEERING EDUCATION

Abstract
Universities seek to promote entrepreneurship through effective education approaches, which need to be in permanent evolution. Nevertheless, the literature in entrepreneurship education lacks empirical evidence. This article discusses relevant issues related to promoting entrepreneurship in the software field, based on the experience of a 15-European Credit Transfer and Accumulation System course. This course seeks to instil in the students the recognition of the need to reconcile technical and business visions, organisational and commercial aspects, most of which have never been addressed previously. A series of semi-structured interviews made it possible to obtain relevant insights about the teaching-learning process underlying this course and its evolution over a seven-year period. Materials related with this course have been analysed, namely guidelines produced by the teachers and deliverables produced by the students. This article discusses the dimensions that were identified as fundamental for promoting entrepreneurship skills in the field of software, namely teamwork, project engagement, and contact with the market.

2017

Support for automatic refactoring of business logic

Autores
Fernandes, Tiago B.; Ribeiro, António Nestor; Nunes, David V.; Lourenço, Hugo R.; Santos, Luiz C.;

Publicação

Abstract
Software’s structure profoundly affects its development and maintenance costs. Poor software’s structure may lead to well-known design flaws, such as large modules or long methods. A possible ap- proach to reduce a module’s complexity is the Extract Method refactor- ing technique. This technique allows the decomposition of a large and complex method into smaller and simpler ones, while reducing the orig- inal method’s size and improving its readability and comprehension. The OutSystems platform is a low-code platform that allows the de- velopment of web and mobile applications that rely on a set of visual Domain-Specific Languages (DSLs). Even low-code languages when im- properly used can lead to software that has maintenance issues like long methods. Thus, the purpose of this paper is to present the research and devel- opment done to provide the OutSystems platform with a tool that au- tomatically suggests Extract Method refactoring opportunities. The re- search combines program slicing techniques with code complexity metrics to calculate the best refactoring opportunities that preserve programs’ functionality. The proposed approach was tested on typical OutSystems apps and was shown to be able to reduce the overall applications’ complexity.

2017

Towards new data management platforms for a DSO as market enabler - UPGRID Portugal demo

Autores
Alonso, A; Couto, R; Pacheco, H; Bessa, R; Gouveia, C; Seca, L; Moreira, J; Nunes, P; Matos, PG; Oliveira, A;

Publicação
CIRED - Open Access Proceedings Journal

Abstract
In the framework of the Horizon 2020 project UPGRID, the Portuguese demo is focused on promoting the exchange of smart metering data between the DSO and different stakeholders, guaranteeing neutrality, efficiency and transparency. The platform described in this study, named the Market Hub Platform, has two main objectives: (i) to guarantee neutral data access to all market agents and (ii) to operate as a market hub for the home energy management systems flexibility, in terms of consumption shift under dynamic retailing tariffs and contracted power limitation requests in response to technical problems. The validation results are presented and discussed in terms of scalability, availability and reliability.

2017

BiFluX: A Bidirectional Functional Update Language for XML

Autores
Zan, T; Pacheco, H; Ko, HS; Hu, Z;

Publicação
Inf. Media Technol.

Abstract
Different XML formats are widely used for data exchange and processing, being often necessary to mutually convert between them. Standard XML transformation languages, like XSLT or XQuery, are unsatisfactory for this purpose since they require writing a separate transformation for each direction. Existing bidirec- tional transformation languages mean to cover this gap, by allowing programmers to write a single program that denotes both transformations. However, they often 1) induce a more cumbersome programming style than their traditionally unidirectional relatives, to establish the link between source and target formats, and 2) offer limited configurability, by making implicit assumptions about how modifications to both formats should be translated that may not be easy to predict. This paper proposes a bidirectional XML update language called BiFluX (BIdirectional FunctionaL Updates for XML), inspired by the Flux XML update language. Our language adopts a novel bidirectional programming by update paradigm, where a program succinctly and precisely describes how to update a source document with a target document in an intuitive way, such that there is a unique "inverse" source query for each update program. BiFluX extends Flux with bidirectional actions that describe the con- nection between source and target formats. We introduce a core BiFluX language, and translate it into a formally verified bidirectional update language BiGUL to guarantee a BiFluX program is well-behaved.

  • 116
  • 261