Automated software generation through mutation and artificial selection

US2021096831A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2021096831-A1
Application numberUS-201916589029-A
CountryUS
Kind codeA1
Filing dateSep 30, 2019
Priority dateSep 30, 2019
Publication dateApr 1, 2021
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Techniques for automatically generating a target software object herein include accessing an initial version of a candidate software object that does not satisfy one or more functional requirements; mutating executable binary object code of the initial version of the candidate software object to generate a first intermediate version; testing the first intermediate version to determine whether the first intermediate version satisfies at least one of the one or more functional requirements by executing the first intermediate version and a set of automated tests; and continuing to mutate and test the candidate software object through successive intermediate versions of the candidate software object until a version of the candidate software object satisfies all of the one or more functional requirements, wherein each successive intermediate version of the candidate software satisfies at least one functional requirement not satisfied by preceding versions of the candidate software object.

First claim

Opening claim text (preview).

What is claimed is: 1 . A computing device comprising: a processor; and a computer-readable medium storing executable instructions for causing the processor to perform operations comprising: accessing an initial version of a candidate software object that does not satisfy one or more functional requirements of the target software object; mutating executable binary object code of the initial version of the candidate software object to generate a first intermediate version of the candidate software object; testing the first intermediate version of the candidate software object to determine whether the first intermediate version of the candidate software object satisfies at least one of the one or more functional requirements by executing the first intermediate version of the candidate software object and a set of automated tests that provide the first intermediate version of the candidate software object with a predetermined set of inputs and determine whether outputs of the first intermediate version of the candidate software output correspond to a predetermined set of outputs; and continuing to mutate and test the candidate software object through successive intermediate versions of the candidate software object until a version of the candidate software object satisfies all of the one or more functional requirements, wherein each successive intermediate version of the candidate software satisfies at least one functional requirement not satisfied by preceding versions of the candidate software object. 2 . The computing device of claim 1 , responsive to the first intermediate version of the candidate software object not satisfying the at least one of the one or more functional requirements, iteratively mutating and testing the first candidate software object by: further mutating the first intermediate version of the candidate software object; and testing the further mutated first intermediate version of the candidate software object to determine whether the further mutated candidate software object satisfies at least one of the one or more functional requirements. 3 . The computing device of claim 1 , wherein mutating the first version of the candidate software object includes adding at least one bit to the candidate software object. 4 . The computing device of claim 3 , wherein adding the at least one bit to the candidate software object comprises adding the at least one bit to a code section of the candidate software object. 5 . The computing device of claim 3 , wherein the computer-readable medium further includes instructions for causing the processor to perform operations comprising: maintaining a state of a first portion of the code section that satisfies the at least one or more functional requirements. 6 . The computing device of claim 5 , wherein continuing to mutate the first intermediate version of the candidate software further comprises: generating the second intermediate version of the candidate software object by adding one or more bits to a second portion of the code section of the first intermediate version of the candidate software object. 7 . The computing device of claim 1 , wherein testing the first intermediate version of the candidate software object includes: executing one or more tests associated with a first functional requirement of the one or more functional requirements; and determining that the candidate software object satisfies the first functional requirement responsive to the candidate software object passing all of the one or more tests associated with the first functional requirement. 8 . A method performed by a data processing system for automatically generating a target software object comprising: accessing via a processor an initial version of a candidate software object that does not satisfy one or more functional requirements of the target software object; mutating via the processor executable binary object code of the initial version of the candidate software object to generate a first intermediate version of the candidate software object; testing via the processor the first intermediate version of the candidate software object to determine whether the first intermediate version of the candidate software object satisfies at least one of the one or more functional requirements by executing the first intermediate version of the candidate software object and a set of automated tests that provide the first intermediate version of the candidate software object with a predetermined set of inputs and determine whether outputs of the first intermediate version of the candidate software output correspond to a predetermined set of outputs; and continuing to mutate and test the candidate software object through successive intermediate versions of the candidate software object until a version of the candidate software object satisfies all of the one or more functional requirements, wherein each successive intermediate version of the candidate software satisfies at least one functional requirement not satisfied by preceding versions of the candidate software object. 9 . The method of claim 8 , responsive to the first intermediate version of the candidate software object not satisfying the at least one of the one or more functional requirements, iteratively mutating and testing the first candidate software object by: further mutating the first intermediate version of the candidate software object; and testing the further mutated first intermediate version of the candidate software object to determine whether the further mutated candidate software object satisfies at least one of the one or more functional requirements. 10 . The method of claim 8 , wherein mutating the first version of the candidate software object includes adding at least one bit to the candidate software object. 11 . The method of claim 10 , wherein adding the at least one bit to the candidate software object comprises adding the at least one bit to a code section of the candidate software object. 12 . The method of claim 10 , further comprising: maintaining a state of a first portion of the code section that satisfies the at least one or more functional requirements. 13 . The method of claim 12 , wherein continuing to mutate the first intermediate version of the candidate software further comprises: generating the second intermediate version of the candidate software object by adding one or more bits to a second portion of the code section of the first intermediate version of the candidate software object. 14 . The method of claim 8 , wherein testing the first intermediate version of the candidate software object includes: executing via the processor one or more tests to determine whether the candidate software object satisfies a respective software requirement of the one or more functional requirements; and determining via the processor that the respective software requirement has been satisfied responsive to the candidate software object passing the one or more tests. 15 . A memory device storing instructions that, when executed on a processor of a computing device, cause the computing device to automatically generate a target software object, by: accessing an initial version of a candidate software object that does not satisfy one or more functional requirements of the target software object; mutating executable binary object code of the initial version of the candidate software object to generate a first intermediate version of the candidate software object; testing the first intermediate version of the candidate software object to determine whether the first in

Assignees

Inventors

Classifications

  • for test execution, e.g. scheduling of test suites · CPC title

  • G06F8/30Primary

    Creation or generation of source code · CPC title

  • Evolutionary algorithms, e.g. genetic algorithms or genetic programming · CPC title

  • Version control (security arrangements therefor G06F21/57); Configuration management · CPC title

  • for test results analysis · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2021096831A1 cover?
Techniques for automatically generating a target software object herein include accessing an initial version of a candidate software object that does not satisfy one or more functional requirements; mutating executable binary object code of the initial version of the candidate software object to generate a first intermediate version; testing the first intermediate version to determine whether t…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F11/3688. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Apr 01 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).