20.01.2014 Views

thesis - Faculty of Information and Communication Technologies ...

thesis - Faculty of Information and Communication Technologies ...

thesis - Faculty of Information and Communication Technologies ...

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!