This commit is contained in:
Josep Silva 2019-11-18 15:12:06 +00:00
parent ecb9f8ac32
commit 918f3f1a67

View file

@ -141,9 +141,9 @@ dependencies among nodes. Those edges represent various kinds of dependencies
---control, data, calls, parameter passing, summary--- which will be defined in
section~\ref{sec:first-def-sdg}.
To create the SDG, first a \textsl{control flow graph} is built for each method
To create the SDG, first a \textsl{control flow graph} \added{(CFG)} is built for each method
in the program, then its control and data dependencies are computed, resulting
in the \textsl{program dependence graph}. Finally, all the graphs from every
in the \textsl{program dependence graph} \added{(PDG)}. Finally, all the graphs from every
method are joined into the SDG. This process will be explained at greater
lengths in section~\ref{sec:first-def-sdg}.
%TODO: marked for removal --- this process is repeated later in ref{sec:first-deg-sdg}
@ -170,8 +170,8 @@ lengths in section~\ref{sec:first-def-sdg}.
%\end{description}
An example is provided in figure~\ref{fig:basic-graphs}, where a simple
multiplication program is converted to CFG, then PDG and finally SDG. For
simplicity, only the CFG and PDG of \texttt{multiply} are shown. Control
dependencies are black, data dependencies red and summary edges blue.
simplicity, only the CFG and PDG of \texttt{multiply} are shown \josep{en realidad también está el SDG)} . Control
dependencies are black, data dependencies red\added{,} and summary edges blue.
\begin{figure}
\centering
@ -203,12 +203,12 @@ There are four relevant metrics considered when evaluating a slicing algorithm:
\begin{description}
\item[Completeness.] The solution includes all the statements that affect
the slice. This is the most important feature, and almost all
the \added{slicing criterion}\deleted{slice}. This is the most important feature, and almost all
publications achieve at least completeness. Trivial completeness is
easily achievable, as simple as including the whole program in the
slice.
\item[Correctness.] The solution excludes all statements that don't affect
the slice. Most solutions are complete, but the degree of correctness is
\item[Correctness.] The solution excludes all statements that \added{do not}\deleted{don't} affect
the \added{slicing criterion}\deleted{slice}. Most solutions are complete, but the degree of correctness is
what sets them apart, as smaller slices will not execute unnecessary
code to compute the values, decreasing the executing time.
\item[Features covered.] Which features or language a slicing algorithm
@ -219,7 +219,7 @@ There are four relevant metrics considered when evaluating a slicing algorithm:
language, and as such are less useful for commercial applications, but
can be a stepping stone in the betterment of the field.
\item[Speed.] Speed of graph generation and slice creation. As previously
stated, slicing is a two-step process: build a graph and traverse it.
stated, slicing is a two-step process: build\added{ing} a graph and travers\deleted{e}\added{ing} it.
The traversal is linear in most proposals, with small variations. Graph
generation tends to be longer and with higher variance, but it is not as
relevant, because it is only done once (per program being analyzed). As
@ -236,8 +236,8 @@ variation a different purpose:
\item[Backward static.] Used to obtain the lines that affect a statement,
normally used on a line which outputs an incorrect value, to narrow down
the source of the bug.
\item[Forwarde static.] Used to obtain the lines affected by a statement,
used to identify dead code, to check the effects a line has in the rest
\item[Forward\deleted{e} static.] Used to obtain the lines affected by a statement,
used to identify dead code, to check the effects a line has \added{on}\deleted{in} the rest
of the program.
\item[Chopping static.] Obtains both the statements affected by and the
statements that affect the selected statement.
@ -266,7 +266,7 @@ consists of the following elements:
\item[Throwable.] An interface that encompasses all the exceptions or errors
that may be thrown. Child classes are \texttt{Exception} for most errors
and \texttt{Error} for internal errors in the Java Virtual Machine.
Exceptions can be classified in two categories: \textsl{unchecked}
Exceptions can be classified in\added{to} two categories: \textsl{unchecked}
(those inheriting from \texttt{RuntimeException} or \texttt{Error}) and
\textsl{checked} (the rest). The first may be thrown anywhere, whereas
the second, if thrown, must be caught or declared in the method header.
@ -310,7 +310,7 @@ consists of the following elements:
In almost all programming languages, errors can appear (either through the
developer, the user or the system's fault), and must be dealt with. Most of the
popular object oriented programs feature some kind of error system, normally
popular object\added{-}oriented programs feature some kind of error system, normally
very similar to Java's exceptions. In this section, we will perform a small
survey of the error-handling techniques used on the most popular programming
languages. The language list has been extracted from a survey performed by the
@ -389,7 +389,7 @@ emulate or replace exception handling:
files and environment variables before exiting the program. Traps allow the
programmer to react to a user or system--sent signal, or an exit run from
within the Bash environment. When a trap is activated, its code run, and the
signal doesn't proceed and stop the program. This doesn't replace a fully
signal \added{does not}\deleted{doesn't} proceed and stop the program. This \added{does not}\deleted{doesn't} replace a fully
featured exception system, but \texttt{bash} programs tend to be small in
size, with programmers preferring the efficiency of C or the commodities of
other high--level languages when the task requires it.
@ -404,7 +404,7 @@ emulate or replace exception handling:
error. The directive can be set and reset multiple times, therefore creating
artificial \texttt{try-catch} blocks, but there is no possibility of
attaching a value to the error, lowering its usefulness.
\item[C] In C, errors can also be control via return values, but some of the
\item[C] In C, errors can also be control\added{led} via return values, but some of the
instructions it features can be used to create a simple exception system.
\texttt{setjmp} and \texttt{longjmp} are two instructions which set up and
perform inter--function jumps. The first makes a snapshot of the call stack