One of the most important
principles in software engineering for coping with complexity and achieving
quality software is the separation of concerns principle. This principle states
that a given design problem involves different kinds of concerns, which should
be identified and separated in different modules. The history of software
development has experienced an evolution of different programming languages and
design methods that have provided useful modularity mechanisms. However, as it
is experienced in practice and generally acknowledged by researchers, it appears
that these approaches are inherently unable to modularize all concerns of
complex software systems. Some concerns like synchronization, recovery and
logging tend to be more systemic, crosscut a broader set of modules and as such
cannot be easily specified in single modules. This increases complexity and
reduces several quality factors of software, such as adaptability,
maintainability and reusability.
Aspect-oriented software development (AOSD) is an advanced technology for
separation of concerns (SOC), which provides explicit concepts to modularize the
crosscutting concerns and compose these with the system components. This course
will provide an in-depth analysis of this advanced separation of concerns
paradigm and teach the state-of-the-art AOSD techniques.
The important topics in this course are the following:
-
separation of concerns;
-
software evolution problems;
-
examples of crosscutting
aspects;
-
composition anomalies.
-
aspect-oriented programming
-
aspect-oriented design;
-
aspect-oriented modeling;
-
aspects at the requirements
and architecture design level;
-
reflection and delegation
techniques;
-
design space modeling
Prerequisites
It is -highly- recommended that you have followed a
course on object-oriented software development, know the fundamental
object-oriented concepts, have sufficient knowledge on UML, and have sufficient
programming skills in Java. In addition, this course will be basically of
benefit for the students who would like to do research in software engineering.
ENTER
|
|