Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Nélio Cacho is active.

Publication


Featured researches published by Nélio Cacho.


international conference on software engineering | 2008

Evolving software product lines with aspects: an empirical study on design stability

Eduardo Figueiredo; Nélio Cacho; Cláudio Sant'Anna; Mario Monteiro; Uirá Kulesza; Alessandro Garcia; Sérgio Soares; Fabiano Cutigi Ferrari; Safoora Shakil Khan; Fernando Castor Filho; Francisco Dantas

Software product lines (SPLs) enable modular, large-scale reuse through a software architecture addressing multiple core and varying features. To reap the benefits of SPLs, their designs need to be stable. Design stability encompasses the sustenance of the product lines modularity properties in the presence of changes to both the core and varying features. It is usually assumed that aspect-oriented programming promotes better modularity and changeability of product lines than conventional variability mechanisms, such as conditional compilation. However, there is no empirical evidence on its efficacy to prolong design stability of SPLs through realistic development scenarios. This paper reports a quantitative study that evolves two SPLs to assess various design stability facets of their aspect-oriented implementations. Our investigation focused upon a multi-perspective analysis of the evolving product lines in terms of modularity, change propagation, and feature dependency. We have identified a number of scenarios which positively or negatively affect the architecture stability of aspectual SPLs.


european conference on object oriented programming | 2007

On the impact of aspectual decompositions on design stability: an empirical study

Phil Greenwood; Thiago Tonelli Bartolomei; Eduardo Figueiredo; Marcos Dósea; Alessandro Garcia; Nélio Cacho; Cláudio Sant'Anna; Sérgio Soares; Paulo Borba; Uirá Kulesza; Awais Rashid

Although one of the main promises of aspect-oriented (AO) programming techniques is to promote better software changeability than objectoriented (OO) techniques, there is no empirical evidence on their efficacy to prolong design stability in realistic development scenarios. For instance, no investigation has been performed on the effectiveness of AO decompositions to sustain overall system modularity and minimize manifestation of ripple-effects in the presence of heterogeneous changes. This paper reports a quantitative case study that evolves a real-life application to assess various facets of design stability of OO and AO implementations. Our evaluation focused upon a number of system changes that are typically performed during software maintenance tasks. They ranged from successive re-factorings to more broadly-scoped software increments relative to both crosscutting and non-crosscutting concerns. The study included an analysis of the application in terms of modularity, change propagation, concern interaction, identification of ripple-effects and adherence to well-known design principles.


foundations of software engineering | 2006

Exceptions and aspects: the devil is in the details

Fernando Castor Filho; Nélio Cacho; Eduardo Figueiredo; Raquel Maranhão; Alessandro Garcia; Cecília M. F. Rubira

It is usually assumed that the implementation of exception handling can be better modularized by the use of aspect-oriented programming (AOP). However, the trade-offs involved in using AOP with this goal are not well-understood. This paper presents an in-depth study of the adequacy of the AspectJ language for modularizing exception handling code. The study consisted in refactoring existing applications so that the code responsible for implementing heterogeneous error handling strategies was moved to separate aspects. We have performed quantitative assessments of four systems - three object-oriented and one aspect-oriented - based on four quality attributes, namely separation of concerns, coupling, cohesion, and conciseness. Our investigation also included a multi-perspective analysis of the refactored systems, including (i) the reusability of the aspectized error handling code, (ii) the beneficial and harmful aspectization scenarios, and (iii) the scalability of AOP to aspectize exception handling in the presence of other crosscutting concerns.


aspect-oriented software development | 2006

Composing design patterns: a scalability study of aspect-oriented programming

Nélio Cacho; Cláudio Sant'Anna; Eduardo Figueiredo; Alessandro Garcia; Thaís Vasconcelos Batista; Carlos José Pereira de Lucena

Pattern composition has been shown as a challenge to applying design patterns in real software systems. One of the main problems is that multiple design patterns in a system are not limited to affect only the application concerns. They also crosscut each other in multiple heterogeneous ways so that their separation and composition are far from being trivial. In this context, it is of paramount importance to systematically verify whether aspect-oriented programming (AOP) supports improved composability of design patterns. This paper presents a systematic investigation on how AOP scales up to deal with modularization of pattern-specific concerns in the presence of pattern interactions. We have made both qualitative and quantitative assessments of 62 pairwise compositions taken from 3 medium-sized systems implemented in Java and AspectJ programming languages. Our analysis has also included the evaluation of compositions involving more than two patterns. The assessment was based on four fundamental software attributes, namely separation of concerns, coupling, cohesion, and conciseness.


