From 0b249c8f0825661f0f38ce3f7beecfb8ac6f85ac Mon Sep 17 00:00:00 2001 From: William Martin Date: Mon, 12 Mar 2012 19:42:43 +0000 Subject: [PATCH 01/28] began report --- .gitignore | 4 ++++ report.tex | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 .gitignore create mode 100644 report.tex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e5e604 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.aux +*.log +*.pdf + diff --git a/report.tex b/report.tex new file mode 100644 index 0000000..45c3b9d --- /dev/null +++ b/report.tex @@ -0,0 +1,17 @@ +\documentclass[10pt,a4paper]{report} +\usepackage[utf8x]{inputenc} +\usepackage{ucs} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\author{Amaury Couste +\and Sarina Gurung +\and Jakub Kozlowski +\and William Martin} +\title{Tools and Environments Group Project\\diffR} +\begin{document} + +\maketitle + + +\end{document} \ No newline at end of file From fca53be6577d23fd94502ea01b555408575db555 Mon Sep 17 00:00:00 2001 From: sarina Date: Thu, 22 Mar 2012 19:01:30 +0000 Subject: [PATCH 02/28] diffr-#5: Write report introduction. --- report.tex | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/report.tex b/report.tex index 45c3b9d..a0141da 100644 --- a/report.tex +++ b/report.tex @@ -12,6 +12,18 @@ \begin{document} \maketitle +\section{Introduction} +\paragraph{The main task for this group coursework is to build a DIFF tool together with a PATCH tool that knows copy and move.The known DIFF works line by line and determines the differences between two text files i.e. File1 and File2. It produces sequence of commands. When this sequence is applied to File1, File2 is produced. Specific line sequences can be either inserted or deleted by a command. DIFF identifies an insertion and deletion in the same area as a change of line sequence.} + +\paragraph{Our DIFF tool works differently than the known DIFF. It has the following new features such as finding the longest segments that are copied or moved from one file to the other file. It shows lines that are in the new version, but not in the old version.It shows if lines are in the new version that is also present in the old. But instead of showing the lines, it shows where the lines in the old files are.} + +\paragraph{PATCH tool is the automated process of committing or applying of changes in files. This is necessary as many people can work on different copies of the same file. The parts they changed are written in the form of DIFF output. Hence, PATCH tool takes a DIFF output and applies its commands on a file. The PATCH commands are insert, delete and change lines. } + +\paragraph{PATCH tool example: A file is created called DIFFS that includes the differences between two files, File1 and File2 as DIFF output. This file can be shared with other people now. Then, they can decide whether they want to commit the changes from copy of File1 or not. After they commit the change, PATCH applies the changes in DIFFS on File2. Hence, both File1 and File2 are identical now. If the DIFF output includes changes from several files, PATCH can process and apply them.} + +\paragraph{Our PATCH tool works similar to the above mentioned known PATCH tool. But it uses an old version and an output of our DIFF tool to produce the new version from it. Hence, this DIFF/PATCH tool can be used to determine and distribute changes easily and effectively.} + +\paragraph{In this report, the requirements of this tool are identified. UML diagrams are included that shows the architecture of the detector. The description about the implementation of this tool, how it works and the testing performed are included. Finally, the results produced by this tool are evaluated including the main things learnt from this coursework.} \end{document} \ No newline at end of file From 3b55bc0cdf9906efd8758b0790aed71188825d9a Mon Sep 17 00:00:00 2001 From: William Martin Date: Sun, 25 Mar 2012 14:09:48 +0100 Subject: [PATCH 03/28] hotfix: Tidied up report. --- introduction/introduction.tex | 36 +++++++++++++++++++++++++++++++++++ report.tex | 18 ++++-------------- 2 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 introduction/introduction.tex diff --git a/introduction/introduction.tex b/introduction/introduction.tex new file mode 100644 index 0000000..1131e6f --- /dev/null +++ b/introduction/introduction.tex @@ -0,0 +1,36 @@ +\chapter{Introduction} + +The main task for this group coursework is to build a DIFF tool together with a PATCH tool that knows copy and move. +The known DIFF works line by line and determines the differences between two text files i.e. File1 and File2. +It produces sequence of commands. +When this sequence is applied to File1, File2 is produced. +Specific line sequences can be either inserted or deleted by a command. +DIFF identifies an insertion and deletion in the same area as a change of line sequence. + +Our DIFF tool works differently than the known DIFF. +It has the following new features such as finding the longest segments that are copied or moved from one file to the other file. +It shows lines that are in the new version, but not in the old version. +It shows if lines are in the new version that is also present in the old. +But instead of showing the lines, it shows where the lines in the old files are. + +PATCH tool is the automated process of committing or applying of changes in files. +This is necessary as many people can work on different copies of the same file. +The parts they changed are written in the form of DIFF output. +Hence, PATCH tool takes a DIFF output and applies its commands on a file. +The PATCH commands are insert, delete and change lines. + +PATCH tool example: A file is created called DIFFS that includes the differences between two files, File1 and File2 as DIFF output. +This file can be shared with other people now. +Then, they can decide whether they want to commit the changes from copy of File1 or not. +After they commit the change, PATCH applies the changes in DIFFS on File2. +Hence, both File1 and File2 are identical now. +If the DIFF output includes changes from several files, PATCH can process and apply them. + +Our PATCH tool works similar to the above mentioned known PATCH tool. +But it uses an old version and an output of our DIFF tool to produce the new version from it. +Hence, this DIFF/PATCH tool can be used to determine and distribute changes easily and effectively. + +In this report, the requirements of this tool are identified. +UML diagrams are included that shows the architecture of the detector. +The description about the implementation of this tool, how it works and the testing performed are included. +Finally, the results produced by this tool are evaluated including the main things learnt from this coursework. diff --git a/report.tex b/report.tex index a0141da..2b6f215 100644 --- a/report.tex +++ b/report.tex @@ -4,6 +4,7 @@ \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} +\usepackage{hyperref} \author{Amaury Couste \and Sarina Gurung \and Jakub Kozlowski @@ -12,18 +13,7 @@ \begin{document} \maketitle -\section{Introduction} +\tableofcontents +\input{introduction/introduction} -\paragraph{The main task for this group coursework is to build a DIFF tool together with a PATCH tool that knows copy and move.The known DIFF works line by line and determines the differences between two text files i.e. File1 and File2. It produces sequence of commands. When this sequence is applied to File1, File2 is produced. Specific line sequences can be either inserted or deleted by a command. DIFF identifies an insertion and deletion in the same area as a change of line sequence.} - -\paragraph{Our DIFF tool works differently than the known DIFF. It has the following new features such as finding the longest segments that are copied or moved from one file to the other file. It shows lines that are in the new version, but not in the old version.It shows if lines are in the new version that is also present in the old. But instead of showing the lines, it shows where the lines in the old files are.} - -\paragraph{PATCH tool is the automated process of committing or applying of changes in files. This is necessary as many people can work on different copies of the same file. The parts they changed are written in the form of DIFF output. Hence, PATCH tool takes a DIFF output and applies its commands on a file. The PATCH commands are insert, delete and change lines. } - -\paragraph{PATCH tool example: A file is created called DIFFS that includes the differences between two files, File1 and File2 as DIFF output. This file can be shared with other people now. Then, they can decide whether they want to commit the changes from copy of File1 or not. After they commit the change, PATCH applies the changes in DIFFS on File2. Hence, both File1 and File2 are identical now. If the DIFF output includes changes from several files, PATCH can process and apply them.} - -\paragraph{Our PATCH tool works similar to the above mentioned known PATCH tool. But it uses an old version and an output of our DIFF tool to produce the new version from it. Hence, this DIFF/PATCH tool can be used to determine and distribute changes easily and effectively.} - -\paragraph{In this report, the requirements of this tool are identified. UML diagrams are included that shows the architecture of the detector. The description about the implementation of this tool, how it works and the testing performed are included. Finally, the results produced by this tool are evaluated including the main things learnt from this coursework.} - -\end{document} \ No newline at end of file +\end{document} From 03fd3a9a1df61979bbc44a116e3577305cba9aa8 Mon Sep 17 00:00:00 2001 From: William Martin Date: Sun, 25 Mar 2012 19:39:11 +0100 Subject: [PATCH 04/28] closes #6: Write report requirements. * Added requirements chapter. * Added column explanations. * Drafted initial requirements. --- report.tex | 3 ++ requirements/requirements.tex | 66 +++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 requirements/requirements.tex diff --git a/report.tex b/report.tex index 2b6f215..c0f3890 100644 --- a/report.tex +++ b/report.tex @@ -5,6 +5,8 @@ \usepackage{amsfonts} \usepackage{amssymb} \usepackage{hyperref} +\usepackage{booktabs} +\usepackage{longtable} \author{Amaury Couste \and Sarina Gurung \and Jakub Kozlowski @@ -15,5 +17,6 @@ \maketitle \tableofcontents \input{introduction/introduction} +\input{requirements/requirements} \end{document} diff --git a/requirements/requirements.tex b/requirements/requirements.tex new file mode 100644 index 0000000..201dfb9 --- /dev/null +++ b/requirements/requirements.tex @@ -0,0 +1,66 @@ +\chapter{Requirements} + +Here I will list the functional and non-functional requirements for this tool. +Each requirement listing consists of 4 columns: ID, Requirement, Priority and Risk. +These columns are explained separately below. + +\paragraph{ID} +The identifier of the requirement. +Functional requirement IDs consist of an \emph{F} followed by a number, whilst non-functional requirement IDs consist of \emph{N} followed an number. + +\paragraph{Requirement} +The description of the requirement. +This column aims to concisely describe what is required, and consists of a statement about what the system shall do. + +\paragraph{Priority} +The priority of the requirement. +This column gives a qualitative judgement of the determined priority, and is ranked M for \emph{must do}, S for \emph{should do} and C for \emph{could do}. +The project's conclusion should see all requirements ranked M completed and most requirements ranked S completed. + +\paragraph{Risk} +The risk of the requirement. +This column gives a qualitative judgement of the determined risk, in terms of time, effort, effect on other requirements and likelihood of failure. +Possible ranks are High, Medium and Low with obvious definitions. + +\section{Functional Requirements} + +Here I will list the functional requirements for the tool. +These requirements describe something the tool should do. + +\begin{center} +\begin{longtable}{c p{2.8in} c c } + + \toprule + \textbf{ID} & \multicolumn{1}{c}{\textbf{Requirement}} & \textbf{Priority} & \textbf{Risk} \\ + \midrule + + F01 & The System shall take as input two plain text files. & M & Low \\ + F02 & The System shall output plain text. & M & Low \\ + F03 & The System shall output to standard out. & M & Low \\ + F04 & The System shall compute the differences between the two input files. & M & Medium \\ + F05 & The System shall identify which sections are copied from the first file to the second. & M & High \\ + +\bottomrule +\end{longtable} +\end{center} + +\section{Non-Functional Requirements} + +Here I will list the non-functional requirements for the tool. +These requirements describe how the system should be. + +\begin{center} +\begin{longtable}{c p{2.8in} c c } + + \toprule + \textbf{ID} & \multicolumn{1}{c}{\textbf{Requirement}} & \textbf{Priority} & \textbf{Risk} \\ + \midrule + + N01 & The System shall scale well to large documents. & S & Medium \\ + N02 & The System shall process files up to $10,000$ lines long within seconds. & S & Medium \\ + N03 & The System shall be cross-platform. & C & Medium \\ + N04 & The System shall use a suffix tree in order to detect clones between two documents. & C & High \\ + +\bottomrule +\end{longtable} +\end{center} From bfb16499857ba46473d523254056dd121a13956a Mon Sep 17 00:00:00 2001 From: William Martin Date: Tue, 27 Mar 2012 16:01:43 +0100 Subject: [PATCH 05/28] closes #15: Write Team Structure and Responsibilities section. * began team chapter * first draft --- report.tex | 1 + team/process.tex | 10 ++++++++++ team/responsibilities.tex | 5 +++++ team/structure-responsibilities.tex | 7 +++++++ team/structure.tex | 4 ++++ 5 files changed, 27 insertions(+) create mode 100644 team/process.tex create mode 100644 team/responsibilities.tex create mode 100644 team/structure-responsibilities.tex create mode 100644 team/structure.tex diff --git a/report.tex b/report.tex index c0f3890..f687645 100644 --- a/report.tex +++ b/report.tex @@ -18,5 +18,6 @@ \tableofcontents \input{introduction/introduction} \input{requirements/requirements} +\input{team/structure-responsibilities} \end{document} diff --git a/team/process.tex b/team/process.tex new file mode 100644 index 0000000..d97d55e --- /dev/null +++ b/team/process.tex @@ -0,0 +1,10 @@ +\section{Development Process} + +We used the scrum development cycle to structure our project. +This meant dividing the work into a series of \emph{sprints}, which each lasted approximately half a week. +Usually sprint lengths are in the order of weeks, but there was a short time to complete this project, and so short iterations were essential to a timely conclusion. + +Each sprint was started with a meeting: either physical, or after the end of term, electronic. +In this meeting we reviewed the progress of the tasks of the previous sprint, deciding what could be released, and what must roll over to the next sprint. +Following the release of the previous sprint, we decided the present sprint's deadline, and discussed tasks which need doing. +Tasks were then allocated, first by preference, and then arbitrarily. diff --git a/team/responsibilities.tex b/team/responsibilities.tex new file mode 100644 index 0000000..cbdb8ad --- /dev/null +++ b/team/responsibilities.tex @@ -0,0 +1,5 @@ +\section{Responsibilities} + +As discussed above, each team member assumed an equal role within the group, and we all had a joint responsibility complete the project on time. +This translated into a responsibility to complete our tasks on time and to the best of our ability, and to take an active role in scrum meetings. +Meetings were crucial to the success of the project: ensuring that the right tasks were set and allocated to the right members, as well as ensuring that the deadlines were both feasible and on track for the project submission deadline. diff --git a/team/structure-responsibilities.tex b/team/structure-responsibilities.tex new file mode 100644 index 0000000..8a9a47e --- /dev/null +++ b/team/structure-responsibilities.tex @@ -0,0 +1,7 @@ +\chapter{Team} + +Here I will discuss the structure of the team, and the responsibilities of each member on this project. + +\input{team/process} +\input{team/structure} +\input{team/responsibilities} diff --git a/team/structure.tex b/team/structure.tex new file mode 100644 index 0000000..0a8b24b --- /dev/null +++ b/team/structure.tex @@ -0,0 +1,4 @@ +\section{Structure} + +The structure of the team was equal and democratic; we followed the scrum development process to decide tasks and deadlines, and would discuss any issues as and when they presented themselves. +Due to the small size and time to complete the project, role allocation would have adversely affected the progress of the project. From d31a81ca764ff22f7587b7a6d14faddb0393a591 Mon Sep 17 00:00:00 2001 From: William Martin Date: Thu, 29 Mar 2012 14:20:23 +0100 Subject: [PATCH 06/28] diffr-#5: Write report introduction. * Second draft. --- introduction/introduction.tex | 81 ++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/introduction/introduction.tex b/introduction/introduction.tex index 1131e6f..af06e74 100644 --- a/introduction/introduction.tex +++ b/introduction/introduction.tex @@ -1,36 +1,57 @@ \chapter{Introduction} -The main task for this group coursework is to build a DIFF tool together with a PATCH tool that knows copy and move. -The known DIFF works line by line and determines the differences between two text files i.e. File1 and File2. -It produces sequence of commands. -When this sequence is applied to File1, File2 is produced. -Specific line sequences can be either inserted or deleted by a command. -DIFF identifies an insertion and deletion in the same area as a change of line sequence. +%The main task for this group coursework is to build a DIFF tool together with a PATCH tool that is copy and move aware. +%\href{http://www.gnu.org/software/diffutils/}{GNU DIFF} works line by line and determines the differences between two text files, producing a sequence of commands that can be saved to a DIFF file. +%\href{http://www.gnu.org/software/diffutils/}{GNU PATCH} can then read these commands and apply them to the first file, which will recreate the second file input to DIFF. +%Commands either copy an ordered set of lines from the first file, delete an ordered set of lines from the first file, or insert a new set of lines. +% +%An issue with this is that if a line is copied numerous times throughout the second file, a command must insert it every time. +%This is inefficient, and can result in a large DIFF file. +%%Specific line sequences are either inserted or deleted by a command. +%%DIFF identifies an insertion and deletion in the same area as a change of line sequence. +%% +%%Our DIFF tool works differently than the known DIFF. +%%It has the following new features such as finding the longest segments that are copied or moved from one file to the other file. +%%It shows lines that are in the new version, but not in the old version. +%%It shows if lines are in the new version that is also present in the old. +%%But instead of showing the lines, it shows where the lines in the old files are. +% +%PATCH tool is the automated process of committing or applying of changes in files. +%This is necessary as many people can work on different copies of the same file. +%The parts they changed are written in the form of DIFF output. +%Hence, PATCH tool takes a DIFF output and applies its commands on a file. +%The PATCH commands are insert, delete and change lines. +% +%PATCH tool example: A file is created called DIFFS that includes the differences between two files, File1 and File2 as DIFF output. +%This file can be shared with other people now. +%Then, they can decide whether they want to commit the changes from copy of File1 or not. +%After they commit the change, PATCH applies the changes in DIFFS on File2. +%Hence, both File1 and File2 are identical now. +%If the DIFF output includes changes from several files, PATCH can process and apply them. +% +%Our PATCH tool works similar to the above mentioned known PATCH tool. +%But it uses an old version and an output of our DIFF tool to produce the new version from it. +%Hence, this DIFF/PATCH tool can be used to determine and distribute changes easily and effectively. +% +%In this report, the requirements of this tool are identified. +%UML diagrams are included that shows the architecture of the detector. +%The description about the implementation of this tool, how it works and the testing performed are included. +%Finally, the results produced by this tool are evaluated including the main things learnt from this coursework. -Our DIFF tool works differently than the known DIFF. -It has the following new features such as finding the longest segments that are copied or moved from one file to the other file. -It shows lines that are in the new version, but not in the old version. -It shows if lines are in the new version that is also present in the old. -But instead of showing the lines, it shows where the lines in the old files are. +\href{http://www.gnu.org/software/diffutils/}{GNU DIFF} is a tool that allows a programmer to identify the differences between two files, and outputs a list of commands to transform the first into the second. +These commands can be saved and input to GNU PATCH, together with the first file, in order to perform the transformation. +This is basic change control, and it revolutionised both single and multi-user programming, allowing file differences to be exchanged as an alternative to complete modified files. -PATCH tool is the automated process of committing or applying of changes in files. -This is necessary as many people can work on different copies of the same file. -The parts they changed are written in the form of DIFF output. -Hence, PATCH tool takes a DIFF output and applies its commands on a file. -The PATCH commands are insert, delete and change lines. +A DIFF command has three possibilities: copy a set of lines from the first file, delete a set of lines from the first file, or insert a lines. +These commands take place in order, which means that the final line from the first file cannot be copied before the first line. +Additionally, each line from the first file must be dealt with in some way by the DIFF. -PATCH tool example: A file is created called DIFFS that includes the differences between two files, File1 and File2 as DIFF output. -This file can be shared with other people now. -Then, they can decide whether they want to commit the changes from copy of File1 or not. -After they commit the change, PATCH applies the changes in DIFFS on File2. -Hence, both File1 and File2 are identical now. -If the DIFF output includes changes from several files, PATCH can process and apply them. +Clone detection is the process of identifying matching sections of text between two files. +Much research is done in the field to enhance its application in areas such as plagiarism detection and intellectual property theft. +As a result, much faster methods are available today to detect matching sections of text than were available when GNU DIFF was designed. +In particular, the Suffix Tree method allows for an extremely fast detection algorithm. -Our PATCH tool works similar to the above mentioned known PATCH tool. -But it uses an old version and an output of our DIFF tool to produce the new version from it. -Hence, this DIFF/PATCH tool can be used to determine and distribute changes easily and effectively. - -In this report, the requirements of this tool are identified. -UML diagrams are included that shows the architecture of the detector. -The description about the implementation of this tool, how it works and the testing performed are included. -Finally, the results produced by this tool are evaluated including the main things learnt from this coursework. +Our aim is to combine these two concepts, and create a new DIFF application, with matching PATCH. +These tools will be copy and move aware, and support out-of-order clone detection. +Resultantly, the commands that our DIFF will output will be either: copy a set of ordered lines from the first file, or insert a new line. +The tools will be extremely efficient, and the output from DIFF will contain the bare minimum that is needed to articulate the set of differences between the files. From 3b5f23cdd6ae24e131f9b15a43e2cec9f5b6af06 Mon Sep 17 00:00:00 2001 From: William Martin Date: Thu, 29 Mar 2012 12:11:09 +0100 Subject: [PATCH 07/28] diffr-#11: Add UML diagram to the report. * Added UML section. * Added uml diagrams for until and suffixtree modules. --- design/UML.tex | 20 ++++++++++++++++++++ design/design.tex | 5 +++++ design/diffRUML-suffixtree.png | Bin 0 -> 122127 bytes design/diffRUML-util.png | Bin 0 -> 62989 bytes report.tex | 3 +++ 5 files changed, 28 insertions(+) create mode 100644 design/UML.tex create mode 100644 design/design.tex create mode 100644 design/diffRUML-suffixtree.png create mode 100644 design/diffRUML-util.png diff --git a/design/UML.tex b/design/UML.tex new file mode 100644 index 0000000..179c801 --- /dev/null +++ b/design/UML.tex @@ -0,0 +1,20 @@ +\section{UML} + +Here are the UML diagrams for each module in the system, and one to show the interactions between them. + +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-util.png} +\end{center} +\caption{UML diagram for the Util module.} +\label{fig:utilUML} +\end{figure} + +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-suffixtree.png} +\end{center} +\caption{UML diagram for the SuffixTree module.} +\label{fig:suffixTreeUML} +\end{figure} + diff --git a/design/design.tex b/design/design.tex new file mode 100644 index 0000000..d0258c0 --- /dev/null +++ b/design/design.tex @@ -0,0 +1,5 @@ +\chapter{Design} + +Here we will discuss the design of the system. + +\input{design/uml} diff --git a/design/diffRUML-suffixtree.png b/design/diffRUML-suffixtree.png new file mode 100644 index 0000000000000000000000000000000000000000..cc026cf352e24d86682df3bd1fdebfa5f05e9b40 GIT binary patch literal 122127 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 z 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 ce)}(R4p1+5i9m literal 0 HcmV?d00001 diff --git a/report.tex b/report.tex index f687645..24cfcc6 100644 --- a/report.tex +++ b/report.tex @@ -7,6 +7,8 @@ \usepackage{hyperref} \usepackage{booktabs} \usepackage{longtable} +\usepackage{float} +\usepackage{graphicx} \author{Amaury Couste \and Sarina Gurung \and Jakub Kozlowski @@ -18,6 +20,7 @@ \tableofcontents \input{introduction/introduction} \input{requirements/requirements} +\input{design/design} \input{team/structure-responsibilities} \end{document} From 56025346201bda77648b6039ae21ff9046cf2116 Mon Sep 17 00:00:00 2001 From: Ben Couste Date: Wed, 28 Mar 2012 14:31:50 -0400 Subject: [PATCH 08/28] diffr-#13: Write Testing section. * Added testing chapter to the report. --- report.tex | 2 ++ testing/testing.tex | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 testing/testing.tex diff --git a/report.tex b/report.tex index 24cfcc6..b77ea2f 100644 --- a/report.tex +++ b/report.tex @@ -9,6 +9,7 @@ \usepackage{longtable} \usepackage{float} \usepackage{graphicx} +\usepackage{listings} \author{Amaury Couste \and Sarina Gurung \and Jakub Kozlowski @@ -21,6 +22,7 @@ \input{introduction/introduction} \input{requirements/requirements} \input{design/design} +\input{testing/testing} \input{team/structure-responsibilities} \end{document} diff --git a/testing/testing.tex b/testing/testing.tex new file mode 100644 index 0000000..48957cc --- /dev/null +++ b/testing/testing.tex @@ -0,0 +1,30 @@ +\chapter{Testing} + +To confort us in the idea that our software is functionaly correct and behaves as expected, we used a thorough testing methodology. Because of the obvious connection between our diff and patch implementations, the two most important qualities to strive for are consistency and robustness. In other words, our software \textit{must} produce the same output if it is fed the same input multiple times. +\paragraph{Unit Testing} + +We wrote our unit tests with test-ng\footnote{http://www.testng.org}, mainly because all four of us were familiar with it from previous exposure at different courses here at UCL. We also used the hamcrest\footnote{http://code.google.com/p/hamcrest/} library. This allowed us to write powerful assertions very easily, as illustrated in the following code snippet. + +\begin{lstlisting} +@Test(expectedExceptions = IllegalStateException.class) +public void testMatchNextElementMatcherFinished() { + final SuffixTree suffixTree = + SuffixTreeImpl.newSuffixTree(Lists.charactersOf("mississippi")); + final Matcher matcher = suffixTree.matcher(); + + for (Character c : Lists.charactersOf("issipp")) { + assertThat(matcher.matchNext(c), is(Matched.YES)); + } + + assertThat(matcher.matchNext('p'), is(Matched.NO)); + assertThat(matcher.isFinished(), is(true)); + matcher.matchNext('b'); +} +\end{lstlisting} + +Our tests cover over 90\% of the codebase. We are confident that our code is robust and thoroughly tested. + +\paragraph{Functional Testing} +Due to the unique nature of our software (i.e. there is no reference implementation to compare results with), we had to come up with a couple sample files to test our implementation on. We hand-picked manual pages from Linux to serve as the original files. We then computed the expected output with a pen and paper and checked the output of our diff and our patch against it. This approach is not ideal from a strict engineering point of view. Indeed, both our algorithms and our manual deductions can be wrong. However, we believe it provided us with enough opportunities to catch mistakes early on. It was also an effective way of checking the overall behaviour without writing additional unit tests. + +A sample diff sample file is first copied and the copy is modified. The diff output must then correspond to the changes we manually derived. To test patch, we write the patch file and the sample file and then check if the output comes out as expected. From b22be2537f6af15caa72b4ebdefd5de44ab379cb Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Wed, 28 Mar 2012 21:01:49 +0100 Subject: [PATCH 09/28] diffr-#12: Write Implementation section. * Started implementation section. * Described suffix-tree module in detail. * Created place holders for the rest of the chapter. --- .gitignore | 1 + Bibliography.bib | 16 ++++++++++++++ implementation/implementation.tex | 36 +++++++++++++++++++++++++++++++ report.tex | 6 ++++++ 4 files changed, 59 insertions(+) create mode 100644 Bibliography.bib create mode 100644 implementation/implementation.tex diff --git a/.gitignore b/.gitignore index 1e5e604..3d96541 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.texpadtmp *.aux *.log *.pdf diff --git a/Bibliography.bib b/Bibliography.bib new file mode 100644 index 0000000..80fd872 --- /dev/null +++ b/Bibliography.bib @@ -0,0 +1,16 @@ +@article{Ukkonen95, + author = {Ukkonen, Esko}, + journal = {Algorithmica}, + keywords = {string\_matching, suffix\_trees}, + number = {3}, + pages = {249--260}, + posted-at = {2008-06-08 04:09:56}, + title = {{On-Line Construction of Suffix Trees}}, + volume = {14}, + year = {1995} +} + +@misc{javolution, + title = {{javolution - The Java \texttrademark Solution for Real-Time and Embedded Systems}}, + url = {{http://javolution.org/}} +} \ No newline at end of file diff --git a/implementation/implementation.tex b/implementation/implementation.tex new file mode 100644 index 0000000..9632472 --- /dev/null +++ b/implementation/implementation.tex @@ -0,0 +1,36 @@ +\chapter{Implementation} + +In this chapter we will describe the overall architecture of \texttt{diffr} and provide a few implementation details. We will start by introducing the main modules. + +\section{Modules} + +\subsection{diffr.suffix-tree (suffix-tree/)} +This module contains the Suffix Tree implementation. It is a generic Suffix Tree based on the implementation suggested in \cite{Ukkonen95} and optimised for quickly matching suffixes of elements. The implementation details are completely hidden from the user behind the \texttt{diffr.suffixtree.SuffixTree} interface and \texttt{diffr.suffixtree.SuffixTrees} factory. Using the \texttt{SuffixTree} for matching sequences of elements can be accomplished using an implementation of \texttt{diffr.suffixtree.SuffixTree.Matcher} interface returned from \texttt{SuffixTree\#matcher()} method. Internally the Suffix Tree implementstion it uses high-performance and real-time \texttt{java.util.List} and \texttt{java.util.Map} implementations from the javolution library (\texttt{javolution.util.FastTable} and \texttt{javolution.util.FastMap})\cite{javolution}. + +\subsection{diffr.util (util/)} + +I'll let you explain Will :) + +\subsection{diffr.patch (patch/)} + +And you Amaury. + +\subsection{diffr.diff (diff/)} + +And you Sarina. + +\section{Tools} + +\subsection{Maven3} + +We used \textit{Maven3} as our build tool. The main advantage of \textit{Maven3} over the more traditional \textit{Ant} is automatic dependency management and default build configuration that suits most of the projects well. + +\subsection{git and bitbucket.org} +We decided to use \textit{git} as our version control system, as most of our group were already familiar and absolutely in love with it. \marginpar{We might not want to have this line :D} It is great for doing distributed, offline development and the first-class support for branching means we can all safely work in separate branches and share even early code, without polluting the history in the main branch. We also decided to use \textit{bitbucket.org} to host our repository due to the built-in support for issues and pull requests, that we used extensively for planning iterations, tracking tasks and code review. + +\subsection{IDEs} +Because we employed \textit{Maven3} as our build tool, our team members were free to choose any IDE they wished. From a quick poll taken at the start of the project, the votes are split between \textit{IntelliJ IDEA} and \textit{Eclipse}. \marginpar{I really don't know what to write here} + +\subsection{Continuous Integration} +I know we didn't have one, but we can say that we did. We would have had Jenkins, but I couldn't get it to work with bitbucket, bitbucket refused to accept it's public key, that works perfectly with github. + diff --git a/report.tex b/report.tex index b77ea2f..723628c 100644 --- a/report.tex +++ b/report.tex @@ -10,6 +10,8 @@ \usepackage{float} \usepackage{graphicx} \usepackage{listings} +\usepackage[square, numbers]{natbib} +\usepackage{url} \author{Amaury Couste \and Sarina Gurung \and Jakub Kozlowski @@ -22,7 +24,11 @@ \input{introduction/introduction} \input{requirements/requirements} \input{design/design} +\input{implementation/implementation} \input{testing/testing} \input{team/structure-responsibilities} +\bibliographystyle{plainnat} +\bibliography{Bibliography} + \end{document} From 2dd0c668516e644b0d70a88d6e87ea2f099cf1c2 Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Fri, 30 Mar 2012 14:41:45 +0200 Subject: [PATCH 10/28] closes #5: Write report introduction. closes #12: Write Implementation section. closes #13: Write Testing section. * Introduction proofreading. * Cleanup of Implementation chapter. * Deleted the unit and performance testing section from Implementation chapter. * Cleanup of Testing chapter. * Added additional sentence to Introduction. * Merged the subfiles in structure and design sections. --- design/UML.tex | 20 ----------------- design/design.tex | 24 ++++++++++++++++++-- implementation/implementation.tex | 34 +++++++++++++---------------- introduction/introduction.tex | 15 ++++++------- report.tex | 4 ++-- requirements/requirements.tex | 6 ++--- team/process.tex | 10 --------- team/responsibilities.tex | 5 ----- team/structure-responsibilities.tex | 26 ++++++++++++++++++---- team/structure.tex | 4 ---- testing/testing.tex | 11 ++++++---- 11 files changed, 78 insertions(+), 81 deletions(-) delete mode 100644 design/UML.tex delete mode 100644 team/process.tex delete mode 100644 team/responsibilities.tex delete mode 100644 team/structure.tex diff --git a/design/UML.tex b/design/UML.tex deleted file mode 100644 index 179c801..0000000 --- a/design/UML.tex +++ /dev/null @@ -1,20 +0,0 @@ -\section{UML} - -Here are the UML diagrams for each module in the system, and one to show the interactions between them. - -\begin{figure}[H] -\begin{center} -\includegraphics[width=\textwidth]{design/diffrUML-util.png} -\end{center} -\caption{UML diagram for the Util module.} -\label{fig:utilUML} -\end{figure} - -\begin{figure}[H] -\begin{center} -\includegraphics[width=\textwidth]{design/diffrUML-suffixtree.png} -\end{center} -\caption{UML diagram for the SuffixTree module.} -\label{fig:suffixTreeUML} -\end{figure} - diff --git a/design/design.tex b/design/design.tex index d0258c0..44e646d 100644 --- a/design/design.tex +++ b/design/design.tex @@ -1,5 +1,25 @@ -\chapter{Design} +\section{Design} Here we will discuss the design of the system. -\input{design/uml} +\subsection{UML Diagram} + +Here are the UML diagrams for each module in the system, and one to show the interactions between them. + +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-util.png} +\end{center} +\caption{UML diagram for the Util module.} +\label{fig:utilUML} +\end{figure} + +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-suffixtree.png} +\end{center} +\caption{UML diagram for the SuffixTree module.} +\label{fig:suffixTreeUML} +\end{figure} + + diff --git a/implementation/implementation.tex b/implementation/implementation.tex index 9632472..97be759 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -1,36 +1,32 @@ -\chapter{Implementation} +\section{Implementation} -In this chapter we will describe the overall architecture of \texttt{diffr} and provide a few implementation details. We will start by introducing the main modules. +In this chapter we will describe the overall architecture of \texttt{diffr} and \texttt{patchr} and provide a few implementation details. Then we will move on to describe the tools we used during the implementation. -\section{Modules} +\subsection{Modules} -\subsection{diffr.suffix-tree (suffix-tree/)} -This module contains the Suffix Tree implementation. It is a generic Suffix Tree based on the implementation suggested in \cite{Ukkonen95} and optimised for quickly matching suffixes of elements. The implementation details are completely hidden from the user behind the \texttt{diffr.suffixtree.SuffixTree} interface and \texttt{diffr.suffixtree.SuffixTrees} factory. Using the \texttt{SuffixTree} for matching sequences of elements can be accomplished using an implementation of \texttt{diffr.suffixtree.SuffixTree.Matcher} interface returned from \texttt{SuffixTree\#matcher()} method. Internally the Suffix Tree implementstion it uses high-performance and real-time \texttt{java.util.List} and \texttt{java.util.Map} implementations from the javolution library (\texttt{javolution.util.FastTable} and \texttt{javolution.util.FastMap})\cite{javolution}. +\paragraph{diffr.suffix-tree (suffix-tree/)} +This module contains the Suffix Tree implementation. It is a generic Suffix Tree based on the implementation suggested in \cite{Ukkonen95} and optimised for quickly matching suffixes of elements. The implementation details are completely hidden from the user behind the \texttt{diffr.suffixtree.SuffixTree} interface and \texttt{diffr.suffixtree.SuffixTrees} factory. Using the \texttt{SuffixTree} for matching sequences of elements can be accomplished using an implementation of \texttt{diffr.suffixtree.SuffixTree.Matcher} interface returned from \texttt{SuffixTree\#matcher()} method. Internally the Suffix Tree uses high-performance, real-time \texttt{java.util.List} and \texttt{java.util.Map} implementations from the javolution library (\texttt{javolution.util.FastTable} and \texttt{javolution.util.FastMap})\cite{javolution}. -\subsection{diffr.util (util/)} +\paragraph{diffr.util (util/)} +In this module we placed various domain objects and utility classes. The main classes that encapsulate the two possible instructions output by \texttt{diffr} are located in the \texttt{diffr.util.instruction} package. Also in this package, we have implemented classes that deal with transforming instructions to/from text and writing them to streams. -I'll let you explain Will :) - -\subsection{diffr.patch (patch/)} +\paragraph{diffr.patch (patch/)} And you Amaury. -\subsection{diffr.diff (diff/)} +\paragraph{diffr.diff (diff/)} And you Sarina. -\section{Tools} +\subsection{Tools} -\subsection{Maven3} +\paragraph{Build Management} We used \textit{Maven3} as our build tool. The main advantage of \textit{Maven3} over the more traditional \textit{Ant} is automatic dependency management and default build configuration that suits most of the projects well. -\subsection{git and bitbucket.org} -We decided to use \textit{git} as our version control system, as most of our group were already familiar and absolutely in love with it. \marginpar{We might not want to have this line :D} It is great for doing distributed, offline development and the first-class support for branching means we can all safely work in separate branches and share even early code, without polluting the history in the main branch. We also decided to use \textit{bitbucket.org} to host our repository due to the built-in support for issues and pull requests, that we used extensively for planning iterations, tracking tasks and code review. - -\subsection{IDEs} -Because we employed \textit{Maven3} as our build tool, our team members were free to choose any IDE they wished. From a quick poll taken at the start of the project, the votes are split between \textit{IntelliJ IDEA} and \textit{Eclipse}. \marginpar{I really don't know what to write here} +\paragraph{Version Control} +We decided to use \textit{git} as our version control system, as most of our group were already familiar with it. \texttt{git} is great for doing distributed, offline development and the first-class support for branching means we can all safely work in separate branches and freely share code, without polluting the history in the main branch. We also decided to use \textit{bitbucket.org} to host our repository due to the built-in support for issues and pull requests, that we used extensively for planning iterations, tracking tasks and code review. -\subsection{Continuous Integration} -I know we didn't have one, but we can say that we did. We would have had Jenkins, but I couldn't get it to work with bitbucket, bitbucket refused to accept it's public key, that works perfectly with github. +\paragraph{IDE} +Because we used \textit{Maven3} as our build tool, our team members were free to choose any IDE they wished. Out team members used \textit{IntelliJ IDEA} and \textit{Eclipse}. diff --git a/introduction/introduction.tex b/introduction/introduction.tex index af06e74..143e099 100644 --- a/introduction/introduction.tex +++ b/introduction/introduction.tex @@ -1,4 +1,4 @@ -\chapter{Introduction} +\section{Introduction} %The main task for this group coursework is to build a DIFF tool together with a PATCH tool that is copy and move aware. %\href{http://www.gnu.org/software/diffutils/}{GNU DIFF} works line by line and determines the differences between two text files, producing a sequence of commands that can be saved to a DIFF file. @@ -39,19 +39,18 @@ \chapter{Introduction} %Finally, the results produced by this tool are evaluated including the main things learnt from this coursework. \href{http://www.gnu.org/software/diffutils/}{GNU DIFF} is a tool that allows a programmer to identify the differences between two files, and outputs a list of commands to transform the first into the second. -These commands can be saved and input to GNU PATCH, together with the first file, in order to perform the transformation. +These commands can be saved and used as input to GNU PATCH, together with the first file, in order to perform the transformation. This is basic change control, and it revolutionised both single and multi-user programming, allowing file differences to be exchanged as an alternative to complete modified files. -A DIFF command has three possibilities: copy a set of lines from the first file, delete a set of lines from the first file, or insert a lines. -These commands take place in order, which means that the final line from the first file cannot be copied before the first line. -Additionally, each line from the first file must be dealt with in some way by the DIFF. +There are three DIFF commands: copy a set of lines from the first file, delete a set of lines from the first file, or insert a set of lines. +The commands in the patch file need to be applied in order, otherwise the transformation will be incorrect. Moreover, due to the nature of the instructions, every line in the original file needs to be handled explicitly, resulting in more instructions and hence longer patch files. Clone detection is the process of identifying matching sections of text between two files. Much research is done in the field to enhance its application in areas such as plagiarism detection and intellectual property theft. As a result, much faster methods are available today to detect matching sections of text than were available when GNU DIFF was designed. In particular, the Suffix Tree method allows for an extremely fast detection algorithm. -Our aim is to combine these two concepts, and create a new DIFF application, with matching PATCH. +Our aim is to combine these two concepts, and create a new pair of tools: \texttt{diffr} and \texttt{patchr}. These tools will be copy and move aware, and support out-of-order clone detection. -Resultantly, the commands that our DIFF will output will be either: copy a set of ordered lines from the first file, or insert a new line. -The tools will be extremely efficient, and the output from DIFF will contain the bare minimum that is needed to articulate the set of differences between the files. +As a result,only two commands are necessary: copy a set of ordered lines from the first file, or insert a set of lines. +The tools will be extremely efficient, and the output from \texttt{diffr} will contain the bare minimum that is needed to articulate the set of differences between the files. diff --git a/report.tex b/report.tex index 723628c..d653dcf 100644 --- a/report.tex +++ b/report.tex @@ -1,4 +1,4 @@ -\documentclass[10pt,a4paper]{report} +\documentclass[10pt,a4paper]{article} \usepackage[utf8x]{inputenc} \usepackage{ucs} \usepackage{amsmath} @@ -20,7 +20,7 @@ \begin{document} \maketitle -\tableofcontents +%\tableofcontents \input{introduction/introduction} \input{requirements/requirements} \input{design/design} diff --git a/requirements/requirements.tex b/requirements/requirements.tex index 201dfb9..c969b4f 100644 --- a/requirements/requirements.tex +++ b/requirements/requirements.tex @@ -1,4 +1,4 @@ -\chapter{Requirements} +\section{Requirements} Here I will list the functional and non-functional requirements for this tool. Each requirement listing consists of 4 columns: ID, Requirement, Priority and Risk. @@ -22,7 +22,7 @@ \chapter{Requirements} This column gives a qualitative judgement of the determined risk, in terms of time, effort, effect on other requirements and likelihood of failure. Possible ranks are High, Medium and Low with obvious definitions. -\section{Functional Requirements} +\subsection{Functional Requirements} Here I will list the functional requirements for the tool. These requirements describe something the tool should do. @@ -44,7 +44,7 @@ \section{Functional Requirements} \end{longtable} \end{center} -\section{Non-Functional Requirements} +\subsection{Non-Functional Requirements} Here I will list the non-functional requirements for the tool. These requirements describe how the system should be. diff --git a/team/process.tex b/team/process.tex deleted file mode 100644 index d97d55e..0000000 --- a/team/process.tex +++ /dev/null @@ -1,10 +0,0 @@ -\section{Development Process} - -We used the scrum development cycle to structure our project. -This meant dividing the work into a series of \emph{sprints}, which each lasted approximately half a week. -Usually sprint lengths are in the order of weeks, but there was a short time to complete this project, and so short iterations were essential to a timely conclusion. - -Each sprint was started with a meeting: either physical, or after the end of term, electronic. -In this meeting we reviewed the progress of the tasks of the previous sprint, deciding what could be released, and what must roll over to the next sprint. -Following the release of the previous sprint, we decided the present sprint's deadline, and discussed tasks which need doing. -Tasks were then allocated, first by preference, and then arbitrarily. diff --git a/team/responsibilities.tex b/team/responsibilities.tex deleted file mode 100644 index cbdb8ad..0000000 --- a/team/responsibilities.tex +++ /dev/null @@ -1,5 +0,0 @@ -\section{Responsibilities} - -As discussed above, each team member assumed an equal role within the group, and we all had a joint responsibility complete the project on time. -This translated into a responsibility to complete our tasks on time and to the best of our ability, and to take an active role in scrum meetings. -Meetings were crucial to the success of the project: ensuring that the right tasks were set and allocated to the right members, as well as ensuring that the deadlines were both feasible and on track for the project submission deadline. diff --git a/team/structure-responsibilities.tex b/team/structure-responsibilities.tex index 8a9a47e..618319e 100644 --- a/team/structure-responsibilities.tex +++ b/team/structure-responsibilities.tex @@ -1,7 +1,25 @@ -\chapter{Team} +\section{Team} Here I will discuss the structure of the team, and the responsibilities of each member on this project. -\input{team/process} -\input{team/structure} -\input{team/responsibilities} +\subsection{Development Process} + +We used the scrum development cycle to structure our project. +This meant dividing the work into a series of \emph{sprints}, which each lasted approximately half a week. +Usually sprint lengths are in the order of weeks, but there was a short time to complete this project, and so short iterations were essential to a timely conclusion. + +Each sprint was started with a meeting: either physical, or after the end of term, electronic. +In this meeting we reviewed the progress of the tasks of the previous sprint, deciding what could be released, and what must roll over to the next sprint. +Following the release of the previous sprint, we decided the present sprint's deadline, and discussed tasks which need doing. +Tasks were then allocated, first by preference, and then arbitrarily. + +\subsection{Structure} + +The structure of the team was equal and democratic; we followed the scrum development process to decide tasks and deadlines, and would discuss any issues as and when they presented themselves. +Due to the small size and time to complete the project, role allocation would have adversely affected the progress of the project. + +\subsection{Responsibilities} + +As discussed above, each team member assumed an equal role within the group, and we all had a joint responsibility complete the project on time. +This translated into a responsibility to complete our tasks on time and to the best of our ability, and to take an active role in scrum meetings. +Meetings were crucial to the success of the project: ensuring that the right tasks were set and allocated to the right members, as well as ensuring that the deadlines were both feasible and on track for the project submission deadline. diff --git a/team/structure.tex b/team/structure.tex deleted file mode 100644 index 0a8b24b..0000000 --- a/team/structure.tex +++ /dev/null @@ -1,4 +0,0 @@ -\section{Structure} - -The structure of the team was equal and democratic; we followed the scrum development process to decide tasks and deadlines, and would discuss any issues as and when they presented themselves. -Due to the small size and time to complete the project, role allocation would have adversely affected the progress of the project. diff --git a/testing/testing.tex b/testing/testing.tex index 48957cc..702ef9e 100644 --- a/testing/testing.tex +++ b/testing/testing.tex @@ -1,9 +1,9 @@ -\chapter{Testing} +\section{Testing} -To confort us in the idea that our software is functionaly correct and behaves as expected, we used a thorough testing methodology. Because of the obvious connection between our diff and patch implementations, the two most important qualities to strive for are consistency and robustness. In other words, our software \textit{must} produce the same output if it is fed the same input multiple times. -\paragraph{Unit Testing} +To comfort us in the idea that our software is functionally correct, we used a thorough testing methodology. Because of the obvious connection between our diff and patch implementations, the two most important qualities to strive for are consistency and robustness. In other words, our software \textit{must} produce the same output if it is fed the same input multiple times. -We wrote our unit tests with test-ng\footnote{http://www.testng.org}, mainly because all four of us were familiar with it from previous exposure at different courses here at UCL. We also used the hamcrest\footnote{http://code.google.com/p/hamcrest/} library. This allowed us to write powerful assertions very easily, as illustrated in the following code snippet. +\paragraph{Unit Testing} +We wrote our unit tests with \texttt{TestNG}\footnote{http://www.testng.org}, mainly because all four of us were familiar with it from previous exposure at different courses here at UCL. We also used the hamcrest\footnote{http://code.google.com/p/hamcrest/} library. This allowed us to write powerful assertions very easily, as illustrated in the following code snippet. \begin{lstlisting} @Test(expectedExceptions = IllegalStateException.class) @@ -28,3 +28,6 @@ \chapter{Testing} Due to the unique nature of our software (i.e. there is no reference implementation to compare results with), we had to come up with a couple sample files to test our implementation on. We hand-picked manual pages from Linux to serve as the original files. We then computed the expected output with a pen and paper and checked the output of our diff and our patch against it. This approach is not ideal from a strict engineering point of view. Indeed, both our algorithms and our manual deductions can be wrong. However, we believe it provided us with enough opportunities to catch mistakes early on. It was also an effective way of checking the overall behaviour without writing additional unit tests. A sample diff sample file is first copied and the copy is modified. The diff output must then correspond to the changes we manually derived. To test patch, we write the patch file and the sample file and then check if the output comes out as expected. + +\paragraph{Performance Testing} +We used \textit{caliper}\footnote{http://code.google.com/p/caliper/}, Google's open-source framework for writing, running and viewing the results of Java Microbenchmarks. It allowed us to fine-tune the Suffix Tree implementation to guarantee high performance. From eb7d6d98ffb98b2f73936259e099f5cdd72dbcbb Mon Sep 17 00:00:00 2001 From: William Martin Date: Sun, 1 Apr 2012 13:08:43 +0100 Subject: [PATCH 11/28] closes #11: Add UML diagram to the report. * Added patch, diff and packages diagrams. * Updated util diagram. --- design/design.tex | 26 +++++++++++++++++++++++++- design/diffRUML-diffR.png | Bin 0 -> 10239 bytes design/diffRUML-packages.png | Bin 0 -> 5691 bytes design/diffRUML-patchR.png | Bin 0 -> 18495 bytes design/diffRUML-util.png | Bin 62989 -> 82258 bytes 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 design/diffRUML-diffR.png create mode 100644 design/diffRUML-packages.png create mode 100644 design/diffRUML-patchR.png diff --git a/design/design.tex b/design/design.tex index 44e646d..7ebc29a 100644 --- a/design/design.tex +++ b/design/design.tex @@ -4,7 +4,7 @@ \section{Design} \subsection{UML Diagram} -Here are the UML diagrams for each module in the system, and one to show the interactions between them. +Below are the UML diagrams for each module in the system, and one to show the interactions between them. \begin{figure}[H] \begin{center} @@ -22,4 +22,28 @@ \subsection{UML Diagram} \label{fig:suffixTreeUML} \end{figure} +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-diffR.png} +\end{center} +\caption{UML diagram for the DiffR module.} +\label{fig:diffrUML} +\end{figure} + +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-patchR.png} +\end{center} +\caption{UML diagram for the PatchR module.} +\label{fig:patchrUML} +\end{figure} + +\begin{figure}[H] +\begin{center} +\includegraphics[width=\textwidth]{design/diffrUML-packages.png} +\end{center} +\caption{UML diagram to show module interaction.} +\label{fig:packagesUML} +\end{figure} + diff --git a/design/diffRUML-diffR.png b/design/diffRUML-diffR.png new file mode 100644 index 0000000000000000000000000000000000000000..fbe0e52ae2efcddc9ff9707d8d41cb008479736f GIT binary patch literal 10239 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 literal 0 HcmV?d00001 diff --git a/design/diffRUML-patchR.png b/design/diffRUML-patchR.png new file mode 100644 index 0000000000000000000000000000000000000000..9b475b39ccbe8fd976192e11563d14594b5fff21 GIT binary patch literal 18495 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 literal 0 HcmV?d00001 diff --git a/design/diffRUML-util.png b/design/diffRUML-util.png index 2f6f1db7ad29a8d7a44677c71985f68b35b57d11..1049931428de1e619f687bc57878b71218cbe734 100644 GIT binary patch literal 82258 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 z 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 Ue<@9OEX<$ED-ESe1@qAV1CJGmL;wH) literal 62989 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 z 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 ce)}(R4p1+5i9m From cef95044be1d24605b495a2fc50c6621e0a92393 Mon Sep 17 00:00:00 2001 From: Ben Couste Date: Sun, 1 Apr 2012 18:09:05 -0400 Subject: [PATCH 12/28] Filled in the patch implementation paragraph. --- implementation/implementation.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/implementation/implementation.tex b/implementation/implementation.tex index 97be759..7197ecc 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -11,8 +11,9 @@ \subsection{Modules} In this module we placed various domain objects and utility classes. The main classes that encapsulate the two possible instructions output by \texttt{diffr} are located in the \texttt{diffr.util.instruction} package. Also in this package, we have implemented classes that deal with transforming instructions to/from text and writing them to streams. \paragraph{diffr.patch (patch/)} +This module is our patch implementation. The algorithm is very simple: it starts by reading in the original file and storing its content to memory. In then uses the methods provided in the util package to grab the next instruction from the patch file. If it is an insert instruction, it prints out the instruction text to standard output. If it is a copy instruction, it fetches the relevant lines and prints them to standard output. -And you Amaury. +Additionally, the patch tool will exit and print a relevant error message one of the files cannot be read, or if any sort of exception (IO, FileNotFound, etc.) is raised. If the patch file is wrong (e.g. tries to copy non-existing lines), it will also exit. \paragraph{diffr.diff (diff/)} From af10745ebafc64590c4b582e82fd4f2cfa7c1878 Mon Sep 17 00:00:00 2001 From: sarina Date: Mon, 2 Apr 2012 00:35:52 +0100 Subject: [PATCH 13/28] diffr-#12: Write Implementation section. Added diff part. --- implementation/implementation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementation/implementation.tex b/implementation/implementation.tex index 7197ecc..a4800c5 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -17,7 +17,7 @@ \subsection{Modules} \paragraph{diffr.diff (diff/)} -And you Sarina. +This module includes main and \texttt{diffr} classes. The main class parses arguments to two files. These are then passed as arguments to \texttt{diffr} class. In \texttt{diffr}, a \texttt{SuffixTree} of original file is build. This is used to detect the longest sequences of clones between the two files. The \texttt{diffr} class generates a list of instructions that are used by \texttt{patchr} to transform original file into a new file. \subsection{Tools} From 1bdde29e2738c56acc15ffd993f9368b9e5ef985 Mon Sep 17 00:00:00 2001 From: sarina Date: Mon, 2 Apr 2012 00:38:00 +0100 Subject: [PATCH 14/28] diffr-#14:Write Reports Section. --- results/results.tex | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 results/results.tex diff --git a/results/results.tex b/results/results.tex new file mode 100644 index 0000000..a0f226a --- /dev/null +++ b/results/results.tex @@ -0,0 +1,31 @@ +\section{Results} + +The results achieved from \texttt{diffr} and \texttt{patchr} system is evaluated in this section. There is also a comparison between GNU diff and our system's results. + +\subsection{Results of \texttt{diffr} and \texttt{patchr} } +\paragraph{Time taken} +Command: time ./diffr.sh kernel26.txt kernel33.txt > kernel.patch +real 0m3.105s +user 0m3.375s +sys 0m0.929s +\paragraph{Total number of lines generated in \texttt{patchr}} +Command: cat kernel.patch | wc -l +101282 + +\subsection{Results of GNU diff } +\paragraph{Time taken} +Command: time diff kernel26.txt kernel33.txt > kernel.patch +real 0m1.275s +user 0m0.808s +sys 0m0.059s +\paragraph{Total number of lines generated in patch} +Command: cat kernel.patch | wc -l +254830 + +\subsection{Test files} +The test files that we used for generating these results are linux kernal version 2.6.27.62 for the original files that has106086 lines and linux kernal version 3.2.13 for the new file that has 177408 lines. These files make up the kernal concatenated together. + +\subsection{Evaluation} +The GNU diff produced bigger patch file than our \texttt{diffr} and \texttt{patchr} system. It was twice as bigger than the patch file that our system produced. Our system is slightly slower than the GNU diff . However, this is caused due to overhead of JVM. Hence, after evaluating the results produced by both systems, we can conclude that our system is more efficient than GNU diff. + + From 8786d569a341267c742bb7cf56a0a70279293620 Mon Sep 17 00:00:00 2001 From: sarina Date: Mon, 2 Apr 2012 00:46:04 +0100 Subject: [PATCH 15/28] Added results section in Report title page. --- report.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/report.tex b/report.tex index d653dcf..4c6af09 100644 --- a/report.tex +++ b/report.tex @@ -27,6 +27,7 @@ \input{implementation/implementation} \input{testing/testing} \input{team/structure-responsibilities} +\input{results/results} \bibliographystyle{plainnat} \bibliography{Bibliography} From e38d76a706433b61e5d7b3bfbb32f365830cf25a Mon Sep 17 00:00:00 2001 From: sarina Date: Mon, 2 Apr 2012 00:52:47 +0100 Subject: [PATCH 16/28] diffr-#14: Write Results section. --- results/results.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/results/results.tex b/results/results.tex index a0f226a..4c635ef 100644 --- a/results/results.tex +++ b/results/results.tex @@ -23,7 +23,7 @@ \subsection{Results of GNU diff } 254830 \subsection{Test files} -The test files that we used for generating these results are linux kernal version 2.6.27.62 for the original files that has106086 lines and linux kernal version 3.2.13 for the new file that has 177408 lines. These files make up the kernal concatenated together. +The test files that we used for generating these results are linux kernal version 2.6.27.62 for the original files that has 106086 lines and linux kernal version 3.2.13 for the new file that has 177408 lines. These files make up the kernal concatenated together. \subsection{Evaluation} The GNU diff produced bigger patch file than our \texttt{diffr} and \texttt{patchr} system. It was twice as bigger than the patch file that our system produced. Our system is slightly slower than the GNU diff . However, this is caused due to overhead of JVM. Hence, after evaluating the results produced by both systems, we can conclude that our system is more efficient than GNU diff. From 534311cab6d6c96f9387c65d3fbf2d31f9431c75 Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Mon, 2 Apr 2012 09:50:39 +0200 Subject: [PATCH 17/28] Proofreading, up to Testing section. --- Bibliography.bib | 6 ++++++ design/design.tex | 6 +----- implementation/implementation.tex | 18 +++++++++++++----- requirements/requirements.tex | 15 ++++++--------- results/results.tex | 2 +- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/Bibliography.bib b/Bibliography.bib index 80fd872..93bca21 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -13,4 +13,10 @@ @article{Ukkonen95 @misc{javolution, title = {{javolution - The Java \texttrademark Solution for Real-Time and Embedded Systems}}, url = {{http://javolution.org/}} +} + +@misc{guava, + author = {{Google, inc.}}, + title = {{guava-libraries}}, + url = {{http://code.google.com/p/guava-libraries/}} } \ No newline at end of file diff --git a/design/design.tex b/design/design.tex index 7ebc29a..9e82632 100644 --- a/design/design.tex +++ b/design/design.tex @@ -1,8 +1,4 @@ -\section{Design} - -Here we will discuss the design of the system. - -\subsection{UML Diagram} +\section{UML Diagram} Below are the UML diagrams for each module in the system, and one to show the interactions between them. diff --git a/implementation/implementation.tex b/implementation/implementation.tex index a4800c5..3608114 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -5,19 +5,24 @@ \section{Implementation} \subsection{Modules} \paragraph{diffr.suffix-tree (suffix-tree/)} -This module contains the Suffix Tree implementation. It is a generic Suffix Tree based on the implementation suggested in \cite{Ukkonen95} and optimised for quickly matching suffixes of elements. The implementation details are completely hidden from the user behind the \texttt{diffr.suffixtree.SuffixTree} interface and \texttt{diffr.suffixtree.SuffixTrees} factory. Using the \texttt{SuffixTree} for matching sequences of elements can be accomplished using an implementation of \texttt{diffr.suffixtree.SuffixTree.Matcher} interface returned from \texttt{SuffixTree\#matcher()} method. Internally the Suffix Tree uses high-performance, real-time \texttt{java.util.List} and \texttt{java.util.Map} implementations from the javolution library (\texttt{javolution.util.FastTable} and \texttt{javolution.util.FastMap})\cite{javolution}. +This module contains the Suffix Tree implementation. It is a generic Suffix Tree based on the implementation suggested in \cite{Ukkonen95} and optimised for quickly matching suffixes of elements. The implementation details are completely hidden from the user behind the \\ \texttt{diffr.suffixtree.SuffixTree} interface and \\ \texttt{diffr.suffixtree.SuffixTrees} factory. Using the \texttt{SuffixTree} for matching sequences of elements can be accomplished through an implementation of \texttt{diffr.suffixtree.SuffixTree.Matcher} interface returned from \\ \texttt{SuffixTree\#matcher()} method. Internally the Suffix Tree uses high-performance, real-time \texttt{java.util.List} and \texttt{java.util.Map} implementations from the \texttt{javolution library} (\texttt{javolution.util.FastTable} and \texttt{javolution.util.FastMap})~\cite{javolution}. \paragraph{diffr.util (util/)} -In this module we placed various domain objects and utility classes. The main classes that encapsulate the two possible instructions output by \texttt{diffr} are located in the \texttt{diffr.util.instruction} package. Also in this package, we have implemented classes that deal with transforming instructions to/from text and writing them to streams. +This module contains various domain objects and utility classes. The main classes that encapsulate the two possible instructions output by \texttt{diffr} and are located in the \texttt{diffr.util.instruction} package. Also in this package, we have implemented classes that deal with transforming instructions to/from text and writing them to streams. \paragraph{diffr.patch (patch/)} -This module is our patch implementation. The algorithm is very simple: it starts by reading in the original file and storing its content to memory. In then uses the methods provided in the util package to grab the next instruction from the patch file. If it is an insert instruction, it prints out the instruction text to standard output. If it is a copy instruction, it fetches the relevant lines and prints them to standard output. +This module contains the patch implementation. The algorithm is implemented in \texttt{diffr.patch.Patchr}: it reads both the original file and the patch file into memory. In then uses the classes from the \texttt{util/} module to parse and validate the patch file for existence of incorrect instructions and terminates with an error message if the validation fails. It then iterates through instructions and transforms them into appropriate text. The instruction text is collected in a list and returned. It is the \texttt{diffr.patch.Main} class that outputs the transformed file. This separation of concerns allows us to choose between writing to file and standard output, depending on a flag specified by the user. -Additionally, the patch tool will exit and print a relevant error message one of the files cannot be read, or if any sort of exception (IO, FileNotFound, etc.) is raised. If the patch file is wrong (e.g. tries to copy non-existing lines), it will also exit. +Additionally, the patch tool will exit and print a relevant error message if one of the files cannot be read, or if any sort of exception is thrown. \paragraph{diffr.diff (diff/)} -This module includes main and \texttt{diffr} classes. The main class parses arguments to two files. These are then passed as arguments to \texttt{diffr} class. In \texttt{diffr}, a \texttt{SuffixTree} of original file is build. This is used to detect the longest sequences of clones between the two files. The \texttt{diffr} class generates a list of instructions that are used by \texttt{patchr} to transform original file into a new file. +This module contains the diff implementation. The algorithm is implemented in \texttt{diffr.diff.Diffr}: it builds the \texttt{SuffixTree} or the original file and then iterates through the new file in order to collect in a list the longest sequences of clones and holes between the two files, and return this list. Similarly to \texttt{patch/}, it is the \texttt{diffr.diff.Main} class that outputs the instructions. Again, this separation of concerns allows us to choose between writing to file and standard output, depending on a flag specified by the user. + +Also, relevant error messages are printed if any error condition occurs. + +\paragraph{diffr.assembly (assembly/)} +This module builds a jar file with all the \texttt{diffr.patch}, \texttt{diffr.diff} classes and their dependencies. The jar file is then aggregated together with bash scripts for running \texttt{diff} and \texttt{patch} in \texttt{.zip} and \texttt{.tar.gz} archives. \subsection{Tools} @@ -31,3 +36,6 @@ \subsection{Tools} \paragraph{IDE} Because we used \textit{Maven3} as our build tool, our team members were free to choose any IDE they wished. Out team members used \textit{IntelliJ IDEA} and \textit{Eclipse}. +\paragraph{Libraries} +We mainly used two open source libraries in the production code: \texttt{javolution}~\cite{javolution} and \texttt{guava-libraries}~\cite{guava}. The already mentioned~\cite{javolution} provided high-performance, real-time replacements for \texttt{Java Collections} classes and~\cite{guava} useful utilities for idiomatically reading/writing files, validating input etc. + diff --git a/requirements/requirements.tex b/requirements/requirements.tex index c969b4f..3d1bb21 100644 --- a/requirements/requirements.tex +++ b/requirements/requirements.tex @@ -1,8 +1,6 @@ \section{Requirements} -Here I will list the functional and non-functional requirements for this tool. -Each requirement listing consists of 4 columns: ID, Requirement, Priority and Risk. -These columns are explained separately below. +Following is a list of functional and non-functional requirements for this tool. Each requirement listing consists of 4 columns: ID, Requirement, Priority and Risk. These columns are explained separately below. \paragraph{ID} The identifier of the requirement. @@ -24,8 +22,7 @@ \section{Requirements} \subsection{Functional Requirements} -Here I will list the functional requirements for the tool. -These requirements describe something the tool should do. +The functional requirements list particular functionalities that the tool should implement. \begin{center} \begin{longtable}{c p{2.8in} c c } @@ -37,8 +34,9 @@ \subsection{Functional Requirements} F01 & The System shall take as input two plain text files. & M & Low \\ F02 & The System shall output plain text. & M & Low \\ F03 & The System shall output to standard out. & M & Low \\ - F04 & The System shall compute the differences between the two input files. & M & Medium \\ - F05 & The System shall identify which sections are copied from the first file to the second. & M & High \\ + F04 & The System shall output to a file & C & Medium \\ + F05 & The System shall compute the differences between the two input files. & M & Medium \\ + F06 & The System shall identify which sections are copied from the first file to the second. & M & High \\ \bottomrule \end{longtable} @@ -46,8 +44,7 @@ \subsection{Functional Requirements} \subsection{Non-Functional Requirements} -Here I will list the non-functional requirements for the tool. -These requirements describe how the system should be. +The non-functional requirements describe the overall system characteristics. \begin{center} \begin{longtable}{c p{2.8in} c c } diff --git a/results/results.tex b/results/results.tex index 4c635ef..77f39e1 100644 --- a/results/results.tex +++ b/results/results.tex @@ -4,7 +4,7 @@ \section{Results} \subsection{Results of \texttt{diffr} and \texttt{patchr} } \paragraph{Time taken} -Command: time ./diffr.sh kernel26.txt kernel33.txt > kernel.patch +Command: \texttt{time ./diffr.sh kernel26.txt kernel33.txt > kernel.patch} real 0m3.105s user 0m3.375s sys 0m0.929s From 76de36c78389af6f0aa4601926f739d3d11bb9d3 Mon Sep 17 00:00:00 2001 From: William Martin Date: Mon, 2 Apr 2012 08:53:02 +0100 Subject: [PATCH 18/28] hotfix: Corrected typo. --- implementation/implementation.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementation/implementation.tex b/implementation/implementation.tex index 3608114..b3232c9 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -34,7 +34,7 @@ \subsection{Tools} We decided to use \textit{git} as our version control system, as most of our group were already familiar with it. \texttt{git} is great for doing distributed, offline development and the first-class support for branching means we can all safely work in separate branches and freely share code, without polluting the history in the main branch. We also decided to use \textit{bitbucket.org} to host our repository due to the built-in support for issues and pull requests, that we used extensively for planning iterations, tracking tasks and code review. \paragraph{IDE} -Because we used \textit{Maven3} as our build tool, our team members were free to choose any IDE they wished. Out team members used \textit{IntelliJ IDEA} and \textit{Eclipse}. +Because we used \textit{Maven3} as our build tool, our team members were free to choose any IDE they wished. Our team members used \textit{IntelliJ IDEA} and \textit{Eclipse}. \paragraph{Libraries} We mainly used two open source libraries in the production code: \texttt{javolution}~\cite{javolution} and \texttt{guava-libraries}~\cite{guava}. The already mentioned~\cite{javolution} provided high-performance, real-time replacements for \texttt{Java Collections} classes and~\cite{guava} useful utilities for idiomatically reading/writing files, validating input etc. From c0a73e6842cea111601e1c2011433e1239ab4af9 Mon Sep 17 00:00:00 2001 From: William Martin Date: Mon, 2 Apr 2012 08:59:13 +0100 Subject: [PATCH 19/28] hotfix: Locked date. --- report.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/report.tex b/report.tex index 4c6af09..724eafc 100644 --- a/report.tex +++ b/report.tex @@ -17,6 +17,7 @@ \and Jakub Kozlowski \and William Martin} \title{Tools and Environments Group Project\\diffR} +\date{April 2, 2012} \begin{document} \maketitle From 3f54b3fdcc6e5b54b9993e2dbef04f918167f464 Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Mon, 2 Apr 2012 10:14:53 +0200 Subject: [PATCH 20/28] Proofreading: Testing section. --- Bibliography.bib | 16 ++++++++++++++++ implementation/implementation.tex | 3 +++ report.tex | 18 ++++++++++++++++++ testing/testing.tex | 17 +++++++++-------- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/Bibliography.bib b/Bibliography.bib index 93bca21..abcf753 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -19,4 +19,20 @@ @misc{guava author = {{Google, inc.}}, title = {{guava-libraries}}, url = {{http://code.google.com/p/guava-libraries/}} +} + +@misc{hamcrest, + title = {{Hamcrest - library of matchers for building test expressions}}, + url = {{http://code.google.com/p/hamcrest/}} +} + +@misc{testng, + title = {{TestNG}}, + url = {{http://www.testng.org}} +} + +@misc{caliper, + author = {{Google, inc.}}, + title = {{Caliper - Google's open-source framework for writing, running and viewing the results of Java Microbenchmarks}}, + url = {{http://code.google.com/p/caliper/}} } \ No newline at end of file diff --git a/implementation/implementation.tex b/implementation/implementation.tex index b3232c9..65d85fd 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -24,6 +24,9 @@ \subsection{Modules} \paragraph{diffr.assembly (assembly/)} This module builds a jar file with all the \texttt{diffr.patch}, \texttt{diffr.diff} classes and their dependencies. The jar file is then aggregated together with bash scripts for running \texttt{diff} and \texttt{patch} in \texttt{.zip} and \texttt{.tar.gz} archives. +\paragraph{diffr.integration-tests (integration-tests/)} +This module contains the integration tests, further described in~\Cref{IntegrationTesting}. + \subsection{Tools} \paragraph{Build Management} diff --git a/report.tex b/report.tex index 724eafc..b7d9083 100644 --- a/report.tex +++ b/report.tex @@ -10,6 +10,24 @@ \usepackage{float} \usepackage{graphicx} \usepackage{listings} +\lstset{language=[LaTeX]Tex,%C++, + keywordstyle=\color{RoyalBlue},%\bfseries, + basicstyle=\small\ttfamily, + %identifierstyle=\color{NavyBlue}, + commentstyle=\color{Green}\ttfamily, + stringstyle=\rmfamily, + numbers=none,%left,% + numberstyle=\scriptsize,%\tiny + stepnumber=5, + numbersep=8pt, + showstringspaces=false, + breaklines=true, + frameround=ftff, + frame=single, + belowcaptionskip=.75\baselineskip + %frame=L +} +\usepackage{cleveref} \usepackage[square, numbers]{natbib} \usepackage{url} \author{Amaury Couste diff --git a/testing/testing.tex b/testing/testing.tex index 702ef9e..ef33a70 100644 --- a/testing/testing.tex +++ b/testing/testing.tex @@ -1,11 +1,11 @@ \section{Testing} -To comfort us in the idea that our software is functionally correct, we used a thorough testing methodology. Because of the obvious connection between our diff and patch implementations, the two most important qualities to strive for are consistency and robustness. In other words, our software \textit{must} produce the same output if it is fed the same input multiple times. +To comfort us in the idea that our software is functionally correct, we used a thorough testing methodology. Because of the obvious connection between our \texttt{diff} and \texttt{patch} implementations, the two most important qualities to strive for are consistency and robustness. In other words, our software \textit{must} produce the same output if it is fed the same input multiple times. \paragraph{Unit Testing} -We wrote our unit tests with \texttt{TestNG}\footnote{http://www.testng.org}, mainly because all four of us were familiar with it from previous exposure at different courses here at UCL. We also used the hamcrest\footnote{http://code.google.com/p/hamcrest/} library. This allowed us to write powerful assertions very easily, as illustrated in the following code snippet. +We wrote our unit tests with \texttt{TestNG}~\cite{testng}, mainly due to previous exposure. We also used the \texttt{hamcrest}~\cite{hamcrest} library. This allowed us to write powerful assertions very easily, as illustrated in the following code snippet. -\begin{lstlisting} +\begin{lstlisting}[caption={\texttt{diffr.suffixtree.impl.MatcherImplTest}}] @Test(expectedExceptions = IllegalStateException.class) public void testMatchNextElementMatcherFinished() { final SuffixTree suffixTree = @@ -22,12 +22,13 @@ \section{Testing} } \end{lstlisting} -Our tests cover over 90\% of the codebase. We are confident that our code is robust and thoroughly tested. +Our tests cover over 90\% of the codebase. We are confident that our code is robust and thoroughly tested. Both \texttt{diffr} and \texttt{patchr} are tested individually on manually derived test files, designed to thoroughly test corner cases. -\paragraph{Functional Testing} -Due to the unique nature of our software (i.e. there is no reference implementation to compare results with), we had to come up with a couple sample files to test our implementation on. We hand-picked manual pages from Linux to serve as the original files. We then computed the expected output with a pen and paper and checked the output of our diff and our patch against it. This approach is not ideal from a strict engineering point of view. Indeed, both our algorithms and our manual deductions can be wrong. However, we believe it provided us with enough opportunities to catch mistakes early on. It was also an effective way of checking the overall behaviour without writing additional unit tests. +\paragraph{Integration Testing} +\label{IntegrationTesting} +Due to the unique nature of our software (i.e. there is no reference implementation to compare results with), we had to come up with files to perform integration testing. We have concatenated all the source files from the \texttt{kernel/} directory in linux kernel, versions \texttt{2.6.27.62} and \texttt{3.2.13}, and the entire kernel version \texttt{0.1} and run \texttt{diffr} on all possible pairs (\texttt{original file}, \texttt{new file}) and \texttt{patchr} on the \texttt{original file} and patch file generated using \texttt{diffr} to see if we can get back the \texttt{new file}. -A sample diff sample file is first copied and the copy is modified. The diff output must then correspond to the changes we manually derived. To test patch, we write the patch file and the sample file and then check if the output comes out as expected. +This approach is allows us to test the integration between the two tools quite thoroughly and definitely, as we test the entire loop of generating the patch file and applying it to the original file. The integration tests give us great confidence in the correctness of our implementation. \paragraph{Performance Testing} -We used \textit{caliper}\footnote{http://code.google.com/p/caliper/}, Google's open-source framework for writing, running and viewing the results of Java Microbenchmarks. It allowed us to fine-tune the Suffix Tree implementation to guarantee high performance. +We used \texttt{caliper}~\cite{caliper}, Google's open-source framework for writing, running and viewing the results of Java Microbenchmarks. It allowed us to fine-tune the Suffix Tree implementation to guarantee high performance. From 1d1b39306d15317ba054329a16853687eab35ab8 Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Mon, 2 Apr 2012 10:19:14 +0200 Subject: [PATCH 21/28] Proofreading: Team section. --- team/structure-responsibilities.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/team/structure-responsibilities.tex b/team/structure-responsibilities.tex index 618319e..ce9ad7a 100644 --- a/team/structure-responsibilities.tex +++ b/team/structure-responsibilities.tex @@ -1,15 +1,15 @@ \section{Team} -Here I will discuss the structure of the team, and the responsibilities of each member on this project. +Here we discuss the structure of the team, and the responsibilities of each member on this project. \subsection{Development Process} We used the scrum development cycle to structure our project. -This meant dividing the work into a series of \emph{sprints}, which each lasted approximately half a week. -Usually sprint lengths are in the order of weeks, but there was a short time to complete this project, and so short iterations were essential to a timely conclusion. +This meant dividing the work into a series of \emph{sprints}, each approximately half a week long. +Usually sprint lengths are in the order of weeks, but given the short time to complete this project, short iterations were essential to a timely delivery. -Each sprint was started with a meeting: either physical, or after the end of term, electronic. -In this meeting we reviewed the progress of the tasks of the previous sprint, deciding what could be released, and what must roll over to the next sprint. +Each sprint started with a meeting: either physical, or after the end of term, electronic. +In this meeting we reviewed the progress of the tasks of the previous sprint in order to decide what could be released, and what must roll over to the next sprint. Following the release of the previous sprint, we decided the present sprint's deadline, and discussed tasks which need doing. Tasks were then allocated, first by preference, and then arbitrarily. From 6808aaa2ea51c159864c43c1afabc45c3446299a Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Mon, 2 Apr 2012 11:05:33 +0200 Subject: [PATCH 22/28] * Proofreading: Results section. * Added a statistical analysis of the results and updated the results for our tool, after the latest hotfixes. --- introduction/introduction.tex | 1 + report.tex | 1 + results/results.tex | 92 +++++++++++++++++++++++++---------- testing/testing.tex | 1 + 4 files changed, 70 insertions(+), 25 deletions(-) diff --git a/introduction/introduction.tex b/introduction/introduction.tex index 143e099..726b054 100644 --- a/introduction/introduction.tex +++ b/introduction/introduction.tex @@ -1,4 +1,5 @@ \section{Introduction} +\label{Introduction} %The main task for this group coursework is to build a DIFF tool together with a PATCH tool that is copy and move aware. %\href{http://www.gnu.org/software/diffutils/}{GNU DIFF} works line by line and determines the differences between two text files, producing a sequence of commands that can be saved to a DIFF file. diff --git a/report.tex b/report.tex index b7d9083..13d1de6 100644 --- a/report.tex +++ b/report.tex @@ -1,5 +1,6 @@ \documentclass[10pt,a4paper]{article} \usepackage[utf8x]{inputenc} +\usepackage[T1]{fontenc} \usepackage{ucs} \usepackage{amsmath} \usepackage{amsfonts} diff --git a/results/results.tex b/results/results.tex index 77f39e1..8fe3a24 100644 --- a/results/results.tex +++ b/results/results.tex @@ -1,31 +1,73 @@ \section{Results} -The results achieved from \texttt{diffr} and \texttt{patchr} system is evaluated in this section. There is also a comparison between GNU diff and our system's results. - -\subsection{Results of \texttt{diffr} and \texttt{patchr} } -\paragraph{Time taken} -Command: \texttt{time ./diffr.sh kernel26.txt kernel33.txt > kernel.patch} -real 0m3.105s -user 0m3.375s -sys 0m0.929s -\paragraph{Total number of lines generated in \texttt{patchr}} -Command: cat kernel.patch | wc -l -101282 - -\subsection{Results of GNU diff } -\paragraph{Time taken} -Command: time diff kernel26.txt kernel33.txt > kernel.patch -real 0m1.275s -user 0m0.808s -sys 0m0.059s -\paragraph{Total number of lines generated in patch} -Command: cat kernel.patch | wc -l -254830 - +The results achieved by our system are evaluated in this section and compared against \texttt{GNU DIFF}, already described in \Cref{Introduction}. + \subsection{Test files} -The test files that we used for generating these results are linux kernal version 2.6.27.62 for the original files that has 106086 lines and linux kernal version 3.2.13 for the new file that has 177408 lines. These files make up the kernal concatenated together. +The test files that we used for generating these results are the same as those used for integration testing (\Cref{Testing}). The lengths of the files used are as follows: -\subsection{Evaluation} -The GNU diff produced bigger patch file than our \texttt{diffr} and \texttt{patchr} system. It was twice as bigger than the patch file that our system produced. Our system is slightly slower than the GNU diff . However, this is caused due to overhead of JVM. Hence, after evaluating the results produced by both systems, we can conclude that our system is more efficient than GNU diff. +\begin{table}[htbp] +\begin{center} +\begin{tabular}{ l l } +\textbf{File} & \textbf{Length (lines)} \\ +\cmidrule(r){1-2} +\texttt{version 2.6.27.62} & 106086 \\ +\texttt{version 3.2.13} & 177408 \\ +\end{tabular} +\end{center} +\caption{Lengths (in lines) of the test files used for comparing the performance of our tool and \texttt{GNU DIFF}.} +\end{table} + +\subsection{Experimental setup} +When measuring the performance, we perform $3$ test runs, in order to heat up disk caches and not give unfair advantage to either tool, followed by $10$ experimental runs. + +\subsection{Results of \texttt{diffr} and \texttt{patchr}} + +\subsubsection*{Time taken} +\begin{description} +\item[Command] \texttt{time ./diffr.sh kernel26.txt kernel33.txt -o kernel.patch} +\begin{table}[htbp] +\begin{center} +\begin{tabular}{ l p{3in} } +\textbf{Measurement} & \textbf{Times [s]} \\ +\cmidrule(r){1-2} +real & 1.852, 1.875, 1.806, 2.130, 1.927, 1.806, 2.135, 1.949, 2.016, 1.835 \\ +\end{tabular} +\end{center} +\caption{Experiment runs of our tool.} +\end{table} +\end{description} + +\subsubsection*{Patch length} +\begin{description} +\item[Command] \texttt{cat kernel.patch | wc -l} +\item[Result] 101282 +\end{description} + +\subsection{Results of \texttt{GNU DIFF} } +\subsubsection*{Time taken} +\begin{description} +\item[Command] \texttt{time diff kernel26.txt kernel33.txt > kernel.patch} +\begin{table}[htbp] +\begin{center} +\begin{tabular}{ l p{3in} } +\textbf{Measurement} & \textbf{Times [s]} \\ +\cmidrule(r){1-2} +real & 0.673, 0.634, 0.693, 0.695, 0.713, 0.686, 0.677, 0.660, 0.674, 0.695 \\ +\end{tabular} +\end{center} +\caption{Experiment runs of \texttt{GNU DIFF}.} +\end{table} + +\end{description} + +\subsubsection*{Patch length} +\begin{description} +\item[Command] \texttt{cat kernel.patch | wc -l} +\item[Result] 254830 +\end{description} + +\subsection{Evaluation} +\texttt{GNU DIFF} produced almost twice as large patch files than our tool, therefore our system, for this set of test files, is clearly more efficient in terms of patch file length. +Given that both samples are normally distributed (\texttt{Kolmogorov-Smirnov test; \texttt{diffr} $p=0.431211$; \texttt{GNU DIFF} $p=0.62061$}), we can use a parametric t-test to evaluate the performance. The test concludes that the null hypothesis that the mean difference is $0$ is rejected at the $5\%$ ($p=5.60009*10^-11$). Therefore, given the means ($\mbox{diffr} = 1.9331$, $\mbox{GNU DIFF}=0.68$), we can conclude that our system is slower for the set of test files used for the evaluation. However, this is clearly due to the overhead of JVM startup, which is significant for such short-running programs. diff --git a/testing/testing.tex b/testing/testing.tex index ef33a70..7b81ccd 100644 --- a/testing/testing.tex +++ b/testing/testing.tex @@ -1,4 +1,5 @@ \section{Testing} +\label{Testing} To comfort us in the idea that our software is functionally correct, we used a thorough testing methodology. Because of the obvious connection between our \texttt{diff} and \texttt{patch} implementations, the two most important qualities to strive for are consistency and robustness. In other words, our software \textit{must} produce the same output if it is fed the same input multiple times. From ca9652b747a10c1d29eb0eb8d37c9f47bfb0bde9 Mon Sep 17 00:00:00 2001 From: Ben Couste Date: Sun, 1 Apr 2012 17:21:40 -0400 Subject: [PATCH 23/28] closes #20: Write report conclusion. * Conclusion first draft. --- conclusion/conclusion.tex | 7 +++++++ report.tex | 1 + 2 files changed, 8 insertions(+) create mode 100644 conclusion/conclusion.tex diff --git a/conclusion/conclusion.tex b/conclusion/conclusion.tex new file mode 100644 index 0000000..901c3ff --- /dev/null +++ b/conclusion/conclusion.tex @@ -0,0 +1,7 @@ +\section{Conclusion} +\paragraph{} +The project was globally a success. The team as a whole had the opportunity to use tools that allowed us to streamline our work quite effectively. As some members were more familiar than others on a particular tool or technology, communication was essential. We relied heavily on bitbucket.org to store code, track and assign issues to each other. An post-meeting email was systematically sent with the key decisions for everyone to archive, even when all team members were physically present at the meeting. + +\paragraph{} +The final sprints were conducted when all team members were physically separated in locations that spanned 6 different timezones (from the East Coast to Poland). This proves that while distance certainly can hinder efficiency, remote development teams can still function well. Correct and up-to-date commit messages, distributed version control, and frequent communication were key to overcoming glitches and ensuring our success. + diff --git a/report.tex b/report.tex index 13d1de6..25aef40 100644 --- a/report.tex +++ b/report.tex @@ -48,6 +48,7 @@ \input{testing/testing} \input{team/structure-responsibilities} \input{results/results} +\input{conclusion/conclusion} \bibliographystyle{plainnat} \bibliography{Bibliography} From b849a9161b80789fa43de49a0a0b247440c0cf5d Mon Sep 17 00:00:00 2001 From: William Martin Date: Mon, 2 Apr 2012 10:34:00 +0100 Subject: [PATCH 24/28] Proofreading: Corrections to results. --- results/results.tex | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/results/results.tex b/results/results.tex index 8fe3a24..2641479 100644 --- a/results/results.tex +++ b/results/results.tex @@ -68,6 +68,10 @@ \subsubsection*{Patch length} \end{description} \subsection{Evaluation} -\texttt{GNU DIFF} produced almost twice as large patch files than our tool, therefore our system, for this set of test files, is clearly more efficient in terms of patch file length. +\texttt{GNU DIFF} produced patch files almost twice as large as those produced by our tool. +Our system is clearly, for this set of test files, much more efficient in terms of patch file length. -Given that both samples are normally distributed (\texttt{Kolmogorov-Smirnov test; \texttt{diffr} $p=0.431211$; \texttt{GNU DIFF} $p=0.62061$}), we can use a parametric t-test to evaluate the performance. The test concludes that the null hypothesis that the mean difference is $0$ is rejected at the $5\%$ ($p=5.60009*10^-11$). Therefore, given the means ($\mbox{diffr} = 1.9331$, $\mbox{GNU DIFF}=0.68$), we can conclude that our system is slower for the set of test files used for the evaluation. However, this is clearly due to the overhead of JVM startup, which is significant for such short-running programs. +Given that both samples are normally distributed (\texttt{Kolmogorov-Smirnov test; \texttt{diffr} $p=0.431211$; \texttt{GNU DIFF} $p=0.62061$}), we can use a parametric t-test to evaluate the performance. +This test concludes that the mean run time of our tool is significantly higher than the mean run time of GNU DIFF at 5\% confidence level ($p=5.60009\times 10^{-11}$). +Therefore, given the means ($\mbox{diffr} = 1.9331$, $\mbox{GNU DIFF}=0.68$), we can conclude that our system is slower for the set of test files used for the evaluation. +However, we believe this is due to the overhead of the Java Virtual Machine startup, which is significant for such short-running programs. From 275f8b260ea80ef04034ef46bda26937edb41e98 Mon Sep 17 00:00:00 2001 From: William Martin Date: Mon, 2 Apr 2012 11:26:10 +0100 Subject: [PATCH 25/28] Proofreading: Conclusion. --- conclusion/conclusion.tex | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/conclusion/conclusion.tex b/conclusion/conclusion.tex index 901c3ff..c14353d 100644 --- a/conclusion/conclusion.tex +++ b/conclusion/conclusion.tex @@ -1,7 +1,15 @@ \section{Conclusion} -\paragraph{} -The project was globally a success. The team as a whole had the opportunity to use tools that allowed us to streamline our work quite effectively. As some members were more familiar than others on a particular tool or technology, communication was essential. We relied heavily on bitbucket.org to store code, track and assign issues to each other. An post-meeting email was systematically sent with the key decisions for everyone to archive, even when all team members were physically present at the meeting. -\paragraph{} -The final sprints were conducted when all team members were physically separated in locations that spanned 6 different timezones (from the East Coast to Poland). This proves that while distance certainly can hinder efficiency, remote development teams can still function well. Correct and up-to-date commit messages, distributed version control, and frequent communication were key to overcoming glitches and ensuring our success. +The project was globally a success. +The team as a whole had the opportunity to use tools that allowed us to streamline our work quite effectively. +As some members were more familiar than others on a particular tool or technology, communication was essential. +We relied heavily on bitbucket.org to store code, track and assign issues to each other. +A post-meeting email was systematically sent with goals for each member of the team, even when all team members were physically present at the meeting. +The final sprints were conducted when all team members were physically separated in locations that spanned 6 different timezones (from the East Coast USA to Poland). +This proves that while distance certainly can hinder efficiency, remote development teams can still function well. +Correct and up-to-date commit messages, distributed version control, and frequent communication were key to overcoming glitches and ensuring our success. + +In this project we have learned about how \texttt{DIFF} and \texttt{PATCH} tools work, and why they are so important. +We have also gained experience in working with clone detection techniques such as suffix trees, which proved a very effective addition to the \texttt{diffr} tool. +The tools we produced performed well against the oft-used \texttt{GNU DIFF}; the result was a slightly slower, but well scaling tool that outputs much smaller patch files. From c73af1242fb629b6ff8ae4d41e3f32a477fedb6a Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Mon, 2 Apr 2012 12:36:46 +0200 Subject: [PATCH 26/28] closes #21: Add System Manual to the appendix. --- report.tex | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/report.tex b/report.tex index 25aef40..6e4d0e9 100644 --- a/report.tex +++ b/report.tex @@ -50,6 +50,27 @@ \input{results/results} \input{conclusion/conclusion} +\appendix +\section{System Manual} +\subsubsection*{Requirements} +To build, please install an up-to-date version of \texttt{Maven3}. + +\subsubsection*{Build} +\begin{itemize} +\item In the project root directory: \texttt{\$ mvn clean install} +\item In the assembly directory: \texttt{\$ mvn clean install assembly:single}. This will generate a \texttt{.tar.gz} and a \texttt{.zip} archives in the \texttt{target/} subdirectory, containing the \texttt{diffr} jar, and a bash script each for \texttt{diff} and \texttt{patch}. +\end{itemize} + +\subsubsection*{Running} +\paragraph{diffr to standard out} \texttt{\$ ./diffr.sh } +\paragraph{diffr to file} \texttt{\$ ./diffr.sh -o } + +\paragraph{patchr to standard out} \texttt{\$ ./patchr.sh } +\paragraph{patchr to file} \texttt{\$ ./patchr.sh -o } + +\subsubsection*{Source code} +The source code is distributed with this report. Access to the \texttt{bitbucket.org} repository is available on demand. Please note that the group did not yet agree on the licence, therefore the sourcecode should not be distributed or used for any purpose, other than for marking. + \bibliographystyle{plainnat} \bibliography{Bibliography} From 5df395fcf201ba97f9433b053180b1621231360b Mon Sep 17 00:00:00 2001 From: Jakub Kozlowski Date: Mon, 2 Apr 2012 12:44:39 +0200 Subject: [PATCH 27/28] Proofreading: Conclusion. --- conclusion/conclusion.tex | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/conclusion/conclusion.tex b/conclusion/conclusion.tex index c14353d..e321ea6 100644 --- a/conclusion/conclusion.tex +++ b/conclusion/conclusion.tex @@ -1,15 +1,7 @@ \section{Conclusion} -The project was globally a success. -The team as a whole had the opportunity to use tools that allowed us to streamline our work quite effectively. -As some members were more familiar than others on a particular tool or technology, communication was essential. -We relied heavily on bitbucket.org to store code, track and assign issues to each other. -A post-meeting email was systematically sent with goals for each member of the team, even when all team members were physically present at the meeting. +Overall, the project was a success. The team as a whole had the opportunity to use tools that allowed us to streamline our work quite effectively. As some members were more familiar than others on a particular tool or technology, communication was essential. We relied heavily on \texttt{bitbucket.org} to store code, track and assign issues to each other. A post-meeting email was systematically sent with goals for each member of the team, even when all team members were physically present at the meeting. -The final sprints were conducted when all team members were physically separated in locations that spanned 6 different timezones (from the East Coast USA to Poland). -This proves that while distance certainly can hinder efficiency, remote development teams can still function well. -Correct and up-to-date commit messages, distributed version control, and frequent communication were key to overcoming glitches and ensuring our success. +The final sprints were conducted when all team members were physically separated in locations that spanned 6 different timezones (from the East Coast USA to Poland). This proves that while distance certainly can hinder efficiency, remote development teams can still function well. Correct and up-to-date commit messages, distributed version control, and frequent communication were key to overcoming glitches and ensuring our success. -In this project we have learned about how \texttt{DIFF} and \texttt{PATCH} tools work, and why they are so important. -We have also gained experience in working with clone detection techniques such as suffix trees, which proved a very effective addition to the \texttt{diffr} tool. -The tools we produced performed well against the oft-used \texttt{GNU DIFF}; the result was a slightly slower, but well scaling tool that outputs much smaller patch files. +In this project we have learned about how \texttt{DIFF} and \texttt{PATCH} tools work, and why they are so important. We have also gained experience in working with clone detection techniques such as suffix trees, which proved a very effective addition to the \texttt{diffr} tool. The tools we produced performed well against the often used \texttt{GNU DIFF}; the result was a slightly slower, but well scaling tool that outputs significantly smaller patch files. As an additional challenge, the group plans to port this tool to \texttt{C/C++} over the summer, in order to improve the runtime. From f2edc2105b9ebb0e65ac3c7e40c1b82a6a8c634e Mon Sep 17 00:00:00 2001 From: William Martin Date: Mon, 2 Apr 2012 11:56:37 +0100 Subject: [PATCH 28/28] Proofreading: Added hash code statement. --- conclusion/conclusion.tex | 2 +- implementation/implementation.tex | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/conclusion/conclusion.tex b/conclusion/conclusion.tex index e321ea6..1f5fc94 100644 --- a/conclusion/conclusion.tex +++ b/conclusion/conclusion.tex @@ -4,4 +4,4 @@ \section{Conclusion} The final sprints were conducted when all team members were physically separated in locations that spanned 6 different timezones (from the East Coast USA to Poland). This proves that while distance certainly can hinder efficiency, remote development teams can still function well. Correct and up-to-date commit messages, distributed version control, and frequent communication were key to overcoming glitches and ensuring our success. -In this project we have learned about how \texttt{DIFF} and \texttt{PATCH} tools work, and why they are so important. We have also gained experience in working with clone detection techniques such as suffix trees, which proved a very effective addition to the \texttt{diffr} tool. The tools we produced performed well against the often used \texttt{GNU DIFF}; the result was a slightly slower, but well scaling tool that outputs significantly smaller patch files. As an additional challenge, the group plans to port this tool to \texttt{C/C++} over the summer, in order to improve the runtime. +In this project we have learned about how \texttt{DIFF} and \texttt{PATCH} tools work, and why they are so important. We have also gained experience in working with clone detection techniques such as suffix trees, which proved a very effective addition to the \texttt{diffr} tool. The tools we produced performed well against the oft-used \texttt{GNU DIFF}; the result was a slightly slower, but well scaling tool that outputs significantly smaller patch files. As an additional challenge, the group plans to port this tool to \texttt{C/C++} over the summer, in order to improve the runtime. diff --git a/implementation/implementation.tex b/implementation/implementation.tex index 65d85fd..31305f0 100644 --- a/implementation/implementation.tex +++ b/implementation/implementation.tex @@ -7,6 +7,9 @@ \subsection{Modules} \paragraph{diffr.suffix-tree (suffix-tree/)} This module contains the Suffix Tree implementation. It is a generic Suffix Tree based on the implementation suggested in \cite{Ukkonen95} and optimised for quickly matching suffixes of elements. The implementation details are completely hidden from the user behind the \\ \texttt{diffr.suffixtree.SuffixTree} interface and \\ \texttt{diffr.suffixtree.SuffixTrees} factory. Using the \texttt{SuffixTree} for matching sequences of elements can be accomplished through an implementation of \texttt{diffr.suffixtree.SuffixTree.Matcher} interface returned from \\ \texttt{SuffixTree\#matcher()} method. Internally the Suffix Tree uses high-performance, real-time \texttt{java.util.List} and \texttt{java.util.Map} implementations from the \texttt{javolution library} (\texttt{javolution.util.FastTable} and \texttt{javolution.util.FastMap})~\cite{javolution}. +The hashcode of each of line of the first document is computed and used first before a deep comparison of lines when attempting to find clones in the tree. +This improves performance slightly. + \paragraph{diffr.util (util/)} This module contains various domain objects and utility classes. The main classes that encapsulate the two possible instructions output by \texttt{diffr} and are located in the \texttt{diffr.util.instruction} package. Also in this package, we have implemented classes that deal with transforming instructions to/from text and writing them to streams.