Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
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
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
AntiPatterns: refactoring software, architectures, and projects in crisis
AntiPatterns: refactoring software, architectures, and projects in crisis
Patterns in Java, volume 1: a catalog of reusable design patterns illustrated with UML
Patterns in Java, volume 1: a catalog of reusable design patterns illustrated with UML
Pattern-based reverse-engineering of design components
Proceedings of the 21st international conference on Software engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
A cohesion measure for object-oriented classes
Software—Practice & Experience
A Unified Framework for Cohesion Measurement in Object-OrientedSystems
Empirical Software Engineering
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Measuring and Assessing Maintainability at the End of High Level Design
ICSM '93 Proceedings of the Conference on Software Maintenance
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
Refactoring class hierarchies with KABA
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Object-Oriented Metrics in Practice
Object-Oriented Metrics in Practice
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
QScope: an Open, Extensible Framework for Measuring Software Projects
CSMR '06 Proceedings of the Conference on Software Maintenance and Reengineering
Star diagram with automated refactorings for Eclipse
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Relational programming with CrocoPat
Proceedings of the 28th international conference on Software engineering
A software metric for coherence of class roles in Java programs
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Client based Object-Oriented Cohesion Metrics
COMPSAC '07 Proceedings of the 31st Annual International Computer Software and Applications Conference - Volume 02
Using datalog with binary decision diagrams for program analysis
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
CodeQuest: scalable source code queries with datalog
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Science of Computer Programming
Hi-index | 0.00 |
One purpose of software metrics is to measure the quality of programs. The results can be for example used to predict maintenance costs or improve code quality. An emerging view is that if software metrics are going to be used to improve quality, they must help in finding code that should be refactored. Often refactoring or applying a design pattern is related to the role of the class to be refactored. In client-based metrics, a project gives the class a context. These metrics measure how a class is used by other classes in the context. We present a new client-based metric LCIC (Lack of Coherence in Clients), which analyses if the class being measured has a coherent set of roles in the program. Interfaces represent the roles of classes. If a class does not have a coherent set of roles, it should be refactored, or a new interface should be defined for the class. We have implemented a tool for measuring the metric LCIC for Java projects in the Eclipse environment. We calculated LCIC values for classes of several open source projects. We compare these results with results of other related metrics, and inspect the measured classes to find out what kind of refactorings are needed. We also analyse the relation of different design patterns and refactorings to our metric. Our experiments reveal the usefulness of client-based metrics to improve the quality of code.