international conference on software engineering | 2010

An exploratory study of fault-proneness in evolving aspect-oriented programs

Fabiano Cutigi Ferrari; Rachel Burrows; Otávio Augusto Lazzarini Lemos; Alessandro Garcia; Eduardo Figueiredo; Nélio Cacho; Frederico Lopes; Nathalia Temudo; Liana Silva; Sérgio Soares; Awais Rashid; Paulo Cesar Masiero; Thaís Vasconcelos Batista; José Carlos Maldonado

This paper presents the results of an exploratory study on the fault-proneness of aspect-oriented programs. We analysed the faults collected from three evolving aspect-oriented systems, all from different application domains. The analysis develops from two different angles. Firstly, we measured the impact of the obliviousness property on the fault-proneness of the evaluated systems. The results show that 40% of reported faults were due to the lack of awareness among base code and aspects. The second analysis regarded the fault-proneness of the main aspect-oriented programming (AOP) mechanisms, namely pointcuts, advices and intertype declarations. The results indicate that these mechanisms present similar fault-proneness when we consider both the overall system and concern-specific implementations. Our findings are reinforced by means of statistical tests. In general, this result contradicts the common intuition stating that the use of pointcut languages is the main source of faults in AOP.


Proceedings of the 2006 international workshop on Software engineering for large-scale multi-agent systems | 2006

Context-aware exception handling in mobile agent systems: the MoCA case

Karla Damasceno; Nélio Cacho; Alessandro Garcia; Alexander B. Romanovsky; Carlos José Pereira de Lucena

Handling erroneous conditions in context-aware mobile agent systems is challenging due to their intrinsic characteristics: openness, lack of structuring, mobility, asynchrony, and increased unpredictability. Even though several context-aware middleware systems support now the development of mobile agent-based applications, they rarely provide explicit and adequate features for context-aware exception handling. This paper reports our experience in implementing error handling strategies in some prototype context-aware collaborative applications built with the MoCA (Mobile Collaboration Architecture) system. MoCA is a publish-subscribe middleware supporting the development of collaborative mobile applications by incorporating explicit services to empower software agents with context-awareness. We propose a novel context-aware exception handling mechanism and discuss some lessons learned during its integration in the MoCA infrastructure. The discussions include how to use other emerging implementation techniques, such as aspect-oriented programming, to address the limitations of classical publish-subscribe mechanisms identified in our study.


software product lines | 2012

Exploiting software product lines to develop cloud computing applications

Everton Cavalcante; André Almeida; Thaís Vasconcelos Batista; Nélio Cacho; Frederico Lopes; Flávia Coimbra Delicato; Thiago S. Sena; Paulo F. Pires

With the advance of the Cloud Computing paradigm, new challenges in terms of models, tools, and techniques to support developers to design, build and deploy complex software systems that make full use of the cloud technology arise. In the heterogeneous scenario of this new paradigm, the development of applications using cloud services becomes hard, and the software product lines (SPL) approach is potentially promising for this context since specificities of the cloud platforms, such as services heterogeneity, pricing model, and other aspects can be catered as variabilities to core features. In this perspective, this paper (i) proposes a seamless adaptation of the SPL-based development to include important features of cloud-based applications, and (ii) reports the experience of developing HW-CSPL, a SPL for the Health Watcher (HW) System, which allows citizens to register complaints and consult information regarding the public health system of a city. Several functionalities of this system were implemented using different Cloud Computing platforms, and run time specificities of this application deployed on the cloud were analyzed, as well as other information such as change impact and pricing.


international conference on software engineering | 2014

Trading robustness for maintainability: an empirical study of evolving c# programs

Nélio Cacho; Thiago César; Thomas Filipe; Eliezio Soares; Arthur Cassio; Rafael Souza; Israel Garcia; Eiji Adachi Barbosa; Alessandro Garcia

