Network


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

Hotspot


Dive into the research topics where Francisco Dantas is active.

Publication


Featured researches published by Francisco Dantas.


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.


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.


cluster computing and the grid | 2014

A Branch-and-Bound Algorithm for Autonomic Adaptation of Multi-cloud Applications

André Almeida; Francisco Dantas; Everton Cavalcante; Thaís Vasconcelos Batista

Adaptation is an important concern in cloud-based applications composed of services provided by different cloud providers since cloud services can suffer from Quality of Services(QoS) fluctuations. Other conditions that can also trigger an adaptation process at runtime are the unavailability of services or the violation of user-defined policies. Moreover, the detection and reaction on such changes must be done in an autonomic way, without the need of user intervention. This paper presents a dynamic adaptation approach for multi-cloud applications supported by a Branch-and-Bound (B&B) algorithm in order to optimize the adaptation process itself when selecting the services to be deployed within the application. Computational experiments comparing the B&B algorithm with another algorithm that evaluates all possible configurations for adapting an application showed that the B&B algorithm is faster than the previous version. This new algorithm brings benefits to the scalability of the adaptation process, which can deal with large configurations of multi-cloud applications composed by a plethora of cloud services.


brazilian symposium on software engineering | 2010

Software Reuse versus Stability: Evaluating Advanced Programming Techniques

Francisco Dantas; Alessandro Garcia

With system development becoming increasingly incremental, software reuse and stability stand out as two of the most desirable attributes of high-quality software. In this context, a key goal in contemporary software design is to simultaneously promote reuse and stability of the software modules. However, the achievement of this goal is far from trivial as it largely depends on the programming techniques being employed in the software implementation. While the use of a specific advanced mechanism can somehow contribute to modules’ reuse, it might also require developers to make various undesirable changes in their interfaces and implementation. In this context, there are a growing number of techniques for improving modularity, ranging from aspect-oriented and feature-oriented programming to composition filters. This paper presents an exploratory analysis of advanced programming techniques on how they make it possible to reach a better tradeoff of software reuse and stability. The evaluation was carried out based on 11 releases of 2 product lines, which were originally built to promote the stable reuse of common modules across different products. Our results revealed that a hybrid incarnation of feature-oriented and aspect-oriented programming seems to be the most promising programming technique. For instance, the combined use of virtual inner classes, mixin composition, and point cut-advice tended to promote product-line modules with both superior stability and reusability.


brazilian symposium on software engineering | 2009

Exception Flows Made Explicit: An Exploratory Study

Nélio Cacho; Francisco Dantas; Alessandro Garcia; Fernando Castor

Most of the exceptions exert a global design impact as they tend to flow through multiple module interfaces of a software system. Exception handling mechanisms in programming languages were originally proposed to improve the robustness and comprehension of error handling code. These mechanisms are traditionally based on the fundamental assumption that global exception flows should be always implicit. However, it has been empirically found that the implementation of global exception handling in real-life software projects tends to exhibit poor quality. This paper presents an exploratory study to assess the benefits and drawbacks of explicit exception flows (or exception channels), as opposed to implicit exception flows. The experiment design involved 15 participants using three alternative mechanisms for exception handling. Our analysis was driven by key indicators of software usability: (i) implementation time, (ii) number of uncaught exceptions, and (iii) number of incorrect answers by the participants.


acm symposium on applied computing | 2015

Dynamic decision-making based on NFR for managing software variability and configuration selection

André Almeida; Nelly Bencomo; Thaís Vasconcelos Batista; Everton Cavalcante; Francisco Dantas

Due to dynamic variability, identifying the specific conditions under which non-functional requirements (NFRs) are satisfied may be only possible at runtime. Therefore, it is necessary to consider the dynamic treatment of relevant information during the requirements specifications. The associated data can be gathered by monitoring the execution of the application and its underlying environment to support reasoning about how the current application configuration is fulfilling the established requirements. This paper presents a dynamic decision-making infrastructure to support both NFRs representation and monitoring, and to reason about the degree of satisfaction of NFRs during runtime. The infrastructure is composed of: (i) an extended feature model aligned with a domain-specific language for representing NFRs to be monitored at runtime; (ii) a monitoring infrastructure to continuously assess NFRs at runtime; and (iii) a flexible decision-making process to select the best available configuration based on the satisfaction degree of the NRFs. The evaluation of the approach has shown that it is able to choose application configurations that well fit user NFRs based on runtime information. The evaluation also revealed that the proposed infrastructure provided consistent indicators regarding the best application configurations that fit user NFRs. Finally, a benefit of our approach is that it allows us to quantify the level of satisfaction with respect to NFRs specification.


brazilian symposium on software engineering | 2012

Analysing the Impact of Feature Dependency Implementation on Product Line Stability: An Exploratory Study

Bruno Barbieri Pontes Cafeo; Francisco Dantas; Alessandro Cavalcante Gurgel; Everton T. Guimarães; Elder Cirilo; Alessandro Garcia; Carlos José Pereira de Lucena

