Model difference
Differences (or change lists or deltas) are the result of a comparison between artefacts at the same level of abstraction. In [1], authors claim that “Delta algorithms, i.e., algorithms that compute differences between two files or strings, have a number of uses when multiple versions of data objects must be stored, transmitted, or processed.”. For instance, filesystem backups are performed incrementally to save storage space, while operating system updates are distributed as patches to avoid large downloads. Moreover, images on displays are locally changed to speed up visualization processing without a complete refresh of the screen. Therefore, it is not surprising that an early and important field of difference application is version management. As soon as large projects are faced some advantages come to light:
- in general the space needed to store deltas from a version to another one is much lesser than the space needed to store the whole new version. In general, revisions following the initial implementation are obtained by refinements which involve limited portions of the overall system;
- it is also much easier to retrieve differences allowing a better analysis of software evolution steps. Delta documents make evident which changes occurred in each new version thus enabling abstractions and classifications [2];
- it is possible to selectively apply modifications in order to test and validate the effects related to each independent sub-portion of the update. For instance, when merging concurrent updates it is possible to distinguish parallel independent manipulations from conflicting ones.
A software evolution can be represented as the entire first version and a sequence of difference documents corresponding to subsequent changes on the initial state. Vice versa, it can be stored as a stream of updates that generate the latest revision, which is maintained entirely. These techniques are referred to as forward and backward differencing, respectively [3]. The advantage of using the latter mechanism lies in the quick availability of recent versions, which in general are frequently accessed. In fact, the latest revision is ready while the others can be obtained through few backward steps. On the contrary, forward methods require to traverse the whole change history in order to get the current application stage.
References
[1] HUNT, J. J., VO, K.-P., TICHY, W. F. Delta algorithms: an empirical analysis. ACM Trans. Softw. Eng. Methodol. 7, 2 (1998), 192–214.
[2] CHAPIN, N., HALE, J. E., KHAM, K. M., RAMIL, J. F., TAN, W.-G. Types of software evolution and software maintenance. Journal of Software Maintenance 13, 1 (2001), 3–30.
[3] MENS, T. A state-of-the-art survey on software merging. IEEE Trans. Softw. Eng. 28, 5 (2002), 449–462.

Subscribe to RSS feed.
Rien ne se perd,
rien ne se crée, tout se transforme

