- Software Engineering Research
- Advanced Software Engineering Methodologies
- Software Testing and Debugging Techniques
- Software System Performance and Reliability
- Software Reliability and Analysis Research
- Software Engineering Techniques and Practices
- Service-Oriented Architecture and Web Services
- Educational Games and Gamification
- Model-Driven Software Engineering Techniques
- Advanced Malware Detection Techniques
- Real-time simulation and control systems
- Business and Management Studies
- Teaching and Learning Programming
- Digital Games and Media
- Virtual Reality Applications and Impacts
- Viral Infectious Diseases and Gene Expression in Insects
- Engineering and Information Technology
- Distributed systems and fault tolerance
- VLSI and Analog Circuit Testing
- Scientific Research and Technology
- Multidisciplinary Science and Engineering Research
- Augmented Reality Applications
- Formal Methods in Verification
- Higher Education and Employability
- Adversarial Robustness in Machine Learning
Universidade Federal de São Carlos
2016-2025
George Mason University
2019
Universidade do Vale do Rio dos Sinos
2012
Universidade de São Paulo
2008-2011
Universidade Federal do Rio Grande do Norte
2010
Hospital Universitário da Universidade de São Paulo
2010
Lancaster University
2008
Wolters Kluwer (Netherlands)
2002
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 sustenance line's modularity properties in presence changes both It is usually assumed that aspect-oriented programming promotes better changeability than conventional variability mechanisms, such as conditional compilation. However, there no empirical evidence...
Mutation testing has been shown to be one of the strongest criteria for evaluation both programs and test suites. Comprehensive sets mutants require strong achieve acceptable coverage. Moreover, mutation operators are valuable other approaches. Although its importance highlighted aspect-oriented (AO) programs, there is still a need suitable set AO languages. The quality itself relies on such operators. This paper presents design AspectJ-based programs. These model instances fault types...
Generic controllers for self-adaptive systems can be configured parametrically according to system needs, even though their reuse is restricted because of the wide range services that may provided by each stage a feedback control loop, like MAPE-K. Rainbow typical example such generic, monolithic controller. This article revisits and extends prior work advocates structurally flexible controllers, as ensembles micro-controllers providing specific services. We experimented with our approach...
This paper presents the results of an exploratory study on fault-proneness aspect-oriented programs. We analysed faults collected from three evolving systems, all different application domains. The analysis develops two angles. Firstly, we measured impact obliviousness property evaluated systems. show that 40% reported were due to lack awareness among base code and aspects. second regarded main programming (AOP) mechanisms, namely pointcuts, advices intertype declarations. indicate these...
Pointcut Descriptors (PCDs) are used to specify sets of program join points with a common property where additional behavior should be applied. If PCDs wrongly formulated, faults injected into the program, because will applied unintended or fail intended points. In this paper we classify types that can occur in -- terms selected and present two-step strategy to: 1) help tester identifying extra by PCDs; 2) neglected first place. We focus on step but provide motivating examples directions for both.
Coupling metrics received increased recognition by object-oriented (OO) software developers when they were found to be indicators of important quality attributes, such as fault-proneness. However, there is no consensus on which coupling are effective for emerging development paradigms, Aspect-Oriented Programming (AOP). AOP aims improve providing significantly different decomposition mechanisms, pointcut, advice and intertype declarations. Therefore, it not obvious if can derived from direct...
Aspect-Oriented Programming has introduced new types of software faults that may be systematically tackled with mutation testing. However, such testing approach requires adequate tooling support in order to properly performed. This paper addresses this issue, introducing a novel tool named Proteum/AJ. Proteum/AJ realises set requirements for mutation-based tools and overcomes some limitations identified previous aspect-oriented programs. Through an example, we show how was designed the main...
Systematic Reviews (SRs) have recently intensified in Software Engineering. However, there is a lack of work that makes explicit how the process to perform SR practice. The goal this paper externalising reflects SRs are currently performed, transforming tacit knowledge into knowledge. We describe phases and activities compose relationship among them, explore iterative characteristic process, focusing on intra- inter-phase iterations necessary conduct appropriately. To achieve proposed goal,...
Coupling in software applications is often used as an indicator of external quality attributes such fault-proneness. In fact, the correlation coupling metrics and faults object oriented programs has been widely studied. However, there very limited knowledge about which properties aspect-oriented programming (AOP) are effective indicators modules. Existing do not take into account specificities AOP mechanisms. As a result, these unlikely to provide optimal predictions pivotal This impacts...
Mutation testing is a program-transformation technique that injects artificial bugs to check whether the existing test suite can detect them. However, costs of using mutation are usually high, hindering its use in industry. Useless mutants (equivalent and duplicated) contribute increase costs. Previous research has focused mainly on detecting useless only after they generated compiled. In this paper, we introduce strategy help developers with deriving rules avoid generation mutants. To our...
Context: Exercising the implementation of an adaptive system (AS) effectively, in order to detect faults, is not a trivial task. This due characteristics this type systems, such as high number configurations and runtime adaptations. In context, characterisation challenges for testing ASs may support definition suitable strategies. However, currently spread over several studies literature. Objective: analysing testing-related which are described literature, establishing generic...
Context: Testing is essential to improve the quality of software products. Despite that, it not a subject that students are motivated learn. Gamification promising way address issues in testing education; used insert game elements educational contexts aiming increase students' motivation and performance. Objective: Reporting on results an experimental study designed assess impact gamification education. Method: We carried out sessions with undergraduate from three Brazilian institutions....
A considerable part of software systems is comprised functions that support the main modules, such as array or string manipulation and basic math computation. These auxiliary are usually considered less complex, thus tend to receive attention from developers. However, failures in these might propagate more critical thereby affecting system's overall reliability. Given complementary role functions, a question arises whether agile practices, pair programming test-first programming, can improve...
Mutation testing is a program-transformation technique that injects artificial bugs to check whether the existing test suite can detect them. However, costs of using mutation are usually high, hindering its use in industry. Useless mutants (equivalent and duplicated) contribute increase costs. Previous research has focused mainly on detecting useless only after they generated compiled. In this paper, we introduce strategy help developers with deriving rules avoid generation mutants. To our...
Context: Testing is a fundamental activity in the software development cycle. Revealing faults its main objective. Despite that, testing considered unpleasant, dull and tedious. As result, there lack of expertise among professionals while many projects fail. Gamification promising way to address issues; it new trend being used mostly increase motivation, engagement performance with use game elements non-game contexts. Objective: To describe results study that aimed characterize how...
Since the proposal of Aspect-Oriented Programming, several candidate fault taxonomies for aspect-oriented (AO) software have been proposed. Such taxonomies, however, generally rely on language features, hence still requiring practical evaluation based realistic implementation scenarios. The current lack available AO systems as well historical data are two major obstacles this kind study. This paper quantifies, documents and classifies faults uncovered in releases three systems, all from...