The evolution of software product lines (SPLs) is particularly challenging. SPL functionalities, usually decomposed into features, naturally depend among them. As the SPL evolves, the implementation of each feature dependency might increasingly affect more code elements. Therefore, as the complexity of feature dependency implementation grows up through code evolution, it is likely to negatively impact on the SPL stability. Stability refers to the amount of changes between SPL releases and it is directly influenced by the complexity of feature dependency implementation. In this context, a number of emerging programming techniques can be used to keep the complexity of feature dependency code under control. Nevertheless, there is a lack of studies analysing the impact of different programming techniques on the stability of feature dependency code in evolving SPLs. This paper presents a first exploratory analysis on the use of programming techniques to implement and evolve feature dependencies. Our analysis was developed in the context of three evolving SPL systems, which are made up of 210 feature dependencies. Our initial findings reveal that two particular types of feature dependency implementation using different programming techniques play a role in the SPL stability.


international conference on software engineering | 2011

Reuse vs. maintainability: revealing the impact of composition code properties

Francisco Dantas

Over the last years, several composition mechanisms have emerged to improve program modularity. Even though these mechanisms widely vary in their notation and semantics, they all promote a shift in the way programs are structured. They promote expressive means to define the composition of two or more reusable modules. However, given the complexity of the composition code, its actual effects on software quality are not well understood. This PhD research aims at investigating the impact of emerging composition mechanisms on the simultaneous satisfaction of software reuse and maintainability. In order to perform this analysis, we intend to define a set of compositiondriven metrics and compare their efficacy with traditional modularity metrics. Finally, we plan to derive guidelines on how to use new composition mechanisms to maximize reuse and stability of software modules.


Information & Software Technology | 2016

Feature dependencies as change propagators

Bruno Barbieri Pontes Cafeo; Elder Cirilo; Alessandro Garcia; Francisco Dantas; Jaejoon Lee

ContextA Software Product Line (SPL) is a set of software systems that share common functionalities, so-called features. When features are related, we consider this relation a feature dependency. Whenever a new feature is added, the presence of feature dependencies in the source code may increase the maintenance effort. In particular, along the maintenance of SPL implementation, added features may induce changes in other features, the so-called change propagation. Change propagation is the set of ripple changes required to other features whenever a particular feature is added or changed. ObjectiveThe relationship between feature dependency and change propagation is not well understood. Therefore, the objective of our study is to examine the relation between feature dependency and change propagation. MethodWe investigate change propagation through feature dependencies in additive changes on five evolving SPLs. We analysed a wide range of additive changes in 21 representations of those SPLs. This analysis enabled us to understand whether and how features dependencies and change propagations are related. ResultsThe results have empirically confirmed for the first time the strong relation between feature dependency and change propagation. We also identified what are the circumstances involving dependent features that are more likely to cause change propagation. Surprisingly, the results also suggested that the extent of change propagation across SPL features might be higher than the one found in previous studies of dependent modules in non-SPLs. We also found a concentration of change propagation in a few feature dependencies. ConclusionEven though the results show that there is a strong relation between feature dependencies and change propagation, such relation is not alike for all dependencies. This indicates that (i) a general feature dependency minimisation might not ameliorate the change propagation, and (ii) feature dependency properties must be analysed beforehand to drive maintenance effort to important dependencies.


empirical software engineering and measurement | 2012

On the role of composition code properties on evolving programs

Francisco Dantas; Alessandro Garcia; Jon Whittle

Composition code defines the binding of two or more modules in a program. Post object-oriented programming techniques are increasingly providing expressive mechanisms to enable the flexible definition of composition code. Such composition mechanisms are intended to support programmers in factoring out the complexity of a program and facilitate its evolution. However, the properties of composition code might introduce new flavours of complexity, and in turn cause side effects on program evolvability. Unfortunately, the role of composition code properties on evolving software systems is not yet well understood. This gap is mostly due to the lack of a measurement framework to characterize and quantify composition code. Existing metrics suites are focused on quantifying properties of programs and their modules only. Therefore, programmers are not able to analyse and understand the impact of particular composition properties on program evolvability. This paper presents a framework aimed at characterizing and computing composition code properties. The proposed framework consists of terminology and a metrics suite, which can be used in programs structured with diverse sets of composition mechanisms. We also empirically studied the role of the measurement framework through 22 versions of 4 software projects. Our evaluation revealed that the measurement framework provided consistent indicators of program instabilities observed in history of the evolving compositions.

Collaboration


Dive into the Francisco Dantas's collaboration.

Top Co-Authors

Avatar

Alessandro Garcia

Pontifical Catholic University of Rio de Janeiro

View shared research outputs
Top Co-Authors

Avatar

Nélio Cacho

Federal University of Rio Grande do Norte

View shared research outputs
Top Co-Authors

Avatar

Thaís Vasconcelos Batista

Federal University of Rio Grande do Norte

View shared research outputs
Top Co-Authors

Avatar

Cláudio Sant'Anna

Federal University of Bahia

View shared research outputs
Top Co-Authors

Avatar

Eduardo Figueiredo

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar

Elder Cirilo

Pontifical Catholic University of Rio de Janeiro

View shared research outputs
Top Co-Authors

Avatar

Alessandro Cavalcante Gurgel

Pontifical Catholic University of Rio de Janeiro

View shared research outputs
Top Co-Authors

Avatar

Bruno Barbieri Pontes Cafeo

Pontifical Catholic University of Rio de Janeiro

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

Uirá Kulesza

Federal University of Rio Grande do Norte

View shared research outputs
Researchain Logo
Decentralizing Knowledge