thesis - Faculty of Information and Communication Technologies ...
thesis - Faculty of Information and Communication Technologies ...
thesis - Faculty of Information and Communication Technologies ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 6. Change Dynamics<br />
stance, in Saxon, the developers choose to implement both compiletime<br />
<strong>and</strong> run-time h<strong>and</strong>lers for XSL-T instructions in the same component<br />
[144], they also share memory mapped data structures among different<br />
components, increasing the inter-dependencies, which has been<br />
shown to increase certain types <strong>of</strong> defects [130]. Unfortunately, the exact<br />
rationale for these choices in Saxon has not been explicitly stated<br />
(our inference is that the choice to merge compile-time <strong>and</strong> run-time<br />
h<strong>and</strong>lers in Saxon may have been motivated by a desire to improve the<br />
performance).<br />
The architecture guide provided with Axis [11] states that most modules<br />
are not functionally separated <strong>and</strong> attempt to provide a diverse range<br />
<strong>of</strong> functionality, this tight coupling is noted by the developers as an<br />
known concern that needs to be addressed in later releases [11]. The<br />
developers <strong>of</strong> Axis, interestingly, do suggest a potential solution that can<br />
address the coupling issue in the architecture document [11] but these<br />
recommendations have not been implemented (at time <strong>of</strong> analysis). The<br />
decisions that the iText team made with respect to compiling are similar<br />
to choices made for Axis <strong>and</strong> Saxon as inferred from the change logs <strong>and</strong><br />
release notes [128].<br />
Another aspect common in iText <strong>and</strong> Saxon was the choice made by the<br />
developers to build their own collections data structures (such as a List,<br />
Map <strong>and</strong> Queue) that underwent many changes when they were initially<br />
introduced into the code base. Comments provided in the source<br />
code suggest that the motivation for creating their own collections data<br />
structure was to improve performance. It is possible that at the time<br />
<strong>of</strong> development the developers did not have access to reliable <strong>and</strong> mature<br />
high-performance collections classes such as those that exist freely<br />
now like GNU Trove [280] <strong>and</strong> the Google collections framework [107].<br />
Though, reliable high-performance collections libraries now exist the<br />
developers have left their original data structures <strong>and</strong> algorithms intact.<br />
In iText, Saxon <strong>and</strong> Axis developers made a number <strong>of</strong> incremental modifications.<br />
Unfortunately, without an underlying architecture <strong>and</strong> design<br />
that allowed them to incrementally meet the specifications, they<br />
172