CN1647043B - 根据源文件优先列表的文件连编目标文件的方法和设备 - Google Patents

根据源文件优先列表的文件连编目标文件的方法和设备 Download PDF

Info

Publication number
CN1647043B
CN1647043B CN03809111.9A CN03809111A CN1647043B CN 1647043 B CN1647043 B CN 1647043B CN 03809111 A CN03809111 A CN 03809111A CN 1647043 B CN1647043 B CN 1647043B
Authority
CN
China
Prior art keywords
application program
source file
source
file
appointment
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.)
Expired - Lifetime
Application number
CN03809111.9A
Other languages
English (en)
Other versions
CN1647043A (zh
Inventor
K·E·瓦西利克
D·包三世
R·A·查维兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
BEA Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEA Systems Inc filed Critical BEA Systems Inc
Publication of CN1647043A publication Critical patent/CN1647043A/zh
Application granted granted Critical
Publication of CN1647043B publication Critical patent/CN1647043B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供一种迭代软件开发环境来执行修改的相关性分析,用于利用一组优先连编规则(402)从一个或者多个源文件连编目标文件和它所依赖的所有文件。在一个实施例中,连编规则指明如何能从不同源文件类型生成不同类型的目标文件。给定的目标文件类型可与若干规则(402)关联,每一个规则具有不同的优先权,用于从不同源文件类型连编目标。在一个实施例中,如果存在多于一个的能用于生成给定目标文件的源文件,则使用具有最高优先权的规则(403)。在一个实施例中,连编环境识别如何通过识别最高优先权规则来生成特定的目标文件,所述最高优先权规则为关联的源文件类型而存在。并且,开发环境识别之前用于生成目标文件的新的源文件的出现。在本发明的一个实施例中,如果识别了这样的新源文件,或者如果先前用于连编目标文件的一个或者多个源文件被确定已经在被目标文件自己的连编日期/时间指明的之前修改,重新连编目标文件。

Description

根据源文件优先列表的文件连编目标文件的方法和设备
技术领域
本发明一般地涉及软件开发环境领域。更具体的,本发明涉及用于迭代软件开发的环境,其中可从任何一个源文件的优先列表连编目标。
背景技术
随着软件公司努力击败对方而将“最新和最好”的软件产品和技术推向市场,对减少开发次数的要求,从来没有达到像今天那么高。在一个典型的软件开发生命周期过程中,软件开发团队在成功开发出最终的软件应用程序之前可经过分析、设计、构造和测试这些步骤。通常,在开发出产品之前要求开发者执行代码构造、修改和设计测试的多次迭代。每个增加的软件改变完成之后,在进行到下一个改变之前对其进行观察和测试,对于开发者通常是有用的。然而,在编译的语言环境中重新连编、部署和测试复杂软件工程的过程十分繁琐和消耗时间。当要求巨大数量的迭代时,累积的连编和部署时间变得非常可观,很可能延迟软件产品在为了保持竞争力而需要短的开发时间的商业中的发布。
由此,采用了许多机制通过减少开发时间来加速软件生产。例如,集成开发环境(IDE)提供给开发者各种软件开发工具,用于诸如编辑、编译、调试等等的任务。虽然IDE可简化软件开发,对于在较低层次提供迭代软件开发能力仍显的有用,所以可以在IDE内部和从命令行得到这些能力,其中一些有经验的程序员更加愿意在没有与IDE所伴随的开销的情况下工作。
也引入了高级的编译器,其自动分析软件工程中源文件之间的复杂的相关性,并且根据有改动的源文件,仅仅对工程的最小子集进行重新编译。然而,这些编译器只为单种源文件(比如C++或者Java)工作,必须被手工激活每次连编,并且不具有任何快速决定是否需要重新连编而不需要执行相关性分析的方法。
因此,期望在迭代软件开发领域中能有更大的改进。
发明内容
根据本发明的一种用于根据源文件优先列表的任何一个文件连编目标文件的方法,包括:接收识别一个应用程序的一个请求;确定对应于请求的应用程序是否出现在指定的搜索路径内;如果确定应用程序未出现在指定的搜索路径内,根据一个或者多个源文件的自动编译来生成应用程序;如果确定应用程序出现在指定的搜索路径内,确定是否需要重新生成应用程序;和如果确定需要重新生成应用程序,则根据一个或者多个源文件的自动编译来重新生成应用程序.这里,应用程序的生成包括:识别对应于应用程序的目标文件;访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和用于生成所述关联的目标文件的一个对应的源文件类型;从有序的编译规则集选择一个编译规则;确定对应于选择的编译规则的源文件类型的源文件是否存在于用于连编所识别的目标文件的、指定的源路径之内;如果确定源文件是存在于指定的源路径之内,根据选择的编译规则连编所识别的目标文件;更新与应用程序关联的连编日期/时间;并且如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,则源文件的一个表示被存储在第一持久数据结构中,如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,则取得的源文件表示被存储在第二持久数据结构中.
根据本发明的一种用于根据源文件优先列表的任何一个文件连编目标文件的方法,包括:识别对应于由一个请求所识别的应用程序的目标文件;访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和用于生成关联的目标文件的、一个对应的源文件类型;从有序的编译规则集选择一个编译规则;确定对应于选择的编译规则的源文件类型的源文件是否存在于用于连编识别的目标文件的、指定的源路径之内;其中如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,则源文件的一个表述被存储在第一持久数据结构中,并且其中如果应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,则取得的源文件表示被存储在第二持久数据结构中。
根据本发明的一种设备,包括:处理器;和由处理器运行的一接收器模块,适于接收识别一应用程序的请求;由处理器运行的一确定器模块,可通信地与接收器模块相连接,并适于确定对应于请求的应用程序是否存在于指定的搜索路径内;并且如果确定应用程序存在于指定的搜索路径内,则确定是否需要重新生成应用程序;和由处理器运行的生成器模块,可通信地与确定器模块连接,并适于促使根据一个或者多个源文件的自动编译来生成应用程序;如果确定应用程序未存在于指定的搜索路径内,并且如果确定需要重新生成应用程序,促使根据一个或者多个源文件的自动编译来重新生成应用程序;这里,生成器模块进一步适于:识别对应于应用程序的目标文件;访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和用于生成关联的目标文件的、一个对应的源文件类型;从有序的编译规则集选择一个编译规则;确定对应于选择的编译规则的源文件类型的源文件是否存在于用于连编识别的目标文件的、指定的源路径之内;如果确定源文件是存在于指定的源路径之内,促使根据选择的编译规则连编识别的目标文件;更新与应用程序关联的连编日期/时间;并且如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,则源文件的一个表示被存储在第一持久数据结构中,如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,则取得的源文件表示被存储在第二持久数据结构中。
根据本发明的一种设备,包括:处理器;由处理器操作的一识别模块,适于识别对应于由一请求所识别的应用程序的目标文件;由处理器操作的一选择模块,可通信地与所述识别模块耦合,适于访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和一个用于生成该关联的目标文件的、对应的源文件类型;并从有序的编译规则集选择一个编译规则;由处理器操作的确定模块,可通信地耦合到所述选择模块,适于确定对应于选择的编译规则的源文件类型的源文件是否存在于,用于连编识别的目标文件的、指定的源路径之内;其中所述确定模块进一步适于,如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,就在第一持久性数据结构中存储源文件的一个表示,如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,就将获得的源文件表示存储在第二持久性数据结构中。
附图说明
通过在附图中说明的示例实施例非限制地描述本发明,在图中类似的引用表示类似的元件,并且其中:
图1是说明本发明的一个实施例的框图;
图2是根据一个实施例说明应用程序生成/重新生成过程的概述的流程图;
图3是根据一个实施例说明图1连编过程的更详细的视图的流程图;
图4根据一个实施例说明图3的修改的相关性分析过程的更详细的视图;
图5说明用作确定是否需要重新连编应用程序的过程的一个实施例;
图6是说明本发明的一个可替换实施例的框图;和
图7说明适于实施本发明的示例计算机系统。
具体实施方式
在下面的描述中,将描述本发明的不同方面。但是,对于本领域的技术人员明显的是本发明可能实施本发明的一部分或者所有方面。出于解释的目的,对特定数目、素材和配置进行描述,以便提供对本发明全面的理解。然而,对于本领域的技术人员也明显的是实施本发明而不用特定的细节。在其它例子中,省略或者简化公知的特征,以便使本发明不被模糊。
部分描述将根据由基于处理器的设备执行的操作给出,使用了诸如接收、确定、生成等术语,与本领域的技术人员向本领域的其它技术人员传递他们工作的主旨通常所使用的方式一致。由本领域的技术人员所周知的,以电、磁或者光信号形式的量可以通过基于处理器设备的机械和电子部件被存储、传输、合并以及操纵;并且,术语处理器包括微处理器、微型处理器、数字信号处理器等,其可以是独立的、附属的或者嵌入的。
将各种操作按照最有助于理解本发明的方式描述为多个依次的离散步骤,但是描述的顺序不应当被理解成暗示这些操作是必要的顺序相关的。特别地,并不需要按所出现的顺序执行这些操作。另外,描述反复地使用短语“一个实施例”,这通常不是指相同的实施例,当然,也可以是相同的。
概述
本发明可有益地被用作减少迭代软件开发周期.在本发明的一个实施例中,提供连编环境,以执行修改的相关性分析,用于利用一组优先连编规则从一个或者多个源文件连编应用程序和它所依赖的所有文件.在一个实施例中,连编规则指明如何能从不同源文件类型生成不同类型的目标文件(例如“.class”文件可以使用java编译器从“.java”文件连编).给定的目标文件类型可与若干规则关联,每一个规则具有不同的优先权,用于从不同源文件类型连编目标.在一个实施例中,如果存在多个能用于生成给定目标文件的源文件,则使用具有最高优先权的规则(403).在一个实施例中,连编环境识别如何通过识别最高优先权规则来生成特定的目标文件,所述最高优先权规则为关联的源文件类型而存在.并且,连编环境识别具有对应的连编规则的新的源文件的出现,该规则具有比先前用于生成目标文件的源文件的优先权更高的优先权.在本发明的一个实施例中,如果识别了这样的具有较高优先权的新源文件,或者如果先前用于连编目标文件的一个或者多个源文件被确定已经在被目标文件自己的连编日期/时间之前修改,则重新连编目标文件.
图1是说明本发明的一个实施例的框图。在图1中装备了请求处理器104,用于接收经由请求收听器102提供的应用程序请求。请求收听器可以是例如交互命令shell、图形操作系统、HTTP服务器等等。请求收听器102基于请求处理器104的结构和功能验证请求在语法上的有效性。在本发明的一个实施例中,请求处理器104确定一个应用程序是否存在于指定的搜索路径上,以满足请求。在本发明的一个实施例中,如果对应于接收的请求的应用程序不存在于指定的搜索路径上,请求处理器104激活连编环境106来自动地生成应用程序,而不用进一步的人工交互。由此,开发者能从响应一个或者多个错误条件而必须手工初始化连编过程中被解放出来,而在现有技术中,如不响应这些错误条件,将被返回。
为了连编请求的应用程序,请求处理器104激活连编环境106,将应用程序的名字作为连编目标而传递。连编环境106表示用本发明的技术有益地修改的连编环境,以在生成目标文件期间执行修改的相关性分析。在修改的相关性分析过程期间,连编环境106利用指定的源路径找到与目标关联的源文件,并检查源文件的外部相关性(例如经由周知的可变类型分析技术)以识别源文件所依赖的外部目标文件。源路径用作寻找源文件,以编译目标文件,而搜索路径用来寻找所请求的应用程序。。在一些环境中,源路径可以与搜索路径相同,或者可以和搜索路径不同。反过来,连编环境106递归检查每个外部目标文件的相关性,直到识别所有外部相关性为止(即是,应用程序相关性的传递闭合)。
根据本发明的一个实施例,当连编环境106递归地识别原始目标文件的所有外部相关性时,连编环境106利用规则集105中的优先连编规则连编遗漏的目标文件,并用元数据109增加两个数据结构,命名为rebuildIfNewer和rebuildIfExists,以记录相关性列表。在一个实施例中,规则集105描述候选规则的优先列表,为每个用于生成目标文件的源文件类型描述一个。在一个实施例中,规则的优先列表按照优先权进行分类。开发者可根据每种源文件类型所具备的功能和目标文件所期望的功能分配规则的优先权。当然,只要保持每个规则相关优先权,规则集能够被安排为任何顺序。在一个实施例中,连编环境106按优先权顺序迭代经过与当前目标类型关联的规则集105中的每个规则。对于每个规则,连编环境106通过为规则所要求的类型的源文件搜索源路径以及和目标文件名字匹配的名字来确定规则是否被用于连编目标文件。如果找到合适的源文件,则该规则被用于连编目标,并且源文件位置(名字和路径)在规则搜索结束前被存储在rebuildIfNewer数据结构中。但是,如果没有找到恰当的源文件,期望的源文件位置(名字和路径)被存储在rebuildIfExists数据结构中,并且使用次高优先权规则继续规则搜索过程。该过程持续执行直到识别用于从可得的源文件的集合连编每个所要求的目标文件的一个规则。如果连编过程不能确定一个恰当的规则来连编所要求的目标文件中的其中一个,连编过程出错并退出。一旦生成应用程序107,连编环境106将包括包含相关性的rebuildIfNewer和rebuildIfExists数据结构的元数据109与应用程序107关联,并将应用程序107传递到执行引擎109用于执行。在一个实施例中,应用程序107包含元数据109的位置的引用,由此在一个可替换的实施例中,元数据109自身被嵌入到应用程序107中。在一个实施例中,元数据109被存储在持久的数据结构中。通过在持久的数据结构中存储元数据,元数据可被用于关联应用程序的后续重新连编,而不要求连编环境来执行附加的相关性分析,因此加快了连编过程并进一步减少了开发时间。
上述描述是基于以下假设的,即所请求的应用程序不存在于指定的搜索路径内。但是,根据本发明的一个实施例,如果确定对应与请求的应用程序确实存在,请求处理器104根据一个或者多个标准做出决定,以确定是否需要在应用程序被执行之前重新连编应用程序。在一个实施例中,是否需要重新连编应用程序的确定取决于在元数据109的rebuildIfNewer数据结构中的源文件是否已经在比应用程序的更近的连编日期/时间之前被修改过。在一个实施例中,在rebuildIfNewer数据结构中列出的每个源文件的连编日期/时间与最近的应用程序连编日期/时间比较,并且如果任何对应的源文件具有比应用程序连编日期/时间更早的日期/时间,则重新编译应用程序。类似地,在一个实施例中,执行指定的源路径的搜索,以确定在元数据109的rebuildIfExists数据结构中列出的任何源文件(即是比用于连编应用程序的源文件具有较高优先权的那些源文件)现在是否存在于指定的源路径上。如果是,自动触发应用程序的重新连编。
图2是根据一个实施例说明应用程序生成/重新生成过程的概述的流程图。开始,接收一个请求并由例如请求收听器102(框202)解释。在根据本发明的内容,该请求假设多种包括但不局限于以下形式:直接由用户通过命令行接口输入命令,或者经由网络连接从远程客户端接收一个或者多个数据包。接着,识别搜索路径和源路径,用于分别定位应用程序和各种用于生成应用程序的源文件(框204)。在一个实施例中,请求是基于HTTP的识别一个URL的消息,所述URL识别用于提取搜索以及源路径的元数据的位置。接下来,确定对应于请求的应用程序是否存在于搜索路径中(框206)。如果应用程序没有出现在搜索路径中,连编环境开始连编该应用程序(框208),该应用程序最终被执行(框210)。但是,如果应用程序出现在搜索路径内,考虑是否需要重新连编应用程序来做出进一步确定(框212)。如果是,重现连编应用程序(框214)并且接着被执行(框210)。如果不需要重新连编应用程序(框212),则仅执行存在的应用程序(框210)而不用重新连编。
图3是根据一个实施例说明图1连编过程的更详细的视图的流程图。开始,连编环境106执行一个修改的相关性分析,其中相关性被存储在两个数据结构内,即是持久的rebuildIfNewer和rebuildIfExists数据结构(302)。在一个实施例中,rebuildIfNewer数据结构是一个列表,用于识别那些源文件最近被用作连编应用程序,然而rebuildIfExists数据结构是一个列表,用于识别具有比那些用作连编应用程序的源文件有更大优先权的源文件(即是那些出现在rebuildIfNewer数组中的那些源文件)(框304)。在执行修改的相关性分析之后,编译一个或者多个源文件(例如通过相关性分析所确定的),以生成应用程序(框306),使得在较后的时间重新调用相关性而无需连编环境106在初始的相关性分析后再次递归地打开和分析源文件。在一个实施例中,存储在每个列表中的相关性被作为元数据存储在应用程序内。在连编过程结束时,系统连编时间/日期被存储在元数据109内,以反映最近连编应用程序的时间(框308)。
图4根据一个实施例说明图3的修改的相关性分析过程的更详细的视图.开始,连编环境106识别待连编的所请求的目标文件(框401).连编环境106接着访问优先规则集105,以检索优先的规则,用于根据目标文件类型连编所请求的目标文件(框402).在一个实施中,连编环境106按照优先权顺序迭代经过规则列表,以根据与规则相关的源文件类型的存在来识别用作连编目标文件的最高优先权规则(框403).对于每个规则,连编环境106确定源文件是否存在,以使用该规则来连编目标(框404).如果是,源文件位置(名字和路径)被存储在rebuildIfNewer数据结构中(框406),使用选择的规则连编该目标(框407),并且连编外部目标的相关性(框409).如果仍旧有另外的目标文件待连编(框411),则选择另一个目标(框413)并且重复该过程.但是,如果已经连编了包括应用程序的所有目标文件,连编过程即告成功完成.
如果请求用选择的规则来连编目标的源文件不存在(框404),则遗漏的源文件的期望的位置(名字和路径)被存储在rebuildIfExists数据结构(框408)。如果在规则集105中仍然剩余未被选择的另外的规则,则选择具有次高相关优先权(即是剩余的最高优先权)的规则并且过程继续(框412)。如果没有规则剩余,连编过程结束并且生成一个指明不能够使用所提供的规则和可用的源文件来连编请求的目标的错误(框414)。在一个实施例中,该过程继续,直到识别和连编了所有外部相关性,或者连编环境识别不能够被连编的目标。
图5说明用作确定是否需要重新连编应用程序的过程的一个实施例。在确定是否需要重新连编应用程序中,rebuildIfNewer数据结构被迭代地遍历,以确定在rebuildIfNewer数据结构中所识别的源文件的修改日期/时间是否比系统连编日期/时间更近(框506)。如果答案是“否”,那么迭代地遍历rebuildIfExists数据结构并且确定rebuildIfExists数据结构所识别的任何源文件是否出现在指定的源路径内(框508)。如果rebuildIfExists数据结构所识别的源文件没有出现在指定的源路径内,那么不需要重新连编(框512)。但是,如果任何rebuildIfNewer数据结构中所识别的源文件的修改日期/时间比系统连编日期/时间更近,或者rebuildIfExists数据结构所识别的源文件出现在指定的源路径内,那么需要重新连编(框510)。
示例应用
图6是说明本发明的一个可替换实施例的框图。在图6中,远程客户端601通过网络600结合了本发明的技术,向web服务器615发送基于HTTP的请求。web服务器615表示一个或者多个基于Java的web服务的主机,所述服务可以由诸如客户端601的远程客户端所公共地访问。在一个实施例中,请求提供指明web服务器615上公共可访问资源的URL。在一个实施例中,URL用作识别一个应用程序的名字,该应用程序用作实现示例说明的实施例的web服务和包含搜索路径和选择路径的一个部署描述符。
在一个实施例中,请求被服务应用容器602接收并由服务应用604处理。在一个实施例中,服务应用604表示设计为接收web服务请求和解析请求以识别要求用来响应请求的应用程序的服务应用。在一个实施例中,服务应用604确定对应于指明的URL的应用程序是否存在于搜索路径内并根据结果分派请求。例如,对应的应用程序存在于搜索路径内,则服务应用604首先确定应用程序是否需要如前面描述的那样被重新连编(参看例如图5)。如果应用程序不需要被重新连编,服务应用604将应用程序分派给执行引擎610,在其上执行应用程序。但是,如果应用程序需要被重新连编,则服务应用604将应用程序的名字提供给连编环境606,其接着进行连编处理。同样的,如果应用程序不存在于搜索路径内,服务应用604将应用程序的名字提供给连编环境606,以生成一个应用程序,接着自动执行该应用程序。
主计算机系统示例
图7说明适于驻有本发明的软件开发环境的示例计算机系统.如图所示,计算机系统700包括一个或者多个处理器702,和系统存储器704.另外,计算机系统700包括大容量存储设备706(比如磁盘、硬盘、CDROM等)、输入/输出设备708(键盘、光标控制器等)和通信接口710(网络接口卡、调制解调器等).通过被表示为一个或者多个总线的系统总线712,各元件相互连接.在多个总线的情况下,它们由一个或者多个总线桥接器(未示出)桥接.这些元件的每一个执行在现有技术中所知的传统功能.特别地,系统存储器704和大容量存储器706被用作存储实现本发明的程序指令的工作拷贝和永久拷贝.程序指令的永久拷贝可在工厂中或者厂区通过例如分布介质(未示出)或者通过通信接口710(从分布服务器(未示出))被加载到大容量存储器706中.这些元件的结构是已知的,所以不需要进一步地描述.
结论和后记
这样,从上述的描述可以看出,已经描述了具有优先连编规则的迭代软件开发环境。虽然本发明的描述结合了示例以及上述列举的实施例,但是本发明不限于这些描述的实施例。可以与如在下面的权利要求中叙述的本发明的范围一致来做许多修改和变化。这样,上述实施例只是示例性的,并且不局限于本发明。

Claims (32)

1.一种用于根据源文件优先列表的任何一个文件连编目标文件的方法,包括:
接收识别一个应用程序的一个请求;
确定对应于请求的应用程序是否出现在指定的搜索路径内;
如果确定应用程序未出现在指定的搜索路径内,根据一个或者多个源文件的自动编译来生成应用程序;
如果确定应用程序出现在指定的搜索路径内,确定是否需要重新生成应用程序;和
如果确定需要重新生成应用程序,则根据一个或者多个源文件的自动编译来重新生成应用程序;
其中应用程序的生成包括:
识别对应于应用程序的目标文件;
访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和用于生成所述关联的目标文件的一个对应的源文件类型;
从有序的编译规则集选择一个编译规则;
确定对应于选择的编译规则的源文件类型的源文件是否存在于用于连编所识别的目标文件的、指定的源路径之内;
如果确定源文件是存在于指定的源路径之内,根据选择的编译规则连编所识别的目标文件;
更新与应用程序关联的连编日期/时间;
并且如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,则源文件的一个表示被存储在第一持久数据结构中,如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,则取得的源文件表示被存储在第二持久数据结构中。
2.权利要求1的方法,其中一个或者多个源文件对应于一个有序的编译规则集中指定的一个或者多个优先的源文件类型。
3.权利要求1的方法,其中源文件的表示包括与对应的源文件关联的文件名和路径。
4.权利要求1的方法,其中确定是否需要重新生成应用程序包括确定对应于所述第一持久数据结构的成员的任何源文件是否具有比应用程序的连编日期/时间更近的一个日期/时间。
5.权利要求4的方法,其中重新生成应用程序包括自动地编译对应于所述第一持久数据结构的成员、具有比应用程序的连编日期/时间更近的一个日期/时间的源文件。
6.权利要求1的方法,其中确定是否需要重新生成应用程序包括确定所述第二持久数据结构的任何成员是否出现在所述指定的源路径内。
7.权利要求1的方法,其中第一和第二持久数据结构的至少一个包括一个列表。
8.权利要求1的方法,其中源路径和搜索路径是相同的。
9.权利要求1的方法,其中通过网络连接将请求作为一个或者多个数据包接收。
10.一种用于根据源文件优先列表的任何一个文件连编目标文件的方法,包括:
识别对应于由一个请求所识别的应用程序的目标文件;
访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和用于生成关联的目标文件的、一个对应的源文件类型;
从有序的编译规则集选择一个编译规则;
确定对应于选择的编译规则的源文件类型的源文件是否存在于用于连编识别的目标文件的、指定的源路径之内;
其中如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,则源文件的一个表示被存储在第一持久数据结构中,并且
其中如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,则取得的源文件表示被存储在第二持久数据结构中。
11.权利要求10的方法,还包括:
接收识别一个应用程序的一个请求,其中所述应用程序对应于所述识别的目标文件;
确定应用程序是否出现在指定的搜索路径内;并且
如果确定应用程序未出现在指定的搜索路径内,则至少部分基于所述第一和第二持久数据结构的内容并根据所述有序的编译规则集来自动地编译应用程序。
12.权利要求11的方法,其中源路径和搜索路径是相同的。
13.权利要求11的方法,还包括:
如果确定应用程序出现在指定的搜索路径内,确定是否需要重新生成应用程序;
如果确定需要重新生成,则重新生成应用程序;和
更新与应用程序关联的连编日期/时间。
14.权利要求13的方法,其中确定是否需要重新生成应用程序包括确定对应于所述第一持久数据结构的成员的任何源文件是否具有比应用程序的连编日期/时间更近的一个日期/时间。
15.权利要求13的方法,其中确定是否需要重新生成应用程序包括确定所述第二持久数据结构的任何成员是否出现在所述指定的源路径内。
16.权利要求10的方法,其中第一和第二持久数据结构的至少一个包括一个列表。
17.一种设备,包括:
处理器;和
由处理器运行的一接收器模块,适于接收识别一应用程序的请求;
由处理器运行的一确定器模块,可通信地与接收器模块相连接,并适于确定对应于请求的应用程序是否存在于指定的搜索路径内;并且如果确定应用程序存在于指定的搜索路径内,则确定是否需要重新生成应用程序;和
由处理器运行的生成器模块,可通信地与确定器模块连接,并适于
如果确定应用程序未存在于指定的搜索路径内,促使根据一个或者多个源文件的自动编译来生成应用程序;
并且如果确定需要重新生成应用程序,促使根据一个或者多个源文件的自动编译来重新生成应用程序;
其中生成器模块进一步适于:
识别对应于应用程序的目标文件;
访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和用于生成关联的目标文件的、一个对应的源文件类型;
从有序的编译规则集选择一个编译规则;
确定对应于选择的编译规则的源文件类型的源文件是否存在于用于连编识别的目标文件的、指定的源路径之内;
如果确定源文件是存在于指定的源路径之内,促使根据选择的编译规则连编识别的目标文件;
更新与应用程序关联的连编日期/时间;
并且如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,则源文件的一个表示被存储在第一持久数据结构中,如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,则取得的源文件表示被存储在第二持久数据结构中。
18.权利要求17的设备,其中一个或者多个源文件对应于一个有序的编译规则集中指定的一个或者多个优先的源文件类型。
19.权利要求17的设备,其中源文件的表示包括与对应的源文件关联的文件名和路径。
20.权利要求17的设备,其中确定器模块适于确定对应于所述第一持久数据结构的成员的任何源文件是否具有比应用程序的连编日期/时间更近的一个日期/时间。
21.权利要求20的设备,其中生成器模块进一步促使自动地编译对应于所述第一持久数据结构的成员的、具有比应用程序的连编日期/时间更近的一个日期/时间的源文件。
22.权利要求17的设备,其中所述确定器模块适于通过确定所述第二持久数据结构的任何成员是否出现在所述指定的源路径内,来确定是否需要重新生成应用程序。
23.权利要求17的设备,其中第一和第二持久数据结构的至少一个包括一个列表。
24.权利要求17的设备,其中源路径和搜索路径是相同的。
25.权利要求17的设备,其中通过网络连接将请求作为一个或者多个数据包接收。
26.一种设备,包括:
处理器;
由处理器操作的一识别模块,适于识别对应于由一请求所识别的应用程序的目标文件;
由处理器操作的一选择模块,可通信地与所述识别模块耦合,适于访问与识别的目标文件关联的有序的编译规则集,有序的编译规则集中的每一个规则识别目标文件类型和一个用于生成该关联的目标文件的、对应的源文件类型;并从有序的编译规则集选择一个编译规则;
由处理器操作的确定模块,可通信地耦合到所述选择模块,适于确定对应于选择的编译规则的源文件类型的源文件是否存在于,用于连编识别的目标文件的、指定的源路径之内;
其中所述确定模块进一步适于,如果对应于选择的编译规则的源文件类型的源文件存在于指定的源路径之内,就在第一持久性数据结构中存储源文件的一个表示,如果对应于选择的编译规则的源文件类型的源文件不存在于指定的源路径之内,就将获得的源文件表示存储在第二持久性数据结构中。
27.权利要求26的设备,进一步包括:
由处理器操作的接收器模块,可操作地和识别模块相耦合,用于接收识别应用程序的请求,其中所述应用程序对应于所述识别的目标文件;
确定模块进一步适于确定应用程序是否出现在指定的搜索路径内;以及
由处理器操作的生成器模块,可操作地与所述确定模块耦合,如果确定应用程序未现在指定的搜索路径内,使该设备能够促使至少部分基于所述第一和第二持久数据结构的内容并根据所述有序的编译规则集来自动地编译应用程序;以及更新与应用程序关联的连编日期/时间。
28.权利要求27的设备,其中源路径和搜索路径是相同的。
29.权利要求27的设备,进一步包括:
所述确定模块进一步适于,如果确定应用程序出现在指定的搜索路径内,则确定是否需要重新生成应用程序;
生成器模块进一步适于,如果确定需要重新生成,促使重新生成应用程序。
30.权利要求29的设备,其中所述确定模块进一步适于,确定对应于所述第一持久数据结构的成员的任何源文件是否具有比应用程序的连编日期/时间更近的一个日期/时间。
31.权利要求29的设备,其中所述确定模块进一步适于确定所述第二持久数据结构的任何成员是否出现在所述指定的源路径内。
32.权利要求26的设备,其中第一和第二持久数据结构的至少一个包括一个列表。
CN03809111.9A 2002-02-22 2003-02-12 根据源文件优先列表的文件连编目标文件的方法和设备 Expired - Lifetime CN1647043B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/082,795 US6922827B2 (en) 2002-02-22 2002-02-22 Iterative software development environment with prioritized build rules
US10/082,795 2002-02-22
PCT/US2003/004460 WO2003073274A1 (en) 2002-02-22 2003-02-12 Iterative software development environment with prioritized build rules

Publications (2)

Publication Number Publication Date
CN1647043A CN1647043A (zh) 2005-07-27
CN1647043B true CN1647043B (zh) 2010-05-05

Family

ID=27753182

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03809111.9A Expired - Lifetime CN1647043B (zh) 2002-02-22 2003-02-12 根据源文件优先列表的文件连编目标文件的方法和设备

Country Status (6)

Country Link
US (2) US6922827B2 (zh)
EP (1) EP1485801A4 (zh)
CN (1) CN1647043B (zh)
AU (1) AU2003211055A1 (zh)
CA (1) CA2477783A1 (zh)
WO (1) WO2003073274A1 (zh)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080092B2 (en) * 2001-10-18 2006-07-18 Bea Systems, Inc. Application view component for system integration
US7516447B2 (en) 2002-02-22 2009-04-07 Bea Systems, Inc. Methods and apparatus for building, customizing and using software abstractions of external entities
US7155438B2 (en) 2002-05-01 2006-12-26 Bea Systems, Inc. High availability for event forwarding
US8135772B2 (en) * 2002-05-01 2012-03-13 Oracle International Corporation Single servlets for B2B message routing
US7676538B2 (en) 2002-05-02 2010-03-09 Bea Systems, Inc. Systems and methods for application view transactions
US7350184B2 (en) * 2002-05-02 2008-03-25 Bea Systems, Inc. System and method for enterprise application interactions
US7222148B2 (en) 2002-05-02 2007-05-22 Bea Systems, Inc. System and method for providing highly available processing of asynchronous service requests
US6988099B2 (en) 2002-06-27 2006-01-17 Bea Systems, Inc. Systems and methods for maintaining transactional persistence
US7650591B2 (en) * 2003-01-24 2010-01-19 Bea Systems, Inc. Marshaling and un-marshaling data types in XML and Java
US7293038B2 (en) 2003-02-25 2007-11-06 Bea Systems, Inc. Systems and methods for client-side filtering of subscribed messages
US20040167915A1 (en) * 2003-02-25 2004-08-26 Bea Systems, Inc. Systems and methods for declaratively transforming data objects between disparate representations
US7752599B2 (en) * 2003-02-25 2010-07-06 Bea Systems Inc. Systems and methods extending an existing programming language with constructs
US7584474B2 (en) 2003-02-25 2009-09-01 Bea Systems, Inc. Systems and methods for transaction chaining
US7774697B2 (en) 2003-02-25 2010-08-10 Bea Systems, Inc. System and method for structuring distributed applications
US7076772B2 (en) 2003-02-26 2006-07-11 Bea Systems, Inc. System and method for multi-language extensible compiler framework
US7650276B2 (en) 2003-02-26 2010-01-19 Bea Systems, Inc. System and method for dynamic data binding in distributed applications
US7707564B2 (en) 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US8032860B2 (en) * 2003-02-26 2011-10-04 Oracle International Corporation Methods for type-independent source code editing
US7539985B2 (en) * 2003-02-26 2009-05-26 Bea Systems, Inc. Systems and methods for dynamic component versioning
US20040230955A1 (en) * 2003-02-26 2004-11-18 Bea Systems, Inc. System for multi-language debugging
US7636722B2 (en) 2003-02-28 2009-12-22 Bea Systems, Inc. System and method for describing application extensions in XML
US7444620B2 (en) * 2003-02-28 2008-10-28 Bea Systems, Inc. Systems and methods for a common runtime container framework
US7650592B2 (en) 2003-03-01 2010-01-19 Bea Systems, Inc. Systems and methods for multi-view debugging environment
US7676788B1 (en) 2003-03-25 2010-03-09 Electric Cloud, Inc. Architecture and method for executing program builds
US7539976B1 (en) * 2003-03-25 2009-05-26 Electric Cloud, Inc. System and method for intelligently distributing source files within a distributed program build architecture
KR100532467B1 (ko) * 2003-09-18 2005-12-01 삼성전자주식회사 서로 다른 버전에서 생성된 디버깅 정보 파일들을 이용한소스 코드 레벨 디버깅을 제공하는 엠시유 응용프로그램검증 시스템 및 그 방법
US7596782B2 (en) * 2003-10-24 2009-09-29 Microsoft Corporation Software build extensibility
US7950000B2 (en) * 2004-03-17 2011-05-24 Microsoft Corporation Architecture that restricts permissions granted to a build process
US7890604B2 (en) 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US8171474B2 (en) 2004-10-01 2012-05-01 Serguei Mankovski System and method for managing, scheduling, controlling and monitoring execution of jobs by a job scheduler utilizing a publish/subscription interface
US7631006B2 (en) * 2005-03-25 2009-12-08 Microsoft Corporation Managing team software projects using virtual containers
GB2427048A (en) 2005-06-09 2006-12-13 Avecho Group Ltd Detection of unwanted code or data in electronic mail
US7546583B2 (en) * 2005-07-12 2009-06-09 International Business Machines Corporation Real options based iterative development program metrics
US20080052663A1 (en) * 2006-07-17 2008-02-28 Rod Cope Project extensibility and certification for stacking and support tool
US7797689B2 (en) * 2005-12-12 2010-09-14 Microsoft Corporation Using file access patterns in providing an incremental software build
US8151253B2 (en) * 2006-03-27 2012-04-03 Oracle International Corporation Efficient generation of executable file from program files when some of the program files expressly incorporate other program files
US20080046858A1 (en) * 2006-08-15 2008-02-21 Zeligsoft Inc. Method and apparatus for merge condition detection
US7886265B2 (en) 2006-10-03 2011-02-08 Electric Cloud, Inc. Process automation system and method employing property attachment techniques
US7725524B2 (en) 2006-10-03 2010-05-25 Electric Cloud, Inc. Process automation system and method having a hierarchical architecture with multiple tiers
US8042089B2 (en) * 2006-10-03 2011-10-18 Electric Cloud, Inc. Process automation system and method employing multi-stage report generation
US8719766B1 (en) * 2006-10-16 2014-05-06 The Math Works, Inc. System and method for identifying and adding files to a project manifest
US9729513B2 (en) 2007-11-08 2017-08-08 Glasswall (Ip) Limited Using multiple layers of policy management to manage risk
GB2444514A (en) 2006-12-04 2008-06-11 Glasswall Electronic file re-generation
US8799448B2 (en) * 2006-12-20 2014-08-05 Microsoft Corporation Generating rule packs for monitoring computer systems
US8266477B2 (en) 2009-01-09 2012-09-11 Ca, Inc. System and method for modifying execution of scripts for a job scheduler using deontic logic
US9069644B2 (en) 2009-04-10 2015-06-30 Electric Cloud, Inc. Architecture and method for versioning registry entries in a distributed program build
US20110239195A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Dependence-based software builds
US8627286B2 (en) * 2010-03-26 2014-01-07 Oracle International Corporation Fully declarative build system for build optimization
US8566779B2 (en) * 2010-05-21 2013-10-22 Salesforce.Com, Inc. Visually prioritizing information in an agile system
US9104991B2 (en) * 2010-07-30 2015-08-11 Bank Of America Corporation Predictive retirement toolset
US8782595B1 (en) 2011-10-06 2014-07-15 Google Inc. Systems and methods for rule based meta-programming of actions for rule based build systems
US8949802B1 (en) * 2011-10-18 2015-02-03 Google Inc. Sharding program compilation for large-scale static analysis
US9164744B2 (en) * 2011-11-29 2015-10-20 International Busines Machines Corporation Method and system for program building
US9286043B2 (en) * 2013-03-15 2016-03-15 Microsoft Technology Licensing, Llc Software build optimization
GB2518880A (en) 2013-10-04 2015-04-08 Glasswall Ip Ltd Anti-Malware mobile content data management apparatus and method
US20150100945A1 (en) * 2013-10-08 2015-04-09 International Business Machines Corporation Resuming a software build process
US10061577B2 (en) 2014-10-14 2018-08-28 Electric Cloud, Inc. System and method for optimizing job scheduling within program builds
US9330264B1 (en) 2014-11-26 2016-05-03 Glasswall (Ip) Limited Statistical analytic method for the determination of the risk posed by file based content
CN105718298B (zh) * 2014-12-03 2019-02-15 龙芯中科技术有限公司 动态编译方法及装置
US10019461B2 (en) * 2015-03-26 2018-07-10 Ca, Inc. Transparent and near-real time code deploys
US9910649B2 (en) * 2016-01-19 2018-03-06 International Business Machines Corporation Integrating and sharing software build component targets
CN108920250B (zh) * 2018-06-05 2021-11-19 麒麟合盛网络技术股份有限公司 应用程序容器化的方法及装置
US20230021414A1 (en) * 2021-07-26 2023-01-26 SafeOps LLC Security tool integrated into build platform to identify vulnerabilities

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035120A (en) * 1997-05-28 2000-03-07 Sun Microsystems, Inc. Method and apparatus for converting executable computer programs in a heterogeneous computing environment
US6286134B1 (en) * 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
US6314559B1 (en) * 1997-10-02 2001-11-06 Barland Software Corporation Development system with methods for assisting a user with inputting source code

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2190487A1 (en) * 1994-05-16 1995-11-23 Daniel Kenneth Freeman Instruction creation device
US5778231A (en) * 1995-12-20 1998-07-07 Sun Microsystems, Inc. Compiler system and method for resolving symbolic references to externally located program files
US5872977A (en) * 1997-08-08 1999-02-16 International Business Machines Corporation Object-oriented method and apparatus for creating a makefile
JPH1165832A (ja) * 1997-08-21 1999-03-09 Sony Corp ソースコード変換方法及び記録媒体
US6279151B1 (en) * 1998-01-20 2001-08-21 International Business Machines Corporation Method and apparatus for remote source code inclusion
JP4130713B2 (ja) * 1998-10-21 2008-08-06 松下電器産業株式会社 プログラム変換装置
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US6622300B1 (en) * 1999-04-21 2003-09-16 Hewlett-Packard Development Company, L.P. Dynamic optimization of computer programs using code-rewriting kernal module
US6526570B1 (en) * 1999-04-23 2003-02-25 Sun Microsystems, Inc. File portability techniques
US6694290B1 (en) * 1999-05-25 2004-02-17 Empirix Inc. Analyzing an extended finite state machine system model
US6370682B1 (en) * 1999-09-15 2002-04-09 Siemens Atkiengesellschaft System and method for developing reusable flexible and platform independent software using components
US6654952B1 (en) * 2000-02-03 2003-11-25 Sun Microsystems, Inc. Region based optimizations using data dependence graphs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035120A (en) * 1997-05-28 2000-03-07 Sun Microsystems, Inc. Method and apparatus for converting executable computer programs in a heterogeneous computing environment
US6314559B1 (en) * 1997-10-02 2001-11-06 Barland Software Corporation Development system with methods for assisting a user with inputting source code
US6286134B1 (en) * 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment

Also Published As

Publication number Publication date
EP1485801A4 (en) 2006-09-13
US6922827B2 (en) 2005-07-26
EP1485801A1 (en) 2004-12-15
US20030163799A1 (en) 2003-08-28
WO2003073274A1 (en) 2003-09-04
CA2477783A1 (en) 2003-09-04
AU2003211055A1 (en) 2003-09-09
US20050278318A1 (en) 2005-12-15
CN1647043A (zh) 2005-07-27

Similar Documents

Publication Publication Date Title
CN1647043B (zh) 根据源文件优先列表的文件连编目标文件的方法和设备
US5966536A (en) Method and apparatus for generating an optimized target executable computer program using an optimized source executable
Krüger et al. Where is my feature and what is it about? a case study on recovering feature facets
US7937692B2 (en) Methods and systems for complete static analysis of software for building a system
US7334219B2 (en) Method and system for object level software testing
EP0883057B1 (en) Method and apparatus for software component analysis
Crnkovic Component‐based software engineering—new challenges in software development
KR100513551B1 (ko) 주문 제작 컴퓨터시스템을 위한 소프트웨어 설치 및 테스트방법및 시스템
CN101601012B (zh) 具有场景支持的面向生成器图的编程框架
CN110337642A (zh) 通过使用测试用例来执行测试的方法和装置
CN111832236B (zh) 一种芯片回归测试方法、系统、电子设备及存储介质
CN1890632B (zh) 确定由代码改变引起的不利影响的可能性的方法和系统
US20060206348A1 (en) System and method for business process integration
CN101719092A (zh) 用于面向服务架构的测试数据创建和执行系统
KR19990023214A (ko) 주문 제작 컴퓨터시스템을 위한 소프트웨어 설치 및 테스트를 촉진하는 데이타베이스
CN101866315A (zh) 软件开发工具的测试方法及系统
US7594217B2 (en) Matching client interfaces with service interfaces
EP1909170B1 (en) Method and system for automatically generating a communication interface
CN102144230A (zh) 基于记录的代码结构
US20070124723A1 (en) Monitoring dynamic aspect oriented applications at execution time
CN116719735A (zh) 一种测试用例生成方法及装置
KR101901310B1 (ko) 사용자 중심의 상호 연계 통합 애플리케이션 제공 시스템
CN111723134A (zh) 信息处理方法、装置、电子设备及存储介质
KR102240454B1 (ko) 키워드 관계 구조 기반의 질의 분석을 이용한 복합키워드 동의어 추출 방법 및 시스템
Suihko Migrating Windows Sales Configurator Application To Web Based Application

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ORACLE INT CORP

Free format text: FORMER OWNER: BEA SYSTEMS CORP.

Effective date: 20110831

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20110831

Address after: California, USA

Patentee after: ORACLE INTERNATIONAL Corp.

Address before: California, USA

Patentee before: BEA SYSTEMS, Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20100505