The Aspect-Oriented Software Architecture Design Portal

 Advanced Separation of Concerns at the Architecture Design Level
 Identifying and Specifying Early Aspects
 

Home
Software Architecture
AOSD
Architectural Aspects
Publications
Events
Related Links
AOSAD Project
E-Tutorial

Site Map
Search
Contact

Edited by:
Bedir Tekinerdogan

Summary Research Team Description Approach Workplan

 

Approach for AOSAD

To reach the objectives of this proposed research, the following three requirements need to be fulfilled:

1. Identify aspects in software architecture design

Architecture design methods should include mechanisms for identifying aspects. Aspects may be identified by (1) analysing the code repetition patterns in the legacy software system, if any; (2) carrying out use case analysis and change case analysis to gain a better insight in the concerns that are sensitive to changes; and (3) applying domain analysis. In the proposed research, we will investigate these three approaches in a complementary manner. The focus here will be on identifying generic aspects such as aspects among user interface management components and the components of the service layer. Based on this work, we will define enhancements to current architectural design methods so that they can be used for identifying aspects as well.

2. Specify architectural aspects

There are already several aspect-oriented languages for expressing aspects and the first logical step that we consider is to analyze and compare these languages. The current aspect-oriented languages focus on specifying aspects at the programming level, and it should be investigated to what extent these languages can be used and what needs to be additionally provided for specifying higher-level architectural aspects.

Our approach in specifying aspects will be based on three principles:

First, aspects will be specified using declarative languages that are expressive in the domain of aspects. This is required (1) for easing the verification of aspects; (2) for deferring the implementation decision of aspects; (3) for implementing the architecture specification in different language platforms.

Second, aspect composition operators should be provided to compose the architectural aspects. These composition operators should be as generic as possible to support the reuse across multiple domains. In addition, these compositions should be verified for consistency and evolvability using domain analysis and model checking techniques.

Finally, aspect composition operators will support various binding times, such as compile-time, installation time, or run-time.

3. Provide customization support

The identification and specification of aspects at the architecture design level will enhance the tailorability and composition of diverse applications. Obviously, tailoring components from abstract specification is not trivial and requires explicit tool support. Our tool development approach will consist of the following four activities:

First, the underlying architecture model will be based on a graph-based formal model. This model will be consistent as much as possible with the current standards (i.e. OMG Model-Driven Architecture (MDA)); Using graph-based formalisms expressed in a standard language increases the possibility of reusing and/or enhancing existing tools, since current approaches often adopt graph (or tree) formalisms.

Second, we will define a set of basic graph manipulation operators, such as editing, refining and substituting (parts of) graphs. This will provide the basic means for constructing and extending the architecture models by the tool.

Third, the nodes and relations of the graph will be typed according to the identified architectural aspects and compositional operators. To this aim, standard meta or meta-meta languages will be used, where appropriate. In addition, various mechanisms will be implemented for enforcing the constraints of the types. This will enable to implement the semantics of certain components, aspects and composition operators.

Finally, various relational operators and heuristic search mechanisms will be defined for dealing with potentially large graphs (design spaces); This project will pay a considerable attention in specifying the and implementing the heuristics support. Hereby we will use the results of our earlier work on modeling heuristic rules.

Problems that are considered out of the scope

Due to limited resources, the proposed project makes explicit choices. For example, although considered important, the specific problems studied within the context of logistic applications will not be studied in this project. Nevertheless, the industrial partner that we cooperate has an extensive practical knowledge in this area and they will be consulted whenever necessary. Further, for some theoretical issues, we may consult a related research group in the mathematics department of our university. Secondly, we will not focus on solving problems in designing specific communication and coordination protocols, naming and addressing issues, security protocols, streaming techniques, etc. Rather we will try to use the state-of-the-art distributed system implementation techniques as much as possible. Again, the industrial partner has extensive practical knowledge in designing distributed systems and they will be consulted whenever necessary. Similarly, our main focus will not be on performance and/or reliability modelling. In short, our focus is mainly on software engineering methods and techniques.