Research Areas and Projects
(
Português)
We are defining an implementation method that separates data management, distribution, and concurrency control concerns using Aspect-Oriented Programming. In particular, we are using AspectJ to implement those concerns to a system implemented in Java. The method should help to achieve better software with higher productivity levels. We are also investigating how the implementation method definition affects analysis, design, and tests activities. Experiments are being performed to analyze the benefits and liabilities of AspectJ, the the implementation method, and some approaches to apply the method. For instance, we can use a progressive approach, where persistence, distribution, and concurrency control are not initially considered in the implementation activities, but are gradually introduced, preserving the system's functional requirements. This progressive approach helps to decrease the impact caused by requirements changes during development and also allows gradual test of the concerns.
We are also working on patterns, guidelines and techniques for applying Aspect-Oriented Programming for providing adaptability for existent and novel systems. In this area we are developing experiments to compare pure object-oriented solutions to AspectJ solutions in relation to adaptability capacity, code and bytecode size, number of classes, modularity, etc.
Refactorings for AspectJ is also being considered here.
We are investigating how to model variability in a product-line architecture using Aspect-Oriented Programming techniques. The model addresses both functional and non-functional requirements and complies with quality standards. In particular, our approach aims at providing a method to instantiate a particular product in the line with AOP techniques. Tool support will also be provided to automate the process.
We are currently developing JaTS, a Java transformation system
that supports user-defined program transformations. In this way,
the user can define new refactorings and code generation templates
using a declarative language for specifying the new transformations.
An extension of JaTS for AspectJ is also being developed.
Alloy is a declarative object-oriented modeling language similar to UML, yet simpler and clearer. It is based on first-order logic and relational theory, and amenable for fully automatic analysis. Our goals are defining and proving transformation laws for Alloy models, applying to widely-adopted model transformations as used in Refactorings and MDA (Model-Driven Architecture). In addition, we are investigating the mapping of these model transformations to Java program transformations, assuring the adequate correspondence between abstract models and code.
As part of the
COOP
project, we are also defining algebraic laws for a Java-like language
and formally deriving refactorings from those laws.
--
MadsonCosta - 31 Jul 2003