Architectural Category Tags and Risk Metric#
The Architectural Category Tags can be created with the menu Tools ‣ Create Architectural Category Tags.
This will create a tag named ArchitecturalCategories
with 4 sub tags: core
, peripheral
, utility
and control
.
The tags are calculated by using the technique desribed in Daniel J. Sturtevant’s paper “System Design and the Cost of Architectural Complexity” [1]. The categories are determined by using two metrics called “Visibility Fan In” (VFI) and “Visibility Fan Out” (VFO).
- Existing metrics in Lattix are used to represent the VFI and VFO metrics as follows:
VFI = Average Impact +1
VFO = Average Cumulative Dependency
In Sturtevant’s paper, a “cliff” in the VFI and VFO graphs is referenced, in which there is a sudden increase in the values of VFI and VFO. An example is represented in the following images:
In order to calculate if the VFO
and VFI
are low or high we determine the “cliff” value for each and name them cliffVFI
and cliffVFO
A value of VFI < cliffVFI is low
A value of VFI >= cliffVFI is high
A value of VFO < cliffVFO is low
A value of VFO >= cliffVFO is high
VFI |
VFO |
Tag |
Description |
---|---|---|---|
low |
low |
peripheral |
Does not influence much of the system |
high |
low |
utility |
Relied on by much of the system |
low |
high |
control |
Coordinates the behavior of the system |
high |
high |
core |
Has large cycles and co-dependent code |
Sometimes there are multiple cliffs in the graph (see below). We choose the cliff based on several heuristics, for instance: the biggest cliff or the cliff closest to the middle. If the cliff is too close to the end of the graph (as in the the above VFO graph) we will use a cliff value closer to the middle of the graph for better results.
Risk Metric#
Since the subsystems tagged as core
have both high Fan In
and Fan Out
connections, they are considered higher risk. So we have created a metric named Risk
that is calculated as follows:
The Risk metric will be calculated as 1.0 if VFI >= cliffVFI and VFO >= cliffVFOThe Risk metric will be calculated as 0.3 if VFI >= (cliffVFI * 70%) and VFO >= (cliffVFO * 50%)The Risk metric will be calculated as 0.3 if VFI >= (cliffVFI * 50%) and VFO >= (cliffVFO * 70%)
The Risk Metric can be used in the heatmap.