A Survey of Dynamic Software Metrics <s> Dynamic Coupling Metric (DCM) <s> The extent of coupling in an object-oriented system has implications for its quality in terms of software maintenance. In turn, the extent of reuse in a software system also has implications for the maintainability of that system. One important feature of reflective systems is their dynamic behaviour. In such systems, objects exchange coupling interactions to a larger degree than corresponding static systems providing the same functionality. In this paper, we look at object coupling as it evolves during program execution and propose a measure which takes object interactions into account. The measure can be used to compare systems built on meta-level architectures with systems having no reflective features yet, at the same time, exhibiting the same interface. <s> BIB001 </s> A Survey of Dynamic Software Metrics <s> Dynamic Coupling Metric (DCM) <s> Most object-oriented coupling measures proposed in the literature deal with coupling at the static class level. Measuring dynamic object coupling on the other hand gives us the potential for greater insight into system structure and a comparison of the architectural aspects of different systems. In previous work, we theoretically validated a Dynamic Coupling Metric (DCM) and showed, with the aid of a small example, how a system with meta-level characteristics contained less coupling than a corresponding system without these features. In this paper, we build on the theoretical foundations of our DCM and investigate, in more detail, an empirical validation of the metric. A profiler was developed to collect dynamic coupling data represented by message exchanges between objects at runtime; two system models with different architectural characteristics providing the same functionality were then considered. Empirical validation of the metric showed it to be a useful vehicle for comparing the runtime coupling characteristics of software systems. Results also showed that for examples covering various types of couplings, reflective systems separating the base level from the meta-level exhibited significantly less coupling when compared with corresponding systems with a single-level architecture. <s> BIB002
Another dimension to measure dynamic coupling is initiated by Hassoun et al. BIB001 BIB002  , where they target to measure the influence of one object on others over a period of time, instead of import/export coupling concept. Hassoun et al. propose a dynamic coupling metric DCM for measuring object level coupling for systems built on meta-level architectures (declarative control languages that allow one to write specifications of program behaviour). This metric is derived from the study that coupling between two objects can be defined in terms of time during which one object influences the other. Two objects are said to be coupled if either one of them could influence the history of the other. The history of an object is defined as the sequence of its states in time. The Dynamic Coupling Measure of an object (P ) during a time period ∆t, denoted by DCM (P )|∆t, is defined as sum over all program execution steps and sum over the total number of objects, (O i ), coupled to object P : where i = 0, 1, 2, · · ·, the number of coupled objects, i is the sum over the set of objects coupled to P , ∆t is an ordered sequence of program execution steps t 0 , .., t j , .., t n , and j is the sum over the program execution steps. Here, f i (t j ) assumes values 1 or 0 depending on whether coupling of the i-th object is live at t j or not and g p (|O i |) denotes the complexity measure of the i-th object coupled to object P . At the system level, the coupling measure in a time interval ∆t is the sum of all measures defined in the above formula over all the objects of the system, i.e., DCM (system)|∆t = all-system-objects The DCM metric can be used to measure the coupling of a particular object or the entire system at runtime. Hassoun et al.  conclude that reflective systems (systems whose behaviour and structure can change during program execution) exhibiting the same behaviour as corresponding non-reflective systems have less coupling, fewer objects and more interactions.