用于确定是否顺序显示多个屏幕的系统和方法

文档序号:6608420阅读:233来源:国知局
专利名称:用于确定是否顺序显示多个屏幕的系统和方法
技术领域
本发明涉及一种用于确定由程序显示的屏幕是否满足规范的系统。更具体来讲,本发明涉及一种用于静态地确定要顺序显示的多个屏幕是否满足制定的规范的系统。
背景技术
近年来,对诸如可以在因特网上获得的网页之类的文档的设计变得多种多样了。虽然,设计得很好的网页看上去不错,但是诸如视觉上有缺陷的人之类的特殊用户未必能够非常好地理解该网页。另外,当页面结构违反语法规则时,某些类型的web浏览器未必能够正确地显示该页面。因此,通常提供了某些系统来确定诸如网页之类的文档是否满足制定的规范,以便评估理解的容易度或者指明该页面中待纠正的点。例如,参见非专利文献(8)和(9)。另外,用于规定诸如HTML或XML之类的结构化文档的规范的研究以及对用于规定规范的模式(schema)等的研究已经取得了进展。例如,参见非专利文献(2)、(4)和(5)。
非专利文献(6)和(7)将在一个实施例中进行参考。
非专利文献(1)2005年在万维网(WWW)上由Yasuhiko Minamide发表的“Static approximation of dynamically generated Web pages”;(2)FDR2(Formal Systems);(3)2005年在编程语言原理(Principles of ProgrammingLanguages,POPL)中由Cristiano Calcagno、Philippa Gardner、Uri Zarfaty发表的“Context Logic and Tree Update”;(4)2003年在软件维护和重建的欧洲会议(EuropeanConference On Software Maintenance And Reengineering,CSMR)上由Eugenic Di Sciascio、Francesco M.Donini、Marina Mongiello、Giacomo Piscitelli发表的“Web applications design and maintenanceusing Symbolic Model Checking”;(5)在软件测试日本讨论会(Japan Symposium on SoftwareTesting)上由Eun-Hye CHOI、Hiroshi Watanabe发表的“Modelingand Verification of Class Specification for Web Applications”;(6)于1997年在http://www.grappa.univ-lille3.fr/tata/上由H.Comon等人发表的“Tree Automata Techniques and Applications”;(7)在2001年由Haruo Hosoya和Benjamin Pierce在编程语言原理(Principles of programming languages,POPL)上发表的“Regular expression pattern matching for XML”;(8)aDesigner(IBM);(9)Dreamweaver 8(Macromedia);(10)于2002年在IEICE的技术报告SS2002-22第102卷第370期第13-18页上由Kazunori Washio等人发表的“SyntaxVerification Technique Using Data Flow Analysis for JavaScriptEmbedded HTML Documents”;(11)在SPA2006并于http://spa.jssst.or.jp/2006/上由TakaakiTateishi等人发表的“Accessibility Checking Tool for DHTML”。
某些网页不仅可以包括静态图像,而且可以包括运动图像。例如,Macromedia公司的Flash或Dynamic(动态)HTML被用作一种用于生成运动图像的标准。运动图像是借助于利用网页提供的程序、通过顺序地切换静态图像的显示来实现的。如果试图向运动图像应用有关静态图像的技术,那么必须实际执行所述程序,并且确定作为执行结果生成的每一个静态图像是否满足所述规范。然而,在确定要显示的所有静态图像是否都满足规范的情况下,所述程序的执行状态会急剧地增加。因此,实际上这种确定未必会完成。
另外,已经提供了这样一种技术,该技术在不执行程序的情况下分析在执行程序之后的状态。例如,参见非专利文献(1)、(3)、(10)和(11)。依照非专利文献(1)和(10)的技术,将要通过执行程序生成的字符串可以在没有实际执行该程序的情况下加以分析。然而,依照此技术,无法分析如何改变作为执行程序的结果而具有依照HTML、XML等描述的树结构的数据。另外,非专利文献(3)公开了用于确定具有通过执行程序而获得的树结构的数据是否满足规范的逻辑。然而,此文献没有公开信息处理设备如何根据此逻辑自动地确定规范的满足性。另外,非专利文献(11)公开了应该把用于分析作为执行程序的结果而生成的字符串的技术应用于具有树结构的DOM(文档对象模型)。然而,非专利文献(11)没有公开用于应用所述技术的具体方法。

发明内容
因此,本发明的一个目的在于,提供一种能够克服与传统技术相伴的上述缺陷的系统、方法和程序。上述以及其它目的可以通过在独立权利要求中描述的组合来实现。从属权利要求进一步定义了本发明的优点和示例性组合。
为了解决上述问题,依照本发明的第一方面,提供了一种用于确定要由应用程序顺序显示的多个屏幕是否满足制定的规范的系统。所述系统包括规范存储部件,用于存储用来规定将要由第一屏幕满足的规范的第一模式信息,用来规定将要由第二屏幕满足的规范的第二模式信息,以及使应用程序进行的显示从第一屏幕改变为第二屏幕的事件;提取部件,用于根据第一模式信息和所述事件,从应用程序中提取部分程序,其中所述部分程序响应于在显示满足第一模式信息的任何屏幕期间所述事件的出现而被执行;生成部件,用于根据部分程序,从满足第一模式信息的一组屏幕生成中间程序,所述中间程序用于计算在显示这个满足的组中的屏幕期间出现了所述事件的条件下要显示的一组屏幕;以及确定部件,用于在第一屏幕满足第一模式信息、并且通过向第一模式信息应用中间程序而获得的一组屏幕满足第二模式信息的条件下,确定多个屏幕满足制定的规范。另外,还提供了一种用于使信息处理设备起到此系统的作用的程序,以及一种用于借助于此系统来确定多个屏幕是否满足规范的方法。
发明内容未必描述了本发明的所有必要特征。本发明还可以是如上所述的特征的子组合。
依照本发明,在不执行程序的情况下,能够确定将要通过处理该程序而顺序显示的多个屏幕中的每一个是否满足规范。


