DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This Office Action is in response to application filed on December 27, 2023.
Claims 1-20 are pending.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claims 1-3, 5-6, 8, 15-17 and 19-20 are rejected under 35 U.S.C. 102(a)(1) and (a)(2) as being anticipated by Boxall (US 9,740,593).
With respect to Claim 1, Boxall discloses:
receiving a synchronized debug command; (using a user interface (UI), a user can input a command to step through the executable code, may set breakpoints, etc., within the debugger, Column 5, lines 46-54)
identifying corresponding points of execution targeted by the synchronized debug command in a plurality of versions of a software application; (set a breakpoint at a starting location (e.g., the program entry point), or another defined location in the program code (identifying corresponding points of execution), Column 5, lines 40-45; The debug sessions will then be synchronized (synchronized debug command) so that all sessions stop at the same breakpoint or location in program code., Column 5, lines 43-45; new platform and reference platform (plurality of versions), Column 1, lines 19-23)
applying an unsynchronized debug sub-command of the synchronized debug command to the plurality of versions of the software application until the corresponding points of execution have been targeted by the unsynchronized debug sub-command in the plurality of versions of the software application. (a user may input a command to step through the executable code, may set breakpoints, etc., within the debugger which will be applied (unsynchronized debug sub-command) to all remote debug sessions simultaneously (plurality of versions of the software application), Column 5, lines 46-54)
With respect to Claim 2, all the limitations of Claim 1 have been addressed above; and Boxall further disclose:
wherein the synchronized debug command comprises a synchronized step command, (a command, e.g., a step command, (a synchronized step command) may be issued at client system 110 and communicated to each remote server system debug engine, Column 6, lines 1-4) wherein the unsynchronized debug sub-command comprises an unsynchronized step command, (a command, e.g., a step command, (a synchronized step command) may be issued at client system 110 and communicated to each remote server system debug engine (unsynchronized debug sub-command), Column 6, lines 1-4) and wherein the unsynchronized step command is applied to the plurality of versions of the software application until the corresponding points of execution are reached. (a command, e.g., a step command, may be issued at client system 110 and communicated to and executed at each remote server system debug engine (applied to the plurality of versions of the software application), Column 6, lines 1-4)
With respect to Claim 3, all the limitations of Claim 1 have been addressed above; and Boxall further disclose:
wherein the synchronized debug command comprises a create breakpoint command, (debug operations may be set, e.g., breakpoint operations, (synchronized debug command), Column 8, lines 29-39), wherein the unsynchronized debug sub-command comprises an unsynchronized create breakpoint command, (debug operations may be set, e.g., breakpoint operations, and applied to each debug session (unsynchronized create breakpoint command), Column 8, lines 29-39),and wherein the unsynchronized create breakpoint command is applied to the corresponding points of execution of the plurality of versions of the software application. (debug operations may be set, e.g., breakpoint operations, and applied to each debug session (applied to the plurality of versions of the software application), Column 8, lines 29-39)
With respect to Claim 5, all the limitations of Claim 1 have been addressed above; and Boxall further disclose:
wherein each of the corresponding points of execution comprises an identification of a portion of executable code of one of the plurality of versions of the software application. (set a breakpoint at a starting location (e.g., the program entry point), or another defined location in the program code (corresponding points of execution), Column 5, lines 40-45; a user may explicitly specify which point(s) to compare, e.g., at every module load and every module entry point, or any point within a given module, (corresponding points of execution) to achieve any desired granularity with respect to line-by-line comparison of data, Column 8, lines 35-39)
With respect to Claim 6, all the limitations of Claim 1 have been addressed above; and Boxall further disclose:
wherein the corresponding points of execution evolved from a common point of execution in an independent version of the software application. (ability to set common breakpoints (common point of execution) such as at every module load and every module entry point, or any point within a given module (independent version of the software application), Column 8, lines 35-39)
Claim 8 is a system claim corresponding to the method claim above (Claim 1) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 1.
Claim 15 is a computer-readable storage medium claim corresponding to the method claim above (Claim 1) and, therefore, is rejected for the same reasons set forth in the rejection of Claim 1.
With respect to Claim 16, all the limitations of Claim 15 have been addressed above; and Boxall further disclose:
displaying a call stack for each of the plurality of versions of the software application. (Other examples of data which may be monitored include states of local variables on a stack, register values of application, states of certain areas of memory such as pointer values, etc., Column 6, lines 8-11; differences between the executables (plurality of versions of the software application) may be highlighted and displayed via the UI, Column 6, lines 19-21)
With respect to Claim 17, all the limitations of Claim 16 have been addressed above; and Boxall further disclose:
wherein the call stack indicates when a name of a function or a parameter has changed between versions of the software application. (Other examples of data which may be monitored include states of local variables on a stack, register values of application, states of certain areas of memory such as pointer values, etc., Column 6, lines 8-11; differences between the executables (a parameter has changed) may be highlighted and displayed via the UI, Column 6, lines 19-21)
With respect to Claim 19, all the limitations of Claim 15 have been addressed above; and Boxall further disclose:
wherein the synchronized debug command comprises a step into command, a step over command, a step out command, a run to cursor command, or a create breakpoint command. (debugging commands (synchronized debug command) can include a step command, a breakpoint command, run, stop, resume, step over, step into, etc., Column 6, lines 3-11)
With respect to Claim 20, all the limitations of Claim 15 have been addressed above; and Boxall further disclose:
wherein the computer- readable instructions further cause the system to:
generate a suggested location of point of execution from a method entry point or a method exit point. (a user may explicitly specify (suggested by user) which point(s) to compare, e.g., at every module load and every module entry point, or any point within a given module, to achieve any desired granularity with respect to line-by-line comparison of data, Column 8, lines 35-39)
Claim Rejections - 35 USC § 103
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, 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.
Claim 4 is rejected under 35 U.S.C. 103 as being unpatentable over Boxall (US 9,740,593) in view of Eberlein et al. (US 2017/0168801).
With respect to Claim 4, all the limitations of Claim 1 have been addressed above; and Boxall do not disclose:
wherein the plurality of versions of the software application were built from a corresponding plurality of branches of a software repository.
However, Eberlein et al. disclose:
wherein the plurality of versions of the software application were built from a corresponding plurality of branches of a software repository. (An application may have a dedicated VCS (software repository) to be used for storing files associated with different versions of the application (plurality of versions of the software application). The different version of the application may be defined at different stages of application development and productive use in end-to-end use case scenarios., Paragraph 14)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Eberlein et al. into the teaching of Boxall to include wherein the plurality of versions of the software application were built from a corresponding plurality of branches of a software repository in order to have a centralized location to store files associated with different versions of the application so users can quickly access/find any needed files.
Claim 7 is rejected under 35 U.S.C. 103 as being unpatentable over Boxall (US 9,740,593) in view of Ren et al. (US 2022/0382541).
With respect to Claim 7, all the limitations of Claim 2 have been addressed above; and Boxall further disclose:
wherein the unsynchronized step command is iteratively applied to one of the plurality of versions of the software application to step through [a change] not included in another one of the plurality of versions of the software application. (provides the ability for automatic detection of differences in data (a change) from each of the debuggers, as the user is stepping through a program (unsynchronized step command is iteratively applied), Column 5, lines 16-19)
Boxall do not disclose:
[a change] is an intermediate function not included in another one of the plurality of versions of the software application
However, Ren et al. disclose:
[a change] is an intermediate function not included in another one of the plurality of versions of the software application (a commit (change) can create new functions or changes to existing functions in the code base (intermediate function not included in another one of the plurality of versions of the software application), Paragraph 38)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Ren et al. into the teaching of Boxall to include [a change] is an intermediate function not included in another one of the plurality of versions of the software application in order to allow a user to add new or modify existing functionality within a code base.
Claim 9 is rejected under 35 U.S.C. 103 as being unpatentable over Boxall (US 9,740,593) in view of Deckert et al. (US 2015/0033210).
With respect to Claim 9, all the limitations of Claim 8 have been addressed above; and Boxall do not disclose:
wherein the corresponding points of execution are obtained by comparing a plurality of branches of source code of the software application that correspond to the plurality of versions of the software application.
However, Deckert et al. disclose:
wherein the corresponding points of execution are obtained by comparing a plurality of branches of source code of the software application that correspond to the plurality of versions of the software application. (generating breakpoints (corresponding points of execution) based on a code change region which is identified by comparing versions of a file in a change-set (plurality of branches of source code of the software application) (i.e. identifying that version 3, lines 59-65 have changed), Paragraphs 36-37)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Deckert et al. into the teaching of Boxall to include wherein the corresponding points of execution are obtained by comparing a plurality of branches of source code of the software application that correspond to the plurality of versions of the software application in order to help a user efficiently set breakpoints in a debugger for a change-set. (Deckert et al., Paragraph 5)
Claim 10 is rejected under 35 U.S.C. 103 as being unpatentable over Boxall (US 9,740,593) in view of Deckert et al. (US 2015/0033210) and in further view of Rodgers et al. (US 2022/0197606).
With respect to Claim 10, all the limitations of Claim 9 have been addressed above; and Boxall and Deckert et al. do not disclose:
wherein comparing the plurality of branches comprises identifying when a function or a variable in one branch has been renamed in another branch.
However, Rodgers et al. disclose:
wherein comparing the plurality of branches comprises identifying when a function or a variable in one branch has been renamed in another branch. (comparing a second version to a first version and identifying a number of changes such as when a function is renamed, Paragraph 29)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Rodgers et al. into the teaching of Boxall and Deckert et al. to include wherein comparing the plurality of branches comprises identifying when a function or a variable in one branch has been renamed in another branch in order to automatically identify changes between versions of source code to which can help generate compatible modified source code. (Rodgers et al., Paragraph 3, lines 7)
Claims 11-14 are rejected under 35 U.S.C. 103 as being unpatentable over Boxall (US 9,740,593) in view of Deckert et al. (US 2015/0033210) and in further view of Rodrigues Rosa Junior (US 2020/0379752).
With respect to Claim 11, all the limitations of Claim 8 have been addressed above; and Boxall do not disclose:
wherein the corresponding points of execution are obtained by performing a binary comparison of executable binaries of each of the plurality of versions of the software application.
However, Deckert et al. disclose:
wherein the corresponding points of execution are obtained by performing a [comparison] of each of the plurality of versions of the software application. (generating breakpoints (corresponding points of execution) based on a code change region which is identified by comparing versions of a file in a change-set (comparison of each of the plurality of versions of the software application) (i.e. identifying that version 3, lines 59-65 have changed), Paragraphs 36-37)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Deckert et al. into the teaching of Boxall to include wherein the corresponding points of execution are obtained by performing a [comparison] of each of the plurality of versions of the software application in order to help a user efficiently set breakpoints in a debugger for a change-set. (Deckert et al., Paragraph 5)
Boxall and Deckert et al. do not disclose:
[comparison] is a binary comparison of executable binaries of each of the plurality of versions of the software application
However, Rodrigues Rosa Junior disclose:
[comparison] is a binary comparison of executable binaries of each of the plurality of versions of the software application (identifying changes to versions of code by performing a binary comparison between version of the code object, Paragraph 52)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Rodrigues Rosa Junior into the teaching of Boxall and Deckert et al. to include [comparison] is a binary comparison of executable binaries of each of the plurality of versions of the software application in order to help identify binary differences for development, configuration or testing purposes. (Rodrigues Rosa Junior, Paragraph 13, lines 13-16)
With respect to Claim 12, all the limitations of Claim 11 have been addressed above; and Boxall and Deckert et al. do not disclose:
wherein the binary comparison determines that a remote code change or a change in a toolkit used to build the application causes instructions compiled from unchanged local code to change.
However, Rodrigues Rosa Junior disclose:
wherein the binary comparison determines that a remote code change or a change in a toolkit used to build the application causes instructions compiled from unchanged local code to change. (The binary comparison may be performed at any level of granularity and may be performed between one or more bits, bytes, packets, sectors, blocks, records, files, directories, other level, or a combination thereof. The differences may include on or more data additions, deletions, moves, (unchanged local code) copies, other data transformation, or a combination thereof. As discussed above, the comparison may or may not take into account the base versions or a common base version when performing the comparison to determine the change set., Paragraph 52; see Figure 1, computing device/node; determining the changes may involve detecting the changes when they are provided by a user (e.g., as developer input or IT administrator input) (remote code change), Paragraph 51)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Rodrigues Rosa Junior into the teaching of Boxall and Deckert et al. to include wherein the binary comparison determines that a remote code change or a change in a toolkit used to build the application causes instructions compiled from unchanged local code to change in order to help identify binary differences for development, configuration or testing purposes. (Rodrigues Rosa Junior, Paragraph 13, lines 13-16)
With respect to Claim 13, all the limitations of Claim 12 have been addressed above; and Boxall and Deckert et al. do not disclose:
further comprising:
indicating that the unchanged local code compiles to different instructions in at least one of the versions of the software application.
However, Rodrigues Rosa Junior disclose:
further comprising:
indicating that the unchanged local code compiles to different instructions in at least one of the versions of the software application. (determining the differences may include (indicate) on or more data additions, deletions, moves, (unchanged local code compiles to different instructions) copies, other data transformation, or a combination thereof. As discussed above, the comparison may or may not take into account the base versions or a common base version when performing the comparison to determine the change set., Paragraph 52)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Rodrigues Rosa Junior into the teaching of Boxall and Deckert et al. to include indicating that the unchanged local code compiles to different instructions in at least one of the versions of the software application in order to help identify binary differences for development, configuration or testing purposes. (Rodrigues Rosa Junior, Paragraph 13, lines 13-16)
With respect to Claim 14, all the limitations of Claim 11 have been addressed above; and Boxall and Deckert et al. further disclose:
wherein the corresponding points of execution point to [a] first function in one of the versions of the software application and [a] second function in another of the versions of the software application. (a user may explicitly specify which point(s) to set breakpoints at such as at every module load and every module entry point, or any point within a given module (first/second function) which is then applied to each debug session (plurality of versions of the software application), Column 8, lines 29-39)
Boxall and Deckert et al. do not disclose:
wherein the binary comparison identifies that a portion of a first function has been moved to a second function,
However, Rodrigues Rosa Junior disclose:
wherein the binary comparison identifies that a portion of a first function has been moved to a second function, (The binary comparison may be performed at any level of granularity and may be performed between one or more bits, bytes, packets, sectors, blocks, records, files, directories, other level, or a combination thereof. The differences may include on or more data additions, deletions, moves, (first function has been moved to a second function) copies, other data transformation, or a combination thereof. As discussed above, the comparison may or may not take into account the base versions or a common base version when performing the comparison to determine the change set., Paragraph 52; see Figure 1, computing device/node; determining the changes may involve detecting the changes when they are provided by a user (e.g., as developer input or IT administrator input) (remote code change), Paragraph 51)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Rodrigues Rosa Junior into the teaching of Boxall and Deckert et al. to include wherein the binary comparison identifies that a portion of a first function has been moved to a second function in order to help identify binary differences for development, configuration or testing purposes. (Rodrigues Rosa Junior, Paragraph 13, lines 13-16)
Allowable Subject Matter
Claim 18 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Chang et al. (US 2017/0103010) discloses debugging program code by comparing two parallel debug processes.
Ji et al. (US 2016/0062765) discloses identifying semantic differences between source code versions.
Krauss (US 2008/0162888) discloses side-by-side comparison of multiple instances of a software application.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to LANNY N UNG whose telephone number is (571)270-7708. The examiner can normally be reached Mon-Thurs 6am-4pm.
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, Bradley Teets can be reached at 571-272-3338. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/LANNY N UNG/ Examiner, Art Unit 2197