TL;DR: This work proposes a novel mechanism - called detection strategy - for formulating metrics-based rules that capture deviations from good design principles and heuristics, and defined such detection strategies for capturing around ten important flaws of object-oriented design found in the literature.
Abstract: In order to support the maintenance of an object-oriented software system, the quality of its design must be evaluated using adequate quantification means. In spite of the current extensive use of metrics, if used in isolation metrics are oftentimes too fine grained to quantify comprehensively an investigated design aspect (e.g., distribution of system's intelligence among classes). To help developers and maintainers detect and localize design problems in a system, we propose a novel mechanism - called detection strategy - for formulating metrics-based rules that capture deviations from good design principles and heuristics. Using detection strategies an engineer can directly localize classes or methods affected by a particular design flaw (e.g., God Class), rather than having to infer the real design problem from a large set of abnormal metric values. We have defined such detection strategies for capturing around ten important flaws of object-oriented design found in the literature and validated the approach experimentally on multiple large-scale case-studies.
TL;DR: This is a book that will show you even new to old thing, and when you are really dying of object oriented metrics in practice, just pick this book; it will be right for you.
Abstract: It's coming again, the new collection that this site has. To complete your curiosity, we offer the favorite object oriented metrics in practice book as the choice today. This is a book that will show you even new to old thing. Forget it; it will be right for you. Well, when you are really dying of object oriented metrics in practice, just pick it. You know, this book is always making the fans to be dizzy if not to find.
TL;DR: Because any object can be used as a prototype, and any messages can be forwarded at any time, delegation is the more flexible and general of the two techniques.
Abstract: A traditional philosophical controversy between representing general concepts as abstract sets or classes and representing concepts as concrete prototypes is reflected in a controversy between two mechanisms for sharing behavior between objects in object oriented programming languages. Inheritance splits the object world into classes, which encode behavior shared among a group of instances, which represent individual members of these sets. The class/instance distinction is not needed if the alternative of using prototypes is adopted. A prototype represents the default behavior for a concept, and new objects can re-use part of the knowledge stored in the prototype by saying how the new object differs from the prototype. The prototype approach seems to hold some advantages for representing default knowledge, and incrementally and dynamically modifying concepts. Delegation is the mechanism for implementing this in object oriented languages. After checking its idiosyncratic behavior, an object can forward a message to prototypes to invoke more general knowledge. Because class objects must be created before their instances can be used, and behavior can only be associated with classes, inheritance fixes the communication patterns between objects at instance creation time. Because any object can be used as a prototype, and any messages can be forwarded at any time, delegation is the more flexible and general of the two techniques.
TL;DR: A novel metrics-based approach for detecting design problems in object-oriented software and introduces an important suite of detection strategies for the identification of different well-known design flaws as well as some rarely mentioned ones.
Abstract: Presents a novel metrics-based approach for detecting design problems in object-oriented software. Introduces an important suite of detection strategies for the identification of different well-known design flaws as well as some rarely mentioned ones.