首页> 中国专利> 分析和组织软件应用程序中的物件的设备

分析和组织软件应用程序中的物件的设备

摘要

在一个交互式开发环境(IDE)(30)中,包括导航器(32),文档编辑器(34)和调试器(36),响应通过所述文档编辑器(34)从用户/开发人员处接收的命令/输入以浏览特定物件,所述导航器(32)从数据库(22)中检索物件记录以检索并显示所述文档编辑器(34)中与物件相关的文件。调试器(36)使用物体之间的关系/相关性信息以便于调试物件,并使用文档分析器(14)生成用户界面,来允许开发人员浏览并编辑包括诸如全局变量和其值的物件。

著录项

  • 公开/公告号CN101171571A

    专利类型发明专利

  • 公开/公告日2008-04-30

    原文格式PDF

  • 申请/专利权人 BEA系统公司;

    申请/专利号CN200680014893.9

  • 发明设计人 E·杂伊;S·本-罗莫丹;

    申请日2006-03-17

  • 分类号G06F9/44;

  • 代理机构北京纪凯知识产权代理有限公司;

  • 代理人赵蓉民

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 20:02:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-26

    授权

    授权

  • 2011-10-12

    专利申请权的转移 IPC(主分类):G06F9/44 变更前: 变更后: 登记生效日:20110831 申请日:20060317

    专利申请权、专利权的转移

  • 2008-06-25

    实质审查的生效

    实质审查的生效

  • 2008-04-30

    公开

    公开

说明书

相关申请交叉引用

【0001】本国际申请要求2005年3月18日申请的美国专利申请号11/083,644的优先权。

技术领域

【0002】本发明的实施例一般涉及软件开发领域,并具体涉及编程工具。

背景技术

【0003】目前,软件应用程序具有几个组件是常见的,这里不是所有组件都以同一种语言编写或使用相同的技术编写。例如,软件应用程序也可具有以Java,C++,XML(可扩展标记语言),HTML(超文本标记语言)等编写的组件,并可进一步包括基于不同技术,如Javaservlet,JavaBeans,Java服务器页面,企业JavaBeans(EJB)等的组件。通常的情形是不是所有组件都是由同一程序员或同一编程队伍编写的。组件甚至可以是促进应用程序开发的框架的一部分。框架提供了作为问题总解决方案的规范或实施(例如,类的集合)。框架的一个例子是Struts框架,其提供促进Web应用程序开发的组件。通常,为了用框架开发软件应用程序,开发人员要向框架中增加组件,因此增加的组件与框架的组件一起执行软件应用程序所要求的逻辑和组合功能。

【0004】假定在开发软件应用程序中,开发人员可能必须使用由其他人通常以不同语言编写的组件,则很可能由开发人员编写的代码包括语句或物件引用(reference to artifact)。这里使用的术语“物件(artifact)”指任何代码体,组件或引用代码体外定义的和作为分开实体独立于引用代码体存在的结构。通常物件是在引用代码之前创建的,并以与引用代码的语言不同的语言编写。例如,当为web应用程序创建Java服务器页面时,开发人员可引用所谓“VerifyCardNumber”的物件,其包括在线购买交易进行时校验消费者的信用卡号的逻辑。物件“VerifyCardNumber”可以是框架的一部分,同样可以先于为Java服务器页面编写的代码,并可以用不同的语言编写,如Java或C++。

【0005】在上面描述的软件开发方法中,保持语义和句法一致性可能有困难并要求详细了解所用的每个物件。

【0006】如果物件之间的一致性错误没有在创建或修改源代码过程中被检测,那么唯一的替代方法是在汇编的物件部署(deployed)后和运行时检测它们。可以用几种方式证明一致性错误,范围包括应用程序的小错误到灾难性失败。这些错误也可以长时间保持不被检测到从而导致应用程序在不合适的时间失效,有可能引起严重的经济后果。

发明内容

【0007】按照本发明的第一方面,提供的方法包括产生用户界面从而允许用户作出与应用程序的第一组件有关的输入;且如果该输入涉及物件,则向用户提供选择的关于物件的信息。

【0008】按照本发明的第二方面,提供的方法包括收集关于被应用程序第一组件中的语句引用的物件的信息;并为每个被语句引用的物件输出运行时间数据从而促进第一组件的调试。

