Using Evowave for Logical Coupling Analysis of a Long-lived Software System

Rodrigo Magnavita, Renato Novais, Bruno Silva and Manoel Mendonça



As a software system is developed and maintained across time there is an increasing amount of effort to understand program entities and carry out changes on them. This phenomenon happens, besides other reasons, due to complex dependencies grown among program entities throughout the software evolution. Moreover, such dependencies may not be explicitly found by analyzing a single version of the source code. In that context, authors have recently investigated a property called Logical coupling, which reveals implicit dependencies between program entities, by measuring how often they changed together during development [Robbes et al. 2008]. Coupling has been proved useful in a variety of software daily activities, such as maintenance effort estimation [Gupta and Rohil 2012], program comprehension [Briand et al. 1999], design flaws detection [Marinescu 2004]. Due to its importance, logical coupling has been studied with different purposes, such as: detection of architectural weaknesses, poorly designed inheritance hierarchies, blurred interfaces of modules [Gall et al. 2003], and change impact analysis [Rolfsnes et al. 2016]. In all of those cases, the comprehension of how the logical coupling property manifests itself in the project is a key activity.