CN113767363A - 软件生成装置、软件生成方法和程序 - Google Patents
软件生成装置、软件生成方法和程序 Download PDFInfo
- Publication number
- CN113767363A CN113767363A CN202080029735.0A CN202080029735A CN113767363A CN 113767363 A CN113767363 A CN 113767363A CN 202080029735 A CN202080029735 A CN 202080029735A CN 113767363 A CN113767363 A CN 113767363A
- Authority
- CN
- China
- Prior art keywords
- software
- software generation
- reinforcement learning
- basic modules
- generation apparatus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000002787 reinforcement Effects 0.000 claims abstract description 57
- 238000012545 processing Methods 0.000 claims description 41
- 238000011161 development Methods 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 8
- 238000011156 evaluation Methods 0.000 claims description 6
- 239000003054 catalyst Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 238000005286 illumination Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供软件生成装置等,其能够使软件的生成省力化。本发明的软件生成装置(1)生成对证件照片机等设备进行控制的软件。软件生成装置(1)具有存储分别执行多个处理的多个基本模块的存储单元(101)、和通过使用基本模块进行深度强化学习而利用基本模块的组合来生成连续地执行证件照片机等设备中的多个处理的软件的软件生成单元(104)等。
Description
技术领域
本发明涉及用于生成软件的软件生成装置、软件生成方法及其程序。
背景技术
在证件照片机中,通过简历、护照等照片种类的选择、用户的拍摄、拍摄图像的调整、付费、打印这样的一系列处理来输出证件照片等打印物(例如,参照专利文献1)。
此时,证件照片机中的控制装置执行与该一系列处理相关的软件,进行证件照片机的设备控制。通常,该软件是由作为人的程序员预先生成的。
现有技术文献
专利文献
专利文献1:日本特开2019-008169号公报
发明内容
发明要解决的课题
但是,以往,由于这样的软件生成是由人来执行的,因此花费时间。此外,由于进行怎样的编程因人而异,因此也存在所完成的软件的品质不同的情况。
本发明正是鉴于上述问题而完成的,其目的在于提供一种能够使软件的生成省力化的软件生成装置等。
用于解决课题的手段
用于解决上述课题的第1发明是一种软件生成装置,其特征在于,所述软件生成装置具有:存储单元,其保持分别执行多个处理的多个基本模块;以及软件生成单元,其使用所述基本模块进行强化学习,由此利用所述基本模块的组合来生成连续地执行所述多个处理的软件。
本发明的软件生成装置能够使用作为AI(Artificial Intelligence:人工智能)的一种方法的强化学习,组合已有的基本模块来生成执行一系列处理的软件。由此,能够实现软件生成的省力化,并且能够生成一定品质的软件。
优选的是,在所述软件的生成中使用的强化学习是深度强化学习。
在强化学习中的行为价值函数等的表现中使用利用了深度学习的方法的深度强化学习,由此能够由多个基本模块高效地生成高品质的软件。
优选的是,所述软件生成装置还具有输入受理单元,在生成所述软件时,该输入受理单元受理所述软件的要求规格的输入。例如,所述要求规格包含如下项目中的任意项目:所述软件中的输入及输出、在所述软件中使用的器件驱动器、以及在所述软件中使用的运算处理模块。
由此,能够生成依照要求规格的软件。要求规格是上述的输入及输出、器件驱动器、运算处理模块等,能够生成依照这些指定的软件。
还优选的是,在未能进行所述软件的生成的情况下,所述输入受理单元受理所述要求规格的重新输入。
在最初所输入的要求规格不充分的情况下,有时学习结果朝向发散方向而无法进行软件的生成。在本发明中,能够在这样的情形下进行要求规格的重新输入,并重新进行软件的生成。
优选的是,该软件生成装置还具有设定受理单元,该设定受理单元在生成所述软件时受理编程语言或开发环境的设定,所述软件生成单元使用与所设定的所述编程语言或开发环境对应的所述基本模块来进行所述软件的生成。
由此,能够进行依照所设定的编程语言、开发环境的软件的生成。
所述软件例如进行设备控制,使针对设备中的器件而预先设定出的控制程序工作。
由此,能够生成进行证件照片机等的设备控制的软件,能够通过软件使器件的控制程序工作来实现规定的功能。在该情况下,控制程序是针对该器件而设定的现有的控制程序,软件生成装置不进行控制程序的生成。
也可以是,所述软件生成装置还具有基本模块生成单元,该基本模块生成单元使用多个命令进行强化学习,由此利用所述命令的组合来生成所述基本模块。优选的是,在所述基本模块的生成中使用的强化学习是深度强化学习。
在软件的生成中使用的基本模块例如是程序员预先生成的基本模块,如果是简单的基本模块,则也能够通过强化学习来将命令组合起来而生成,能够使软件的生成进一步省力化。在该情况下,通过使用深度强化学习,由此能够高效地生成高品质的基本模块。
优选的是,强化学习中的回报包含如下项目中的任意项目:代码量、处理时间以及漏洞数量。
由此,能够生成代码量、处理时间、漏洞数量等较少的软件或基本模块。
还优选的是,软件生成时的强化学习中的回报包含这样的评估值,该评估值是基于对所述基本模块的组合进行调试时的漏洞数量和漏洞的重要性的评估值。
由此,能够生成无重大漏洞的软件。此外,虽然以往人在编程阶段对是否有漏洞进行调试,但是也能够削减调试所需的时间。
此外,优选的是,为了在强化学习中求出回报而使所述基本模块的组合工作的存储器区域被构建在虚拟存储器上,从而所述存储器区域得到保护。
由此,即使在计算回报时基本模块的组合进行错误动作,也不会破坏与软件的生成相关的其他存储器区域。
还优选的是,所述存储单元保持如下这样的多个基本模块:该多个基本模块虽然被以不同的编程语言记述,但若转换为机器语言则变为相同。
由此,能够使软件生成处理与多种多样的编程语言对应。
还优选的是,所述软件生成单元生成用编程语言记述所述软件的程序的源代码。此外,还优选的是,所述软件生成单元生成所述源代码和基于机器语言的所述软件的程序。
作为软件生成处理的结果,生成用人能够阅读的编程语言所记述的源代码,由此人能够确认软件的内容,从安全性、可靠性的观点出发是优选的。该源代码例如与基于执行形式的机器语言的程序一起被提供。
第2发明是一种软件生成方法,其特征在于,在该软件生成方法中,计算机具有存储单元,所述存储单元保持分别执行多个处理的多个基本模块,所述计算机使用所述基本模块进行强化学习,由此利用所述基本模块的组合来生成连续地执行所述多个处理的软件。
第3发明是一种程序,其中,该程序用于使具有存储单元的计算机作为软件生成装置发挥功能,其中,所述存储单元保持分别执行多个处理的多个基本模块,所述软件生成装置具有软件生成单元,该软件生成单元使用所述基本模块进行强化学习,由此利用所述基本模块的组合来生成连续地执行所述多个处理的软件。
此外,在第1发明~第3发明中,优选的是,由所述软件控制的设备是证件照片机或箱型照片拍摄装置。
发明效果
根据本发明,可以提供能够使软件的生成省力化的软件生成装置等。
附图说明
图1是示出软件生成装置1的硬件结构的图。
图2是示出软件生成装置1的功能结构的图。
图3是示出基本模块的图。
图4是示出软件生成方法的流程图。
图5是运算处理模块指定画面100的例子。
图6是说明软件生成方法的图。
图7是示出证件照片机2的图。
图8是示出证件照片机2的硬件结构的图。
图9是示出证件照片机2的处理的流程图。
图10是示出基本模块的图。
具体实施方式
下面,根据附图详细说明本发明的优选实施方式。
(1.软件生成装置1)
图1是示出本发明实施方式的软件生成装置1的硬件结构的图。软件生成装置1用于进行软件的生成,能够由通过总线16将控制部11、存储部12、输入部13、显示部14、通信控制部15连接而构成的计算机来实现。但是,软件生成装置1不限于此,能够适当地采用各种各样的结构。
控制部11由CPU、ROM、RAM等构成。CPU将存储部12、ROM等存储介质中存储的、与软件生成装置1的处理相关的程序调用到RAM上的工作区来执行。ROM是非易失性存储器,永久地保持有如启动程序、BIOS等程序、数据等。RAM是易失性存储器,临时保持从存储部12、ROM等加载的程序、数据,并且具有为了供控制部11进行各种处理所使用的工作区。
存储部12是硬盘驱动器、固态驱动器、闪存等,对控制部11所执行的程序、执行程序所需的数据、OS等进行存储。这些程序、数据由控制部11根据需要读出并执行。
输入部13对软件生成装置1进行各种设定输入。
显示部14例如是液晶显示器等。
通信控制部15是对经由网络等的通信进行中继的通信接口。
总线16是对软件生成装置1的各部分间的控制信号、数据信号等的收发进行中继的路径。
图2是示出软件生成装置1的功能结构的图。如图2所示,软件生成装置1具有存储单元101、输入受理单元102、设定受理单元103、软件生成单元104、基本模块生成单元105等。
存储单元101与上述存储部12对应,将作为生成软件的基础的多个基本模块作为单独的库保持。之后叙述基本模块。
输入受理单元102在软件生成装置1的控制部11生成软件时受理用户对软件的要求规格的输入。软件生成装置1使用所输入的要求规格来进行软件的生成。此外,在所输入的要求规格不充分而未能进行软件的生成的情况下,进行要求规格的重新输入的受理。之后叙述要求规格。
设定受理单元103在软件生成装置1的控制部11生成软件时受理用户对编程语言、开发环境的设定。软件生成装置1使用与所设定的编程语言、开发环境对应的基本模块来进行软件的生成。
在软件生成单元104中,软件生成装置1的控制部11使用上述的基本模块进行强化学习,由此生成软件。在本实施方式中,特别是,在强化学习中的行为价值函数等的表现中,使用利用了深度学习的方法的深度强化学习。
在基本模块生成单元105中,软件生成装置1的控制部11使用多个命令进行强化学习,由此自己生成上述的基本模块。在本实施方式中,能够在生成基本模块时也进行上述的深度强化学习。
(2.基本模块)
本实施方式的软件生成装置1生成进行设备控制的软件,如图3所示,在软件生成装置1的存储部12中预先保持有多个基本模块作为库,其中,所述多个基本模块分别执行该设备中的多个处理A~E。该多个处理A~E在该设备中被接连地执行,作为设备的一例,可举出后述的证件照片机。
这些基本模块是为了执行各个处理而事先由程序员所制成的已有的基本模块,与生成时所使用的编程语言及开发环境相关联地保持到存储部12。例如,基本模块A1、A2、A3、A4、A5是实现如[处理A]这样的相同处理的多个基本模块,但其内容根据由谁生成、使用什么样的编程语言或开发环境等而不同。
基本模块的相对于软件生成装置1的输入方法没有特别限定,可以单独地输入各个基本模块,也可以将执行程序员所制成的一系列处理A~E的软件输入到软件生成装置1,由软件生成装置1从所输入的软件中提取进行各处理的基本模块。
(3.软件生成方法)
接着,参照图4等,对软件生成装置1进行的软件生成方法进行说明。图4是示出软件生成方法的流程图,图4的各步骤由软件生成装置1的控制部11执行。
在本实施方式中,首先,软件生成装置1在显示部14上显示输入画面(未图示),用户在该输入画面上输入要求规格。软件生成装置1受理要求规格的输入(S1)。
要求规格与要生成的软件对应,例如包含软件的输入及输出、在软件中使用的器件驱动器、在软件中使用的运算处理模块中的至少任意一种的指定。它们是软件生成装置1自身不进行编程的要求规格。
在本实施方式中,输入及输出是与软件所执行的一系列处理中的输入及输出的定义相关的信息。
器件驱动器是设备中的器件的驱动器软件,通过在S1中被作为要求规格输入的驱动器软件来执行器件的控制程序。本实施方式的软件生成装置1不进行该控制程序的生成,软件使针对设备中的器件所预先设定的控制程序工作。
运算处理模块是软件所使用的运算处理用的程序模块,例如包含如下程序等:当输入纵横的以英寸为单位的长度时输出以毫米为单位的面积那样的加减乘除的计算程序;当输入2个面部图像时输出它们是否为同一人物的判定结果那样的图像处理程序。运算处理模块被作为DLL(Dynamic Link Library:动态链接库)等库、SDK(Software DevelopmentKit:软件开发工具包)或者被直接作为模块来提供,所指定的运算处理模块由软件直接使用而不改变。
关于运算处理模块的指定,既可以预先登记定义了运算处理模块及其输入和输出的设定文件并进行设定文件的指定,也可以将例如图5那样的运算处理模块指定画面100显示到显示部14上,并在模块指定栏110、输入项目指定栏120、输出项目指定栏130中能够指定运算处理模块及其输入和输出。在图5的例子中,在进行了这些指定后,按下登记按钮140。
接着,软件生成装置1将设定画面显示到显示部14上(未图示),用户在该设定画面上进行编程语言和开发环境的设定。软件生成装置1受理编程语言和开发环境的设定(S2)。
编程语言是在用于生成软件的基本模块中使用的编程语言。开发环境是在生成该基本模块时所使用的开发环境。开发环境是用于进行源代码的输入、调试、编译等处理的软件,也被称作IDE(Integrated Development Environment:集成开发环境)等。作为开发环境的例子,例如具有Visual Studio等。
若进行这些输入以及设定,则软件生成装置1使用存储部12中保持的基本模块进行强化学习,由此利用基本模块的组合来生成连续地执行上述多个处理的软件(S3)。
在S3中,软件生成装置1例如从存储部12所保持的基本模块中提取与在S2中所设定的编程语言和开发环境对应的基本模块,并使用提取出的基本模块进行强化学习、特别是深度强化学习。在深度强化学习中,在强化学习中的行为价值函数等的表现中使用深度学习(Deep Learning)的方法。
由于强化学习和深度强化学习是已知的方法,因此省略说明,但在本实施方式中,例如,软件生成装置1针对如下的一系列处理进行选择,并生成执行这一系列处理的基本模块的组合,该一系列处理是指:针对各个处理A~E执行哪个基本模块;以及,按照什么顺序执行处理A~E。
图6的(a)是生成了依次执行基本模块A5、B1、C1、D2、E4的组合的例子,图6的(b)是生成了在图6的(a)中在[处理A]之后立即执行[处理D]并依次执行基本模块A5、D2、B1、C1、E4的组合的例子。另外,在图6的例子中,使在S1中被作为要求规格输入的运算处理模块(在附图的例子中为运算处理模块A)在处理C之后工作,使器件驱动器(在附图的例子中为驱动器A)在[处理E]之后而在一系列处理的最后工作,但不限于此。
软件生成装置1使如上述那样所生成的基本模块的组合工作,根据其结果等求出强化学习(深度强化学习)中的回报。回报包含所生成的基本模块的组合的代码量、处理时间、漏洞数量中的至少任意一种,但不限于此。例如也可以将一系列处理是否无问题地完成等包含在回报中。此外,代码量例如设为程序的行数,但不限于此。
另外,优选的是,在求出回报时使基本模块的组合工作的存储器区域被构建在软件生成装置1所管理的虚拟存储器上,且保护成不会因其错误动作而破坏与软件的生成相关的其他存储器区域。
在强化学习(深度强化学习)中,反复进行多次以上的试行,生成/更新能够使回报最大化的基本模块的选择规则,依照该规则,以能够使回报最大化的方式组合基本模块,并将其作为软件输出。以这样的方式进行S3中的软件的生成。
在S1中所输入的要求规格被用于在强化学习(深度强化学习)中使用的各函数的设定、基本模块的组合的生成或执行等。但是,也能够考虑到如下情况:所输入的要求规格不充分而使学习结果朝向发散方向从而无法生成软件。软件生成装置1也可以在这样的用例中显示要求规格的重新输入画面(未图示),催促用户进行要求规格的更正、扩充、完善,并受理要求规格的重新输入。由此,在最初所输入的要求规格不充分的情况下,能够进行该要求规格的重新输入,重新进行软件的生成。
此外,如果是简单的处理,则可以使软件生成装置1生成基本模块,能够使软件的生成进一步省力化。在该情况下,也能够与上述同样地通过强化学习来生成基本模块,例如能够使用预先设定的多个命令,按照与上述相同的过程将回报为最大的命令的组合作为基本模块输出。作为强化学习,能够与上述同样地使用深度强化学习,关于回报,能够与上述同样地包含代码量、处理时间、漏洞数量中的至少任意一种。软件生成装置1能够将所生成的基本模块与程序员所制成的基本模块一起作为库保持到存储部12,在S3中使用这些基本模块进行软件的生成。以上内容在上述的运算处理模块中也是同样如此,软件生成装置1也能够由自身生成运算处理模块,也能够在软件中进行该运算处理模块的使用。
(4.证件照片机2)
图7是示出通过由软件生成装置1生成的软件来控制的设备的一例即证件照片机2的图,图8是示出证件照片机2的硬件结构的图。
证件照片机2例如是街头所设置的箱型照片拍摄装置,其拍摄用户并将该用户的图像作为证件照片等打印出来。证件照片机2具有控制装置20、显示部21、付费部22、摄影部23、照明24和打印机25等。
控制装置20设置于证件照片机2的内部,执行由软件生成装置1生成的软件,由此执行证件照片机2的后述处理。作为控制装置20,例如可采用具有控制部、存储部、输入部、通信部等的计算机。
显示部21由兼用作证件照片机2的输入部的带触摸面板的显示器等来实现。显示部21显示与用户的操作、选择相关的各种画面,并受理基于画面上的触摸面板操作的用户的指示输入等。
付费部22具有硬币和纸币的投入口、零钱返还口、收据取出口、收据打印机等(未图示),管理来自用户的付费、收据的发行。
摄影部23是在摄影窗的内侧设置有照相机等而成的。照相机例如使用高分辨率的数字照相机,但不限于此。
照明24是照亮证件照片机2的整个箱内的照明部。照明24例如是照射白色的光的面光源,设置在摄影部23的上部,但不限于此。另外,在证件照片机2的箱内还设置有闪光灯光源,以用于拍摄时的闪光。
打印机25将图像打印在纸张上,该打印机25设置在证件照片机2的内部。打印有图像的打印物被排出到打印物取出口(未图示)。打印机25的方式、设置台数等没有特别限定。
图9是示出证件照片机2的处理概略的流程图。图9的各步骤由控制装置20控制证件照片机2的各部件来执行。
参照图9对证件照片机2的处理简单地进行说明,证件照片机2在显示部21所显示的选择画面(未图示)上以能够选择的方式显示照片种类,在受理到用户对照片种类的选择(S21)后,开始用户的拍摄(S22)。照片种类是指与用途相应的照片的种类,例如是简历、护照等。
证件照片机2根据在S1中选择出的照片种类来对用户的拍摄图像进行调整(图像处理)(S23),将用于催促用户付费的付费画面显示到显示部21上。证件照片机2在由付费部22受理到用户的付费(S24)时,根据照片种类来打印调整后的图像(S25)。
在生成用于执行证件照片机2的设备控制的软件的情况下,如图10所示,在存储部12中保持有分别执行例如[A:照片种类的选择]、[B:用户的拍摄]、[C:拍摄图像的调整]、[D:付费]、[E:打印]这些多个处理的多个基本模块。
另外,基本模块A1、A2、A3、A4、A5分别是用于执行[A:照片种类的选择]的一部分程序,例如将照片种类的选择画面显示到证件照片机2的显示部21上,根据用户在该选择画面上的触摸操作等来受理照片种类的选择。
基本模块B1、B2、B3、B4、B5分别是用于执行[B:用户的拍摄]的一部分程序,例如将用于拍摄的引导画面显示到证件照片机2的显示部21上,并通过拍摄部23、照明24的控制进行用户的拍摄。
基本模块C1、C2、C3、C4、C5分别是用于执行[C:拍摄图像的调整]的一部分程序,例如根据所选择的照片种类来进行针对用户的拍摄图像的图像处理。即,证件照片的图像尺寸等根据简历、护照等照片种类而不同,基本模块C1、C2、C3、C4、C5根据这些照片种类的不同来进行图像尺寸的变更等图像处理。
基本模块D1、D2、D3、D4、D5分别是用于执行[D:付费]的一部分程序,例如使证件照片机2的显示部21显示出用于催促付费的付费画面,并检测是否通过付费部22的控制正确地进行了付费。
基本模块E1、E2、E3、E4、E5分别是用于执行[E:打印]的一部分程序,例如控制证件照片机2的打印机25,执行依照所选择的照片种类的针对纸张的印刷动作、纸张的切割动作,由此进行拍摄图像的打印并作为打印物排出。
进行证件照片机2的设备控制的软件能够使用这些基本模块来如在图4等中所说明的那样生成。这里,软件生成装置1如图10的实线箭头所例示的那样针对图10的处理A~E进行基本模块的选择,并如上述那样求出针对所选择的基本模块的组合的回报(评价)。回报是简单的回报,例如是上述的代码量、漏洞数量,代码量的合计或漏洞数量较少时,成为较高的回报。软件生成装置1一边改变例如针对各处理A~E所选择的基本模块、一边反复进行如上所述的基本模块的选择和回报的计算(图10的点划线箭头表示一例),通过进行试错,由此求出使回报最大化的基本模块的选择规则(例如在基本模块A1之后选择基本模块B2等。在强化学习中也称作“政策”)。依照该选择规则进行选择,由此能够生成连续地执行处理A~E的软件。以上的方法也包含具体的选择规则的生成方法,其作为强化学习是已知的。
另外,在该情况下,作为在S1中被作为要求规格输入的输入(input)的例子,可举出如“受理照片种类的选择”、“调整拍摄用户而得到的拍摄图像”这样的条件定义,作为输出的例子,可举出“向打印机传输图像而进行打印”、“收取费用”这样的针对证件照片机2的动作的定义。此外,输入、输出也可以是在软件工作的前后被执行的程序等。
此外,在S1中被作为要求规格输入的器件驱动器例如成为在显示部21、拍摄部23、打印机25等中使用的驱动器软件,它们如上述那样不仅在基于软件的处理的最后被使用,也在处理的中途被使用。
如以上所说明的那样,本实施方式的软件生成装置1能够使用作为AI的一种方法的强化学习,组合已有的基本模块来生成执行一系列处理的软件。由此,能够实现软件生成的省力化,并且能够生成一定品质的软件。在本实施方式中,特别是,能够通过使用深度强化学习来由多个基本模块高效地生成高品质的软件。
此外,在本实施方式中,通过在S1中进行要求规格的输入,由此能够生成依照要求规格的软件。如上所述,要求规格是软件中的输入及输出、在软件中使用的器件驱动器、运算处理模块等,在本实施方式中,能够生成依照这些指定的软件。此外,在最初所输入的要求规格不充分而使得学习结果朝向发散方向而无法进行软件的生成的情况下,受理要求规格的重新输入,由此能够重新进行软件的生成。
在本实施方式中,通过进一步在S2中进行编程语言、开发环境的设定,由此能够进行依照所设定的编程语言、开发环境的软件的生成。
此外,在本实施方式中生成的软件是进行证件照片机2等的设备控制的软件,能够使设备中的器件的控制程序工作来实现规定的功能。在该情况下,控制程序是针对器件而设定的现有控制程序,软件生成装置1不进行该控制程序的生成。另外,也能够通过本实施方式的方法生成不进行设备控制的软件(例如,仅进行运算的软件),在该情况下,器件的控制程序也不需要工作,软件的生成处理变得更简单。
此外,在本实施方式中,如果是简单的处理,则也能够通过强化学习来生成基本模块,从而能够使软件的生成进一步省力化。在该情况下,通过使用深度强化学习,由此能够高效地生成高品质的基本模块。
在生成软件或基本模块时,考虑代码量、处理时间、漏洞数量的多少作为强化学习中的回报,由此能够生成代码量、处理时间、漏洞数量等较少的软件或基本模块。
此外,通过在虚拟存储器上构建出在求出回报时使基本模块的组合动作的存储器区域来进行保护,由此不会因该错误动作而破坏与软件的生成相关的其他存储器区域。
但是,本发明不限于此。例如,强化学习中的回报不限于上述内容,如果是在生成软件时,则也可以对基本模块的组合使用规定的评价程序来在各种条件下执行调试,将基于此时检测出的漏洞数量和各个漏洞的重要度(严重度)的评价值设为回报。评估值例如是通过将检测出的每个漏洞的重要度相加来获得的,但不限于此。漏洞的重要度能够根据漏洞的影响的严重程度(例如,由于漏洞而导致处理的执行本身变得不可能、虽然能够处理但由于漏洞而导致错误的处理结果等)、发生频率等来确定,由此能够生成无重大漏洞的软件。此外,虽然以往在编程阶段人会对是否有漏洞进行调试,但也能够削减调试所需的时间。
此外,在使基本模块的组合工作时,软件生成装置1将用在S2中设定出的编程语言所记述的基本模块变换为机器语言来执行,在S3中所生成的软件有可能成为用机器语言记述了其程序的软件。在该情况下,也能够将该机器语言逆变换为在S2中设定的编程语言,生成人能够阅读理解的源代码,从而人能够确认软件的内容,从安全性、可靠性的观点出发是优选的。此外,也能够在S3中生成基于执行形式的机器语言的软件程序和上述源代码。
此外,软件生成装置1将用某个编程语言所记述的基本模块变换为机器语言,并将其逆变换为各种编程语言,由此也能够生成如下这样的多个基本模块:它们虽然用不同的编程语言记述,但若变换为机器语言则变得相同。将该多个基本模块作为库保持到存储部12,由此能够使软件生成处理与多种多样的编程语言对应。
以上,参照附图对本发明的优选实施方式进行了说明,但本发明不限定于上述例子。只要是本领域技术人员,明显可以在本申请公开的技术构思的范畴内想到各种变更例或者修正例,这些变更例或者修正例当然也应理解为属于本发明的技术范围。
标号说明
1:软件生成装置;
2:证件照片机;
101:存储单元;
102:输入受理单元;
103:设定受理单元;
104:软件生成单元;
105:基本模块生成单元;
A1~A5、B1~B5、C1~C5、D1~D5、E1~E5:基本模块。
Claims (20)
1.一种软件生成装置,其特征在于,
所述软件生成装置具有:
存储单元,其保持分别执行多个处理的多个基本模块;以及
软件生成单元,其使用所述基本模块进行强化学习,由此利用所述基本模块的组合来生成连续地执行所述多个处理的软件。
2.根据权利要求1所述的软件生成装置,其特征在于,
在所述软件的生成中使用的强化学习是深度强化学习。
3.根据权利要求1或2所述的软件生成装置,其特征在于,
所述软件生成装置还具有输入受理单元,在生成所述软件时,所述输入受理单元受理所述软件的要求规格的输入。
4.根据权利要求3所述的软件生成装置,其特征在于,
所述要求规格包含如下项目中的任意项目:所述软件中的输入及输出、在所述软件中使用的器件驱动器、以及在所述软件中使用的运算处理模块。
5.根据权利要求3或4所述的软件生成装置,其特征在于,
在未能进行所述软件的生成的情况下,所述输入受理单元受理所述要求规格的重新输入。
6.根据权利要求1~5中的任意一项所述的软件生成装置,其特征在于,
所述软件生成装置还具有设定受理单元,在生成所述软件时,所述设定受理单元受理编程语言和开发环境的设定,
所述软件生成单元使用与所设定的所述编程语言或开发环境对应的所述基本模块来进行所述软件的生成。
7.根据权利要求1~6中的任意一项所述的软件生成装置,其特征在于,
所述软件进行设备控制,使针对设备中的器件预先设定的控制程序工作。
8.根据权利要求1~7中的任意一项所述的软件生成装置,其特征在于,
所述软件生成装置还具有基本模块生成单元,所述基本模块生成单元使用多个命令进行强化学习,由此利用所述命令的组合来生成所述基本模块。
9.根据权利要求8所述的软件生成装置,其特征在于,
在所述基本模块的生成中使用的强化学习是深度强化学习。
10.根据权利要求1~9中的任意一项所述的软件生成装置,其特征在于,
强化学习中的回报包含如下项目中的任意项目:代码量、处理时间以及漏洞数量。
11.根据权利要求1~10中的任意一项所述的软件生成装置,其特征在于,
软件生成时的强化学习中的回报包含如下这样的评估值:该评估值是基于对所述基本模块的组合进行调试时的漏洞数量和漏洞的重要性的评估值。
12.根据权利要求1~11中的任意一项所述的软件生成装置,其特征在于,
为了在强化学习中求出回报而使所述基本模块的组合工作的存储器区域被构建在虚拟存储器上,从而所述存储器区域得到保护。
13.根据权利要求1~12中的任意一项所述的软件生成装置,其特征在于,
所述存储单元保持如下这样的多个基本模块:该多个基本模块虽然被以不同的编程语言记述,但若转换为机器语言则变为相同。
14.根据权利要求1~13中的任意一项所述的软件生成装置,其特征在于,
所述软件生成单元生成以编程语言记述所述软件的程序的源代码。
15.根据权利要求14所述的软件生成装置,其特征在于,
所述软件生成单元生成所述源代码和基于机器语言的所述软件的程序。
16.一种软件生成方法,其特征在于,
在该软件生成方法中,计算机具有存储单元,所述存储单元保持分别执行多个处理的多个基本模块,所述计算机使用所述基本模块进行强化学习,由此利用所述基本模块的组合来生成连续地执行所述多个处理的软件。
17.一种程序,其中,
该程序用于使具有存储单元的计算机作为软件生成装置发挥功能,
其中,所述存储单元保持分别执行多个处理的多个基本模块,
所述软件生成装置具有软件生成单元,该软件生成单元使用所述基本模块进行强化学习,由此利用所述基本模块的组合来生成连续地执行所述多个处理的软件。
18.根据权利要求1~15中的任意一项所述的软件生成装置,其特征在于,
由所述软件控制的设备是证件照片机或箱型照片拍摄装置。
19.根据权利要求16所述的软件生成方法,其特征在于,
由所述软件控制的设备是证件照片机或箱型照片拍摄装置。
20.根据权利要求17所述的程序,其特征在于,
由所述软件控制的设备是证件照片机或箱型照片拍摄装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019203353 | 2019-11-08 | ||
JP2019-203353 | 2019-11-08 | ||
PCT/JP2020/041384 WO2021090890A1 (ja) | 2019-11-08 | 2020-11-05 | ソフトウェア作成装置、ソフトウェア作成方法、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113767363A true CN113767363A (zh) | 2021-12-07 |
CN113767363B CN113767363B (zh) | 2024-06-07 |
Family
ID=75848568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080029735.0A Active CN113767363B (zh) | 2019-11-08 | 2020-11-05 | 软件生成装置、软件生成方法和程序产品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11733976B2 (zh) |
JP (1) | JP7231056B2 (zh) |
CN (1) | CN113767363B (zh) |
WO (1) | WO2021090890A1 (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01298435A (ja) * | 1988-05-27 | 1989-12-01 | Mitsubishi Electric Corp | 自動プログラミング装置 |
JP2013140513A (ja) * | 2012-01-05 | 2013-07-18 | Fuji Electric Co Ltd | 組込み機器用ソフトウェア作成支援装置およびその方法、並びにプログラム |
CN103718159A (zh) * | 2011-08-03 | 2014-04-09 | 株式会社日立制作所 | 图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序 |
CN107563417A (zh) * | 2017-08-18 | 2018-01-09 | 北京天元创新科技有限公司 | 一种深度学习人工智能模型建立方法及*** |
CN107807814A (zh) * | 2017-09-27 | 2018-03-16 | 百度在线网络技术(北京)有限公司 | 应用组件的构建方法、装置、设备及计算机可读存储介质 |
US20180088914A1 (en) * | 2016-09-28 | 2018-03-29 | Honda Motor Co., Ltd. | Method for supporting program creation and apparatus for supporting program creation |
US20190034976A1 (en) * | 2017-07-26 | 2019-01-31 | Jehan Hamedi | Systems and Methods for Automating Content Design Transformations Based on User Preference and Activity Data |
US20190050319A1 (en) * | 2017-08-08 | 2019-02-14 | Accenture Global Solutions Limited | Intellectual automated security, performance and code generation framework |
JP2019032659A (ja) * | 2017-08-07 | 2019-02-28 | 株式会社東芝 | 運転計画システム、運転計画装置および運転計画方法 |
CN109564505A (zh) * | 2016-01-27 | 2019-04-02 | 伯尼塞艾公司 | 被配置为使用教学编程语言进行工作以训练经训练的人工智能模型的人工智能引擎 |
WO2019064461A1 (ja) * | 2017-09-28 | 2019-04-04 | 良徳 若林 | 学習ネットワーク生成装置、及び学習ネットワーク生成プログラム |
CN109992250A (zh) * | 2019-04-15 | 2019-07-09 | 深圳怡化电脑股份有限公司 | 一种自动编程的方法、装置、服务器及存储介质 |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
US20190220253A1 (en) * | 2018-01-15 | 2019-07-18 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for improving software code quality using artificial intelligence techniques |
US20190228319A1 (en) * | 2018-01-21 | 2019-07-25 | Microsoft Technology Licensing, Llc. | Data-driven automatic code review |
US20190258498A1 (en) * | 2018-02-17 | 2019-08-22 | Adobe Inc. | Photo-Editing Application Recommendations |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5269014A (en) | 1988-05-24 | 1993-12-07 | Mitsubishi Denki Kabushiki Kaisha | Automatic programming system with design review capabilities |
US9141916B1 (en) * | 2012-06-29 | 2015-09-22 | Google Inc. | Using embedding functions with a deep network |
US9235978B1 (en) * | 2013-01-16 | 2016-01-12 | Domo, Inc. | Automated suggested alerts based on natural language and user profile analysis |
US10013639B1 (en) * | 2013-12-16 | 2018-07-03 | Amazon Technologies, Inc. | Analyzing digital images based on criteria |
US10621602B2 (en) * | 2015-09-22 | 2020-04-14 | Adobe Inc. | Reinforcement machine learning for personalized intelligent alerting |
US20170212829A1 (en) * | 2016-01-21 | 2017-07-27 | American Software Safety Reliability Company | Deep Learning Source Code Analyzer and Repairer |
US11775850B2 (en) * | 2016-01-27 | 2023-10-03 | Microsoft Technology Licensing, Llc | Artificial intelligence engine having various algorithms to build different concepts contained within a same AI model |
US10810492B2 (en) * | 2017-01-27 | 2020-10-20 | Hewlett Packard Enterprise Development Lp | Memory side acceleration for deep learning parameter updates |
JP2019008169A (ja) | 2017-06-26 | 2019-01-17 | 大日本印刷株式会社 | 写真撮影装置システム、写真撮影装置、カッタ装置および写真印刷物 |
US10992604B1 (en) * | 2017-09-07 | 2021-04-27 | Massachusetts Mutual Life Insurance Company | Systems and methods for chat sessions involving multiple chatbots |
US11625604B2 (en) * | 2017-10-27 | 2023-04-11 | Deepmind Technologies Limited | Reinforcement learning using distributed prioritized replay |
CA3104243C (en) * | 2018-06-18 | 2022-08-09 | Unity IPR ApS | Real-time animation generation using machine learning |
US11610110B2 (en) * | 2018-12-05 | 2023-03-21 | Bank Of America Corporation | De-conflicting data labeling in real time deep learning systems |
US11579868B1 (en) * | 2020-12-10 | 2023-02-14 | Amazon Technologies, Inc. | Machine learning assisted source code refactoring to mitigate anti-patterns |
US11883746B2 (en) * | 2021-02-23 | 2024-01-30 | Electronic Arts Inc. | Adversarial reinforcement learning for procedural content generation and improved generalization |
US11481553B1 (en) * | 2022-03-17 | 2022-10-25 | Mckinsey & Company, Inc. | Intelligent knowledge management-driven decision making model |
-
2020
- 2020-11-05 CN CN202080029735.0A patent/CN113767363B/zh active Active
- 2020-11-05 WO PCT/JP2020/041384 patent/WO2021090890A1/ja active Application Filing
- 2020-11-05 JP JP2021555108A patent/JP7231056B2/ja active Active
- 2020-11-05 US US17/608,694 patent/US11733976B2/en active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01298435A (ja) * | 1988-05-27 | 1989-12-01 | Mitsubishi Electric Corp | 自動プログラミング装置 |
CN103718159A (zh) * | 2011-08-03 | 2014-04-09 | 株式会社日立制作所 | 图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序 |
JP2013140513A (ja) * | 2012-01-05 | 2013-07-18 | Fuji Electric Co Ltd | 組込み機器用ソフトウェア作成支援装置およびその方法、並びにプログラム |
CN109564505A (zh) * | 2016-01-27 | 2019-04-02 | 伯尼塞艾公司 | 被配置为使用教学编程语言进行工作以训练经训练的人工智能模型的人工智能引擎 |
US20180088914A1 (en) * | 2016-09-28 | 2018-03-29 | Honda Motor Co., Ltd. | Method for supporting program creation and apparatus for supporting program creation |
US20190034976A1 (en) * | 2017-07-26 | 2019-01-31 | Jehan Hamedi | Systems and Methods for Automating Content Design Transformations Based on User Preference and Activity Data |
JP2019032659A (ja) * | 2017-08-07 | 2019-02-28 | 株式会社東芝 | 運転計画システム、運転計画装置および運転計画方法 |
US20190050319A1 (en) * | 2017-08-08 | 2019-02-14 | Accenture Global Solutions Limited | Intellectual automated security, performance and code generation framework |
CN107563417A (zh) * | 2017-08-18 | 2018-01-09 | 北京天元创新科技有限公司 | 一种深度学习人工智能模型建立方法及*** |
CN107807814A (zh) * | 2017-09-27 | 2018-03-16 | 百度在线网络技术(北京)有限公司 | 应用组件的构建方法、装置、设备及计算机可读存储介质 |
WO2019064461A1 (ja) * | 2017-09-28 | 2019-04-04 | 良徳 若林 | 学習ネットワーク生成装置、及び学習ネットワーク生成プログラム |
US20190220253A1 (en) * | 2018-01-15 | 2019-07-18 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for improving software code quality using artificial intelligence techniques |
US20190228319A1 (en) * | 2018-01-21 | 2019-07-25 | Microsoft Technology Licensing, Llc. | Data-driven automatic code review |
US20190258498A1 (en) * | 2018-02-17 | 2019-08-22 | Adobe Inc. | Photo-Editing Application Recommendations |
CN110018820A (zh) * | 2019-04-08 | 2019-07-16 | 浙江大学滨海产业技术研究院 | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 |
CN109992250A (zh) * | 2019-04-15 | 2019-07-09 | 深圳怡化电脑股份有限公司 | 一种自动编程的方法、装置、服务器及存储介质 |
Non-Patent Citations (1)
Title |
---|
殷继彬: "《"接触+非接触"式交互界面的设计与研究》", 昆明:云南大学出版社, pages: 115 - 116 * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021090890A1 (zh) | 2021-05-14 |
JP7231056B2 (ja) | 2023-03-01 |
WO2021090890A1 (ja) | 2021-05-14 |
CN113767363B (zh) | 2024-06-07 |
US11733976B2 (en) | 2023-08-22 |
US20220236956A1 (en) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5905894A (en) | Meta-programming methods and apparatus | |
CN113392620B (zh) | 一种芯片原型验证方法、装置、计算机设备和存储介质 | |
JP5780115B2 (ja) | エラー検知方法、情報処理回路及びエラー検知用プログラム | |
JP6354178B2 (ja) | 画像処理装置、管理システムおよび管理方法 | |
CN106897223A (zh) | 一种基于持续集成的软件包交付方法及装置 | |
US7624350B2 (en) | System and method for XML based data driven generation of a composite source user interface | |
CN114253841A (zh) | 测试脚本生成方法、装置及存储介质 | |
CN113767363B (zh) | 软件生成装置、软件生成方法和程序产品 | |
US20070300167A1 (en) | Integrated development environment and related methods | |
JP7073812B2 (ja) | 画像形成装置、設定値入力受付方法及びプログラム | |
KR20070058941A (ko) | 디바이스 드라이버 테스트를 위한 테스트 케이스 자동 생성방법 및 장치 | |
Aldegheri et al. | Extending OpenVX for model-based design of embedded vision applications | |
JP2007080049A (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
US10412251B2 (en) | Image processing apparatus for debugging a hardware emulation process | |
JPH06314202A (ja) | 画像形成装置 | |
JP5216624B2 (ja) | ソフトウェア開発システムおよびソフトウェア開発方法 | |
JP6802320B2 (ja) | 情報処理システム、情報処理装置、プログラム、及び情報処理方法 | |
CN110427339A (zh) | 一种转换自动应答文件格式的方法和装置 | |
US11190647B2 (en) | Information processing apparatus stopping power supply to hardware connected to a socket | |
JP2008033472A (ja) | プリンタの自動評価システム | |
JP5250518B2 (ja) | 動作確認システムおよび対象装置 | |
JP4123227B2 (ja) | 印刷システム、印刷システムにおけるエラー情報の表示方法、プリンタ装置、及び、プリンタ装置の制御方法 | |
US20140355019A1 (en) | Pre-flight system for pdf/vt | |
CN117234441A (zh) | 驱动安装方法、驱动安装装置、驱动安装设备及存储介质 | |
JPH07200351A (ja) | プログラムデバッグ方法およびプログラムデバッグ支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |