18.11.2014 Views

Identification of Crosscutting in Software Design - ResearchGate

Identification of Crosscutting in Software Design - ResearchGate

Identification of Crosscutting in Software Design - ResearchGate

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.1 Matrix representation<br />

In this section, we describe how crosscutt<strong>in</strong>g can be identified and<br />

represented <strong>in</strong> matrices. As start<strong>in</strong>g po<strong>in</strong>t, the developer must<br />

establish a dependency matrix show<strong>in</strong>g the mapp<strong>in</strong>g between<br />

source and target. From this matrix, we derive the crosscutt<strong>in</strong>g<br />

matrix, where we represent the crosscutt<strong>in</strong>g source elements.<br />

Then, we describe how the crosscutt<strong>in</strong>g matrix can be constructed<br />

from the dependency matrix with some auxiliary matrices. This is<br />

illustrated with some examples.<br />

2.2 Def<strong>in</strong>itions <strong>of</strong> matrices<br />

The relation between source elements and target elements can be<br />

represented <strong>in</strong> a matrix that we called dependency matrix. As<br />

described before, the mapp<strong>in</strong>g can have different types, such as<br />

usage and abstraction dependencies (e.g. realization, ref<strong>in</strong>ement<br />

and trac<strong>in</strong>g [24]). A dependency matrix (source x target)<br />

represents the dependency relation between source elements and<br />

target elements (<strong>in</strong>ter-level relationship). In the rows, we have the<br />

source elements, and <strong>in</strong> the columns, we have the target elements.<br />

In this matrix, a cell with 1 denotes that the source element (<strong>in</strong> the<br />

row) is mapped to the target element (<strong>in</strong> the column).<br />

Reciprocally this means that the target element addresses the<br />

source element. Scatter<strong>in</strong>g and tangl<strong>in</strong>g can easily be visualized <strong>in</strong><br />

this matrix (see the examples below).<br />

We def<strong>in</strong>e an auxiliary concept crosscutpo<strong>in</strong>t used <strong>in</strong> the context<br />

<strong>of</strong> dependency matrices, to denote a matrix cell <strong>in</strong>volved <strong>in</strong> both<br />

tangl<strong>in</strong>g and scatter<strong>in</strong>g. If there is one or more crosscutpo<strong>in</strong>ts<br />

then we say we have crosscutt<strong>in</strong>g.<br />

<strong>Crosscutt<strong>in</strong>g</strong> between source elements for a given mapp<strong>in</strong>g to<br />

target elements, as shown <strong>in</strong> a dependency matrix, can be<br />

represented <strong>in</strong> a crosscutt<strong>in</strong>g matrix. A crosscutt<strong>in</strong>g matrix (source<br />

x source) represents the crosscutt<strong>in</strong>g relation between source<br />

elements, for a given source to target mapp<strong>in</strong>g (represented <strong>in</strong> a<br />

dependency matrix). In the crosscutt<strong>in</strong>g matrix, a cell with 1<br />

denotes that the source element <strong>in</strong> the row is crosscutt<strong>in</strong>g the<br />

source element <strong>in</strong> the column. In section 2.3 we expla<strong>in</strong> how this<br />

crosscutt<strong>in</strong>g matrix can be derived from the dependency matrix.<br />

A crosscutt<strong>in</strong>g matrix should not be confused with a coupl<strong>in</strong>g<br />

matrix. A coupl<strong>in</strong>g matrix shows coupl<strong>in</strong>g relations between<br />

elements at the same level (<strong>in</strong>tra-level dependencies). In some<br />

sense, the coupl<strong>in</strong>g matrix is related to the design structure matrix<br />

[4]. On the other hand, a crosscutt<strong>in</strong>g matrix shows crosscutt<strong>in</strong>g<br />

relations between elements at one level with respect to a mapp<strong>in</strong>g<br />

onto elements at some other level (<strong>in</strong>ter-level dependencies).<br />

We now give an example and use the dependency matrix and<br />

crosscutt<strong>in</strong>g matrix to visualize the def<strong>in</strong>itions (S denotes a<br />

scattered source element - a grey row; NS denotes a non-scattered<br />

source element; T denotes a tangled target element - a grey<br />

column; NT denotes a non-tangled target element). The example<br />

is shown <strong>in</strong> Table 1, represent<strong>in</strong>g the mapp<strong>in</strong>g from Figure 1.<br />

Table 1. Example dependency and crosscutt<strong>in</strong>g matrix<br />

dependency matrix<br />

target<br />

