Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Cohesion and reuse in an object-oriented system
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Object-oriented metrics: measures of complexity
Object-oriented metrics: measures of complexity
Rule-based approach to computing module cohesion
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Defining and Validating Measures for Object-Based High-Level Design
IEEE Transactions on Software Engineering
Exploring the relationship between design measures and software quality in object-oriented systems
Journal of Systems and Software
A cohesion measure for object-oriented classes
Software—Practice & Experience
IEEE Transactions on Software Engineering
Evolving Object-Oriented Designs with Refactorings
Automated Software Engineering
A Unified Framework for Cohesion Measurement in Object-OrientedSystems
Empirical Software Engineering
Replicated Case Studies for Investigating Quality Factorsin Object-Oriented Designs
Empirical Software Engineering
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Towards a Framework for Software Measurement Validation
IEEE Transactions on Software Engineering
Measuring Design-Level Cohesion
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
A discriminant metric for module cohesion
ICSE '84 Proceedings of the 7th international conference on Software engineering
ICBMC: An Improved Cohesion Measure for Classes
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
A Novel Approach to Measuring Class Cohesion Based on Dependence Analysis
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
A comparative study of graph theory-based class cohesion measures
ACM SIGSOFT Software Engineering Notes
Improving Cohesion Metrics for Classes by Considering Dependent Instance Variables
IEEE Transactions on Software Engineering
Refactoring " Improving Coupling and Cohesion of Existing Code
WCRE '04 Proceedings of the 11th Working Conference on Reverse Engineering
The Conceptual Cohesion of Classes
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction
IEEE Transactions on Software Engineering
Search-Based Software Maintenance
CSMR '06 Proceedings of the Conference on Software Maintenance and Reengineering
The interpretation and utility of three cohesion metrics for object-oriented design
ACM Transactions on Software Engineering and Methodology (TOSEM)
Metrics for class cohesion and similarity between methods
Proceedings of the 44th annual Southeast regional conference
Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems
IEEE Transactions on Software Engineering
Evaluating the Quality of Open Source Software
Electronic Notes in Theoretical Computer Science (ENTCS)
Journal of Systems and Software
Advanced Data Mining Techniques
Advanced Data Mining Techniques
An object-oriented high-level design-based class cohesion metric
Information and Software Technology
Improving the applicability of object-oriented class cohesion metrics
Information and Software Technology
Measuring the Discriminative Power of Object-Oriented Class Cohesion Metrics
IEEE Transactions on Software Engineering
An object-oriented high-level design-based class cohesion metric
Information and Software Technology
Improving object-oriented lack-of-cohesion metric by excluding special methods
SEPADS'11 Proceedings of the 10th WSEAS international conference on Software engineering, parallel and distributed systems
Code-Imp: a tool for automated search-based refactoring
Proceedings of the 4th Workshop on Refactoring Tools
Improving the applicability of object-oriented class cohesion metrics
Information and Software Technology
Information and Software Technology
Information and Software Technology
Experimental assessment of software metrics using automated refactoring
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
Reusability of open-source program code: a conceptual model and empirical investigation
ACM SIGSOFT Software Engineering Notes
Object-oriented class maintainability prediction using internal quality attributes
Information and Software Technology
Hi-index | 0.00 |
The building of highly cohesive classes is an important objective in object-oriented design. Class cohesion refers to the relatedness of the class members, and it indicates one important aspect of the class design quality. A meaningful class cohesion metric helps object-oriented software developers detect class design weaknesses and refactor classes accordingly. Several class cohesion metrics have been proposed in the literature. Most of these metrics are applicable based on low-level design information such as attribute references in methods. Some of these metrics capture class cohesion by counting the number of method pairs that share common attributes. A few metrics measure cohesion more precisely by considering the degree of interaction, through attribute references, between each pair of methods. However, the formulas applied by these metrics to measure the degree of interaction cause the metrics to violate important mathematical properties, thus undermining their construct validity and leading to misleading cohesion measurement. In this paper, we propose a formula that precisely measures the degree of interaction between each pair of methods, and we use it as a basis to introduce a low-level design class cohesion metric (LSCC). We verify that the proposed formula does not cause the metric to violate important mathematical properties. In addition, we provide a mechanism to use this metric as a useful indicator for refactoring weakly cohesive classes, thus showing its usefulness in improving class cohesion. Finally, we empirically validate LSCC. Using four open source software systems and eleven cohesion metrics, we investigate the relationship between LSCC, other cohesion metrics, and fault occurrences in classes. Our results show that LSCC is one of three metrics that explains more accurately the presence of faults in classes. LSCC is the only one among the three metrics to comply with important mathematical properties, and statistical analysis shows it captures a measurement dimension of its own. This suggests that LSCC is a better alternative, when taking into account both theoretical and empirical results, as a measure to guide the refactoring of classes. From a more general standpoint, the results suggest that class quality, as measured in terms of fault occurrences, can be more accurately explained by cohesion metrics that account for the degree of interaction between each pair of methods.