Object oriented design with applications
Object oriented design with applications
Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
A fast and effective heuristic for the feedback arc set problem
Information Processing Letters
Object success: a manager's guide to object orientation, its impact on the corporation, and its use for reengineering the software process
Object solutions: managing the object-oriented project
Object solutions: managing the object-oriented project
Developing an object-oriented software testing and maintenance environment
Communications of the ACM - Special issue on object-oriented experiences and future trends
Computer
Large-scale C++ software design
Large-scale C++ software design
The algorithm design manual
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Testing object-oriented systems: models, patterns, and tools
Testing object-oriented systems: models, patterns, and tools
On the criteria to be used in decomposing systems into modules
Communications of the ACM
The structure of the “THE”-multiprogramming system
Communications of the ACM
Encapsulating objects with confined types
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Component Software: Beyond Object-Oriented Programming
Component Software: Beyond Object-Oriented Programming
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
Java Virtual Machine Specification
Java Virtual Machine Specification
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Computer
IEEE Software
Designing software for ease of extension and contraction
ICSE '78 Proceedings of the 3rd international conference on Software engineering
Metrics and Laws of Software Evolution - The Nineties View
METRICS '97 Proceedings of the 4th International Symposium on Software Metrics
Identifying Test-Critical Dependencies
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
An Investigation of Graph-Based Class Integration Test Order Strategies
IEEE Transactions on Software Engineering
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Test Order for Class-based Integration Testing of Java Applications
QSIC '05 Proceedings of the Fifth International Conference on Quality Software
Identifying refactoring opportunities by identifying dependency cycles
ACSC '06 Proceedings of the 29th Australasian Computer Science Conference - Volume 48
On the usage and usefulness of OO design principles
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
ACoM '07 Proceedings of the First International Workshop on Assessment of Contemporary Modularization Techniques
Indirect Coupling As a Criteria for Modularity
ACoM '07 Proceedings of the First International Workshop on Assessment of Contemporary Modularization Techniques
How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Analyzing clusters of class characteristics in OO applications
Journal of Systems and Software
A Pareto ant colony algorithm applied to the class integration and test order problem
ICTSS'10 Proceedings of the 22nd IFIP WG 6.1 international conference on Testing software and systems
How developers use the dynamic features of programming languages: the case of smalltalk
Proceedings of the 8th Working Conference on Mining Software Repositories
Establishing integration test orders of classes with several coupling measures
Proceedings of the 13th annual conference on Genetic and evolutionary computation
Efficient retrieval and ranking of undesired package cycles in large software systems
TOOLS'11 Proceedings of the 49th international conference on Objects, models, components, patterns
Assessing architectural evolution: a case study
Empirical Software Engineering
Integration test of classes and aspects with a multi-evolutionary and coupling-based approach
SSBSE'11 Proceedings of the Third international conference on Search based software engineering
QoSA'10 Proceedings of the 6th international conference on Quality of Software Architectures: research into Practice - Reality and Gaps
A testing strategy for abstract classes
Software Testing, Verification & Reliability
Bootstrapping software distributions
Proceedings of the 16th International ACM Sigsoft symposium on Component-based software engineering
oZone: Layer identification in the presence of cyclic dependencies
Science of Computer Programming
A study of cyclic dependencies on defect profile of software components
Journal of Systems and Software
How (and why) developers use the dynamic features of programming languages: the case of smalltalk
Empirical Software Engineering
Hi-index | 0.00 |
Advocates of the design principle avoid cyclic dependencies among modules have argued that cycles are detrimental to software quality attributes such as understandability, testability, reusability, buildability and maintainability, yet folklore suggests such cycles are common in real object-oriented systems. In this paper we present the first significant empirical study of cycles among the classes of 78 open- and closed-source Java applications. We find that, of the applications comprising enough classes to support such a cycle, about 45% have a cycle involving at least 100 classes and around 10% have a cycle involving at least 1,000 classes. We present further empirical evidence to support the contention these cycles are not due to intrinsic interdependencies between particular classes in a domain. Finally, we attempt to gauge the strength of connection among the classes in a cycle using the concept of a minimum edge feedback set.