Software metrics (2nd ed.): a rigorous and practical approach
Software metrics (2nd ed.): a rigorous and practical approach
An investigation into coupling measures for C++
ICSE '97 Proceedings of the 19th international conference on Software engineering
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
An Empirical Approach to Studying Software Evolution
IEEE Transactions on Software Engineering
Journal of Systems and Software - Special issue on Evaluation and assessment in software engineering
Types of software evolution and software maintenance
Journal of Software Maintenance: Research and Practice
The Optimal Class Size for Object-Oriented Software
IEEE Transactions on Software Engineering
Growth, evolution, and structural change in open source software
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
Predicting Fault-Prone Classes with Design Measures in Object-Oriented Systems
ISSRE '98 Proceedings of the The Ninth International Symposium on Software Reliability Engineering
Trends in Java code changes: the key to identification of refactorings?
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
Extracting Facts from Open Source Software
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Studying the Evolution of Open Source Systems at Different Levels of Granularity: Two Case Studies
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
Proceedings of the 2006 ACM symposium on Applied computing
Quality of manual data collection in Java software: an empirical investigation
Empirical Software Engineering
Design Patterns and Change Proneness: A Replication Using Proprietary C# Software
WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
Does an 80:20 rule apply to Java coupling?
EASE'09 Proceedings of the 13th international conference on Evaluation and Assessment in Software Engineering
A coupling framework for aspectJ
EASE'06 Proceedings of the 10th international conference on Evaluation and Assessment in Software Engineering
Hi-index | 0.00 |
Excessive coupling between object-oriented classes is widely acknowledged as a maintenance problem that can result in a higher propensity for faults in systems and a 'stored up' future problem. This paper explores the relationship between 'fan-in' and 'fan-out' coupling metrics over multiple versions of open-source software. More specifically, the relationship between the two metrics is explored to determine patterns of growth in each over the course of time. The JHawk tool was used to extract the two metrics from five open-source systems. Results show a wide range of traits in the classes to explain both high and low levels of fan-in and fan-out. Evidence was also found of certain 'key' classes with both high fan-in and fan-out and 'client' and 'server'-type classes with high fan-out and fan-in, respectively. This paper provides an explanation of the composition and existence of such classes as well as for disproportionate increases in each of the two metrics over time. Finally, it was found that high fan-in class values tended to be associated with small classes; classes with high fan-out on the other hand tended to be relatively large classes.