Computer language translation system and method of converting procedural computer language software to object-oriented computer language software
First Claim
1. A method of translating software developed in a procedural computer language to a target object-oriented computer language, wherein said procedural computer language includes a plurality of modules and blocks of global data, said method comprising:
- (a) identifying and processing said plurality of modules within said procedural language software for assignment to object-oriented classes;
(b) identifying said blocks of global data within said procedural language software, said global data in each said block of global data being accessible by one or more of said modules;
(c) defining a plurality of object-oriented classes each from a corresponding identified block of global data;
(d) identifying and recording the number of reference instances by which the plurality of modules accesses said identified blocks of global data and using the recorded information to iteratively assign the plurality of modules obtained from step (a) to the plurality of object-oriented classes defined in step (c) by;
(d.1) retrieving each defined object-oriented class and each of said modules;
(d.2) determining for each defined object-oriented class a count of the quantity of references by a retrieved module to class members of that class;
(d.3) assigning the retrieved module to the defined object-oriented class associated with a count representing the maximum quantity of said references;
(d.4) assigning a retrieved module unassigned in step (d.3) to either a newly defined object-oriented class or a defined object-oriented class that corresponds to a previously assigned module, wherein the previously assigned module is associated with the unassigned module;
(d.5) repeating the determining and assigning steps for each retrieved module; and
(d.6) for each object-oriented class, selectively setting class data members to either public or private in accordance with access of those class data members by the assigned modules; and
(e) translating said procedural language to said target object-oriented language using the resulting object-oriented classes obtained in step (d) and producing an object-oriented version of said procedural language software for a target operating environment.
13 Assignments
0 Petitions
Accused Products
Abstract
Common data structures associated with procedurally-oriented software, such as Fortran COMMON blocks, are translated into object-oriented (OO) classes. Procedurally-oriented software modules are reduced in complexity by extracting an appropriate number of sub-modules from the original source code so that the original module and each extracted module is below a predetermined complexity level, if possible. The original module and extracted modules are assigned to an object-oriented class based upon a measure of each modules'"'"' association to the respective class'"'"' data members, where the assigned modules are then translated into object-oriented methods. This approach greatly reduces overall system development time and costs by automatically generating maintainable object-oriented code based upon translated procedurally-oriented source code. Man-hours are further saved by automatically documenting the newly generated object-oriented classes and by automatically generating test suite files for use in verifying and troubleshooting the automatically generated object-oriented classes.
51 Citations
33 Claims
-
1. A method of translating software developed in a procedural computer language to a target object-oriented computer language, wherein said procedural computer language includes a plurality of modules and blocks of global data, said method comprising:
-
(a) identifying and processing said plurality of modules within said procedural language software for assignment to object-oriented classes; (b) identifying said blocks of global data within said procedural language software, said global data in each said block of global data being accessible by one or more of said modules; (c) defining a plurality of object-oriented classes each from a corresponding identified block of global data; (d) identifying and recording the number of reference instances by which the plurality of modules accesses said identified blocks of global data and using the recorded information to iteratively assign the plurality of modules obtained from step (a) to the plurality of object-oriented classes defined in step (c) by; (d.1) retrieving each defined object-oriented class and each of said modules; (d.2) determining for each defined object-oriented class a count of the quantity of references by a retrieved module to class members of that class; (d.3) assigning the retrieved module to the defined object-oriented class associated with a count representing the maximum quantity of said references; (d.4) assigning a retrieved module unassigned in step (d.3) to either a newly defined object-oriented class or a defined object-oriented class that corresponds to a previously assigned module, wherein the previously assigned module is associated with the unassigned module; (d.5) repeating the determining and assigning steps for each retrieved module; and (d.6) for each object-oriented class, selectively setting class data members to either public or private in accordance with access of those class data members by the assigned modules; and (e) translating said procedural language to said target object-oriented language using the resulting object-oriented classes obtained in step (d) and producing an object-oriented version of said procedural language software for a target operating environment. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer-implemented system for translating software developed in a procedural computer language to a target object-oriented computer language, wherein said procedural computer language includes a plurality of modules and blocks of global data, said system comprising:
a processor to receive said procedural computer language and to translate said procedural computer language to said target object-oriented computer language, said processor including; a controller module to identify and process said plurality of modules within said procedural language software for assignment to object-oriented classes; a block module to identify said blocks of global data within said procedural language software and to define a plurality of object-oriented classes each from a corresponding identified block of global data, wherein said global data in each said block of global data is accessible by one or more of said modules; a solution module to identify and record the number of reference instances by which the plurality of modules accesses said identified blocks of global data and to use the recorded information to iteratively assign the plurality of identified modules to the plurality of defined object-oriented classes by; (a) retrieving each defined object-oriented class and each of said modules; (b) determining for each defined object-oriented class a count of the quantity of references by a retrieved module to class members of that class; (c) assigning the retrieved module to the defined object-oriented class associated with a count representing the maximum quantity of said references; (d) assigning a retrieved module unassigned in (c) to either a newly defined object-oriented class or a defined object-oriented class corresponding to a previously assigned module, wherein the previously assigned module is associated with the unassigned module; (e) repeating said determining and assigning for each retrieved module; and (f) for each object-oriented class, selectively setting class data members to either public or private in accordance with access of those class data members by the assigned modules; and a translation module to translate said procedural language to said target object-oriented language using the resulting object-oriented classes obtained by the solution module and produce an object-oriented version of said procedural language software for a target operating environment. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
23. A program product apparatus including a computer storage medium with computer program logic recorded thereon for translating software developed in a procedural computer language to a target object-oriented computer language, wherein said procedural computer language includes a plurality of modules and blocks of global data, said program product apparatus comprising:
-
a controller module to identify and process said plurality of modules within said procedural language software for assignment to object-oriented classes; a block module to identify said blocks of global data within said procedural language software and to define a plurality of object-oriented classes each from a corresponding identified block of global data, wherein said global data in each said block of global data is accessible by one or more of said modules; a solution module to identify and record the number of reference instances by which the plurality of modules accesses said identified blocks of global data and to use the recorded information to iteratively assign the plurality of identified modules to the plurality of defined object-oriented classes by; (a) retrieving each defined object-oriented class and each of said modules; (b) determining for each defined object-oriented class a count of the quantity of references by a retrieved module to class members of that class; (c) assigning the retrieved module to the defined object-oriented class associated with a count representing the maximum quantity of said references; (d) assigning a retrieved module unassigned in (c) to either a newly defined object-oriented class or a defined object-oriented class corresponding to a previously assigned module, wherein the previously assigned module is associated with the unassigned module; (e) repeating said determining and assigning for each retrieved module; and (f) for each object-oriented class, selectively setting class data members to either public or private in accordance with access of those class data members by the assigned modules; and a translation module to translate said procedural language to said target object-oriented language using the resulting object-oriented classes obtained by the solution module and produce an object-oriented version of said procedural language software for a target operating environment. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
Specification