A Survey of Dynamic Software Metrics <s> Comparison of Dynamic Coupling <s> The increasing importance being placed on software measurement has led to an increased amount of research developing new software measures. Given the importance of object-oriented development techniques, one specific area where this has occurred is coupling measurement in object-oriented systems. However, despite a very interesting and rich body of work, there is little understanding of the motivation and empirical hypotheses behind many of these new measures. It is often difficult to determine how such measures relate to one another and for which application they can be used. As a consequence, it is very difficult for practitioners and researchers to obtain a clear picture of the state of the art in order to select or define measures for object-oriented systems. This situation is addressed and clarified through several different activities. First, a standardized terminology and formalism for expressing measures is provided which ensures that all measures using it are expressed in a fully consistent and operational manner. Second, to provide a structured synthesis, a review of the existing frameworks and measures for coupling measurement in object-oriented systems takes place. Third, a unified framework, based on the issues discovered in the review, is provided and all existing measures are then classified according to this framework. This paper contributes to an increased understanding of the state-of-the-art. <s> BIB001 </s> A Survey of Dynamic Software Metrics <s> Comparison of Dynamic Coupling <s> The relationships between coupling and external quality factors of object-oriented software have been studied extensively for the past few years. For example, several studies have identified clear empirical relationships between class-level coupling and the fault-proneness of the classes. A common way to quantify the coupling is through static code analysis. However, the resulting static coupling measures only capture certain underlying dimensions of coupling. Other dependencies regarding the dynamic behavior of software can only be inferred from run-time information. For example, due to inheritance and polymorphism, it is not always possible to determine the actual receiver and sender classes (i.e., the objects) from static code analysis. This paper describes how several dimensions of dynamic coupling can be calculated by tracing the flow of messages between objects at run-time. As a first evaluation of the proposed dynamic coupling measures, fairly accurate prediction models of the change proneness of classes have been developed using change data from nine maintenance releases of a large SmallTalk system. Preliminary results suggest that dynamic coupling may also be useful for developing prediction models and tools supporting change impact analysis. At present, work on developing a dynamic coupling tracer and ripple-effect prediction models for Java programs is underway. <s> BIB002 </s> A Survey of Dynamic Software Metrics <s> Comparison of Dynamic Coupling <s> Software quality is an important external software attribute that is difficult to measure objectively. Several studies have identified a clear empirical relationship between static coupling metrics and software quality. However due to the nature of object-oriented programs, static metrics fail to quantify all the underlying dimensions of coupling, as program behaviour is a function of its operational environment as well as the complexity of the source code. In this paper a set of run-time object-oriented coupling metrics are described. A method of collecting such metrics which utilises the Java Platform Debug Architecture is described and a collection of Java programs from the SPECjvm98 benchmark suite are evaluated. A number of statistical techniques including descriptive statistics, a correlation study and principal component analysis are used to assess the fundamental properties of the measures and investigate whether they are redundant with respect to the Chidamber and Kemerer static CBO metric. Results to date indicate that run-time coupling metrics can provide an interesting and informative qualitative analysis of a program and complement existing static coupling metrics. <s> BIB003 </s> A Survey of Dynamic Software Metrics <s> Comparison of Dynamic Coupling <s> This paper examines the relationship between the static coupling between objects (CBO) metric and some of its dynamic counterparts. The dimensions of the relationship for Java programs are investigated, and the influence of instruction coverage on this relationship is measured. An empirical evaluation of 14 Java programs taken from the SPEC JVM98 and the JOlden benchmark suites is conducted using the static CBO metric, six dynamic metrics and instruction coverage data.The results presented here confirm preliminary studies indicating the independence of static and dynamic coupling metrics, but point to a strong influence of coverage on the relationship. Based on this, this paper suggests that dynamic coupling metrics might be better interpreted in the context of coverage measures, rather than as stand-alone software metrics. <s> BIB004
Measures and Their Relations with Quality Attributes In above subsections, a number of different metrics have been presented for measuring dynamic coupling. These metrics are defined at different stages of software development and are useful for different purposes. First type of metrics, EOC and IOC are defined at design-time and are derived from dynamic design models (models depicting execution scenarios). EOC and IOC metrics can affect many of the quality attributes such as maintainability, understandability, reusability and error-propagation. Objects having higher values of EOC or IOC would be more critical to changes due to maintenance and are more likely to export or import these maintenance changes to other objects. Moreover, objects having higher values of EOC or IOC metrics are harder to understand since their dynamic behaviour tightly depends on each other. Objects with higher EOC or IOC are less reusable because they strongly depend on each other and are more likely to be used together. Further, objects with high EOC or IOC are more likely to be a source of error propagation since errors are more likely to propagate from the faulty source to the destination object as a result of the frequent messages exchanged between them. However, these metrics do not give a precise depiction of the actual runtime situation as they are calculated during the early design stage of a program. Further, EOC and IOC metrics do not comply with the coupling properties for object-oriented software systems described in the axiomatic framework given by Briand et al. BIB001 and these metrics do not account for inheritance and polymorphism. Second type, Arisholm's dynamic coupling metrics are defined at actual runtime and quantify the flow of messages between objects at runtime. These metrics adhere to the theoretical framework for coupling measures proposed in BIB001 for object-oriented software systems. It has been shown that these metrics are complementary to simple size measures and static coupling measures. Moreover, authors show that dynamic coupling measures capture different properties than static coupling measures, though some degree of correlation exists between them. Authors also demonstrate that dynamic export coupling measures are good indicators of change proneness of software systems. However, Arisholm et al. define and study dynamic coupling measures as stand-alone metrics and do not consider the effect of code coverage measures on the proposed measures in detail. Third type, Mitchell and Power metrics are an extension of static CBO coupling metric as defined in Table  4 . The Dynamic CBO and Degree of Dynamic Coupling between classes metrics are proposed to quantify the external complexity of a class at runtime. Degree of Dynamic Coupling within a given set of classes metric is defined to determine external complexity within a group of classes. These metrics are directly related to testability and maintainability. The greater the level of coupling present, the more rigorous testing needs to be done and the greater the Dynamic CBO is for a class, maintenance is more difficult as the class will be more sensitive to changes in other classes with which it is coupled. Authors BIB003 show that the runtime metrics, R I , R E , RD I and RD E capture different properties than the static metrics although some degree of correlation does exist. Authors in BIB004 successfully demonstrate that dynamic coupling metrics might be better interpreted in the context of coverage measures, rather than as stand-alone software metrics and for this purpose, they use dynamic coupling metrics proposed by Arisholm BIB002 . Fourth type, DCM is a dynamic coupling measure for systems built on meta-level architectures and is calculated during the actual program execution. The DCM metric can be used to predict the runtime complexity of the system. The value of DCM metric in an object-oriented system has relation with quality of the system in terms of software maintenance. It may help system engineers to decide on the appropriate software components to be used in production and maintenance phase. Classes with high object couplings need more attention and consequently induce higher maintenance cost. Thus, these types of classes should be assigned to more experienced developers. Further, DCM metric can be used to compare systems' coupling at runtime and can also be used as a means of comparing runtime coupling of a system at different stages of its development. Knowledge of amount of coupling at runtime can also be helpful in making decisions on re-engineering and re-factoring. Zaidman et al. use two already existing dynamic coupling metrics; IC CM and IC CC defined by Arisholm BIB002 and propose a metric IC CC ′ , which is a variation of IC CC metric. These dynamic coupling measures are quite useful in identification of key classes for comprehension process in a software system. Authors' work clearly indicates that dynamic coupling metrics and dynamic analysis with its goal-oriented strategy, pay dividends when used for program comprehension purposes. The different types of dynamic coupling metrics as discussed above have been found to be indicators of external quality attributes as given in Table 5 . 