Page 93 -
P. 93
78 DUBINSKY, HAZZAN, TALBY, AND KEREN
Figure 6.3 Averaged Keyword-Based Complexity in Eight Monthly
Checkpoints
SpecP
75
73
71
69
67
65
Feb Mar Apr May Jun Jul Aug Sep
SpecA
25
23
21
19
17
15
Feb Mar Apr May Jun Jul Aug Sep
Several complementing explanations for this outcome follow.
• First, the plan-driven project is three years older than the agile one and is at a much later
development stage. Although the plan-driven project is still being developed, a large existing
code base sometimes enforces the enhancement of existing modules rather than the creation
of new ones.
• Second, in the agile project, continuous refactoring is performed in order to break down
large modules and reduce dependencies. When a module gets too complex, it is refactored
into (possibly several) simpler modules. The goal is to keep the design simple over a long
period of time, rather than assuming the “right” design in advance. In contrast, in traditional
software projects, the design of modules is usually set in advance. Further, the high absolute
complexity of the plan-driven project, achieved over time (recall that it is in a more mature
state than the agile project), makes refactoring at this stage more expensive and risky.
• Third, some of the business analysts who worked in the agile project had previous analysis
experience in the plan-driven project. Thus, they corrected past mistakes and produced a
more modular design this time.