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 .
Response to Arguments
Applicant’s arguments have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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.
Claims 1-4, 7-16 and 20-23 are rejected under 35 U.S.C. 103 as being unpatentable over US 2013/0167112 to Bostian et al. (Bostian) in view of US 8,745,579 to Johnson et al. (Johnson) in view of US 11,789,704 to Konuri (Konuri) in view of US 2011/0088011 to Ouali (Ouali).
Claims 1 and 22-23: Bostian discloses a method comprising:
receiving a request to generate one or more applications configured to perform one or more algorithms (par. [0069] “a virtual source code specification is generated”), wherein each of the one or more applications is configured to perform the one or more algorithms on a respective corresponding platform of a plurality of platforms, and wherein each application, when executed on a respective user device running the respective corresponding platform, is configured to perform the one or more algorithms based on user inputs to the respective user device (e.g. par. [0069] “a transform mechanism … designed to correspond to a particular platform”);
obtaining input data that represents user code that comprises the one or more algorithms (par. [0069] “a virtual source code specification is generated”);
obtaining a set of target language code that comprises the one or more algorithms, and wherein the set of target language code is derived from the input data (par. [0069] “a high-level target source code is generated … corresponds to the particular platform”); and
processing at least the set of target language code to generate, for each of the respective corresponding platforms, a respective buildable application (par. [0070] “the high-level target source code is compiled”).
Bostian does not disclose:
input data that represents user code that comprises the one or more algorithms in a programming language.
Johnson teaches:
input data that represents user code that comprises the one or more algorithms in a programming language (col. 3, lines 48-60 “input program, including but not limited to … imperative programming languages …. declarative programming languages”).
It would have been obvious to provide input data in a programming language (Johnson col. 3, lines 48-60 “programming languages”, Bostian par. [0026] “the virtual source code specification 12”). Those of ordinary skill in the art would have been motivated to do so as a known alternate method of providing a specification which would have produced only the expected results.
Bostian and Johnson do not teach:
maintaining a plurality of template files, wherein each template file comprises a template of a file for building the respective buildable application, wherein the plurality of template files comprises a plurality of template configuration files, and wherein each template configuration file comprise a template of a configuration file that is required to build the respective buildable application for the respective corresponding platform; and
applying data derived from the input data to one or more of the plurality of template files to generate one or more files for building the respective buildable application, comprising applying data derived from the input data to one or more of the plurality of template configuration files to generate one or more configuration files that are required to build the respective buildable application for the respective corresponding platform.
Konuri teaches:
maintaining a plurality of template files, wherein each template file comprises a template of a file for building a respective buildable application, wherein the plurality of template files comprises a plurality of template code files, and wherein each template code file comprise a template of ca code file (col. 23, lines 60-65 “code template database 68 that includes … expandable code that the DbDe module 64 may retrieve and customize to the configuration parameters”); and
applying data derived from the input data to one or more of the plurality of template files to generate one or more files for building the respective buildable application, comprising applying data derived from the input data to one or more of the plurality of template code files to generate one or more code files (col. 24, lines 7-17 “inserting the configuration parameters into the retrieved code … integrate the machine written code into the previously described code blocks”).
It would have been obvious at the time of filing to maintain a plurality of template code files. Those of ordinary skill in the art would have been motivated to do so to customize the application to a target environment (see e.g. Bostian par. [0003] “generate a plurality of target source codes”, Konuri col. 8, lines 35-39 “build a custom application for the target platform 14”).
Bostian, Johnson and Konuri do not explicitly teach:
a plurality of template configuration files that are required to build the respective buildable application for the respective corresponding platform.
Ouali teaches:
a plurality of configuration files that are required to build the respective buildable application for the respective corresponding platform (par. [0469] “update the ear with a list of configuration files”).
It would have been obvious at the time of filing to provide template configuration files (Konuri col. 23, lines 60-65 “generate … artifacts 66 … code template database 68”, Ouali par. [0469] “configuration files”). Those of ordinary skill in the art would have been motivated to do so as a means of conforming to a known enterprise software architecture which would have produced only the expected results (see e.g. Ouali abstract).
Claim 2: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, wherein the method further comprises:
building, for each of the respective corresponding platforms, the respective buildable application (Bostian par. [0071] “compiled to generate the … executable application”, those of ordinary skill in the art would have understood generation of an executable to include a “build” operation, see e.g. par. [0072] “compiling and linking”).
Claim 3: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, wherein obtaining input data comprises receiving input data from a user (Bostian par. [0069] “generated by a human developer”).
Claim 4: Bostian, Johnson, Konuri and Ouali teach the method of claim 3, wherein the input data comprises one or more of data representing parameters, and data representing an interface for the one or more applications (Bostian par. [0032] “defines interfaces and resources available”).
Claim 7: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, wherein the user code comprises a set of source language code in the programming language, and wherein obtaining a set of target language code comprises generating the set of target language code in a second programming language from the source language code, and wherein each application, when executed on a respective user device running the respective corresponding platform, is configured to perform the one or more algorithms in the second programming language based on user inputs to the respective user device (Bostian par. [0069] “a high-level target source code is generated … corresponds to the particular platform”, Johnson col. 7, lines “57-59 “input program such as Java”, col. 8, lines 1-3 “JavaScript code … is generated”).
Claim 8: Bostian, Johnson, Konuri and Ouali disclose the method of claim 7, wherein the user code comprises a set of target language code (Bostian par. [0069] “a high-level target source code”).
Bostian, Johnson, Konuri and Ouali do not explicitly disclose the programming language and the second programming language are the same.
It would have been obvious at the time of filing to input a specification in the same language as will be generated. Those of ordinary skill in the art would have been motivated to do so to address other platform related specialization while not requiring developer knowledge of a second programming language (see e.g. Bostian par. [0029] “source code corresponding to a … target platform”).
Clam 9: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, wherein each application is configured to perform at least a portion of the one or more algorithms on one or more devices remote to the respective user device (see e.g. Ouali pars. [1120]-[1124] “A thin client … A presentation tier … A business logic tier”).
Claim 10: Bostian, Johnson, Konuri and Ouali teach the method of claim 9, wherein each application is configured to provide data representing commands or user inputs to the respective user device to the one or more devices (Bostian par. [0071] “compiled to generate the … executable application”, Ouali par. [1122] “A thin client … installed on every machine used by the users”).
Claim 11: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, wherein each respective buildable application comprises a plurality of files that comprises the one or more files (e.g. Konuri col. 24, lines 23-27 “communicate the generated artifacts 66”), each associated with a corresponding directory of the respective buildable application (Ouali par. [0476] “project directory”), wherein the one or more code files comprise one or more of: interface code for a user interface of the respective buildable application for the respective corresponding platform (e.g. Ouali par. [1122] “A thin client”), debugging code, profiling code, platform code, or communication code (Ouali par. [0942] “pre-existing libraries that manage the communications with other systems”), and
wherein processing at least the set of target language code to generate, for each of the respective corresponding platforms, a respective buildable application (Bostian par. [0070] “the high-level target source code is compiled”, Konuri col. 24, lines 55-59 “deploy the application package 96”) comprises:
generating one or more configuration files (Ouali par. [0469] “update the ear with a list of configuration files”);
generating one or more build files comprising build code for the set of target language code (Ouali par. [0457] “generate java classes from an XML file”);
generating one or more object files by compiling the set of target language code according to the one or more build files (Ouali par. [0457] “compiling the generated java source code”);
generating one or more code files comprising one or more of:
interface code for a user interface of the respective buildable application (e.g. Ouali par. [1122] “A thin client”) for the respective corresponding platform, debugging code, profiling code, platform code, and communication code (par. [0942] “pre-existing libraries that manage the communications with other systems”); and
for each of the plurality of files, saving data representing the file in the corresponding directory of the respective buildable application (Ouali par. [0476] “project directory”).
Claim 12: Bostian, Johnson, Konuri and Ouali teach the method of claim 11, wherein the plurality of files are organized into a structure comprising multiple layers (e.g. Ouali par. [0121] an EJB multi-tier environment”, see e.g. pars. [1120]-[1124] “A thin client … A presentation tier … A business logic tier”).
Claims 13: Bostian, Johnson, Konuri and Ouali teach the method of claim 12, wherein the communication code implements one or more communication application programming interfaces (APIs) between the multiple layers (Ouali par. [0942] “pre-existing libraries that manage the communications … FTP, File, Queue, WebDav”).
Claim 14: Bostian, Johnson, Konuri and Ouali teach The method of claim 12, wherein each application is configured to perform at least a portion of at least one of the multiple layers on one or more devices remote to the respective user device (Ouali par. [0121] “client makes a call to the EJB Server”).
Claim 15: Bostian, Johnson, Konuri and Ouali teach the method of claim 11, wherein the one or more configuration files comprise any one of: interface configuration files, application configuration files, or platform configuration files (Ouali par. [0469] “update the ear with a list of configuration files”, see e.g. pars. [1120]-[1124] “A thin client … A presentation tier … A business logic tier”).
Claim 16: Bostian, Johnson, Konuri and Ouali teach the method of claim 11, wherein maintaining a plurality of template files comprises maintaining a plurality of template configuration files, wherein each template configuration file comprises a template of a configuration file (Konuri col. 23, 60-62 “template database 68”); and
wherein applying data derived from the input data to one or more of the plurality of template files to generate one or more files for building the respective buildable application comprises applying data derived from the input data to one or more of the plurality of template configuration files (Konuri col. 8, lines 35-39 “a custom application for the target platform 14”, col. 23, 60-65 “customize the configuration parameters of the application definition 42”).
Claim 20: Bostian, Johnson, Konuri and Ouali teach the method of claim 11, further comprising:
modifying the set of target language code (Ouali par. [0830] “the current configuration file can be manipulated”, Konuri col. 8, lines 54-56 “programming language … compatible with the target platform 14”) comprising:
identifying one or more subsets within the set of target language code that are similar to a subset of the mapping (Konuri col. 24, lines 14-17 “integrate the machine written code into the previously described code blocks”), and
modifying the one or more subsets within the set of target language code based on the corresponding templates (Ouali par. [0830] “and changes would be applied to the current system”, Konuri col. 24, lines 14-17 “integrate the machine written code into the previously described code blocks”).
Claim 21: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, further comprising:
receiving data that represents one or more edits to the input data from a user (Ouali par. [0830] “the current configuration file can be manipulated”); and
modifying the respective buildable applications according to the one or more edits (Ouali par. [0830] “and changes would be applied to the current system”).
Claim 5-6 are rejected under 35 U.S.C. 103 as being unpatentable over US 2013/0167112 to Bostian et al. (Bostian) in view of US 8,745,579 to Johnson et al. (Johnson) in view of US 11,789,704 to Konuri (Konuri) in view of US 2011/0088011 to Ouali (Ouali) in view of Official Notice.
Claims 5-6: Bostian, Johnson, Konuri and Ouali teach the method of claim 1, but do not explicitly teach wherein the one or more algorithms comprise one or more machine learning algorithms and/or computer vision algorithms.
It is officially noted that machine learning and computer vision algorithms were well known in the art at the time of filing.
It would have been obvious at the time of filing to generate an application comprising machine learning and/or computer vision algorithms. Those of ordinary skill in the art would have been motivated to do so as known algorithms generation of which would have produced only the expected results (i.e. applications for performing the desired algorithm(s)).
Claim 17-18 are rejected under 35 U.S.C. 103 as being unpatentable over US 2013/0167112 to Bostian et al. (Bostian) in view of US 8,745,579 to Johnson et al. (Johnson) in view of US 11,789,704 to Konuri (Konuri) in view of US 2011/0088011 to Ouali (Ouali) in view of US 2009/0249296 to Haenel et al. (Haenel).
Claim 17: Bostian, Johnson, Konuri and Ouali teach the method of claim 11, wherein the user code comprises a set of target language code (Bostian par. [0069] “a high-level target source code is generated … corresponds to the particular platform”), and but do not explicitly teach wherein generating one or more code files comprises:
maintaining a mapping of subsets of target language code to corresponding templates comprising interface code for user interface components;
identifying one or more subsets within the user code that are similar to a subset of the mapping; and
generating interface code based on the corresponding templates for the one or more identified subsets.
Haenel teaches:
maintaining a mapping of subsets of target language code to corresponding templates comprising interface code for user interface components (par. [0037] “template 208 is mapped to specific elements of the supported target platform … a page user interface (UI) would be mapped to an Eclipse API”);
identifying one or more subsets within the user code that are similar to a subset of the mapping (par. [0037] “a page user interface (UI)”); and
generating interface code based on the corresponding templates for the one or more identified subsets (par. [0037] “would be mapped to an Eclipse API”).
It would have been obvious at the time of filing to maintain mappings of target language to templates comprising interface code. Those of ordinary skill in the art would have been motivated to do so to provide a customized display for the target platform (see e.g. Haenel par. [0037], Bostian par. [0069] “a high-level target source code is generated … corresponds to the particular platform”).
Claim 18: Bostian, Johnson, Konuri and Ouali teach the method of claim 11, wherein the user code comprises a set of source language code (Bostian par. [0069] “a virtual source code specification is generated”) but do not disclose:
wherein generating one or more code files comprises:
maintaining a mapping of subsets of source language code to corresponding templates comprising interface code for user interface components;
identifying one or more subsets within the user code that are similar to a subset of the mapping; and
generating interface code based on the corresponding templates for the one or more identified subsets.
Haenel teaches:
maintaining a mapping of subsets of source language code to corresponding templates comprising interface code for user interface components (par. [0037] “template 208 is mapped to specific elements of the supported target platform … a page user interface (UI) would be mapped to an Eclipse API”);
identifying one or more subsets within the user code that are similar to a subset of the mapping (par. [0037] “a page user interface (UI)”); and
generating interface code based on the corresponding templates for the one or more identified subsets (par. [0037] “an Eclipse API”).
It would have been obvious at the time of filing to maintain mappings of target language to templates comprising interface code. Those of ordinary skill in the art would have been motivated to do so to provide a customized display for the target platform (see e.g. Haenel par. [0037], Bostian par. [0069] “a high-level target source code is generated … corresponds to the particular platform”).
Claim 19 is rejected under 35 U.S.C. 103 as being unpatentable over US 2013/0167112 to Bostian et al. (Bostian) in view of US 8,745,579 to Johnson et al. (Johnson) in view of US 11,789,704 to Konuri (Konuri) in view of US 2011/0088011 to Ouali (Ouali) in view of US 2009/0249296 to Haenel et al. (Haenel) in view of US 5,675,801 to Lindsey (Lindsey).
Claim 19: Bostian, Johnson, Konuri and Ouali teach claim 11, generating one or more code files:
but do not explicitly teach:
wherein each user interface component has a corresponding template comprising user interface code; and
generating interface code based on the corresponding templates for the identified user interface components.
Haenel teaches:
wherein each user interface component has a corresponding template comprising user interface code (par. [0037] “template 208 is mapped to specific elements of the supported target platform … a page user interface (UI) would be mapped to an Eclipse API”); and
generating interface code based on the corresponding templates for the identified user interface components (par. [0037] “template 208 is mapped to specific elements of the supported target platform … a page user interface (UI) would be mapped to an Eclipse API”).
It would have been obvious at the time of filing to maintain mappings of target language to templates comprising interface code. Those of ordinary skill in the art would have been motivated to do so to provide a customized display for the target platform (see e.g. Haenel par. [0037], Bostian par. [0069] “a high-level target source code is generated … corresponds to the particular platform”).
Bostian, Johnson, Konuri, Ouali and Haenel do not explicitly teach:
displaying a plurality of user interface components to a user; and
receiving an input from the user that identifies one or more of the plurality of user interface components.
Lindsey teaches:
displaying a plurality of user interface components to a user (col. 5, line 59-col. 6, line 3 “The user interface 60 is typically presented to a user on the display device 42”); and
receiving an input from the user that identifies one or more of the plurality of user interface components (col. 5, line 59-col. 6, line 3 “select and combine objects in a manner which represents the desired function”).
It would have been obvious at the time of filing to display and receive input identifying user interface components (Lindsey col. 5, line 59-col. 6, line 3 “select and combine objects in a manner which represents the desired function”, Haenel par. [0037] “template 208 is mapped to specific elements of the supported target platform). Those of ordinary skill in the art would have been motivated to do so as a known means of developing a UI which would have allowed less technical developers to define the interface and associated functionality (see e.g. Lindsey col. 6, lines 4-9 “the user need not know any details”).
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JASON D MITCHELL whose telephone number is (571)272-3728. The examiner can normally be reached Monday through Thursday 7:00am - 4:30pm and alternate Fridays 7:00am 3:30pm.
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, Lewis Bullock can be reached at (571)272-3759. 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.
/JASON D MITCHELL/Primary Examiner, Art Unit 2199