Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer program product comprising: a non-transitory computer readable storage medium; and computer usable code stored on the non-transitory computer readable storage medium, where, when executed by a processor, the computer usable code causes a computer to: create a plurality of versions of a software component including a raw program text version of the software component and a normalized program text version of the software component; compress each of the plurality of versions including the raw program text version and the normalized program text version to provide a compressed version corresponding to each of the plurality of versions including a compressed raw program text version and a compressed normalized program text version; determine a length of each of the compressed versions including a length of the compressed raw program text version and a length of the compressed normalized program text version; calculate a software complexity metric based on a ratio between the lengths of at least two of the compressed versions including a ratio of the length of the compressed raw program text version to the length of the compressed normalized program text version; and use the software complexity metric based at least on the ratio of the length of the compressed raw program text version to the length of the compressed normalized program text version to determine complexity of the software component.
2. The computer program product of claim 1 , wherein, when executed by a processor, the computer usable code causes a computer to collect program files into one file to create the raw program text version.
3. The computer program product of claim 1 , wherein, when executed by a processor, the computer usable code causes a computer to: eliminate comments from raw program text; normalize sequences of spaces into a single space; and sort remaining lines into lexicographic order to create the normalized program text version.
4. The computer program product of claim 1 , wherein, when executed by a processor, the computer usable code causes a computer to reformat the raw program text version according to a stylistic standard to remove a difference in a formatting style and create the normalized program text version.
5. The computer program product of claim 1 , wherein, when executed by a processor, the computer usable code causes a computer to: create a normalized unique program text version of the software component; compress the normalized unique program text version to provide a compressed normalized unique program text version; determine a length of the compressed normalized unique program text version; calculate a ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version; and use the ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version to determine complexity of the software component.
6. The computer program product of claim 5 , wherein, when executed by a processor, the computer usable code causes a computer to eliminate duplicate lines in the normalized program text version to create the normalized unique program text version.
7. The computer program product of claim 1 , wherein a subsequent version of the plurality of versions depends on a preceding version of the plurality of versions.
8. The computer program product of claim 1 , wherein a subsequent version of the plurality of versions removes a feature of a preceding version of the plurality of versions.
9. The computer program product of claim 8 , wherein the feature includes one or more of a comment, a difference in formatting style, and a duplicate line.
10. The computer program product of claim 1 , wherein, when executed by a processor, the computer usable code causes a computer to implement a block sorting compressor to compress each of the plurality of versions.
11. The computer program product of claim 10 , wherein the block sorting compressor includes a bzip2 compressor.
12. An apparatus comprising a processor to: create a plurality of versions of a software component including a raw program text version of the software component and a normalized program text version of the software component; compress each of the plurality of versions including the raw program text version and the normalized program text version to provide a compressed version corresponding to each of the plurality of versions including a compressed raw program text version and a compressed normalized program text version; determine a length of each of the compressed versions including a length of the compressed raw program text version and a length of the compressed normalized program text version; calculate a software complexity metric based on a ratio between the lengths of at least two of the compressed versions including a ratio of the length of the compressed raw program text version to the length of the compressed normalized program text version; and use the software complexity metric based at least on the ratio of the length of the compressed raw program text version to the length of the compressed normalized program text version to determine complexity of the software component.
13. The apparatus of claim 12 , wherein the processor is further to collect program files into one file to create the raw program text version.
14. The apparatus of claim 12 , wherein the processor is further to: eliminate comments from raw program text; normalize sequences of spaces into a single space; and sort remaining lines into lexicographic order to create the normalized program text version.
15. The apparatus of claim 12 , wherein the processor is further to reformat the raw program text version according to a stylistic standard to remove a difference in a formatting style and create the normalized program text version.
16. The apparatus of claim 12 , wherein the processor is further to: create a normalized unique program text version of the software component; compress the normalized unique program text version to provide a compressed normalized unique program text version; determine a length of the compressed normalized unique program text version; calculate a ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version; and use the ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version to determine complexity of the software component.
17. The apparatus of claim 12 , wherein the processor is further to implement a block sorting compressor to compress each of the plurality of versions.
18. A computer program product comprising: a non-transitory computer readable storage medium; and computer usable code stored on the non-transitory computer readable storage medium, where, when executed by a processor, the computer usable code causes a computer to: create a plurality of versions of a software component including a normalized program text version of the software component and a normalized unique program text version of the software component; compress each of the plurality of versions including the normalized program text version and the normalized unique program text version to provide a compressed version corresponding to each of the plurality of versions including a compressed normalized program text version and a compressed normalized unique program text version; determine a length of each of the compressed versions including a length of the compressed normalized program text version and a length of the compressed normalized unique program text version; calculate a software complexity metric based on a ratio between the lengths of at least two of the compressed versions including a ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version; and use the software complexity metric based at least on the ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version to determine complexity of the software component.
19. An apparatus comprising a processor to: create a plurality of versions of a software component including a normalized program text version of the software component and a normalized unique program text version of the software component; compress each of the plurality of versions including the normalized program text version and the normalized unique program text version to provide a compressed version corresponding to each of the plurality of versions including a compressed normalized program text version and a compressed normalized unique program text version; determine a length of each of the compressed versions including a length of the compressed normalized program text version and a length of the compressed normalized unique program text version; calculate a software complexity metric based on a ratio between the lengths of at least two of the compressed versions including a ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version; and use the software complexity metric based at least on the ratio of the length of the compressed normalized program text version to the length of the compressed normalized unique program text version to determine complexity of the software component.
Unknown
March 29, 2016
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.