Detailed Action
1. The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . This is the initial office action based on the application filed on July 30th, 2024, which claim 1-20 have been presented for examination.
Status of Claims
2. Claims 1-20 are pending in the application, of which claims 1, 8 and 15 are in independent form and these claims (1-20) are subject to following rejection(s) and/or objection(s) set forth in the following Office Action below.
ALLOWABLE DEPENDENT CLAIMS
3. Claims 7 and 14 are objected to as being dependent upon respective rejected base claims, but would be allowable if rewritten in independent form including all of the limitations of the base claims and any intervening claim(s).
Claim Rejections – 35 USC §103
4. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102 of this title, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
5. Claims 1-4, 6, 8-11, 13, 15-18 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Sebastian Mietke (US PG-PUB. No. 20230139119 A1 herein after Mietke) in view of Eli Lopian (US Patent Application Publication No. 2017/0132116 A1 herein after Lopian).
Per claims 1:
Mietke disclose:
A method of interpreting superclass behavior in dynamic language computer code, comprising:
generating a first code object including a first class of a plurality of classes defined by a common superclass in code of an application in a dynamic programming language (At least see ¶[0022] -provide or identify a first code object 108A … provided or identified, one or more functionally similar code objects 108B, may be presented via a user interface, [thus, inherited from one superclass] emphasis added);
generating a second code object including a second class of the plurality of classes defined by the common superclass (At least see ¶[0058] At 510, an identification of both a first code object and a second code object is received);
generating an analyzable dynamic language computer code including the first code object and the second code object (At least see ¶[0059] -determined that the first code object and the second code object each comprise a plurality of code subsets that together comprise the respective code object);
resolving, by a processing device, a first attribute in the analyzable dynamic language computer code for the first code object and a second attribute in the analyzable dynamic language code for the second code object (At least see ¶[0060] - one or more differences between the plurality of code subsets of the first code object and the plurality of code subsets of the second code object are identified, ¶[0033] -recommendations on how to reduce the differences between the compared code objects 108A, 108B. In some embodiments, the code updates 122 may include recommendations on how to modify, reorder, update, or otherwise refactor the source code); and
identifying a deviation in behavior of the first class or the second class based on the comparison of the first attribute and the second attribute (At least see ¶[0063] -second code object is updated to reduce the one or more differences between the plurality of code subsets based on the indicated action and responsive to the input).
Mietke sufficiently discloses the method as set forth above, but Mietke does not explicitly disclose: performing, by the processing device, a comparison of the first attribute resolved for the first code object and the second attribute resolved for the second code object.
However, Lopian discloses:
performing, by the processing device, a comparison of the first attribute resolved for the first code object and the second attribute resolved for the second code object (At least see ¶[0074] -a code object having the identified characteristics associated with the individual identified dependency or modify a code object to match the identified characteristics associated with the individual identified dependency, so as to generate a unit test including CSS's configured to resolve each of the one or more identified dependencies).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Lopian into Mietke because use of a version control system is essential. If a later version of the unit fails a particular test that it had previously passed, the version-control software can provide a list of the source code changes (if any) that have been applied to the unit since that time. It is also essential to implement a sustainable process for ensuring that test case failures are reviewed daily and addressed immediately. If such a process is not implemented and ingrained into the team's workflow, the application will evolve out of sync with the unit test suite, increasing false positives and reducing the effectiveness of the test suite (please see ¶[0008]).
Per claims 2:
Mietke discloses:
resolving a call in the analyzable dynamic language computer code for each of the first code object and the second code object; and performing a comparison of the call resolved for the first code object and the second code object (At least see ¶[0056] _ code objects 410A and 410B may include calls to method L in code object 410C. And object 410A may include a call to the method call K whose program code is only in code object 410B, thus eliminating multiple redundancies amongst the source code).
Per claims 3:
Mietke discloses:
resolving a subscript in the analyzable dynamic language computer code for each of the first code object and the second code object; and performing a comparison of the subscript resolved for the first code object and the second code object (At least see ¶[0044] - CSS 102 may use runtime data to probe different modifications. In case of a possible refactoring, CSS 102 may record the runtime data for the objects in scope. This data can then be used to modify the underlying code and to re-execute the process again, after refactoring or testing various proposals (before or after they are presented to a developer 110). The output of the object can be checked. If no differences occur (over a longer observation time), the order of the calls may be deemed unimportant and the order may be modified. Testing engine 124 enables CSS 102 to check the output before a certain correction was made and compare it to the output after the correction is applied).
Per claims 4:
Mietke discloses:
resolving an inheritance in the analyzable dynamic language computer code for each of the code object and the second code object; and performing a comparison of the inheritance resolved for the first code object and the second code object (At least see ¶[0037] - CSS 102 may recommend that actual computing code be removed from code object 108B, and only be included in code object 108A. CSS 102 may recommend that rather than including duplicate computing code (which increases maintenance, memory, processing costs) code object 108B inherits the methods 112A, 112B of code object 108A. This would result in fewer lines of source code 104 and easier updates and maintenance of source code 104).
Per claims 6:
Mietke discloses:
wherein resolving the attribute in the analyzable dynamic language computer code for each of the first code object and the second code object comprises:
detecting a collection in the dynamic language computer code; and representing the detected collection as a compound object including a plurality of buckets, each bucket mapping a set of key names to a set of key values (At least see ¶[0060] - ¶[0060] At 530, at least one or more differences between the plurality of code subsets of the first code object and the plurality of code subsets of the second code object are identified, the one or more differences including at least one of: a different ordering of the plurality of code subsets between the first code object and the second code object, or an additional code subset in the first code object that is not included in the second code object, or vice versa. For example, MCE 109 may determine that the ordering of the methods 112A, 112B varies between code object 108A and 108B).
Per claims 8:
Limitation rendered in this claim is as similar as claim 1 above; and therefore, rejected based on same rational.
Per claims 9:
Limitation rendered in this claim is as similar as claim 2 above; and therefore, rejected based on same rational.
Per claims 10:
Limitation rendered in this claim is as similar as claim 3 above; and therefore, rejected based on same rational.
Per claims 11:
Limitation rendered in this claim is as similar as claim 4 above; and therefore, rejected based on same rational.
Per claims 13:
Limitation rendered in this claim is as similar as claim 6 above; and therefore, rejected based on same rational.
Per claims 15:
Limitation rendered in this claim is as similar as claim 1 above; and therefore, rejected based on same rational.
Per claims 16:
Limitation rendered in this claim is as similar as claim 2 above; and therefore, rejected based on same rational.
Per claims 17:
Limitation rendered in this claim is as similar as claim 3 above; and therefore, rejected based on same rational.
Per claims 18:
Limitation rendered in this claim is as similar as claim 4 above; and therefore, rejected based on same rational.
Per claims 20:
Limitation rendered in this claim is as similar as claim 6 above; and therefore, rejected based on same rational.
6. Claims 5, 12 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Sebastian Mietke (US PG-PUB. No. 20230139119 A1 herein after Mietke) view of Eli Lopian (US Patent Application Publication No. 2017/0132116 A1 herein after Lopian), and further in view of Gass et al. (US Patent Application Publication No. 2019/0243621 A1 herein after Gass)
Per claims 5:
Mietke sufficiently discloses the method as set forth above, but Mietke does not explicitly disclose: resolving each of a plurality of transition points in the dynamic language computer code; generating a value graph comprising a plurality of nodes representing resolved transition points, wherein each node is connected to another resolved transition value or a value; and performing a comparison of the transition points associated with the first code object and the transition points associated with the second code object.
However, Gass discloses:
resolving each of a plurality of transition points in the dynamic language computer code (At least see ¶[0158] - functional areas may be automatically identified, for example by mapping inter-relations of code objects via a graph (e.g. as shown in FIG. 5A) and identifying boundaries or borders between groups of code objects as objects that have few connections within the group, the group comprising code objects that primarily connect to other objects in the group. In some implementations, entry points may be defined as code objects that are called to or provide returns to other functions);
generating a value graph comprising a plurality of nodes representing resolved transition points, wherein each node is connected to another resolved transition value or a value (At least see ¶[0190] - take the form of a multi-dimensional graph, with code objects represented by nodes and associations (e.g. reads, writes, callbacks, etc.) indicated via edges); and
performing a comparison of the transition points associated with the first code object and the transition points associated with the second code object (At least see ¶[0190]- take the form of a multi-dimensional graph, with code objects represented by nodes and associations (e.g. reads, writes, callbacks, etc.) indicated via edges. In other implementations, other meta-models may be generated (e.g. trees or other such structures). Clusters may be identified via common relationships to an object or node, branches off a tree).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Gass into Mietke because customized, with code objects, executables, resources, and libraries developed on an installation-specific basis to perform various functions while default objects, libraries, and modules may be provided by the manufacturer with the new installation, custom code objects may need to be upgraded or modified to work properly; as such, new naming conventions in a new version of the system (e.g. case-sensitivity or -insensitivity, unicode-compliance, etc.) may require modification and upgrading of custom code objects that worked with an older version of the system to account for the new conventions. Similarly, new features may be provided that may provide more efficient code structures (e.g. “while” loops rather than mere “if-then” conditions), other features may be removed or obsoleted, or other changes made to the underlying structure (please see ¶[0028] and ¶[0029]).
Per claims 12:
Limitation rendered in this claim is as similar as claim 5 above; and therefore, rejected based on same rational.
Per claims 19:
Limitation rendered in this claim is as similar as claim 5 above; and therefore, rejected based on same rational.
CONCLUSION
7. Any inquiry concerning this communication or earlier communications from the examiner should be directed to ZIAUL A. CHOWDHURY whose telephone number is (571)270-7750. The examiner can normally be reached on 9:30PM 6:30PM Monday -Friday.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Hyung S. Sough can be reached on 571-272-6799. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Status information for published applications may be obtained from Patent Public Search tool (for all users) – A link to the Patent Public Search Tool is available at www. Uspto.gov/PatentPublicSearch. To find a U.S. patent or U.S. patent application publication, open the Patent Public Search tool by selecting “Start search”. Type the U.S. patent or U.S. patent application publication number in the “Search” panel without any punctuation and followed by an”.pn.”.
Should you have questions on access to the system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/ZIAUL A CHOWDHURY/ Primary Examiner, Art Unit 2192