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 Ademar Aguiar

2015

DRIVER - A platform for collaborative framework understanding

Autores
Flores, N; Aguiar, A;

Publicação
2015 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE)

Abstract
Application frameworks are a powerful technique for large-scale reuse but often very hard to learn from scratch. Although good documentation helps on reducing the learning curve, it is often found lacking, and costly, as it needs to attend different audiences with disparate learning needs. When code and documentation prove insufficient, developers turn to their network of experts. The lack of awareness about the experts, interrupting the wrong people, and experts unavailability are well known hindrances to effective collaboration. This paper presents the DRIVER platform, a collaborative learning environment for framework users to share their knowledge. It provides the documentation on a wiki, where the learning paths of the community of learners can be captured, shared, rated, and recommended, thus tapping into the collective knowledge of the community of framework users. The tool can be obtained at http://bit.ly/driverTool.

2014

The concept of "ba" applied to software knowledge

Autores
Flores, N; Aguiar, A; Ferreira, HS;

Publicação
Proceedings of the 7th International Workshop on Cooperative and Human Aspects of Software Engineering, CHASE 2014, Hyderabad, India, June 2-3, 2014

Abstract
Software development is a knowledge-intensive activity. Software products usually start as a simple idea, or a vision, and then progress towards a final deliverable product. Along this evolution, there is a lot of knowledge that is captured, organized, and shared, leading to new knowledge, both as a whole and within specific development activities. The concept of "Ba" provides a foundation to advance individual and collective knowledge, which describes knowledge creation as a spiral involving tacit and explicit knowledge: the Socialization, Externalization, Combination, Internalization model (a.k.a. SECI model). By applying this foundation to software development, we found issues that may hinder the effective knowledge management cycle. In this paper, we present a vision and a set of requirements for tools to overcome such issues and therefore better support the whole process of software knowledge evolution.

2013

Using roles to model crosscutting concerns

Autores
Barbosa, FS; Aguiar, A;

Publicação
Aspect-Oriented Software Development, AOSD '13, Fukuoka, Japan, March 24-29, 2013

Abstract
In object oriented languages the problem of crosscutting concerns, due to limitations in the composition mechanisms, is recurrent. In order to reduce this problem we propose to use roles as a way of composing classes that extends the Object Oriented approach and can be used to model crosscutting concerns. To support our approach we developed a role language that extends Java, while being compatible with existing virtual machines. As validation we conducted a case study using three open source systems. We identified crosscutting concerns in the systems and then modeled them using our role approach. Results show that roles are a viable option for modeling crosscutting concerns. Copyright © 2013 ACM.

2013

Using Roles as Units of Composition

Autores
Barbosa, F; Aguiar, A;

Publicação
EVALUATION OF NOVEL APPROACHES TO SOFTWARE ENGINEERING, ENASE 2012

Abstract
A single decomposition strategy cannot capture all aspects of a concept, so we need to extend Object Oriented Decomposition (today most used strategy). We propose roles as a way to compose classes that provides a modular way of capturing and reusing those concerns that fall outside a concept's main purpose, while being a natural extension of the OO paradigm. Roles have been used successfully to model the different views a concept provides and we want to bring that experience to the programming level. We discuss how to make roles modular and reusable. We also show how to compose classes with roles using JavaStage, our role supporting language. To validate our approach we developed generic and reusable roles for the Gang of Four patterns. We developed reusable roles for 10 out of 23 patterns. We also were able to use some of these roles in JHotDraw framework.

2013

Removing Code Duplication with Roles

Autores
Barbosa, FS; Aguiar, A;

Publicação
IEEE 12th International Conference on Intelligent Software Methodologies, Tools and Techniques, SoMeT 2013, Budapest, Hungary, September 22-24, 2013

Abstract
The existence of replicated code in a system makes that system harder to maintain and evolve. To remove replicated code the usual way is to use refactorings. However there are always clones that cannot be removed by refactorings alone. Some are due to lack of composition mechanisms in the underlying programming language. We propose the use of roles to remove such clones since roles provide a finer degree of composition. We sketch four role refactorings to remove code clones and apply them in a case study using the JHotDraw framework. Results show that roles have a positive impact in clone reduction as they were able to remove almost all clones traditional refactorings could not. © 2013 IEEE.

2013

Comparing Two Class Composition Approaches

Autores
Barbosa, F; Aguiar, A;

Publicação
EVALUATION OF NOVEL APPROACHES TO SOFTWARE ENGINEERING, ENASE 2013

Abstract
The presence of code replication can be a consequence of a lack in the composition mechanisms where classes are insufficient to reuse the code that is replicated. To extend the reuse of pieces of code some proposals have been made that try to compose classes using those pieces of code. In this paper we compare two of those approaches: Traits and Roles. We compare their compositions mechanisms and how we can use them to reduce code replication. To study the extent to which they reduce code replication we conducted a case study using the JHotDraw framework where we detect and remove code replication using each technique. Results from the case study show that roles have an advantage over traits, as they are capable of removing more code replication.

  • 1
  • 15