|
|
|
•AOP offers the possibility to break encapsulation of base code units.
It gives the developer more flexibility and power, it also produces aspects
that are more brittle, in that they rely on internal implementation details,
and not just on the available interfaces. Changing the base code would then
require taking into account the aspect definition in the system, which would
contradict that aspects would be non invasive
|
|
•Use of inheritance to reuse a base aspect’s behavior leads to
anomalies similar to the fragile base class problem in OO? Where seemingly
innocuous modifications to the base code can have undesirable effects on its
subclasses. Are there better ways to promote reusability and variability of
aspects?
|
|
•Can leave the system in inconsistent state, breaking interaction of
base and aspect behavior
|
|
Can inintentionnaly cause other parts of
the system to break. -> impact analysis
|