9299045

Determining Software Complexity

PublishedMarch 29, 2016
Assigneenot available in USPTO data we have
Technical Abstract

Patent Claims
19 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

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

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

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

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

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

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

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

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

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

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

11. The computer program product of claim 10 , wherein the block sorting compressor includes a bzip2 compressor.

12

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

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

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

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

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

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

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

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.

Patent Metadata

Filing Date

Unknown

Publication Date

March 29, 2016

Inventors

John Michael Lake

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “DETERMINING SOFTWARE COMPLEXITY” (9299045). https://patentable.app/patents/9299045

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.