【0009】按照本发明的第三方面,提供的方法包括为应用程序中的每个组件收集关于其中出现的物件的信息并将该信息存储在数据库中。

【0010】本发明的其他方面可从下面的详细描述中明显看出。

附图说明

【0011】图1示出源代码包括对物件引用的应用程序的组件;

【0012】图2示出根据本发明的一个实施例的文档分析器和数据库;

【0013】图3根据本发明的一个实施例以交互式开发环境(IDE)形式示出一种设备;

【0014】图4示出可根据本发明的一个实施例分析的代表性文档的物件;

【0015】图5图解说明了根据本发明一个实施例的技术插件(plug-in);

【0016】图6示出根据本发明的一个实施例由文档分析器执行的操作的流程图;

【0017】图7示出根据本发明的一个实施例的物件记录的例子;

【0018】图8示出根据本发明的一个实施例的数据库视图,其中可看到多个物件记录;

【0019】图9示出根据本发明的一个实施例的操作流程图,其用来在物件被编辑和改变时执行实时分析;

【0020】图10图解说明了根据本发明的一个实施例由IDE执行的操作的流程图,该操作是为了提供实时一致性检查和验证;

【0021】图11图解说明了根据本发明的一个实施例由IDE执行的操作的流程图,该操作是为了辅助开发人员为引用物件的语句作出合法选择;

【0022】图12图解说明了JSP源代码是如何通过XML配置文件与Java代码关联的;

【0023】图13示出相应于图12中Java源代码的Java方法的例子;

【0024】图14示出图12中JSP源代码的代表性代码;

【0025】图15示出根据本发明的一个实施例,在开发人员已经选择正确方法后的图12的JSP源代码;

【0026】图16和17示出本发明的一个实施例如何辅助从图12中JSP源代码导航到图12中Java源代码;

【0027】图18和19示出本发明的实施例如何提供实时一致性分析;以及

【0028】图20示出可用来执行本发明的实施例的硬件的例子。

具体实施方式

【0029】在下面的描述中,为了解释的目的,给出了多种具体细节以便提供对本发明透彻的理解。然而,显然本领域技术人员没有这些具体细节也可以实施本发明。在其他情形中,结构和装置仅以方框图的形式示出以便避免使本发明晦涩。

【0030】说明书中,“一个实施例”是指结合该实施例描述的特定的特征,结构或特性被包括在本发明的至少一个实施例中。在本说明书多个地方出现的短语“在一个实施例中”不一定是指同一个实施例,也不是与其他实施例绝对分开的或可替换的实施例。而且,这里描述的各种特征可由某些而非其他实施例展示。类似地,描述了各种要求,它们可以是对某些实施例而非对其他实施例的要求。

【0031】在一个实施例中,本发明提供了分析相关物件之间关系从而判断它们是否彼此一致的设备,即使物件是以不同编程语言实现的。可基于应用程序类型(如,.NET,J2EE)为任意文档集合和物件配置设备。在另一个实施例中,设备可经配置来分析特定架构或框架内的物件,如微软动态服务器页面,或阿帕奇开放源代码Struts框架。设备是可扩展的,并可扩展支持额外的语言或完全不同的架构或框架。

【0032】有利地,所述设备提供应用程序类型内所有物件和文档类型的相关性和一致性分析。在一个实施例中,文档分析可在给定物件在编辑器内修改时执行。一旦物件被编辑,通过多种指示符(如控制台信息,文本突出显示,鼠标在非法语句上呈现的信息)提供即时反馈。在关系的每个方向上该分析检查句法错误和语义错误。也就是,由引用不存在物件产生的错误(如,误命名界面引用)或具有一个或多个依赖关系的物件的改变(如被应用程序中其他物件使用的界面的改变)。

【0033】基于关于物件的信息和它们在全部文档内和文档间的关系,该设备在应用程序类型内的所有物件和文档类型上提供句法和语义完整性。在一个实施例中,该设备为被引用对象提供候选关键词和合法名称。例如,在J2EE中,当引用Java类界面编辑JSP时,在编辑器中提供类的候选方法名称的列表。

现在参考附图中的图1,参考数字10通常表示应用程序的组件。组件10是源代码包括对物件的引用的代表性组件。例如,在web应用程序情况下,组件10可以是Java服务器页面(JSP)形式的文档,其标题可以是,例如“home.jsp”,并可包括对独立于组件10存在的物件12的引用。如可从附图的图1中看到的那样,物件12中的某些物件是以不同于组件10的Java服务器页面技术的语言/技术编写的。

【0034】在本发明的一个实施例中,应用程序包括多个组件/文档10,每个组件/文档引用该应用程序的容器(container)或框架内的一组物件12,分析该应用程序以便确定关于物件的信息。因此,在一个实施例中,提供了文档分析器14,如从附图的图2中看到的那样。参考图2,在物件被创建时,文档分析器14分析物件。在一个实施例中,在物件被修改时,文档分析器14可以分析物件。文档分析器可以从文件系统16中导入物件以便分析。在一个实施例中,文档分析器14使用大量技术插件18,每个插件相应于特定的应用程序类型20。通常,应用程序类型相应于部署容器,如J2EE或.NET。每个技术插件18拥有关于物件的信息,该物件包括文档和确定文档10内部和它们之间的物件一致性的规则。技术插件18将在下面参考图5更详细地描述。

【0035】在一个实施例中,提供了数据库22以便存储关于物件的信息,该信息是由于文档分析器14执行分析而产生的。

【0036】图3根据本发明的一个实施例以交互式开发环境(IDE)30的形式示出一种设备。除了参考图2描述的组件,IDE 30包括导航组件或导航器32,文档编辑器34和调试器36。在一个实施例中,用户通过文档编辑器34与IDE 30互动。如果用户正在创建新物件,则文档分析器14检查物件的句法和语义错误并在数据库22中创建一个物件记录(或多个记录)。如果物件已经存在,那么文档分析器14检查对物件的改动,且任何检测到的错误被显示在文档编辑器34中。如果用户保存物件,则在文件系统16中存储或更新物件,并在数据库22中添加或更新物件记录。

导航

【0037】在一个实施例中,IDE 30支持跨越物件间关系的能力。在该实施例中,响应经文档编辑器34从用户/开发人员处接收以观察特定物件的命令/输入,导航器32在数据库22中检索物件记录,从而确定从文件系统16中得到哪些文件并显示在文档编辑器34中。

【0038】在一个实施例中,对于J2EE应用程序类型,数据库22内的Java服务器页面(JSP)文档40(参看图4)包括几个物件42并引用这些物件。物件42可包括文档的JSP文件(如home.jsp),一个或多个包括的JSP文件(如标题(header)header.jsp,导航JSPleftnav.jsp),某些图像文件(如titlebar.gif和logo.gif)和来自属性文件(rsrcs.properties)的资源文本。JSP文档40可以被显示在文档编辑器34中。由用户/开发人员发出并由IDE 30接收的任何查看特定物件42的导航命令使导航器32查询数据库22并从数据库22中检索对物件42的引用。然后导航器22使用该引用从文件系统16中检索物件。最终结果是特定物件42被显示在文档编辑器34中。

【0039】因为所有物件关系都保存在数据库22中,导航器32可跨越跨不同技术和不同架构层的关系。

技术分析插件

【0040】如上所述,文档分析器14利用技术分析插件18来提供分析和显示物件的逻辑。图5图解说明了根据本发明的一个实施例的技术分析插件18的组件。图5还示出根据一个实施例技术插件18如何与文档分析器14和文档编辑器34交互。参考图5,可以看到每个技术插件18包括阅读器50,编辑器52,验证器54和收集器56。阅读器50和编辑器52为文档编辑器34提供额外的专用技术逻辑。例如,根据该技术和相应于该技术的技术插件18的阅读器50如何被执行,阅读器50可示出图表而非文本。验证器54提供规则来控制由文档分析器14执行的句法和语义检查。收集器56提供设备以收集所有包括被分析技术的物件的元素。

数据库22的导入/创建和更新

【0041】图6示出根据本发明的一个实施例由文档分析器14执行的操作的流程图。参考图6,在过程60中,文档分析器14为存储在文件系统16中的应用程序检查每个文件,从而确定该文件是否是经配置由文档分析器14管理的文件。例如,某些文件不由文档分析器14管理。不由文档分析器14管理的文件的例子包括图像文件,如JPEG格式的文件。如果文件由文档分析器14管理,则在62处理流程跳转到过程64,在过程64所有与该文件相关的物件被收集。在执行过程64中,文档分析器14使用适当技术插件18的收集器56。在过程66,文档分析器14分析收集的物件从而确定关于该物件的信息。在本发明的一个实施例中,物件的信息包括诸如物件名称,类型,父物件,物件路径名称,物件引用和物件依赖关系的信息。在一个实施例中,在过程66,文档分析器14生成包括物件信息的物件记录。这样的物件记录70的例子在图7中示出。在过程66中,文档分析器14在数据库22中存储每个物件记录70。图8示出数据库22,其中可看到各种物件记录70。在图8中,箭头72指示物件记录70间的依赖关系信息。

【0042】在本发明的一个实施例中,物件记录70提供导航器32和调试器36,和它们要求执行各自功能的信息。

调试器36

【0043】在一个实施例中,调试器36使用物件之间的关系/依赖关系信息从而促进一个技术物件的调试,该物件取决于另一个技术的物件。类似于导航器32,调试器36使用数据库22跨越或导航至被引用的物件。调试器36也利用文档分析器14生成用户界面(UI),从而允许开发人员查看和编辑物件,该物件包括诸如全局变量和它们的值的信息,这些值仅作为保持整个应用程序的充分的语义理解的结果确定的。按照这里揭示的技术,在一个实施例中,文档分析器14收集关于被应用程序的第一组件(源代码)的语句引用的物件的信息。

【0044】然后,调试器36为该语句引用的每个物件输出运行时间数据以便于第一组件的调试。根据关于存储在数据库22中的每个被引用物件的信息,调试器36能够输出运行时间数据。

交互作用——动态分析

【0045】图9示出根据本发明的一个实施例的操作流程图,该操作用于在物件被编辑和被改变时执行实时分析。参考图9,当在文档编辑器34中的输入停止时,超时会引发执行实时一致性检查。在过程80,文档分析器14确定被编辑的物件是否被改变。如果物件已经改变,文档分析器14通过调用收集器56取回所有物件,从而在过程82为相关的文档物件从数据库22收集所有引用。在过程84,文档分析器14为被引用物件调用验证器54以检查一致性并记录任何错误。文档分析器重复过程80,82和84,直到在86的检查确定没有其它引用要被检查。当所有引用都已被检查时,分析完成且一致性或错误日志可以多种方式显示,包括简单拷贝错误日志至控制台或在文档编辑器34中的物件视图中突出显示错误。

【0046】附图中的图10图解说明了根据本发明的一个实施例由IDE30执行的操作的流程图,以便提供实时一致性检查和验证。参考图10,在过程90,文档编辑器34接收编辑所开发的应用程序的组件的源代码的输入。响应输入,按照上述技术,文档分析器14执行一致性检查从而确保源代码和所有被源代码引用的物件之间的一致性。如果在92一致性检查发现错误,那么在过程94开发人员被告知该错误。

【0047】图11图解说明了根据本发明的一个实施例由IDE 30执行的操作的流程图,以便辅助开放人员为引用物件的语句作合法选择。参考图11,在过程100,接收涉及物件的输入的第一字符,该输入由开发人员输入。例如,输入可以是在物件中定义的变量名称。在过程102,基于对给物件的输入的合法选择,文档分析器14按照上述技术查询数据库22,并在过程104显示输入的可能选择的列表。在过程106,接收开发人员从列表选择的选项并用来自动完成输入。

例子

【0048】本发明的实施例如何被开发人员使用的例子将在下面说明。参考图12,Java服务器页面(JSP)包括JSP源代码110,其引用Java源代码112。JSP源代码110和Java源代码112之间的关系是在XML配置文件114中定义的。

【0049】图13示出截屏116,其中可看到相应于信用卡处理应用程序的Java源代码112的Java方法的例子。

【0050】图14示出相应于用户界面的JSP源代码110的代表性代码118,该用户界面收集并在web页面上显示信用卡信息。代表性代码118引用以Java编写的方法获得信用卡号码。代表性代码118存JSP语句中引用该方法,该JSP语句将文本属性120设定为由Java编写的程序处理的值。上面描述的由本发明的实施例执行的分析保持关于JSP源代码110和Java源代码112之间关系的信息,该信息由XML配置文件114描述。Java源代码112中定义的可应用的方法可显示,如以下拉式列表122显示,从而辅助开发人员输入正确的方法名称。

【0051】图15示出开发人员从列表选择适当方法名称并将其加入JSP语句120后的JSP源代码110。

【0052】图16和17示出本发明的实施例如何可以辅助从JSP源代码110到Java源代码112的导航。

【0053】图16示出程序员选择引用称作“cardNumber”的Java方法参数126的截屏,以便从JSP源代码110导航到Java源代码112。

【0054】响应程序员选择Java方法参数126,按照上述技术,查询数据库22从而确定适当的Java源代码112的方法,然后突出显示该方法并显示给程序员,如图17中的参考数字128所示。

【0055】图18和19示出本发明的实施例如何提供实时一致性分析。在图18中,示出了在getCardNumber方法已经改变为getCreditCardNumber(如标识号130指示)后的Java源代码112,从而在Java源代码112和其引用的JSP源代码110之间产生不一致性。在一个实施例中,立即显示错误消息132从而警告程序员存在引用已经改变的方法的JSP。图18示出错误消息132,同时显示Java源代码112,而图19示出错误消息132,同时显示JSP源代码。

【0056】参考图20,参考数字150通常表示可用来根据一个实施例执行IDE 30或执行这里所述的任何技术的硬件。硬件150通常包括耦合到存储器154的至少一个处理器152。处理器152可表示一个或更多个处理器(如微处理器),存储器154可表示随机存储器(RAM)装置,其包括硬件150的主存储装置,以及任何补充级存储器,如缓存,非易失性存储器或备份存储器(如可编程存储器或闪存),只读存储器等。此外,可以认为存储器154包括物理上位于硬件150中其它地方的存储器,如处理器152中的任何缓存,以及用作虚拟存储器的任何存储容量,如在大容量存储装置160中存储的。

【0057】硬件150通常也接收大量输入和输出以便与外部交换信息。为了与用户或操作员接口,硬件150可包括一个或更多个用户输入装置156(如,键盘,鼠标等)和显示器158(如阴极射线管(CRT)监视器,液晶显示器(LCD)面板)。

【0058】对于额外的存储,硬件150也可包括一个或更多个大容量存储装置160,如软盘或其他可移动硬盘驱动器,硬盘驱动器,直接存取存储装置(DASD),光驱(如紧凑型光盘(CD)驱动器,数字多用途盘(DVD)驱动器等)和/或磁带驱动器,以及其他装置。而且,硬件150可包括与一个或更多个网络162(如局域网(LAN),广域网(WAN),无线网络,和/或因特网,以及其他网络)的接口,从而允许与耦合到网络的其他计算机传递信息。应该理解,硬件150通常包括本领域公知的在处理器152和组件154,156,158和162中的每个组件之间的合适的模拟和/或数字接口。

【0059】硬件150在操作系统164的控制下操作并执行各种计算机软件应用程序166,组件,程序,对象,模块等(如执行上述操作的程序或模块)。而且,各种应用程序,组件,程序,对象等也可在经网络162耦合到硬件150的另一个计算机中的一个或更多个处理器上执行,如在分布式计算环境中,从而使执行计算机程序功能所要求的处理也可经网络分配到多个计算机。

【0060】一般地,实施本发明的实施例而执行的例行程序可作为操作系统或专用应用程序,组件,程序,对象,模块或被称为“计算机程序”的指令序列的一部分实施。计算机程序通常包括在不同时间设定在计算机的不同存储器和存储装置中的一个或多个指令集合,且当被计算机中的一个或更多个处理器读取和执行时,使计算机执行操作,该操作是执行涉及本发明的各个方面的元素必须的。而且,虽然已经在全功能计算机和计算机系统的环境中描述了本发明,本领域技术人员可以理解,本发明的各种实施例可以各种形式作为程序产品分销,且无关特定类型的机器和用来实现分销的计算机可读介质,本发明都能等效应用。计算机可读介质的例子包括但不局限于可记录类型的介质,如易失性和非易失性存储器装置,软盘和其他可移动盘,硬盘驱动器,光盘(如紧凑型只读存储器盘(CD ROM),数字多用途盘(DVD)等),以及其他装置,和传输型介质,如数字和模拟通信链路。

【0061】虽然已经参考特定的示例性实施例说明了本发明,显然,在不偏离权利要求设定的本发明较宽泛的精神前提下,可以对本发明做出多种改进和变化。因此,说明书和附图应被当作说明性的而非限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号