根据结合附图对本发明的目前优选的示例性实施例进行的如下描述,本发明的上述及其它目的、特征和优点将变得更加清楚,其中图1是示出了信息处理系统的整体配置的视图;图2是示例性地示出了存储在文档数据库上的数据的视图;图3是示出了满足性确定系统的功能配置的视图;图4是示例性地示出了用于确定每一个屏幕是否满足规范的处理过程的视图;图5是示出了由满足性确定系统进行的确定的示意图;图6是示出了存储在规范存储部件上的规范的第一示例的视图;图7是示出了部分程序的第一示例的视图;图8是示出了中间程序的第一示例的视图;图9是示例性地示出了用于进行把部分程序变换为中间程序的处理过程的树转换器(tree transducer)的视图;图10是示出了存储在规范存储部件上的规范的第二示例的视图;图11是示出了部分程序的第二示例的视图;图12是示出了中间程序的第二示例的视图;图13是示例性地示出了用于进行把部分程序变换为中间程序的处理过程的树转换器的视图;图14是示例性地示出了用于进行把部分程序变换为中间程序的处理过程的树转换器的视图;并且图15是示例性地示出了起到满足性确定系统作用的信息处理设备的硬件配置的视图。
具体实施例方式
现在将基于优选实施例来描述本发明的实施例,但这不意味着限制本发明的范围,而仅仅是举例说明了本发明。在所述实施例中描述的所有特征及其组合未必是本发明所必需的。
图1是示出了信息处理系统10的整体配置的视图。信息处理系统10包括文档数据库20和满足性确定系统30。文档数据库20存储文档,通过所述文档,多个屏幕被顺序地显示在Web浏览器等上。例如,这个文档包括依照HTML(超文本标记语言,Hyper TextMarkup Language)等描述的初始屏幕,以及依照诸如JavaScript(注册商标)的程序设计语言描述的应用程序。如果这个文档被Web浏览器读取,那么初始屏幕会被显示在Web浏览器上。所显示的初始屏幕响应于Web服务器或Web浏览器执行应用程序这一事实而顺序地改变。因此,多个屏幕被顺序地显示在Web浏览器上。
满足性确定系统30从文档数据库20中读取文档。然后,满足性确定系统30根据读出的文档来确定将要由应用程序顺序显示的多个屏幕是否满足制定的规范。把确定的结果输出给用户。
依照此方式,依照本实施例的信息处理系统10的目的在于,分析涉及这些屏幕的显示的文档,以便在没有实际执行程序的情况下,确定将要由应用程序顺序改变的每一个屏幕是否满足制定的规范。
图2是示例性地示出了存储在文档数据库20上的数据的视图。文档数据库20存储涉及包括运动图像在内的网页等的显示的文档。此文档包括从第1行到第9行的各种类型的配置信息、从第10行到第49行的头部分以及从第51行到第59行的主体部分。所述头部分包括从第13行到第38行的依照JavaScript描述的应用程序。此应用程序是用于修改网页上的显示的修改程序。此应用程序实现网页上的复选框。也就是说,此应用程序显示这样一种屏幕,在所述屏幕上,当通过鼠标点击了所显示的复选框时,复选框被修改为选中状态,并且所述应用程序还显示这样一种屏幕,在所述屏幕上,当通过鼠标点击了处于选中状态的复选框时,所述复选框被修改为未选中状态。
具体来说,此应用程序定义了从第16行到第36行的、被称为checkBoxEvent的函数。所述函数起到事件处理程序的作用,所述事件处理程序在生成了在第55行上定义的事件的条件下被调用。当调用此函数时,首先执行第18行和第19行上的条件判断。也就是说,确定是否已经点击了鼠标的左按钮(ID为零)或者是否已经按下了键盘的空格键(具有按键代码32的按键)。否则,所述处理过程移到第35行,以便完成函数的处理。
当点击了左按钮或按下空格键时,执行从第20行到第34行的处理过程。首先,在第22行的情况下,确定属性“checked(选中)”是否为“ture(真)”,其中所述“checked”用于表明复选框是否被选中。当复选框被选中时,所述应用程序通过把该属性改变为“false(假)”(第24行)来从复选框中取消复选标记。在此情况下,应用程序还可以删除紧接于复选框显示的输入字段(entry field)(第25行)。
另一方面,当复选框没有被选中时,所述应用程序通过把属性“checked”改变为“ture”,来把复选标记附加至复选框上(第29行)。在此情况下,应用程序可以生成紧接于复选框的输入字段(第31行)。另外,为了便于解释,就图3至图9的描述而言,假设没有执行对输入字段的处理。下面将参考图10-14来描述执行有关处理输入字段时的内容。
除了应用程序以外,此文档还包括第51至58行上的初始屏幕。此初始屏幕包括被称为check的字符串和紧邻所述字符串的复选框。由于在第54行上属性“checked”被设置为“false”,因此该复选框处于在初始状态下复选标记被取消的状态。当通过鼠标点击复选框或者通过键盘按下复选框时,被称为checkBoxEvent的函数得以被调用(第55和56行)。
图3是示出了满足性确定系统30的功能配置的视图。所述满足性确定系统30具有规范存储部件300、提取部件310、生成部件320和确定部件330。所述规范存储部件300存储多个模式信息中的每一个,所述模式信息用于规定将要由应用程序顺序显示的多个屏幕中的每一个应该满足的规范。另外,所述规范存储部件300还存储这样的事件,通过所述事件,多个屏幕中的每一个均被切换到其它屏幕中的每一个。例如,所述规范存储部件300存储第一模式信息和第二模式信息,所述第一模式信息用于规定将要由作为初始屏幕的第一屏幕满足的规范,并且所述第二模式信息用于规定将要由紧接于第一屏幕显示的第二屏幕满足的规范。然后,规范存储部件300存储这样的事件,通过该事件,把应用程序进行的显示从第一屏幕切换至第二屏幕。在图2中示出的应用程序的情况下,第一屏幕是在其上复选框已经被选中的屏幕,而第二屏幕是在其上复选框仍未被选中的屏幕。然后,通过点击鼠标上的左边部分或者按下键盘上的空格键来执行所述事件,通过该事件,应用程序进行的显示从第一屏幕切换至第二屏幕。
图6是示出了存储在规范存储部件300上的规范的第一示例的视图。该图的左下方示出了用于规定在其上复选框没有被选中的第一屏幕的规范的第一模式信息。此外,该图的右下方示出了用于规定在其上复选框被选中的第二屏幕的规范的第二模式信息。使显示从第一屏幕切换至第二屏幕的事件是鼠标的左点击(T0)或者空格键的按下(T2)。使显示从第二屏幕切换至第一屏幕的事件是鼠标的左点击(T1)或者空格键的按下(T3)。
图6中图示的模式信息是依照语言理论通过树和规则的语法树(dendrogrammar)来表示的。HTML文档是具有树结构的数据,其在开始标签和结束标签之间还包括另一个开始标签和结束标签。所述模式信息借助于规则的语法树来定义具有这种树结构的数据集。也就是说,首先,在模式信息的情况下,包括被称为<elem><child1/><child2/>…<childN/></elem>的标签的HTML文档,是通过elem(child1,child2,…,childN)来表示的。然后,所述模式信息包括多个语法规则,通过所述语法规则,每一标签被认为是终止符,而符号Gn被认为是非终止符。
具体来讲,第一模式信息(当前附图中的左下方)包括body(主体)标签。在body标签中定义的非终止符是G5、G10等。所述非终止符包括span(间距)标签,并且还包括其它非终止符G6至G8。这些G6至G8分别定义了属性值是checkbox(复选框)的role(角色)属性、属性值是false的checked属性、以及onclick(点击)属性。另外,G10包括另一span标签。也就是说,第一模式信息定义了所述body标签中包括多个span标签,并且第一span标签包括role属性、checked属性以及onclick属性。
同样地,第二模式信息(当前附图中的右下方)包括body标签。依照在body标签中定义的非终止符的规则,body标签中的span标签包括属性值是checkbox的role属性、属性值是false的checked属性、以及onclick属性。也就是说,第二模式信息定义了所述body标签中包括多个span标签,并且第一span标签包括role属性、checked属性以及onclick属性。依照此方式,包括运动图像在内的内容的规范通过每一屏幕的规范和包括表明屏幕之间的转变的事件的状态转变图来表示。
参考图3,提取部件310从文档数据库20中读取文档。然后,所述提取部件310根据第一模式信息和所述事件,从此文档中包括的应用程序中提取部分程序,所述部分程序响应于在显示满足第一模式信息的任何屏幕期间所述事件的出现而被执行。依照此方式提取的部分程序被认为是部分程序50。图7中示出了该部分程序的示例。
图7是示出了部分程序50的第一示例的视图。为了例证说明的目的,把函数checkBoxEvent从存储在文档数据库20上的应用程序中提取出来,并且显示在当前视图的上方。对于应用程序中包括的每一条件分支指令,所述提取部件310根据第一模式信息中规定的这些状态以及事件来确定执行哪一分支目标。如图6中所描述的那样,把显示从第一屏幕切换至第二屏幕的事件是鼠标的左点击或者空格键的按下。为此,第4行和第5行上的条件分支指令的条件得以满足。也就是说,提取部件310确定执行从第6行到第15行的指令序列。
另外,第一模式信息包括属性值是false的checked属性。为此,第8行和第9行上的条件分支指令的条件没有被满足。也就是说,提取部件310确定执行从第13行开始的else段落。所述提取部件310依照此方式通过连续地把要执行的分支目标上的指令序列进行排队来生成部分程序50。因此,部分程序50包括用于把checked属性的属性值改变为true的指令。
参考图3,生成部件320根据部分程序50来生成中间程序60。中间程序60是这样一种程序,其从满足第一模式信息的一组屏幕计算在显示满足第一模式信息的一组屏幕中的屏幕期间当生成事件时所显示的一组屏幕。图8中示出了所述中间程序60。
图8是示出了中间程序60的第一示例的视图。为了例证说明的目的,在图8的上部图示了部分程序50。首先,生成部件320对部分程序50执行SSA(Static Single Assignment,静态单赋值)变换,以便唯一地确定每一变量的定义,并且生成多个指令,所述指令用于获得与部分程序50的执行结果相同的执行结果。在图8的中间部分上示出了所生成的指令序列。
将描述变换处理过程。依照SSA形式,对每一变量的赋值在部分程序50中可以被唯一地确定。为此,需要依照两个或更多赋值操作把赋值目标的变量改变为两个或更多中间变量,以便对部分程序50执行SSA变换。在图8所图示的部分程序50中,对象event.target被分配给变量checkbox。此外,变量checkbox中包括的属性的属性值通过函数setAttributeNS来修改。依照此方式,相同的变量checkbox的内容可以通过多个操作多次修改。为此,生成部件320必须依照某种方式变换涉及变量checkbox的处理。
部分程序50中的诸如添加孩子元素或者修改属性之类的直接树操作可以被表示为中间程序60中的摘要内容变换函数。所述摘要内容变换函数是从模式信息到模式信息的函数,以便使F(T)∈Tr(G)对于任意模式信息G以及满足模式信息G的任意内容T都满足。此处,Tr示出了摘要内容变换函数,而F示出了通过树变换函数进行的树变换。
例如,如果使用诸如JavaScript的程序设计语言,那么能够从内容T中选择位于开始标签和结束标签之间的数据,并且描述用于改变所选数据的指令序列。具体来说,用于从HTML文档中提取文档对象的、诸如getElementByTagName之类的函数是在JavaScript中提供的。如果使用它,那么能够从HTML文档中取出某一元素doc,并且把对应于所述元素doc的属性attr的值改变为value。在部分程序50的示例中,在初始屏幕中导致事件出现的标签被选择并且被存储在变量checkbox上。然后,存储在checkbox上的标签的属性通过被称为checkbox.setAttributeNS();的方法来修改。
如果应用程序中的这个树操作指令序列是通用的,那么通过如下的表达式来表示它。
V=doc.getElementByTagName(″foo″);v.setAttribute......
此处,doc是用于存储原始HTML文档的对象,而foo是任意标签的名称。所述getElementByTagName是用于从doc中取出具有指定名称的介于开始标签和结束标签之间的文档的函数。向所取出的文档分配变量v。如果对变量v执行下一操作,那么存储在doc上的原始HTML文档也会被修改。也就是说,所述树操作指令序列包括用于从HTML文档提取文档对象的指令以及用于修改所提取的文档对象的指令。
当提取部件310包括部分程序50中所包括的树操作指令序列时,所述生成部件320如下所述那样来变换这个树操作指令序列。
$doc1=getElementByTagName_r($doc0,$vN,″foo″);$v0=getElementBytagName($doc0,″foo″);$v1=setAttribute(...,$v0,...);$vN=...;
此处,变量$doc0示出了在由树操作指令序列进行操作之前的屏幕配置。另一方面,变量$doc1示出了在由树操作指令序列进行操作之后的屏幕配置。另外,变量$v0存储复制数据,所述复制数据是由getElementByTagName函数(第2行)从原始文档复制的文档对象。另外,变量$vN存储通过执行各种类型的操作生成的文档,所述操作例如为修改存储在变量$v0上的复制数据的属性(第3行和第4行)。另外,getElementByTagName_r是用于把屏幕中的介于标签foo的开始标签和结束标签之间的文档替换为变量$vN的内容的函数。对其执行各种类型的操作的复制数据由一部分原始文档$doc0替代(第1行)。
也就是说,所述生成部件320把树操作指令序列变换为用于生成复制数据、修改复制数据并且用变换后的复制数据替换初始屏幕中的原始数据的指令序列,其中所述复制数据是通过从初始屏幕中复制位于开始标签和结束标签之间的数据而获得的。
具体来讲,在图8的示例中,生成部件320把变量checkbox修改为两个中间变量$checkbox1和$checkbox2。变量$checkbox1相当于一般示例中的变量$v0,变量$checkbox2相当于一般示例中的变量$vN,而变量$unchecked相当于一般示例中的$doc1。然后,所述生成部件320生成用于向变量$checkbox1分配对象event.target的指令。对象event.target的内容是由第一模式信息的定义和所述事件来具体确定的。因此,所述生成部件320可以生成用于向变量$checkbox1分配event.target的具体内容的指令。
接下来,生成部件320生成用于向变量$checkbox2分配树操作指令序列的处理结果的指令。也就是说,将在存储于变量$checkbox1上的屏幕当中的、其checked属性的属性值被修改为true的屏幕分配给变量$checkbox2。然后,生成部件320生成用于向变量$unchecked分配屏幕的指令,其中所述屏幕是通过依照变量$checkbox2的内容来替换原始屏幕而获得的。因此,将其checked属性的属性值被修改为true的屏幕分配给变量$unchecked,用于存储操作后的(postoperational)屏幕。
依照上述变换,所述部分程序50被变换为其中对每一变量逐个执行赋值的SSA形式。然而,由于函数setAttributeNS是用于操作单个屏幕的函数,因此无法依照这种方法从满足第一模式信息的一组屏幕计算满足第二模式信息的一组屏幕。为此,所述生成部件320进一步对函数setAttributeNS执行接下来的变换。
假定能够由树操作指令序列获得的内容是T′,那么把摘要内容变换函数定义为至少满足T′∈Tr(G)的函数Tr。当树变换函数取多个自变量时,假定T是一组内容,并且G是一组模式,那么摘要内容变换函数是Tr,以便使F(T)∈Tr(G)得以满足。诸如自上而下的树转换器之类的树转换器和非专利文献(8)中示出的XML变换语言和查询语言的理论框架可以被用作这种摘要内容变换函数的定义。此后,将举例说明树转换器。
图9是示例性地示出用于进行把所述部分程序50变换为中间程序60的处理过程的树转换器的视图。在所述树转换器中,定义了状态q1和状态q2这两个状态。由函数setAttributeNS进行的操作可以被表示为从状态q1到状态q2的转变。在这个树转换器中,状态q1中的每一标签在状态q2中保持不变,而只有checked属性的属性值被修改为true。
图8中图示的中间程序60是由生成部件320通过上述处理过程生成的。
返回到图3,确定部件330随后根据中间程序60确定每一屏幕是否满足规范。具体来讲,所述确定部件330首先确定作为初始屏幕的第一屏幕是否满足第一模式信息。然后,所述确定部件330确定通过向第一模式信息应用中间程序60而获得的一组屏幕是否满足第二模式信息。这些确定过程可以使用非专利文献(6)中公开的传统上已知的技术。然后,在第一屏幕满足第一模式信息、并且通过向第一模式信息应用中间程序60而获得的一组屏幕满足第二模式信息的条件下,确定部件330确定每一屏幕均满足所述规范。当确定所述规范得以满足时,所述确定部件向提取部件310通知紧接于第二屏幕显示的第三屏幕是否满足第三模式信息,以便使所述提取部件确定第三屏幕是否满足第三模式信息。
图4是示例性地示出用于确定每一屏幕是否满足规范的处理过程的视图。首先,所述确定部件330确定第一屏幕是否满足第一模式信息(S400)。如果第一屏幕不满足第一模式信息(S400否),那么确定部件330确定所述规范没有被满足(S415),并且输出所确定的结果,以便终止所述处理过程。另一方面,如果第一屏幕满足第一模式信息(S400是),那么所述提取部件310从应用程序中提取部分程序50(S420),所述部分程序50在显示满足第一模式信息的任何屏幕期间响应于事件的出现而被执行。
接下来,所述生成部件320根据部分程序50来生成中间程序60(S430)。接下来,确定部件330借助于向第一模式信息应用中间程序60,来计算能够紧接于第一屏幕显示的一组屏幕(S440)。然后,所述确定部件330确定所计算的该组屏幕是否满足第二模式信息(S450)。如果该组屏幕不满足所述信息(S450否),那么确定部件330确定能够由所述应用程序显示的屏幕不满足所述规范(S415),并且终止该附图中示出的处理过程。在此情况下,确定部件330可以生成并且输出这样的信息,所述信息用于表明第一屏幕或者第二屏幕如何不同于模式信息。
另一方面,如果该组屏幕满足所述信息(S450是),那么确定部件330确定存储在规范存储部件300上的所有模式信息是否已经被确定了(S460)。例如,当用于规定将要由紧接于第二屏幕显示的第三屏幕满足的规范的第三模式信息被存储在规范存储部件300上时,对所有模式信息的确定仍未完成。为此,所述满足性确定系统30将处理返回至S420。也就是说,所述提取部件310根据第二模式信息和用于把显示从第二屏幕切换至第三屏幕的事件来提取部分程序,并且执行接下来的处理。
响应于已经完成了对所有模式信息的确定这一事实(S460是),确定部件330确定由应用程序所显示的每一个屏幕满足所述规范(S470),并且输出所确定的结果以便终止所述处理过程。
如上所述,依照就图4描述的处理过程而言,对于能够被显示的多个屏幕中的每一个而言,所述提取部件310可以根据对应于此屏幕的模式信息和能够在显示此屏幕期间生成的事件来提取部分程序,所述部分程序响应于在显示此屏幕期间事件的出现而执行。然后,对于多个模式信息中的每一个来说,生成部件320可以根据在显示所述屏幕期间执行的部分程序来生成中间程序,所述中间程序用于从满足此模式信息的一组屏幕计算因在显示此组中的屏幕期间出现事件而显示的一组屏幕。然后,在初始屏幕满足第一模式信息、并且通过向每一模式信息应用中间程序而获得的一组屏幕满足用于规定紧接于满足此模式信息的屏幕显示的屏幕的规范的模式信息的条件下,确定部件330可以确定每一屏幕均满足所述规范。
图5是示出了由满足性确定系统30进行的确定的示意图。所述文档数据库20存储其中描述了多个屏幕的初始屏幕的HTML文档,以及用于通过顺序地改变HTML文档来显示多个屏幕的应用程序。也就是说,多个屏幕中的每一个还是依照HTML描述的网页。另外,所述应用程序可以是嵌入在网页中的程序,并且依照JavaScript等描述。
所述规范存储部件300存储多个模式信息,所述模式信息用于规定将要由多个屏幕中的每一个满足的规范。另外,所述规范存储部件300存储这样的事件,通过所述事件,把显示从每一屏幕切换至其它屏幕中的每一个。所述确定部件330首先确定初始屏幕是否满足第一模式信息。接下来,确定部件330借助于根据第一模式信息生成的中间程序60来计算这样一组屏幕,所述屏幕能够在显示满足第一模式信息的屏幕期间依照事件的出现而被显示。所述确定部件330确定该组屏幕是否满足第二模式信息。同样地,确定部件330借助于根据第二模式信息生成的中间程序来计算这样一组屏幕,所述屏幕能够在显示满足第二模式信息的屏幕期间依照事件的出现而被显示。另外,所述确定部件330确定该组屏幕是否满足第三模式信息。依照这种处理过程,所述屏幕不满足任何模式信息,或者上述处理过程会被重复,直到完成了对所有模式信息的确定为止。
如同上述,依照本实施例的满足性确定系统30,能够在没有执行应用程序的情况下确定由应用程序顺序显示的每个屏幕是否满足规范。在此种确定的情况下,包括树操作指令序列的部分程序被变换为中间程序。因此,能够对满足预定条件的一组屏幕而不是单个屏幕执行处理,这是因为所述部分程序被变换为中间程序。因此,虽然没有实际执行程序,但是能够有效地确定能够依照该程序的执行显示的一组屏幕满足规范。
参考图10至14,将描述当应用程序紧接于复选框显示输入字段时的情况。
图10是示出了存储在规范存储部件300上的规范的第二示例的视图。在当前附图的左下方示出了用于规定在其上复选框没有被选中的第一屏幕的规范的第一模式信息。此外,当前附图的右下方示出了用于规定在其上复选框被选中的第二屏幕的规范的第二模式信息。把显示从第一屏幕切换至第二屏幕的事件是鼠标的左点击(T0)或者空格键的按下(T2)。把显示从第二屏幕切换至第一屏幕的事件是鼠标的左点击(T1)或者空格键的按下(T3)。
由于图10中示出的第一模式信息相当于就图6描述的第一模式信息,因此省略了对其的描述。除了第一模式信息以外,所述第二模式信息包括body标签中的span标签中的非终止符G9。G9包括input(输入)标签。也就是说,第二模式信息规定了第二屏幕应该包括input标签。
图11是示出了部分程序50的第二示例的视图。为了例证说明的目的,把函数checkBoxEvent从存储在文档数据库20上的应用程序中提取出来,并且显示在当前附图的上部。对于应用程序中包括的每一条件分支指令,所述提取部件310根据第一模式信息中规定的这些状态以及事件来确定执行哪一分支目标。如图10所示,把显示从第一屏幕切换至第二屏幕的事件是鼠标的左点击或者空格键的按下。为此,第3行和第4行上的条件分支指令的条件得以满足。也就是说,提取部件310确定执行从第5行到第16行的指令序列。
另外,第一模式信息包括属性值是false的checked属性。为此,第7行上的条件分支指令的条件没有被满足。也就是说,提取部件310确定执行从第11行开始的else段落。所述提取部件310通过在以这种方式执行而确定的分支目标处连续地对指令序列进行排队,来生成部分程序50。因此,部分程序50包括用于把checked属性的属性值修改为true的指令以及用于生成input标签的指令。
图12是示出了中间程序60的第二示例的视图。为了例证说明的目的,在当前附图的上部示出了部分程序50。生成部件320首先对部分程序50执行SSA(静态单赋值)变换,以便唯一地规定程序中每一个变量的定义,并且生成多个指令,所述指令的执行结果与部分程序50的执行结果相同。在当前附图的中间部分示出了所生成的指令序列。依照当前示例的部分程序50包括用于从初始屏幕中取出在其上出现事件的部分的指令、用于修改属性值的指令、以及用于添加标签作为树操作指令序列的指令。因此,对变量checkbox执行三次赋值。
为此,所述生成部件320把变量checkbox修改为三个中间变量$checkbox1、$checkbox2和$checkbox3。变量$checkbox1相当于一般示例中的变量$v0,变量$checkbox2相当于一般示例中的变量$v1,而变量$checkbox3相当于一般示例中的变量$vN,并且变量$unchecked相当于一般示例中的$doc1。然后,所述生成部件320生成用于向变量$checkbox1分配对象event.target的指令。接下来,所述生成部件320生成用于向变量$checkbox2分配树操作指令序列的第一处理结果的指令。也就是说,将在存储于变量$checkbox1的屏幕中、其checked属性的属性值被修改为true的屏幕分配给变量$checkbox2。接下来,所述生成部件320生成用于向变量$checkbox3分配树操作指令序列的第二处理结果的指令。也就是说,将在存储于变量$checkbox2的屏幕中、向其添加了标签input的屏幕分配给变量$checkbox3。然后,生成部件320生成用于向变量$unchecked分配屏幕的指令,其中所述屏幕是通过借助于变量$checkbox3的内容替换原始屏幕而获得的。因此,将其checked属性的属性值被修改为true并且向其添加了标签input的屏幕分配给变量$unchecked,用于存储操作后的屏幕。
依照上述变换,部分程序50被变换为其中对每一变量逐个执行赋值的SSA形式。然而,由于函数setAttributeNS、函数appendChild和函数removeChild是对单个屏幕进行操作的函数,因此,在这种状态下,无法从满足第一模式信息的一组屏幕计算满足第二模式信息的一组屏幕。为此,生成部件320使用树转换器对函数setAttributeNS、函数appendChild和函数removeChild中的每一个执行变换。由于函数setAttributeNS的变换相当于图9的变换,所以省略了对其的描述。图13中示出了函数applendChild的变换,并且图14中示出了函数removeChild的变换。
图13是示例性地示出用于进行把所述部分程序50变换为中间程序60的处理过程的树转换器的视图。在所述树转换器中,定义了状态q1和状态q2这两个状态。由函数appendChild进行的操作可以被表示为从状态q1到状态q2的转变。在这个树转换器中,状态q1中的每一标签在状态q2中保持不变,而仅仅标签input被添加。然而,由于变量$checkboxl不是由树转换器按照原样进行处理,所以生成部件320将其编码为二叉树。由于详细的说明通常可在非专利文献(7)中获知,所以省略了对其的描述。
图14是示例性地示出用于进行把所述部分程序50变换为中间程序60的处理过程的树转换器的视图。在所述树转换器中,定义了状态q1和状态q2这两个状态。由函数removeChild进行的操作可以被表示为从状态q1到状态q2的转变。在这个树转换器中,状态q1中的每一标签在状态q2中保持不变,而仅仅标签input被删除。另外,图14中示出的树转换器假设在HTML文档上只存在一个具有被称为input的名称的标签。当HTML文档中包括多个具有被称为input的名称的标签时,必须把可识别的数字附加到每一标签上,或者把每一标签改变为彼此互相不同的名称,以便标识每个标签。另外,由于在非专利文献(6)和(7)中详细描述了无法由如上所述的树转换器处理的处理过程,所以省略了对其的描述。
如上就图10至14所述得那样,依照所述满足性确定系统30,对于当已经选中了复选框时使屏幕显示紧接于复选框的输入字段的应用程序而言,能够有效地确定正由此程序显示的每一屏幕是否满足规范。
图15是示例性地示出了起到满足性确定系统30作用的信息处理设备500的硬件配置的视图。所述信息处理设备500包括CPU外围部件,所述CPU外围部件具有CPU 1000、RAM 1020和图形控制器1075,它们通过主机控制器1082彼此相连,所述信息处理设备500还包括输入-输出部件,所述输入-输出部件具有通信接口1030、硬盘驱动器1040和CD-ROM驱动器1060,它们通过输入-输出控制器1084与主机控制器1082相连,并且所述信息处理设备500还包括传统的输入-输出部件,所述传统的输入-输出部件具有ROM 1010、软盘驱动器1050和输入-输出芯片1070,它们与输入-输出控制器1084相连。
所述主机控制器1082将RAM 1020连接到CPU 1000以及图形控制器1075,以便以高传送速率访问RAM 1020。所述CPU 1000基于存储在ROM 1010和RAM 1020上的程序来操作,以便控制每一部件。所述图形控制器1075获取在RAM 1020中所提供的帧缓冲器上由CPU 1000生成的图像数据,并且在显示设备1080上显示所述数据。作为选择,所述图形控制器1075中可以包括用于存储从CPU 1000生成的图像数据的帧缓冲器。
输入-输出控制器1084把主机控制器1082连接到通信接口1030、硬盘驱动器1040和CD-ROM驱动器1060(它们都是相对快速的输入-输出设备)。所述通信接口1030经由网络与外部设备通信。硬盘驱动器1040存储将要由信息处理设备500使用的程序和数据。所述CD-ROM驱动器1060从CD-ROM 1095中读取程序或者数据,并且向RAM 1020或者硬盘驱动器1040提供程序或者数据。
另外,作为相对低速的输入-输出设备的ROM 1010、软盘驱动器1050和输入-输出芯片1070与输入-输出控制器1084相连。所述ROM 1010存储在启动信息处理设备500期间由CPU 1000执行的引导程序、依赖于信息处理设备500的硬件的程序等。所述软盘驱动器1050从软盘1090中读取程序或者数据,并且经由输入-输出芯片1070向RAM 1020或者硬盘驱动器1040提供程序或者数据。输入-输出芯片1070经由软盘1090、并行端口、串行端口、键盘端口、鼠标端口等连接各种输入-输出设备。
提供给信息处理设备500的程序被存储在记录介质、诸如软盘1090、CD-ROM 1095或者IC卡上,以便由用户提供。经由输入-输出芯片1070和输入-输出控制器1084从记录介质中读取程序,以便在信息处理设备500中安装并且执行程序。由于通过程序在信息处理设备500等上进行工作而执行的操作与在图1至14中描述的满足性确定系统30执行的操作相同,因此将省略对其的描述。
如上所述的程序可以被存储在外部存储介质上。除了包括软盘1090和CD-ROM 1095以外,存储介质还可以包括诸如DVD和PD之类的光记录介质、诸如MD之类的磁光记录介质、磁带介质、诸如IC卡之类的半导体存储器。另外,在与专用通信网和因特网相连的服务器系统中提供的诸如硬盘或者RAM之类的存储设备也可用作记录介质,以便经由网络向信息处理设备500提供程序。
虽然已经通过示例性实施例描述了本发明,但是,应该理解的是,在不脱离本发明的精神和范围的情况下,本领域技术人员可以做出许多变化和替换,本发明的范围仅仅由所附权利要求书限定。
权利要求
1.一种用于确定将要由应用程序顺序显示的多个屏幕是否满足制定的规范的系统,所述系统包括规范存储部件,用于存储用来规定将要由第一屏幕满足的规范的第一模式信息,用来规定将要由第二屏幕满足的规范的第二模式信息,以及使应用程序进行的显示从第一屏幕改变为第二屏幕的事件;提取部件,用于根据第一模式信息和所述事件,从应用程序中提取部分程序,所述部分程序在显示满足第一模式信息的任何屏幕期间响应于事件的出现而被执行;生成部件,用于根据部分程序,从满足第一模式信息的一组屏幕生成中间程序,所述中间程序用于计算在显示这个满足的组中的屏幕期间出现了所述事件的条件下要显示的一组屏幕;以及确定部件,用于在第一屏幕满足第一模式信息、并且通过向第一模式信息应用中间程序而获得的一组屏幕满足第二模式信息的条件下,确定多个屏幕满足制定的规范。
2.如权利要求1所述的系统,其中,对于应用程序中包括的每个条件分支指令而言,所述提取部件根据第一模式信息中规定的屏幕的状态以及所述事件,确定哪一分支目标被执行,并且提取在依照所述确定要执行的分支目标上的指令序列以及所述部分程序。
3.如权利要求1所述的系统,其中,所述生成部件对部分程序执行静态单赋值变换、即SSA变换,以便唯一地规定对部分程序中的每一变量的赋值,并且生成多个指令,所述多个指令具有与通过将部分程序作为中间程序执行而获得的结果相同的结果。
4.如权利要求3所述的系统,其中多个屏幕中的每一个是具有树结构的数据,其在开始标签和结束标签之间还包括另一个开始标签和结束标签,所述提取部件从第一屏幕中选择介于某一个开始标签和结束标签之间的数据,并且提取用于修改所选数据的树操作指令序列以及部分程序,并且所述生成部件把树操作指令序列变换为用于生成复制数据、修改复制数据、并且用修改后的复制数据替换第一屏幕中要复制的数据的指令序列,所述复制数据是通过从第一屏幕中复制介于开始标签和结束标签之间的这个数据而获得的。
5.如权利要求4所述的系统,其中多个屏幕中的每一个是依照超文本标记语言、即HTML描述的网页,所述应用程序是依照JavaScript描述的修改程序,并且修改此网页上的显示,所述提取部件提取用于从HTML文档中提取文档对象的指令、以及用于根据修改程序修改所提取的文档对象的指令,作为树操作指令序列,并且所述生成部件把树操作指令序列变换为用于通过复制从HTML文档提取的文档对象而生成复制数据、修改复制数据、并且用修改后的复制数据替换从HTML文档中提取的文档对象的指令序列。
6.如权利要求1所述的系统,其中所述规范存储部件存储多个用于规定将要由多个屏幕满足的规范的模式信息,以及使显示从多个屏幕中的每一个改变为其它屏幕中的每一个的事件,对于多个屏幕中的每一个,所述提取部件根据对应于此屏幕的模式信息和能够在显示此屏幕期间生成的事件来提取部分程序,所述部分程序在显示此屏幕期间响应于事件的出现而被执行,对于多个模式信息中的每一个,所述生成部件根据将要在显示此屏幕期间执行的部分程序,从满足此模式信息的一组屏幕生成中间程序,所述中间程序用于计算在显示这个满足的组中的屏幕期间出现所述事件的条件下要显示的一组屏幕,并且在初始屏幕的第一屏幕满足第一模式信息、并且通过向每一个模式信息应用中间程序而获得的一组屏幕满足用于规定紧接着满足此模式信息的屏幕显示的屏幕的规范的模式信息的条件下,所述确定部件确定多个屏幕满足制定的规范。
7.一种用于借助于信息处理设备来确定将要由应用程序顺序显示的多个屏幕是否满足制定的规范的方法,所述信息处理设备包括规范存储部件,用于存储用来规定将要由第一屏幕满足的规范的第一模式信息,用来规定将要由第二屏幕满足的规范的第二模式信息,以及使应用程序进行的显示从第一屏幕改变为第二屏幕的事件,并且所述方法包括如下步骤根据第一模式信息和所述事件,从应用程序中提取部分程序,所述部分程序在显示满足第一模式信息的任何屏幕期间响应于事件的出现而被执行;根据部分程序,从满足第一模式信息的一组屏幕生成中间程序,所述中间程序用于计算在显示这个满足的组中的屏幕期间出现了所述事件的条件下要显示的一组屏幕;并且在第一屏幕满足第一模式信息、并且通过向第一模式信息应用中间程序而获得的一组屏幕满足第二模式信息的条件下,确定多个屏幕满足制定的规范。
全文摘要
在不执行程序的情况下,确定将要通过这个程序的处理而顺序显示的多个屏幕是否满足规范。本发明的系统存储用于规定第一屏幕的规范的第一模式,用于规定第二屏幕的规范的第二模式,以及将程序进行的显示从第一屏幕切换至第二屏幕的事件。首先,根据第一模式和所述事件,从程序中提取响应于在显示满足第一模式的屏幕期间生成的事件而执行的部分程序。接着,根据部分程序来生成中间程序,所述中间程序用于计算响应于在显示满足第一模式的一组屏幕中的屏幕期间从这个组中生成的事件而显示的一组屏幕。接着,在第一屏幕满足第一模式、并且通过向第一模式应用中间程序而获得的一组屏幕满足第二模式的条件下,确定这些屏幕满足规范。
文档编号G06F17/30GK101051268SQ20071009216
公开日2007年10月10日 申请日期2007年4月2日 优先权日2006年4月3日
发明者立石孝彰, 齐藤新, 宫下尚, 田渕直, 户泽晶彦 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1