Patent US6658643B1 successfully refreshed from Google Patents.
← Back to Patent Explorer
US6658643B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for computer software analysis

Assignee: International Business Machines Corp
•
Filing: 2000-08-23
•
Granted: 2003-12-02
•
Expires: 2020-08-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and system for analysing software to estimate the cost of production, development and maintenance of computer applications. Unlike previous proposals for such analysis, where the primary measured parameters are the numbers of lines of code and function points, the inventive method identifies high complexity software segments arising from specific discontinuities in execution of the program, ie points at which the program has to, in effect, make decisions. These items are assigned complexity indices which may be summed to give an overall complexity value for the program or the indices may be displayed as a histogram showing the complexity distribution of the program.

Inventors

  • 👤 Rajendra Kumar Bera

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 11:45
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/3604; G06F11/3616; G06F8/00; G06F8/70

Claims Analysis

Total Claims: 13
Claim 1
Independent Claim 231 words
A method for determine the complexity of a computer program, the method comprising the steps of: i) inspecting the program to identify occurrences therein of pre-determined program items that are indicative of breaks in the ongoing forward flow of the program, wherein said predetermined program items include any of: a conditional program statement; the head and tail of a loop statement; a call to a su-broutine or function; a memory allocation, reallocation or deallocation operation; aliasing of allocated memory; a statement including the keyword Goto, continue, break, switch, case, default and return, or an equivalent keyword; a pointer returned by a function not in the functions parameter list; a variable within a loop body if the variable is redefined or modified after its first use within a loop iteration; implicit mixed type operations in a statement or expression; division operators using non-constant denominators; a built-in operator which is overloaded by having been applied to a user-defined datatype; communication and file access calls; and nested operations and wherein said predetermined program elements exclude conditions that can be statically evaluated during compilation, constants, and trustworthy code; ii) for each such predetermined program item indicative of breaks in the ongoing forward flow of the program assigning and recording a pre-determined numeric value to the item; and iii) summing the assigned numeric values to define a complexity index indicative of the complexity of the program.
Claim 2
Independent Claim 231 words
A method for determine the complexity of a computer program, the method comprising the steps of: i) inspecting the program to identify occurrences therein of pre-determined program items that are indicative of breaks in the ongoing forward flow of the program, wherein said predetermined program items include any of: a conditional program statement; the head and tail of a loop statement; a call to a su-broutine or function; a memory allocation, reallocation or deallocation operation; aliasing of allocated memory; a statement including the keyword Goto, continue, break, switch, case, default and return, or an equivalent keyword; a pointer returned by a function not in the functions parameter list; a variable within a loop body if the variable is redefined or modified after its first use within a loop iteration; implicit mixed type operations in a statement or expression; division operators using non-constant denominators; a built-in operator which is overloaded by having been applied to a user-defined datatype; communication and file access calls; and nested operations and wherein said predetermined program elements exclude conditions that can be statically evaluated during compilation, constants, and trustworthy code; ii) for each such predetermined program item indicative of breaks in the ongoing forward flow of the program assigning and recording a pre-determined numeric value to the item; and iii) summing the assigned numeric values to define a complexity index indicative of the complexity of the program.
Claim 3
Dependent Claim 27 words
A method according to claim 1 , including the steps of forming a histogram from the said numeric values to define a complexity profile for the program.
Claim 4
Dependent Claim 78 words
A method according to claim 1 , including carrying out the said steps (i) and (ii) in respect of the said program in the form of a design document to form a first set of said numeric values, and carrying out steps (i) and (ii) again whilst said program is partially encoded to form a second set of said numeric values; and comparing the first and second set of numeric values to determine the progress of the encoding.
Claim 5
Independent Claim 231 words
A method for determining the complexity of a computer program, the method comprising loading the program into a computer and causing the computer to carry out the steps of: (i) inspecting the program to identify occurrences therein of predetermined program items that are indicative of breaks in the ongoing forward flow of the program, wherein said predetermined program items include any of: a conditional program statement; the head and tail of a loop statement; a call to a sub-routine or function; a memory allocation, reallocation or deallocation operation; aliasing of allocated memory; a statement including the keyword Goto, continue, break, switch, case, default and return, or an equivalent keyword; a pointer returned by a function not in the functions parameter list; a variable within a loop body if the variable is redefined or modified after its first use within a loop iteration; implicit mixed type operations in a statement or expression; division operators using non-constant denominators; a built-in operator which is overloaded by having been applied to a user-defined datatype; communication and file access calls; and nested operations and wherein said predetermined program elements exclude conditions that can be statically evaluated during compilation, constants, and trustworthy code; (ii) for each such item, assigning and recording a pre-determined numeric value to the item; and (iii) summing the assigned numeric values to define a complexity index indicative of the complexity of the program.
Claim 6
Independent Claim 231 words
A method for determining the complexity of a computer program, the method comprising loading the program into a computer and causing the computer to carry out the steps of: (i) inspecting the program to identify occurrences therein of predetermined program items that are indicative of breaks in the ongoing forward flow of the program, wherein said predetermined program items include any of: a conditional program statement; the head and tail of a loop statement; a call to a sub-routine or function; a memory allocation, reallocation or deallocation operation; aliasing of allocated memory; a statement including the keyword Goto, continue, break, switch, case, default and return, or an equivalent keyword; a pointer returned by a function not in the functions parameter list; a variable within a loop body if the variable is redefined or modified after its first use within a loop iteration; implicit mixed type operations in a statement or expression; division operators using non-constant denominators; a built-in operator which is overloaded by having been applied to a user-defined datatype; communication and file access calls; and nested operations and wherein said predetermined program elements exclude conditions that can be statically evaluated during compilation, constants, and trustworthy code; (ii) for each such item, assigning and recording a pre-determined numeric value to the item; and (iii) summing the assigned numeric values to define a complexity index indicative of the complexity of the program.
Claim 7
Dependent Claim 26 words
A method according to claim 4 , including causing the computer to display a histogram indicative of the distribution of said numeric values throughout said program.
Claim 8
Independent Claim 59 words
A method for analyzing computer software, the method comprising identifying occurrences in the software of predetermined dynamic items indicative of breaks in the continuity of the forward flow of execution of the software and excluding conditions that can be statically evaluated during compilation, constants, and trustworty code; and indicating the distribution within the software of said predetermined dynamic items.
Claim 9
Independent Claim 59 words
A method for analyzing computer software, the method comprising identifying occurrences in the software of predetermined dynamic items indicative of breaks in the continuity of the forward flow of execution of the software and excluding conditions that can be statically evaluated during compilation, constants, and trustworty code; and indicating the distribution within the software of said predetermined dynamic items.
Claim 10
Dependent Claim 74 words
In a computer, a method for analyzing software loaded into the computer, the method comprising automatically inspecting the software to identify dynamic software statements therein which are indicative of breaks in the forward flow of the software when it is executed and excluding conditions that can be statically evaluated during compilation, constants, and trustworthy code and defining a complexity index indicative of the complexity of the software, based on the identified dynamic software statements.
Claim 11
Dependent Claim 74 words
In a computer, a method for analyzing software loaded into the computer, the method comprising automatically inspecting the software to identify dynamic software statements therein which are indicative of breaks in the forward flow of the software when it is executed and excluding conditions that can be statically evaluated during compilation, constants, and trustworthy code and defining a complexity index indicative of the complexity of the software, based on the identified dynamic software statements.
Claim 12
Dependent Claim 95 words
A computer-readable medium embodying a set of instructions that, when executed by a computer, implements a computer software editor, the medium comprising: instructions for identifying and indicating within the software being read by the editor, occurrences in the software of pre-determined dynamic items indicative of breaks in the ongoing flow of the run time operation of the software while excluding conditions that can be statically evaluated during compilation, constants, and trustworthy code and instructions for defining a complexity index indicative of the complexity of the software, based on the identified occurrences of pre-determined dynamic items.
Claim 13
Dependent Claim 95 words
A computer-readable medium embodying a set of instructions that, when executed by a computer, implements a computer software editor, the medium comprising: instructions for identifying and indicating within the software being read by the editor, occurrences in the software of pre-determined dynamic items indicative of breaks in the ongoing flow of the run time operation of the software while excluding conditions that can be statically evaluated during compilation, constants, and trustworthy code and instructions for defining a complexity index indicative of the complexity of the software, based on the identified occurrences of pre-determined dynamic items.

References Cited (Backward Citations)

US5729746A Cited
US5930798A Cited
US6513154B1 Cited
US5960196A Cited
US6199193B1 Cited
US6073107A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2006-12-01 2007-06-02 2007-12-02 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2010-12-01 2011-06-02 2011-12-02 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2014-12-01 2015-06-02 2015-12-02 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag