2007
DOI: 10.1109/compsac.2007.103
|View full text |Cite
|
Sign up to set email alerts
|

Defining and Detecting Bad Smells of Aspect-Oriented Software

Abstract: Bad Smells are software patterns that are generally associated with bad design and bad programming. They can be removed by using the refactoring technique which improves the quality of software. Aspect-Oriented (AO) software development, which involves new notions and the different ways of thinking for developing software and solving the crosscutting problem, possibly introduces different kinds of design flaws. Defining bad smells hidden in AO software in order to point out bad design and bad programming is th… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
9
0

Year Published

2011
2011
2015
2015

Publication Types

Select...
3
1
1

Relationship

0
5

Authors

Journals

citations
Cited by 12 publications
(9 citation statements)
references
References 5 publications
0
9
0
Order By: Relevance
“… Pull up advice – When all sub‐aspects use the same advice acting on a pointcut declared in the super‐aspect, we can move the advice to the super‐aspect. Push down advice – When there is a piece of advice used by only some sub‐aspects, or when each sub‐aspect requires a different advice, we can move the advice to the sub‐aspects that use it. Pull up declare parents – When all sub‐aspects use the same declare parents, we can move the declare parents to the super‐aspect. Push down declare parents – When a declare parents in a super‐aspect is not relevant to all the sub‐aspects, then we can move the declare parents to the sub‐aspects where it is relevant. Pull up inter‐type declaration – If we have an inter‐type declaration that would be best placed in the super‐aspect, then we could move the inter‐type declaration to the super‐aspect. Push down inter‐type declaration – If there is an inter‐type declaration that would be best placed in a sub‐aspect, then we can move the inter‐type declaration to the sub‐aspect where it is relevant. Pull up pointcut – If all sub‐aspects declare identical pointcuts, then we can move the pointcuts to the super‐aspect. Push down pointcut – If there is a pointcut in the super‐aspect that is not used by some sub‐aspects inheriting it, then we can move the pointcut to those sub‐aspects that use it. Eliminating borrowed pointcut – when a pointcut is referred by advices of the aspects that are not sub‐aspects. Eliminating duplicated pointcut – When pointcuts collect the same set of joinpoints in base code, we can apply this refactoring method to eliminate the duplications. Move static introduction – To move a static inter‐type member introduction to a different aspect, we can inline (localize) it from the original aspect into its target types and then extract it into the desired target aspect.…”
Section: Aspect‐oriented Refactoring Methodsmentioning
confidence: 99%
See 4 more Smart Citations
“… Pull up advice – When all sub‐aspects use the same advice acting on a pointcut declared in the super‐aspect, we can move the advice to the super‐aspect. Push down advice – When there is a piece of advice used by only some sub‐aspects, or when each sub‐aspect requires a different advice, we can move the advice to the sub‐aspects that use it. Pull up declare parents – When all sub‐aspects use the same declare parents, we can move the declare parents to the super‐aspect. Push down declare parents – When a declare parents in a super‐aspect is not relevant to all the sub‐aspects, then we can move the declare parents to the sub‐aspects where it is relevant. Pull up inter‐type declaration – If we have an inter‐type declaration that would be best placed in the super‐aspect, then we could move the inter‐type declaration to the super‐aspect. Push down inter‐type declaration – If there is an inter‐type declaration that would be best placed in a sub‐aspect, then we can move the inter‐type declaration to the sub‐aspect where it is relevant. Pull up pointcut – If all sub‐aspects declare identical pointcuts, then we can move the pointcuts to the super‐aspect. Push down pointcut – If there is a pointcut in the super‐aspect that is not used by some sub‐aspects inheriting it, then we can move the pointcut to those sub‐aspects that use it. Eliminating borrowed pointcut – when a pointcut is referred by advices of the aspects that are not sub‐aspects. Eliminating duplicated pointcut – When pointcuts collect the same set of joinpoints in base code, we can apply this refactoring method to eliminate the duplications. Move static introduction – To move a static inter‐type member introduction to a different aspect, we can inline (localize) it from the original aspect into its target types and then extract it into the desired target aspect.…”
Section: Aspect‐oriented Refactoring Methodsmentioning
confidence: 99%
“…In , they introduced AspectJ programming laws that can be used to derive or create behavior preserving transformations (refactorings) for a subset of AspectJ. Srivisut et al proposed a definition of new aspect‐oriented bad smells and presented appropriate AOR methods for eliminating each bad smell. The authors proposed a set of bad‐smell metrics to use as indicators to verify if a particular fraction of aspect‐oriented code contains bad smells.…”
Section: Literature Reviewmentioning
confidence: 99%
See 3 more Smart Citations