t[1] t[2] t[3] t[4]<br />

s[1] 1 0 1 1 S<br />

s[2] 0 1 0 0 NS<br />

s[3] 0 0 1 0 NS<br />

NT NT T NT<br />

source<br />

source<br />

crosscutt<strong>in</strong>g matrix<br />

source<br />

s[1] s[2] s[3]<br />

s[1] 0 0 1<br />

s[2] 0 0 0<br />

s[3] 0 0 0<br />

In this example, we have one scattered source element s[1] and<br />

one tangled target element t[3]. Moreover there is one<br />

crosscutpo<strong>in</strong>t at matrix cell [1,3] (dark grey cell). Apply<strong>in</strong>g our<br />

def<strong>in</strong>ition, we arrive to the crosscutt<strong>in</strong>g matrix. Source element<br />

s[1] is crosscutt<strong>in</strong>g s[3] (because s[1] is scattered over [t[1], t[3],<br />

t[4]] and s[3] is <strong>in</strong> the tangled one <strong>of</strong> these elements, namely t[3]).<br />

The reverse is not true: the crosscutt<strong>in</strong>g relation is not symmetric.<br />

2.3 Construct<strong>in</strong>g crosscutt<strong>in</strong>g matrices<br />

In this section, we describe how to derive the crosscutt<strong>in</strong>g matrix<br />

from the dependency matrix. We use a more extended example<br />

than the previous one. We now show an example with more than<br />

one crosscutpo<strong>in</strong>t, <strong>in</strong> this example 8 po<strong>in</strong>ts (see Table 2; the dark<br />

grey cells).<br />

Table 2. Example dependency matrix with tangl<strong>in</strong>g, scatter<strong>in</strong>g<br />

and several crosscutpo<strong>in</strong>ts<br />

dependency matrix<br />

target<br />

t[1] t[2] t[3] t[4] t[5] t[6]<br />

s[1] 1 0 0 1 0 0 S<br />

s[2] 1 0 1 0 1 1 S<br />

s[3] 1 0 0 0 0 0 NS<br />

s[4] 0 1 1 0 0 0 S<br />

s[5] 0 0 0 1 1 0 S<br />

T NT T T T NT<br />

source<br />

Based on the dependency matrix, we def<strong>in</strong>e some auxiliary<br />

matrices: the scatter<strong>in</strong>g matrix (source x target), and the tangl<strong>in</strong>g<br />

matrix (target x source). These two matrices are def<strong>in</strong>ed as<br />

follows:<br />

- In the scatter<strong>in</strong>g matrix a row conta<strong>in</strong>s only dependency<br />

relations from source to target elements if the source element <strong>in</strong><br />

this row is scattered (mapped onto multiple target elements);<br />

otherwise the row conta<strong>in</strong>s just zero's (no scatter<strong>in</strong>g).<br />

- In the tangl<strong>in</strong>g matrix a row conta<strong>in</strong>s only dependency relations<br />

from target to source elements if the target element <strong>in</strong> this row is<br />

tangled (mapped onto multiple source elements); otherwise the<br />

row conta<strong>in</strong>s just zero's (no tangl<strong>in</strong>g).<br />

For our example <strong>in</strong> Table 2, these matrices are shown <strong>in</strong> Table 3.<br />

We now def<strong>in</strong>e the crosscutt<strong>in</strong>g product matrix, show<strong>in</strong>g the<br />

frequency <strong>of</strong> crosscutt<strong>in</strong>g relations. A crosscutt<strong>in</strong>g product matrix<br />

(source x source) represents the frequency <strong>of</strong> crosscutt<strong>in</strong>g<br />

relations between source elements, for a given source to target<br />

mapp<strong>in</strong>g. The crosscutt<strong>in</strong>g product matrix is not necessarily<br />

symmetric. The crosscutt<strong>in</strong>g product matrix ccpm can be obta<strong>in</strong>ed<br />

through the matrix multiplication <strong>of</strong> the scatter<strong>in</strong>g matrix sm and<br />

the tangl<strong>in</strong>g matrix tm: ccpm = sm . tm where ccpm ik = sm ij tm jk<br />

In this crosscutt<strong>in</strong>g product matrix, the cells denote the frequency<br />

<strong>of</strong> crosscutt<strong>in</strong>g. This can be used for quantification <strong>of</strong> crosscutt<strong>in</strong>g<br />

(crosscutt<strong>in</strong>g metrics). The frequency <strong>of</strong> crosscutt<strong>in</strong>g <strong>in</strong> this<br />

- 2 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!