Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Object-oriented system development
Object-oriented system development
Object-oriented metrics that predict maintainability
Journal of Systems and Software - Special issue on object-oriented software
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
An investigation into coupling measures for C++
ICSE '97 Proceedings of the 19th international conference on Software engineering
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Investigating quality factors in object-oriented designs: an industrial case study
Proceedings of the 21st international conference on Software engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Designing Flexible Object-Oriented Systems with UML
Designing Flexible Object-Oriented Systems with UML
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Dynamic Metrics for Object Oriented Designs
METRICS '99 Proceedings of the 6th International Symposium on Software Metrics
Dynamic Coupling Measures for Object-Oriented Software
METRICS '02 Proceedings of the 8th International Symposium on Software Metrics
Automated Support for Program Refactoring using Invariants
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Hi-index | 0.00 |
In this paper we investigate a special type of coupling in object-oriented systems. When a method of a class C invokes a method of a class D, the method of C becomes dependent on the representational details of D: the more low-level the service provided by D is the higher the dependency of C on D. This dependency is known as representational coupling. Coupling in general, and representational coupling in particular, are important because they influence the extensibility of a system, that is, the ease with which software can be adapted to changing requirements: the higher the coupling the harder it is to make changes since any changes local to one module are likely to affect many other modules. We propose a qualitative measure of representational coupling (as opposed to quantitative measures provided by metrics) that is based on partial orders over equivalence relations on the state space. We also introduce the notion of intrinsic representational coupling that expresses the amount of representational coupling that is inherent to the system. Finally, we show that despite its non-quantitative nature our measure can be useful in identifying candidate methods for refactoring. We demonstrate this by applying our measure to several examples in the literature, showing in each case how an implementation with non-minimal representational coupling can be transformed using a few simple refactorings into a solution with minimal representational coupling (equal to the intrinsic representational coupling).