Mainstream programming languages provide built-in exception handling mechanisms to support robust and maintainable implementation of exception handling in software systems. Most of these modern languages, such as C#, Ruby, Python and many others, are often claimed to have more appropriated exception handling mechanisms. They reduce programming constraints on exception handling to favor agile changes in the source code. These languages provide what we call maintenance-driven exception handling mechanisms. It is expected that the adoption of these mechanisms improve software maintainability without hindering software robustness. However, there is still little empirical knowledge about the impact that adopting these mechanisms have on software robustness. This paper addressed this gap by conducting an empirical study aimed at understanding the relationship between changes in C# programs and their robustness. In particular, we evaluated how changes in the normal and exceptional code were related to exception handling faults. We applied a change impact analysis and a control flow analysis in 119 versions of 16 C# programs. The results showed that: (i) most of the problems hindering software robustness in those programs are caused by changes in the normal code, (ii) many potential faults were introduced even when improving exception handling in C# code, and (iii) faults are often facilitated by the maintenance-driven flexibility of the exception handling mechanism. Moreover, we present a series of change scenarios that decrease the program robustness.


international conference on software maintenance | 2014

How Does Exception Handling Behavior Evolve? An Exploratory Study in Java and C# Applications

Nélio Cacho; Eiji Adachi Barbosa; Juliana Araújo; Frederico Pranto; Alessandro Garcia; Thiago César; Eliezio Soares; Arthur Cassio; Thomas Filipe; Israel Garcia

Exception handling mechanisms (EHM) were conceived as a means to improve maintainability and reliability of programs that have to deal with exceptional situations. Amongst the different implementations of built-in EHM, we classify them in two main categories: reliability-driven and maintenance-driven. Some programming languages, such as Java, provide built-in exception handling mechanisms that promote reliability-driven EHMs. Maintenance-driven EHMs, on the other hand, promote software maintainability by not forcing developers to specify exception handling constraints. Most of modern languages, such as C#, Ruby, Python and many others support this approach. Developers usually have to choose between maintainability-driven and reliability-driven approaches to structure exception handling in their applications. However, there is still little empirical knowledge about the impact that adopting these mechanisms have on software robustness and maintenance. This paper addressed this gap by conducting an empirical study aimed at understanding the relationship between changes in Java and C# programs and their robustness. In particular, we evaluated how changes in the normal and exceptional code were related to exception handling faults. We applied a change impact analysis and a control flow analysis in 116 versions of 16 C# programs and 112 versions of 16 Java programs.


international conference on software engineering | 2007

Towards Aspect-Oriented Programming for Context-Aware Systems: A Comparative Study

Francisco Dantas; Thaís Vasconcelos Batista; Nélio Cacho

Development of modular context-aware applications has been a deep challenge to software engineers. One of the main reasons is the crosscutting nature of certain context-awareness concerns. Specific distributed aspect-oriented programming (AOP) techniques have recently emerged as a promising candidate to address these shortcomings. This paper reports our ongoing effort on the definition of relevant criteria to perform a comparative analysis of five emerging AOP approaches for context-aware systems. We evaluate to what extent their specialized linguistic mechanisms scale to distributed systems, in particular context-aware mobile systems.

Collaboration


Dive into the Nélio Cacho's collaboration.

Top Co-Authors

Avatar

Thaís Vasconcelos Batista

Federal University of Rio Grande do Norte

View shared research outputs
Top Co-Authors

Avatar

Frederico Lopes

Federal University of Rio Grande do Norte

View shared research outputs
Top Co-Authors

Avatar

Alessandro Garcia

Pontifical Catholic University of Rio de Janeiro

View shared research outputs
Top Co-Authors

Avatar

Eduardo Figueiredo

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar

Everton Cavalcante

Federal University of Rio Grande do Norte

View shared research outputs
Top Co-Authors

Avatar

Carlos José Pereira de Lucena

Pontifical Catholic University of Rio de Janeiro

View shared research outputs
Top Co-Authors

Avatar

Cláudio Sant'Anna

Federal University of Bahia

View shared research outputs
Top Co-Authors

Avatar

Fernando Castor

Federal University of Pernambuco

View shared research outputs
Top Co-Authors

Avatar

Mickael Figueredo

Federal University of Rio Grande do Norte

View shared research outputs
Top Co-Authors

Avatar

Sérgio Soares

Federal University of Pernambuco

View shared research outputs
Researchain Logo
Decentralizing Knowledge