Propagation rules

Propagation rules are the rules that describe how a change of the mark of a component in the dependency graph will affect status of other components in the dependency graph this component interacts with. For example, if a class in an object-oriented system was changed (i.e. assigned a status Changed), then all the classes that either use or are used by this class should be inspected for a possible change (i.e. assigned Next status) as well. Propagation rules help to ensure that changes to software are done in a consistent and correct way.

All propagation rules work in the following way:

Therefore, current mark of the node, new mark, decided mark, selected granularity, and dependencies are the main factors taken into account by the propagation rules. Following is the list of the propagation rules, that can be applied depending on the current mark of the node.

  1.   Located or Impacted or Changed
  2.    Propagating
  3.   Next Visit
  4.   Visited
  5.   Blank

There is also a relaxed version of this rules, which treats nodes, marked as   Blank , in the same way as if they were marked as   Next. To read more about this, please go to the Incremental Change Modules section.


The behavior of propagation rules depends on the selected granularity of analysis, see [1] for more details.

JRipples dependency graph supports components of any level of nesting as well as the dependencies between these components. More explanations on how components and their interactions can be defined are provided in granularities of analysis section of the manual. There are couple general rules on how granularity affects the propagation rules:

  1. If a finer granularity is selected, the computer marks as   Next the neighbors of all children (i.e. components that nest in the focus component) on the selected nesting level. If a coarser granularity is selected, the computer marks as Next the neighbors of the selected parent (i.e. component in which the focus component nests).
  2. Propagation rules act on all dependencies of a selected component, including dependencies defined in the component itself as well as dependencies defined in the members of this component.
  3. Rules applied at Edge level will act strictly on the one selected dependency (edge) - between the component, whose context menu is activated, and a component selected from the “Edge level" submenu (see assigning marks).
  4. Rules applied at selected text will act on the components called from the selected text and the components that are calling the components defined in this piece of code (see assigning marks).
Generally, the granularity, on which the rules are applied has a direct impact on how many neighbors will be marked as   Next.

References

  • [1] Petrenko, M and Rajlich, V., "Variable Granularity for Improving Precision of Impact Analysis", in IEEE International Conference on Program Comprehension, 2009, pp. 10-19.