Sérgio Soares

Learn More
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 line's modularity properties in the presence of changes to both the core and varying features.(More)
This paper reports our experience using AspectJ, a general-purpose aspect-oriented extension to Java, to implement distribution and persistence aspects in a web-based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show that AspectJ is useful for implementing several persistence(More)
aspect ServerSide { abstract pointcut facadeMainExecution(); abstract Remote initFacadeInstance(); abstract String getSystemName(); abstract String getServerName(); Those abstract methods and pointcut are implemented by system specific aspects. The abstract aspect also defines and around advice that uses the abstract methods to export the facade instance(More)
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(More)
Context: Since the introduction of evidence-based software engineering in 2004, systematic literature review (SLR) has been increasingly used as a method for conducting secondary studies in software engineering. Two tertiary studies, published in 2009 and 2010, identified and analysed 54 SLRs published in journals and conferences in the period between 1st(More)
This thesis defines an Aspect-Oriented Implementation Method that defines data management, communication, and concurrency control concerns (requirements) as aspects. An aspect is a new abstraction mechanism, added by this new paradigm extending the object-oriented paradigm, aiming to increase software modularity, and therefore, software maintainability. The(More)
The main goal of Aspect-Oriented Software Development (AOSD) is the separation of crosscutting concerns throughout the software development process in order to improve the modularity of software system artifacts and hence its comprehensibility, maintainability and reusability. However, currently, there is not a solid process for AOSD that covers the(More)
During Software Product Line (SPL) maintenance tasks, Virtual Separation of Concerns (VSoC) allows the programmer to focus on one feature and hide the others. However, since features depend on each other through variables and control-flow, feature modularization is compromised since the maintenance of one feature may break another. In this context,(More)
Even though empirical research has grown in interest, techniques, methodologies and best practices are still in debate. In this context, test beds are effective when one needs to evaluate and compare technologies. The concept is well disseminated in other areas such as Computer Networks, but remains poorly explored in Software Engineering (SE). This paper(More)
Model-driven development (MDD) shifts the development focus from code to models, allowing automatic or assisted transformations that are able to generate more refined, detailed or complete models. In Software Product Line (SPL) development, variation point implementation might inevitable lead to (crosscutting) concerns that are tangled and spread with other(More)