2012
DOI: 10.5381/jot.2012.11.1.a4
|View full text |Cite
|
Sign up to set email alerts
|

Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems.

Abstract: Many design guidelines state that a software system architecture should avoid cycles between its packages. Yet such cycles appear again and again in many programs. We believe that the existing approaches for cycle detection are too coarse to assist developers to remove cycles from their programs. In this paper, we describe an efficient algorithm that performs a fine-grained analysis of cycles among application packages. In addition, we define multiple metrics to rank cycles by their level of undesirability, pr… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
15
0

Year Published

2014
2014
2024
2024

Publication Types

Select...
3
3
1

Relationship

0
7

Authors

Journals

citations
Cited by 10 publications
(15 citation statements)
references
References 14 publications
0
15
0
Order By: Relevance
“…The Affected design level, similarly, is important because the cycles present at both package and class level have an impact on two different levels at once. Finally, the Number of inheritance edges characteristic is considered because inheritance edges are considered an indicator of an intentional design choice [17], thus intentional cycles that contain a high number of inheritance edges between the components may be more interesting for a developer to inspect.…”
Section: * Affected Classes Ratio †mentioning
confidence: 99%
“…The Affected design level, similarly, is important because the cycles present at both package and class level have an impact on two different levels at once. Finally, the Number of inheritance edges characteristic is considered because inheritance edges are considered an indicator of an intentional design choice [17], thus intentional cycles that contain a high number of inheritance edges between the components may be more interesting for a developer to inspect.…”
Section: * Affected Classes Ratio †mentioning
confidence: 99%
“…For experimentation, we took the four projects considered in [46] (namely, ANTLR, ArgoUML, Chocho solver, and jEdit) and we analyzed their package dependency graphs in order to detect the two considered anomalies. Since all our mutation operators are refactorings, we only had to measure the quality.…”
Section: Methodsmentioning
confidence: 99%
“…Regarding software architectures and program refactoring, the classical technique for detecting anomalies is to use static analysis and some heuristics (like estimation of cycle undesirability in [46]). There exist several attempts to automatically improve the source code structure by using mutation.…”
Section: Related Workmentioning
confidence: 99%
“…either class or package) PCT Depth* Depth refers to the number of packages that are an ancestor of the affected element in the system's package hierarchy (i.e. the PCT) [25]. PCT Distance*…”
Section: Affected Typementioning
confidence: 99%