SAFE Corporation has developed processes for finding various
kinds of IP theft and infringement. CodeSuite gives you the
tools to perform this process, but human expertise is still
needed to interpret the results.
Using CodeMatch to find a correlation between different programs
does not necessarily imply that illicit behavior occurred.
There can be correlation between programs for a number of
reasons as enumerated below.
Third-Party Source Code. It is possible that widely
available open source code is used in both programs. Also,
libraries of source code can be purchased from third-party
vendors. If two different programs use this same code, the
programs will have correlation. SourceDetective is used
to search the Internet to find third party code.
Code Generation Tools. Automatic code generation
tools generate software source code using similar or identical
identifiers for variables, classes, methods, and properties.
Also, the structure of the code generated by these tools
tends to fit into a certain template with an identifiable
pattern. Two different programs that were developed using
the same code generation tool will have correlation. SourceDetective
is used to search the Internet to find correlation due to
code generation tools.
Commonly Used Identifier Names. Certain identifier
names are commonly taught in schools or commonly used by
programmers in certain industries. For example, the identifier
result is often used to hold the result of an operation.
These identifiers will be found in many unrelated programs
but will result in these programs having correlation. SourceDetective
is used to search the Internet to determine whether identifier
names are common.
Common Algorithms. An algorithm is a procedure
or a set of instructions for accomplishing some task. In
one programming language there may be an easy or well-understood
way of writing a particular algorithm that most programmers
use. For example there might be a way to calculate the square
root of a number. Perhaps this algorithm is taught in most
programming classes at universities or is found in a popular
programming textbook. These commonly used algorithms will
show up in many different programs, resulting in a high
degree of correlation between the programs even though the
programs are different and there was no direct contact between
Common Author. It is possible that one programmer,
or "author," will create two programs that have
correlation simply because that programmer tends to write
code in a certain way. This is the programmer's style of
coding. Thus two programs written by the same programmer
can have high correlation due to the style being similar
even though there was no copying and the functionality of
the programs is different.
Copying. Code was copied from one program to another
causing the programs to have correlation. If authority was
not given to copy the code, this constitutes plagiarism.
The process for eliminating each possibility is illustrated
in the figure below. If none of the other reasons can be eliminated,
the reason for correlation must be copying. If the copying
was unauthorized, it constitutes copyright infringement.