专利名称:用于从数据元模型生成有声用户接口编码的方法和系统的制作方法
技术领域:
本发明总体上涉及软件开发;更具体地,本发明旨在使用等同于图形用户接口向导的引导方式来生成用于软件应用的有声用户接口编码;本发明还旨在从实体关系模型 (诸如,以设计语言中描述软件应用的统一建模语言(UML)类图)开始生成有声用户接口编码。
背景技术:
当从整个软件应用的数据模型开始时,自动生成有声用户接口编码成为一项挑战。如今的开发工具允许开发者通过首先设计对话流来生成有声用户接口编码,有声用户接口编码随后从该对话流自动生成。由于有声接口人体工学通常极为敏感,因此开发者需要修改和定制在第一步骤中已经生成的有声用户接口编码。此开发概念已经由针对话音的 UML简档(OMG)中的OMG俘获并将其形式化。存在对软件应用的有声用户接口编码可以从待由应用俘获的数据的建模(例如, 诸如UML类图的元数据模型)来自动生成的需求。然而,至今尚未发现直接从元数据模型自动生成有声用户接口编码的这种方法,即便是OMG建模也试图对接口和对话流保持高度的关注。相比于用于用户接口开发的现有的软件开发工具,并入非常容易理解的向导作为如图形用户接口的业务应用的数量不断增加。向导是交互软件,其通过图形用户接口以引导的方式帮助用户使用步进页面来完成复杂的业务操作。类似地,有声用户接口应用需要等同于图形用户接口应用向导的引导方式。如今还不可能直接从软件应用的元数据模型自动生成允许用户以如通过图形用户接口向导完成的引导方式输入应用数据的有声用户接口编码。注意到,利用现有的技术,如今仍不可能从元数据模型自动生成图形用户接口编码的向导编码。对于图形用户接口而言,存在用于从应用的高级设计(诸如实体关系模型) 开始生成实现应用的对话的编码的工具。对话编码的自动生成已经并且仍然由许多不同的软件工具使用,但其主要用于类似DynamicTMN CMIP MIT浏览器的开发工具中。注意到, 所有基于SNMP或CMIP的管理系统基于持久性模型动态地创建用户接口。在因特网地址 http//www, monfox. com/dtmn/ java-cmip-mit-browser. html 处描述了一个不例,其中基于在CMIP定义中俘获的00模型自动创建了用户接口。DynamicTMN CMIP MIT浏览器提
出数据模型对象与以Eclipse EMF框架提供的形式的一般属性值表格编辑器的树状图。该浏览器还提出更高级的对话,仍然使用与附加图形输入、手动输入相关联的实体关系模型 (如描述用于数据库系统的自动接口布局生成器的美国专利US5495567中所定义的)。因此,存在从包括有声用户接口的软件应用的元数据模型开始自动开发有声用户接口编码的需要。此外,为了帮助用户以引导的方式执行操作,存在对开发有声接口的需要,当该有声接口用于软件应用的图形用户接口中时,其引导用户以与向导类似的方式录入数据。
发明内容
从软件应用的实体关系数据模型开始,本发明的方法和系统的目标在于进行模型的解释,以定义自动生成引导式话音接口编码所需的强制性与选择性步骤。该软件应用的引导式话音接口由应用的用户执行,以用引导方式在软件应用的数据模型中创建对话实体。如同图形接口向导经结构化为一系列页面,类似地,由本发明的方法和系统创建的引导式话音接口经结构化为语音对话及在该文档的其余部分中被称作“表格”的一系列对话单元。如在VoiceXML标准中所定义的“表格”是与针对一组域的值的获取对应的对话编码单元。即使类似,页面和表格并非具有相同的结构特性;虽然标准分页服务与页面相关联(前移、后移、完成),但对于“表格”而言并非如此。然而,在该文档的其余部分中,本发明的引导式话音接口将被称为“支持话音的向导”。有声接口能够通过例如电话线到达实际上任何地方的用户,这个有声接口的普遍特性抵消了为支持话音的向导自动生成编码的技术挑战和人体工学挑战。本发明的目标是根据权利要求1以一种在计算机上执行的方法来实现,该方法用于生成用于软件应用的有声接口编码,该软件应用具有利用包括类、类属性和类之间的关系的实体关系模型所描述的数据,该方法包括以下步骤-针对从实体关系模型读取的每个类,标识为不是用于软件应用接口的类也不是抽象类;-创建(304)对话单元编码的结构(VoiceXML表格)以用于获取类属性的值;-针对从实体关系模型读取的标识的类的每个属性,如果该类与一个其他类具有单一关系,或者如果该类与其他类具有多重关系但该多重关系并不适用于该属性,则在该对话单元编码中创建(307)用于直接获取属性(VoiceXML域)的值的编码,否则,在该对话单元编码中创建用于启用选择其他类的对话单元编码的子对话编码(308);-通过读取与该实体关系模型中的类相关联的关系,标识已创建的表格为录入表格还是内部表格。本发明的目标还根据权利要求2利用如权利要求1的方法来实现,其中在该对话单元编码中创建用于直接获取关于该属性的值的编码的步骤(307)包括以下步骤-创建用于直接获取该属性的值的提示编码;-自该实体关系模型读取该属性类型;-如果该属性类型为内置,则参考相应现有的内置语法(107);如果其为枚举,则创建并参考枚举语法,如果其并非枚举,如果将该属性定义为包含,则在由此属性参考的该类的对话单元编码中,创建用于执行该属性的类的对话单元编码的子对话编码,如果该属性并非包含,则在由此属性参考的类的对话单元编码中,创建用于选择该属性的类的对话单元编码的子对话编码。本发明的目标还根据权利要求3利用如权利要求1或2中任一项的方法来实现, 该方法进一步包括以下步骤该软件应用用户基于已创建的支持话音的向导编码来执行支持话音的向导过程,其从填充录入向导对话单元编码及该内部向导对话单元编码(如果有的话)的属性值开始,直至已填充所有向导对话单元编码属性为止。
本发明的目标还根据权利要求4利用如权利要求1至3中任一项的方法来实现, 其中该步骤以读取实体关系模型来执行,该实体关系模型为UML类图。本发明的目标还根据权利要求5利用如权利要求1至4中任一项的方法来实现,其中用于生成编码的步骤基于该VoiceXML语言,对于此种语言,该对话单元编码为 VoiceXML表格且用于该表格中的直接属性值获取的编码为VoiceXML域。本发明的目标还根据权利要求6利用如权利要求1至5中任一项的方法来实现, 其中用于生成编码的步骤系基于自然语言理解。本发明的目标还根据权利要求7利用一种计算机程序产品来实现,该计算机程序产品包括程序编码指令,该指令用于当在计算机上执行所述程序时,执行根据权利要求1 至6中任一项的方法的步骤。本发明的目标还根据权利要求8利用一种系统实现,该系统包括适用于进行根据权利要求1至6中任一项的方法的装置。本发明的方法为开发者带来允许自动有声接口编码生成的设计建模的优点该方法的所有步骤可在计算机上执行。本发明的方法提供统一用户有声接口编码,其为应用的支持话音的向导编码。支持话音的向导编码在统一的情况下将易于维持。从应用用户的角度而言,支持话音的向导的使用的一般化通过这个引导式用户接口带来可用性的优点。本方法提出用于(例如)用UML开发应用支持话音的向导的MDA(模型驱动式架构)方法这允许使开发工具和相关编码标准化。提供的解决方法从UML类图开始,在该图中对持久性数据进行建模。随后由系统对模型进行分析以自动产生支持话音的向导编码。本发明的方法为用于创建某一类型的支持话音的向导的可重复过程这个类型的向导系用于辅助应用用户创建实体关系模型的离散对象。与仅允许向类属性提供值的“编辑器”相比,支持话音的向导生成器创建支持话音的向导,该支持话音的向导在执行时帮助用户向该类属性提供值。由本发明的方法产生的支持话音的向导为完全可用软件实体,其引导包含支持话音的向导的应用的用户将支持话音的向导的属性值(其为简单类型值)从简单字串、日期或布尔值填充为更复杂的属性值(诸如对另一对象的参考)。由应用用户创建并且填充的支持话音的向导的实体实例可由软件应用的其他程序再利用以用于(例如) 编辑。
图1示出了用于构建和使用根据优选实施方式的方法由本发明生成的支持话音的应用向导的环境;图2示出了使用由优选实施方式的方法用作输入的、统一建模语言(UML)表示的数据元模型的示例;图3是优选实施方式的方法的一般流程图;图4是优选实施方式的方法的域构造子过程(307);图5示出了由优选实施方式的属性子过程(308)创建子对话的可能实现方式所产生的示例对话流程图;以及图6(图6A、图6B)是所生成代码的示例,其生成自图1上呈现的数据元模型的一部分。
具体实施例方式图1示出了用于构建和使用根据优选实施方式的方法由本发明产生的支持话音的应用向导的环境。这个环境允许应用向导的编码的生成,该应用向导操纵实体关系模型 (102)中描述的应用的持久数据,应用的数据元模型可以是UML类图。在优选实施方式中,生成支持话音的向导编码的方法被实现为软件程序,即在计算机上执行的支持话音的向导生成器(103)。用于创建支持话音的向导源编码的方法的步骤的其他可能实现方式(硬件、语言解释器等)也是适合的。支持话音的向导生成器(10 允许应用开发者生成完全可用的支持话音的向导 (105)的编码。该支持话音的向导程序继而可以与可执行应用(11 进行组合,以向应用的用户(111)提供在线性有声交互中容易地创建应用数据及其属性的方式。该目标支持话音的向导(105)可以表示为针对话音的UML简档(OMG)或适当的程序语言,包括作为面向导向对话语言的VoiceXML和用于处理动态内容和高阶对话流控制 ^J Java0支持话音的向导生成器(103)在“软件开发环境”(100)中运行,并且创建应用的支持话音的向导的编码。支持话音的向导继而在“执行环境”(110)中部署和执行。软件开发环境(100)是如当今现存许多框架的开发框架,其包括在开发者计算机工作区中可用来构建整个应用的工具(诸如编辑器、向导、编译器、链接)。软件环境被安装作为在操作系统上操作的程序,该操作系统提供图形用户接口,其被用作本发明的优选实施方式的最喜欢的开发者接口。执行环境(110)是硬件和软件平台,其适于通过电话信道远程地或在本地(如果有声信号是在与执行支持话音的向导相同的设备上收集的)执行有声应用。执行环境可以包括应用服务器、话音浏览器、语音识别引擎和文本转语音引擎。执行环境还可以可选地包括多模式浏览器以支持有声接口和图形接口两者。核心单元,即支持话音的向导生成器(103)需要一组信息作为程序输入。第一输入为由应用设计者所创建的表示将由应用操纵的数据的应用的数据元模型(102)。该数据元模型是以可以具有图形表示的设计语言(诸如优选实施方式中的UML)来描述的。第二输入为一组库(107),其支援运行时间环境的话音能力(以生成不同语言、不同类型的话音
寸乂 O在其他能力中,开发者(106)可以定制用作支持话音的向导生成器的输入的参数。这些参数例如可以定义对话类型(引导式与混和主导式)、TTS提示长度、自由文本属性的默认收集行为(拼写语法、声音转拼写算法…)、强制域、支持话音的向导中表格的次序…。当在执行环境中运行支持话音的向导时将应用这些定制。图2示出了数据元模型的示例(200),其为由优选实施方式的方法用作输入的UML 类图。图2的数据元模型为实体关系模型,其已由程序设计者或架构者使用任何高阶面向对象的建模语言工具来创建,该实体关系模型不定义话音接口属性,仅定义类001)、类属性、它们与属性相关联的类型(203)及类之间的关系002)。这个类图示例已使用基于UML的建模工具(命名为Rational Rose)来完成。可以使用任何其他高阶面向对象的建模语言工具来完成数据元模型的其他表示。从图2的数据元模型读取的实体(其为类、类属性及类之间的关系)形成导航树, 该导航树经线性化为由如在下列图中描述的支持话音的向导生成器所生成的支持话音的向导的流程图。在图2的示例中,数据模型为用于项目管理应用的设计。“包含”类被标识为链接至具有其上有一个黑色菱形的关系的另一类的那些类。类为包含的事实对用以俘获这个类的数据的有声接口的结构具有影响。举例而言,因为可以存在I^roject的Drop,所以ftOject 类中包含类Drop,并且为了俘获关于该ftOject的数据,用户接口必须还提出俘获关于该 Drop的数据。相反的,因为当俘获关于Drop的数据时不存在必须俘获关于Bug的数据的义务,所以Drop与Bug之间的关系不包括黑色菱形。当俘获关于I^roject的数据时,关于 Bug的数据被强制地俘获。类似地,当属性所参考的类被定义为包含时,该类的此属性被标识为包含。从程序的角度而言,俘获包含类的数据的支持话音的向导程序的编码为从这个支持话音的向导程序内另一处调用的子过程。此概念在步骤308中作为子对话进一步进行描述。图3为在生成过程期间用于生成(300)所有支持话音的向导组件的方法的一般流程图。此流程图在生成器组件中实施。该过程的第一步骤为收集数据模型中的所有类并且在所收集的所有类上循环 (301),随后检查是否涉及接口(302)。类可实施自身定义方法的接口 无法被实例化为具体类的接口 ;因此,在过程中必须对这些接口进行筛选,因为对它们进行编辑。当这是接口类(对测试302回答是)时,读取下一类(314)。当这不是接口类(对测试302回答否)时,系统检查是否涉及抽象类(303)。抽象类包含将需使用或者重新定义具体类的默认行为方法及属性;因此,在过程中还必须筛选抽象类,且仅经由在过程后期使用抽象类的具体类使用。当这是抽象类(对测试303回答是)时,读取下一类(314)。当这不是抽象类(对测试303回答否)时,系统通过执行另一主要步骤继续,以从使用类名称作为用于表格标识符的基础的类定义生成向导的表格(304)。该过程的下一步骤为收集当前类及其祖先(ancestor)的所有属性,并且在所有属性上循环(305)。对于每个属性,测试306检查其是否为单一关系。当这个类对另一类具有单一关系(对测试306回答是)时,下一步骤从正在当前表格中所读取的属性创建域(307)。如W3C对于VoiceXML语言的定义的域为用以基于语法实例化特定变量或属性的表格的子元素。稍后在关于图4的文档中描述域创建的子过程定义。否则,当这个类具有多重关系(对测试306回答否)时,下一步骤从多重关系的目标类创建子对话(308)。这个子对话旨在若当前类包含目标类,则定义哪些实体为这个属性的部分并创建这些实体。一旦子对话完成其任务,则调用表格从其之前的位置继续执行。 在此定义的子对话的行为相对类似于Voice XML语言说明书中W3C所定义的元素子对话的行为;在这个特定上下文中,它的实现还可实现于诸如java/jsp的中间编程层中以编控制动态内容。
在图5中描述这样的子对话的实现的示例。备选地,如果当前类不包含目标类,则可使用选择域。这样的域与允许用于此属性的所有合格实体的级联的某些表格的语法相关联。随后读取下一属性(309),直到类中无属性(对测试309回答否)为止。一旦覆盖了类的所有属性(对测试309回答否),则步骤310对表格内的所有域进行重新排序,以便将与强制属性相关联的域前移。这在作为本发明的优选实施方式的引导式(顺序)对话方案中尤为重要。与步骤402中描述的分流语法一起,它使得一旦已经实例化了所有强制属性,则用户有可能跳至下一类。系统随后检查包含关系的目标类(311)。这个信息已在步骤307的执行期间(如本文中稍后描述关于图4的步骤409的描述)存储,或者在这个测试311中检索。当不包含该类但是仅由关系的源类参考该类(对测试311回答否)时,下一步骤将当前表格标记为“录入表格”(313)。录入表格为用于对话流的合格录入点。否则,当包含该类(对测试311回答是)时,下一步骤将当前表格标记为“内部”(31 。内部表格为仅可基于该关系的来源而从支持话音的向导内调用的表格。该内部表格不能为该对话流的输入点。过程的最终步骤(313)将创建的表格(304)作为录入表格(313)或作为内部表格添加至支持话音的向导(312)。除非如果(可选地)开发者已输入定制(106)并且强加特定顺序,否则对话流将按照表格创建的顺序展开。在每个表格内,默认实现为引导式(顺序)对话,虽然可以考虑诸如混和主导式或自然语言的其他更复杂对话策略。当已读取所有类(对测试314回答否)并且已创建所有表格时,若开发者引入用于支持话音的向导的页面次序的定制,则可选步骤315允许对表格的重新排序。图4为用于基于当前类属性生成域的子过程流程图(400)。这个流程图在生成器组件(105)中实施。该生成器组件向对当前表格(304)提供新的域。过程的第一步骤001)为检查属性是否为强制的。若回答为否,则步骤402创建分流语法,该语法与允许跳过当前或者所有随后属性匹配。步骤310使后一种选择在引导式或顺序对话方案中成为可能,且该后一种选择等效于移至下一表格/类(图形接口中的下一个或完成按钮)。此语法稍后在主要域语法得以创建时(408、409、411、413)包括于主要域语法中。可以维持用于每个表格的强制域的持久性列表以易于步骤310的实施。当在运行时间由用户请求跳至下一表格时,且若无任何一个具有强制项目的其他表格仍待填充,则对话可在这个点结束。步骤401、402、408、409、411、413及416形成用于跳过非可选域的简单实施方案。然而,其他选择在对话允许经由非引导式对话(例如,本领域中已知的混和主导式或自然语言对话)填充域的其他方案中是可能的。在步骤403中读取类属性,且在步骤404中使用类属性名称以创建提示。该提示通常使用嵌入在默认说明性句子中的类属性名称,诸如通过使用文本转语音技术而动态生成的“请输入域X的值”。在步骤405中读取类属性类型,并且由系统检查该类属性类型G06)以将简单类型与复杂类型分开。在当前类型为简单(对测试406回答是)时,下一步骤是根据该技术基于相应简单类型而创建简单录入域005)。为实现这个目标,步骤407测试我们是否处理内置类型。我们将内置类型定义为我们的执行环境可提供语法(诸如W3C所定义的voice-xml内置语法)的类型。若当前属性类型为内置类类型(对测试407回答是),则步骤408参考关于当前域的此内置语法。若当前属性类型并非内置类型(对测试407回答否),则步骤409执行后移策略以为这个属性收集数据。这个后移策略可以由覆盖几乎任何文本录入的后移语法(例如,拼写语法)组成。替代地,可以使用声音转拼写系统,或作为最基本的替代可以收集并储存音频信号的录音以用于这个属性。随后将新创建的域添加至当前表格(304)。当属性类型为复杂(对测试404回答否)时,下一步骤检查该类型是否为数据模型中所定义的枚举006)。当属性类型为复杂(对测试406回答否)时,下一步骤检查该类型是否为数据模型中所定义的枚举010)。在当前类型为枚举(测试410回答是)时,下一步骤创建包括枚举中所定义的所有可能值的默认枚举语法G11)。随后将完成的域添加至当前表格(304)。否则,在当前类型并非为枚举(对测试410回答否)时,下一步骤检查是否系统检查属性是否为包含(412)。在当前属性为包含(对测试412回答是)时,这意味-这个属性所参考的类被定义为包含,且在实体关系数据元模型中,另一类指向这个类。将针对这个类生成标记为内部的表格。-所分析的属性是指向数据元模型中的其他类的属性。在这种情况下,步骤413创建TTS提示,该提示将告知用户将要创建目标类的对象。随后在步骤414中创建并且参考语法,且该语法将允许用户绕过非强制域或跳至下一类(参见步骤40幻。步骤415从当前属性创建子对话,以使用为该目标类所创建的适当内部表格实例化当前属性。随后将该新创建的域添加至当前表格(304)。否则,在当前属性并非包含(对测试412回答否)时,下一步骤创建并且参考将在运行时间利用目标类的合格现有的对象提供的语法,进而允许用户在关于当前属性的那些适当值中进行选择。随后将新创建的域添加至当前表格(304)。图5示出了实现步骤308 (从多重关系属性创建子对话)的对话流程图的示例。提示(501)列举出将在运行时间动态地检索的选定对象及合格对象。用户还可选择退出当前对话(返回至母表格),或创建目标类的新对象。依赖于语音识别匹配(502、503、504、505), 从当前选择中移除对象(506),或向当前选择添加对象(507),或创建对象并将其添加至当前选择(508、509),或如果已选择的对象的数目符合数据元模型则用户可退出对话(511)。图6(图6A,图6B)示出了 VoiceXML中的对话编码在其可以由支持话音的向导生成器(103)生成时的示例。表格标识符“consultingProject”由步骤304创建以用于相应类。该表格标识符进一步包含由步骤307创建的4个域(名称、起始日期、结束日期、公司名称)以用于实体关系数据元模型中类ConsultingProject的相应单一关系属性。这些域中的每个域内的语法由步骤408创建并且参考,以用于spelling, grxml及date, grxml,或由步骤402创建并且参考以用于skip, grxml。如关于图3、图4和图5的流程图所描述的用于生成支持话音的向导编码的方法包括操作步骤和测试步骤。尽管在优选实施方式中所描述的所有步骤可由应用开发者以互动模式在计算机上执行(106),但是所有这些步骤还可由本领域中公知的源编码生成器程序自动执行。在优选实施方式中,开发者可经由开发框架的向导来完成对源编码生成器的调用,该向导向开发者呈现页面,开发者可以可选地通过向导(106)向生成过程页面添加。但是,支持话音的向导编码生成还可以在独立模式并且针对定制的可选步骤而执行;定制文件可由开发者已经预先准备,并且在支持话音的向导源编码生成器的自动执行期间将其用作输入。
权利要求
1.一种在计算机上执行以生成用于软件应用的有声接口编码的方法,所述软件应用具有利用包括类、类属性和类之间关系的实体关系模型描述的数据,所述方法包括-针对从所述实体关系模型读取的每个类,标识为不是用于所述软件应用的接口的类也不是抽象类;-创建(304)对话单元编码的结构(VoiceXML表格)以用于获取所述类的属性的值;-针对从所述实体关系模型读取的标识的类的每个属性,如果所述类与一个其他类具有单一关系或者如果所述类与其他类具有多重关系,但是所述多重关系不应用于所述属性,则在所述对话单元编码中创建(307)用于直接获取所述属性(VoiceXML域)的值的编码,否则,在所述对话单元编码中创建用于启用选择其他类的对话单元编码的子对话编码 (308);-通过读取与所述实体关系模型中的所述类相关联的关系来标识所创建的表格是录入表格还是内部表格。
2.根据权利要求1所述的方法,其中用于在所述对话单元编码中创建用于直接获取所述属性值的编码的步骤(307)包括-创建用于直接获取所述属性值的提示编码;-从所述实体关系模型读取所述属性类型;-如果所述属性类型是内置,则参考对应的现有的内置语法(107);-如果所述属性不是简单类型,如果所述属性是枚举,则创建并参考枚举语法,如果属性不是枚举,如果将所述属性定义为包含,则在由该属性参考的类的对话单元编码中创建用于执行所述属性的所述类的对话单元编码的子对话编码,如果所述属性不是包含,则在由所述属性参考的所述类的对话单元编码中创建用于选择所述属性的所述类的对话单元编码的子对话编码。
3.根据权利要求1或权利要求2任意一项所述的方法,进一步包括所述软件应用的用户基于所创建的支持话音的向导编码来执行支持话音的向导过程,所述执行通过从填充录入向导对话单元编码和所述内部向导对话单元编码的属性值开始,如果有的话,直到填充了所有所述向导对话单元编码属性为止。
4.根据权利要求1至权利要求3中任意一项所述的方法,其中所述步骤通过读取实体关系模型来执行,所述实体关系模型为UML类图。
5.根据权利要求1至权利要求4中任意一项所述的方法,其中用于生成编码的步骤基于VoiceXML语言,针对所述VoiceXML语言,所述对话单元编码是VoiceXML表格并且用于所述表格中的直接属性值获取的编码为VoiceXML域。
6.根据权利要求1至权利要求5中任意一项所述的方法,其中用于生成编码的所述步骤基于自然语言理解。
7.一种包括程序编码指令的计算机程序产品,所述程序编码指令用于当在计算机上执行所述程序时,执行根据权利要求1至权利要求6中任意一项所述方法的步骤。
8.一种系统,包括适于执行根据权利要求1至权利要求6中任意一项所述方法的装置。
全文摘要
一种用于通过读取应用的持久性数据来生成软件应用的有声接口的编码的方法、计算机程序及系统,该应用由数据元模型使用诸如定义类的层级式组织、其属性及类之间关系的UML(统一建模语言)的设计语言来设计。类似于用于图形用户接口的向导,该有声接口编码包含对话单元编码(在使用VoiceXML语言时,该对话单元编码为表格)以在执行时允许以引导方式录入用于该应用的数据。
文档编号G10L15/22GK102246227SQ200980150265
公开日2011年11月16日 申请日期2009年10月20日 优先权日2008年12月19日
发明者J-Y·里戈莱, R·勒热纳 申请人:国际商业机器公司