the conditions (object states and events), which
claim for the activation of an aspect.
While there are works that are assertive of the
AO, or also present concepts and practical examples
about the usage of that paradigm (Baccan, 2004)
(RCOST, 2007) (Merlo, 2007), it is quite limited the
number of studies that investigated AO empirically,
i.e. using controlled experiments, case studies, or
surveys.
At our University’s Data Center (“Centro di
Calcolo e Documentazione”, CCD), where we
design and develop software for providing services
to the Administration and students, we have been
reflecting on the utilization of AOP for maintaining
or re-engineering our applications. In order to
become confident with AO and related technologies,
and in the aim of understanding what advantages
and disadvantages might derive from using AOP, in
which circumstances, and in what extent, our
decision was to start first an exploratory study, and
then, in case of successful results, to launch a
controlled experiment to conduct initially with
students of engineering and then with our
professionals.
The scientific conjecture for this our work is that
the development and maintenance of software with
structurally pervasive characteristics should find
relative advantage in using AO rather than OO.
Many points, which are in our research agenda
but this paper cannot afford, include but are not
limited to: (i) Pros and cons of AO vs. OO, when
software requirements are provided, which have, and
respectively have not, a transversal impact on the
software architecture, for development from the
scratch or maintenance interventions, respectively;
(ii) Impact of AOP on readability,
comprehensibility, efficiency, testability; (iii)
Debugging and static analysis of AOP vs. OOP
software applications. Moreover, in what extent: (iv)
The extension points that AOP provides can be
utilized to implement and manage dependence
relationships between use cases; (v) The application
characteristics (e.g. its structure) have influence on
the utility of applying AOP rather than OOP.
In the remaining of the present paper, Section 2
recalls previous work, reasons on AO and AOP
mechanisms; Section 3 sketches on AspectJ and its
AOP constructs; Section 4 presents the case study,
Section 5 and Section 6 present and discuss the
related results, respectively. Some final remarks and
forwards to future work conclude the paper.
2 ASPECT ORIENTATION
In the traditional OO approach, it is complex or
impossible to utilize modular entities like classes,
and methods to model behaviors, which spread
anywhere in the application, do not need explicit
invocations, and are specified and defined in one
point of a software artifact. Memory management,
security mechanisms, logging, fault and exception
management are some of the characteristics that
suffer for such a limit.
AO has been proposed as a solution for problems
of that kind. In the view of the AO supporters, OO
should deal with the business logics, domain entities,
and interaction with the external world; AO should
deal with all the remaining. Let us consider, for
instance, a data-management system component,
which is in the responsibility to “Insert a new
customer in the DB”. This component should also
deal with some access-related auxiliary concerns,
like authorization, tracing, and policies. These
auxiliary concerns have pervasive impacts; we need
programming supports, which allow having just a
copy of those access checks in a program rather than
duplicating them in all the impacted operations. The
AO approach claims to have enough expressive
power to meet all those constraints and requirements
in the whole application.
AO provides design concepts, and programming
constructs and mechanisms, which allow
practitioners to isolate functionalities that impact
transversally on the application system. AO calls
these functionalities with crosscutting and groups
them and related activation points in an aspect. For
instance, with regard to the previous example of
data-management system component, it should be a
good choice to evaluate for crosscutting eligibility
those functionalities that deal with DB access
policies, authorization, and tracing.
In the AO context, the term Concern is used to
denote a concept or area of interest, or also a
requirement or functionality, eventually a behavior,
which can be thought and developed autonomously.
There are AO Concerns of two kinds: Core
Concern and Crosscutting Concern. OO is well able
to model the former by using delegation and/or
inheritance and polymorphism. The goal of AO is to
capture the latter kind and provide simple means to
represent it in a software artifact by minimizing
dependencies between the involved entities.
In order to introduce a Crosscutting Concern into
a program, a programmer is just requested to provide
the desired new behavior (Concern) and the
application points where s/he wants that the behavior
is entered. Hence, two fundamental parts compose
an aspect:
• Advice, which provides a full implementation
of the Concern;
• Pointcut, which defines a family of points in
the program flow where to exec the aspect.
A pointcut, in its turn, can be expressed by a
combination of Join points, each expressing a
ICSOFT 2007 - International Conference on Software and Data Technologies
48