Parallel compilation of Ada units
TRI-Ada '88 Proceedings of the conference on TRI-Ada '88
Large-scale C++ software design
Large-scale C++ software design
Component software: beyond object-oriented programming
Component software: beyond object-oriented programming
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Computing ripple effect for software maintenance
Journal of Software Maintenance: Research and Practice
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
Software Component with ADA
The Java Language Specification
The Java Language Specification
Finding and Counting Given Length Cycles (Extended Abstract)
ESA '94 Proceedings of the Second Annual European Symposium on Algorithms
An Analysis Framework for Understanding Layered Software Architectures
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Removing false code dependencies to speedup software build processes
CASCON '03 Proceedings of the 2003 conference of the Centre for Advanced Studies on Collaborative research
Understanding the shape of Java software
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
On the usage and usefulness of OO design principles
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
The CRSS metric for package design quality
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
Deprogramming large software systems
HotDep'08 Proceedings of the Fourth conference on Hot topics in system dependability
On the automated modularisation of java programs using service locators
SC'12 Proceedings of the 11th international conference on Software Composition
Refactoring software packages via community detection in complex software networks
International Journal of Automation and Computing
International Journal of Computer Applications in Technology
Hi-index | 0.00 |
The purpose of refactoring is to improve the quality of a software system by changing its internal design so that it is easier to understand or modify, or less prone to errors and so on. One challenge in performing a refactoring is quickly determining where to apply it. We present a tool (Jepends) that analyses the source code of a system in order to identify classes as possible refactoring candidates. Our tool identifies dependency cycles among classes because long cycles are detrimental to understanding, testing and reuse. We demonstrate our tool on a widely-downloaded, open-source, medium-sized Java program and show how cycles can be eliminated through a simple refactoring.