Agile Software Development: Principles, Patterns, and Practices
Agile Software Development: Principles, Patterns, and Practices
Designing software for ease of extension and contraction
ICSE '78 Proceedings of the 3rd international conference on Software engineering
Using dependency models to manage complex software architecture
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
JooJ: real-time support for avoiding cyclic dependencies
ACSC '07 Proceedings of the thirtieth Australasian conference on Computer science - Volume 62
An empirical study of cycles among classes in Java
Empirical Software Engineering
Identifying Cycle Causes with Enriched Dependency Structural Matrix
WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
MudPie: layers in the ball of mud
Computer Languages, Systems and Structures
oZone: Layer identification in the presence of cyclic dependencies
Science of Computer Programming
Hi-index | 0.00 |
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 the developers to remove cycles from their programs. In this paper, we describe an efficient algorithm that performs a fine-grained analysis of the cycles among the packages of an application. In addition, we define a metric to rank cycles by their level of undesirability, prioritizing the cycles that seems the more undesired by the developers. Our approach is validated on two large and mature software systems in Java and Smalltalk.