Research Areas and Projects

(PortuguÍs)

Aspect-Oriented Programming, Separation of Concerns, Refactoring

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.

Aspect-Oriented Programming and Software Product Lines

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.

Refactoring and Generative Programming

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.

Refactoring and Formal Methods

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

Edit | Attach | Print version | History: r44 | r29 < r28 < r27 < r26 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r27 - 2003-10-25 - AlexandraBarros
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

mersin escort bayan adana escort bayan izmit escort ankara escort bursa escort