專利名稱::具有場(chǎng)景支持的面向生成器圖形的編程框架的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明的實(shí)施方式涉及計(jì)算機(jī)領(lǐng)域;且更具體地,涉及利用運(yùn)行時(shí)(runtime)來(lái)編程和執(zhí)行代碼的領(lǐng)域。
背景技術(shù):
:面向?qū)ο缶幊堂嫦驅(qū)ο缶幊淌且环N計(jì)算機(jī)編程范例。在面向?qū)ο缶幊痰暮竺娴睦砟钍怯?jì)算機(jī)程序可以被視為包括相互作用的單個(gè)單元(稱為對(duì)象或?qū)嵗?的集合,而不是傳統(tǒng)地將程序視為函數(shù)的集合或簡(jiǎn)單視為用于計(jì)算機(jī)的指令列表。對(duì)象是用于將數(shù)據(jù)與操作該數(shù)據(jù)的方法綁定的語(yǔ)言機(jī)制。每一個(gè)對(duì)象能夠通過(guò)方法被調(diào)用、處理數(shù)據(jù)以及向其他對(duì)象提供結(jié)果。每一個(gè)對(duì)象可以被視為具有獨(dú)特角色或職責(zé)的獨(dú)立機(jī)器或施動(dòng)者。反射式面向?qū)ο蟮恼Z(yǔ)言是具有特定的特性集合的編程語(yǔ)言(例如,類、對(duì)象/實(shí)例、繼承、反射等),但是反射式基于對(duì)象的語(yǔ)言有時(shí)用于標(biāo)記具有這些特性的一些子集(例如對(duì)象)的編程語(yǔ)言。出于本文的需要,短語(yǔ)"面向?qū)ο笤创a"以及"面向?qū)ο蟠a"用于指用具有這些特性的語(yǔ)言編寫(xiě)的代碼(例如,用反射式面向?qū)ο蟮恼Z(yǔ)言編寫(xiě)的代碼、用反射式基于對(duì)象的語(yǔ)言編寫(xiě)的代碼)。在過(guò)程語(yǔ)言、非發(fā)射式面向?qū)ο蟮恼Z(yǔ)言以及非反射式基于對(duì)象的語(yǔ)言是一般不支持這些特性的編程語(yǔ)言的情況下,轉(zhuǎn)換技術(shù)可以用于將這些特性提供給(例如,通過(guò)仿真)適合用這些語(yǔ)言編寫(xiě)的代碼;且由此,這些技術(shù)將這些語(yǔ)言轉(zhuǎn)換成反射式基于對(duì)象的語(yǔ)言或反射式面向?qū)ο蟮恼Z(yǔ)言。(這些技術(shù)不需要仿真面向或基于對(duì)象的語(yǔ)言的所有特性,而是可以只仿真對(duì)本文剩余部分感興趣的這些特性)。出于本文的需要,短語(yǔ)"面向?qū)ο笤创a"和"面向?qū)ο蟠a"還可以用于指這些轉(zhuǎn)換后的過(guò)程語(yǔ)言代碼、非反射式面向?qū)ο?、以及非反射式基于?duì)象的語(yǔ)言代碼。通過(guò)示例的方式而并非限定,本文主要描述用反射式面向?qū)ο蟮恼Z(yǔ)言編寫(xiě)面向?qū)ο笤创a。同樣,術(shù)語(yǔ)對(duì)象和實(shí)例在這里可以互換使用。在面向?qū)ο缶幊讨兄饕褂玫男g(shù)語(yǔ)方法指專門(mén)與類(稱作類方法、靜態(tài)方法或工廠方法(factorymethod))或?qū)ο?稱為實(shí)例方法)相關(guān)聯(lián)的一段代碼。如同過(guò)程編程語(yǔ)言中的過(guò)程,方法通常包括執(zhí)行動(dòng)作的語(yǔ)句序列、將這些動(dòng)作參數(shù)化的輸入?yún)?shù)的集合以及可能還有返回的一些種類的輸出值。當(dāng)程序員使用面向?qū)ο笳Z(yǔ)言寫(xiě)程序時(shí),產(chǎn)生的代碼從概念上可以視為包括四種基本類型的代碼。第一種類型包括操作輸入的實(shí)例以提供輸出實(shí)例的命令(這里稱為"轉(zhuǎn)換"代碼);一般被寫(xiě)為方法(這里稱為"轉(zhuǎn)換"方法)。第二種類型包括引起運(yùn)行時(shí)以實(shí)例化類實(shí)例的實(shí)例實(shí)例化命令(這里被稱為"實(shí)例實(shí)例化"代碼)。第三種包括調(diào)用以上實(shí)例的屬性方法(存取程序、轉(zhuǎn)變器(mutator)等)的屬性操作命令(這里稱為"數(shù)據(jù)準(zhǔn)備"代碼)。第四種包括命令序列,該命令序列使用合適的實(shí)例(其中合適的實(shí)例包括用作參量(argument)的實(shí)例、實(shí)例方法使用的實(shí)例以及類方法使用的元類實(shí)例)啟動(dòng)方法調(diào)用排序,以規(guī)定什么實(shí)例的什么轉(zhuǎn)換方法被調(diào)用,以什么順序,以及利用哪些實(shí)例的哪些參數(shù)響應(yīng)于數(shù)據(jù)準(zhǔn)備代碼做出的改變(這里稱為"手動(dòng)調(diào)用排序"代碼)。手動(dòng)調(diào)用排序代碼有時(shí)被編寫(xiě)為與轉(zhuǎn)換方法分開(kāi)的方法,且從而手動(dòng)調(diào)用排序代碼包括用于轉(zhuǎn)換方法的調(diào)用命令序列。程序-一般在數(shù)據(jù)準(zhǔn)備代碼與手動(dòng)調(diào)用排序代碼(其還可以提取(dipinto)實(shí)例實(shí)例化代碼)之間重復(fù),所述手動(dòng)調(diào)用排序代碼可以再調(diào)用轉(zhuǎn)換代碼(其也可以提取實(shí)例實(shí)例化代碼和數(shù)據(jù)準(zhǔn)備代碼)。應(yīng)當(dāng)理解這是程序的概念性描述,因此,不應(yīng)當(dāng)認(rèn)為在看待程序上是絕對(duì)的。運(yùn)行時(shí)術(shù)語(yǔ)運(yùn)行時(shí)在這里用于指運(yùn)行用相同和/或不同語(yǔ)言編寫(xiě)的其他代碼的基本代碼的程序或庫(kù)。由此,運(yùn)行時(shí)是在程序運(yùn)行時(shí)(包括與操作系統(tǒng)一起工作以提供功能諸如數(shù)學(xué)函數(shù)、輸入和輸出)支持程序的效用函數(shù)的集合。這些使程序員沒(méi)有必要不斷地重新編寫(xiě)在編程語(yǔ)言中規(guī)定的或操作系統(tǒng)提供的基本能力。由于運(yùn)行時(shí)與操作系統(tǒng)之間的區(qū)分可能模糊,因此術(shù)語(yǔ)運(yùn)行時(shí)在這里用于指與操作系統(tǒng)分開(kāi)的代碼和/或是操作系統(tǒng)一部分的代碼。早期運(yùn)行時(shí),例如FORTRAN的運(yùn)行時(shí),提供諸如數(shù)學(xué)運(yùn)算的特征。其他語(yǔ)言添加了更復(fù)雜的特征——例如存儲(chǔ)器無(wú)用信息集合,通常與對(duì)象支持相關(guān)聯(lián)。最近的語(yǔ)言傾向于具有相當(dāng)大的具有相當(dāng)多功能的運(yùn)行時(shí)。許多面向?qū)ο蟮恼Z(yǔ)言還包括已知為"調(diào)度程序"和"類裝載器"的系統(tǒng)。JavaVirtualMachine(JVM)是這種運(yùn)行時(shí)的一個(gè)示例其還在運(yùn)行時(shí)解譯或匯編可動(dòng)二進(jìn)制Java程序(字節(jié)代碼)。公共語(yǔ)言運(yùn)行時(shí)(CLR)框架是運(yùn)行時(shí)的另一個(gè)示例。編程和執(zhí)行框架一種框架包括三個(gè)基本區(qū)域,在該框架中向終端用戶提供應(yīng)用。第一個(gè)區(qū)域包括操作系統(tǒng)和運(yùn)行時(shí)的創(chuàng)建。該第一個(gè)區(qū)域由具有非常高級(jí)編程技能的程序員來(lái)執(zhí)行。當(dāng)在該區(qū)域工作時(shí),程序員分別被稱為操作系統(tǒng)程序員和運(yùn)行時(shí)程序員。當(dāng)創(chuàng)建面向?qū)ο笳Z(yǔ)言的運(yùn)行時(shí)的時(shí)候,運(yùn)行時(shí)程序員支持執(zhí)行在轉(zhuǎn)換代碼、實(shí)例實(shí)例化代碼、數(shù)據(jù)準(zhǔn)備代碼以及手動(dòng)調(diào)用排序代碼中使用的各種類型的命令(例如,實(shí)例實(shí)例化命令、數(shù)據(jù)準(zhǔn)備命令以及方法調(diào)用命令)。第二個(gè)區(qū)域包括由運(yùn)行時(shí)運(yùn)行的面向?qū)ο髴?yīng)用源代碼的創(chuàng)建。第二個(gè)區(qū)域再次由具有非常高級(jí)編程技能以及能理解應(yīng)用的業(yè)務(wù)目的的程序員來(lái)執(zhí)行。當(dāng)在該區(qū)域中工作時(shí),程序員被稱為應(yīng)用程序員。當(dāng)用面向?qū)ο蟮木幊陶Z(yǔ)言創(chuàng)建應(yīng)用時(shí),應(yīng)用程序員為要被創(chuàng)建的特定應(yīng)用編寫(xiě)特定的轉(zhuǎn)換代碼、實(shí)例實(shí)例化代碼、數(shù)據(jù)準(zhǔn)備代碼以及手動(dòng)調(diào)用排序代碼。作為這些的一部分,如果應(yīng)用需要圖形用戶界面,則應(yīng)用程序員還為特定應(yīng)用設(shè)計(jì)圖形用戶界面并編碼;從而還被稱為應(yīng)用設(shè)計(jì)者。第三個(gè)區(qū)域包括由運(yùn)行時(shí)運(yùn)行的應(yīng)用程序的使用。第三個(gè)區(qū)域由不需要具有任何編程技能的終端用戶來(lái)執(zhí)行。手動(dòng)調(diào)用排序代碼與應(yīng)用的創(chuàng)建相關(guān)聯(lián)的最大的開(kāi)銷(xiāo)一般包括手動(dòng)調(diào)用排序代碼的調(diào)試和/或優(yōu)化。對(duì)于數(shù)據(jù)改變的每次時(shí)機(jī),應(yīng)用程序員必須考慮其影響并編寫(xiě)手動(dòng)調(diào)用排序代碼以使合適實(shí)例的合適轉(zhuǎn)換方法隨著合適的輸入以合適的順序被調(diào)用。應(yīng)用程序員犯的典型錯(cuò)誤包括1)以錯(cuò)誤的順序調(diào)用合適實(shí)例的合適轉(zhuǎn)換方法;2)響應(yīng)于一些改變的數(shù)據(jù)忘記包括使一個(gè)或多個(gè)所需的實(shí)例轉(zhuǎn)換方法被調(diào)用的命令;3)響應(yīng)于一些改變的數(shù)據(jù)包括使不需要的實(shí)例轉(zhuǎn)換方法被調(diào)用的命令(例如,包括調(diào)用不受數(shù)據(jù)改變影響的實(shí)例轉(zhuǎn)換方法的命令)等。通過(guò)舉例的方式,生成手動(dòng)調(diào)用排序代碼的一種技術(shù)是使用觀察者模式(有時(shí)稱為"發(fā)布訂閱")以觀察程序中實(shí)例的狀態(tài)。在該觀察者模式中,一個(gè)或多個(gè)實(shí)例(稱為觀察者或監(jiān)聽(tīng)者)被注冊(cè)(或自己注冊(cè))以觀察被觀察對(duì)象(主體)可能引發(fā)的事件??梢砸l(fā)事件的被觀察實(shí)例通常保留注冊(cè)的觀察者的集合。當(dāng)事件被引發(fā)時(shí),每一個(gè)觀察者從被觀察實(shí)例接收回調(diào)(被觀察實(shí)例調(diào)用注冊(cè)的觀察者中的"通知"方法)。通知功能可以傳遞一些觀察者可以使用的參數(shù)(一般是關(guān)于發(fā)生的事件的信息)。每一個(gè)觀察者執(zhí)行通知功能,最后在通知出現(xiàn)時(shí)定義其自身的行為。被觀察實(shí)例一般具有用于添加新觀察者的注冊(cè)方法和用于在事件被引發(fā)時(shí)從將被通知的實(shí)例列表中移除觀察者的非注冊(cè)方法。此外,被觀察實(shí)例還可以具有用于暫時(shí)停止然后重新啟動(dòng)調(diào)用以防止多個(gè)相關(guān)更新低效層疊的方法。具體地,響應(yīng)于屬性值的改變而被調(diào)用的回調(diào)還常常改變一些其他屬性的值,觸發(fā)另外的回調(diào)等。當(dāng)使用觀察者模式技術(shù)時(shí),編寫(xiě)手動(dòng)調(diào)用排序代碼的應(yīng)用程序員通過(guò)將觀察者注冊(cè)、注銷(xiāo)、停止以及重新啟動(dòng)到不同的被觀察實(shí)例以及為每一個(gè)實(shí)例編寫(xiě)通知方法和回調(diào)方法來(lái)規(guī)定調(diào)用什么示例、用哪種順序以及通過(guò)注冊(cè)來(lái)利用哪個(gè)輸入。更具體地,觀察者與被觀測(cè)實(shí)例之間的關(guān)系在觀察者模式內(nèi)被本地管理(僅由被觀測(cè)實(shí)例單獨(dú)管理,不需要與其他被觀測(cè)實(shí)例同步),從而需要根據(jù)多個(gè)被觀察實(shí)例來(lái)同步事件的手動(dòng)調(diào)用排序代碼一般是每一個(gè)觀察者的特定回調(diào)方法的一部分。重寫(xiě)、易失性調(diào)用棧(Overwriting,VolatileCallStack)一般的運(yùn)行時(shí)使用重寫(xiě)、易失性調(diào)用棧來(lái)堆積當(dāng)前調(diào)用的未完成的調(diào)用。重寫(xiě)、易失性調(diào)用棧的重寫(xiě)在于當(dāng)每一次調(diào)用完成時(shí),該棧出棧并拋棄項(xiàng),而易失性在于該棧在每一次執(zhí)行都被拋棄并重建。一般的運(yùn)行時(shí)使用重寫(xiě)、易失性調(diào)用棧是因?yàn)橐话愕倪\(yùn)行時(shí)響應(yīng)于手動(dòng)調(diào)用排序代碼的執(zhí)行來(lái)將重寫(xiě)、易失性調(diào)用棧的建立與具有合適輸入的合適實(shí)例的合適轉(zhuǎn)換方法的實(shí)際調(diào)用相結(jié)合??傊憫?yīng)于手動(dòng)調(diào)用排序代碼的執(zhí)行,一般的運(yùn)行時(shí)一個(gè)調(diào)用一個(gè)調(diào)用地(在做出每一個(gè)調(diào)用時(shí))確定轉(zhuǎn)換方法/實(shí)例排序并保留重寫(xiě)、易失性調(diào)用棧以只跟蹤當(dāng)前調(diào)用的未完成的調(diào)用。對(duì)象關(guān)系映射對(duì)象關(guān)系映射是鏈接關(guān)系數(shù)據(jù)庫(kù)與面向?qū)ο笳Z(yǔ)言概念的編程技術(shù),(有效地)創(chuàng)建了"虛擬對(duì)象數(shù)據(jù)庫(kù)"。一些對(duì)象關(guān)系映射程序自動(dòng)保持存儲(chǔ)器中裝載的實(shí)例與數(shù)據(jù)庫(kù)穩(wěn)定同步。具體地,在構(gòu)建了對(duì)象到SQL的映射査詢之后,首先返回的數(shù)據(jù)被復(fù)制到正在處理的實(shí)例的字段中,例如任意的對(duì)象-SQL映射包。一旦這樣,實(shí)例必須査看這些值是否改變,然后謹(jǐn)慎地使進(jìn)程逆向以將數(shù)據(jù)寫(xiě)回到數(shù)據(jù)庫(kù)外部。Hibernate3.0是用于Java和CLR的對(duì)象關(guān)系映射方案(喬治亞州亞特蘭大市的Jboss⑧公司)。從而,Hibernate提供用于將面向?qū)ο笥蚰P陀成涞絺鹘y(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的框架。其目標(biāo)是將開(kāi)發(fā)者從一些公共數(shù)據(jù)持續(xù)性相關(guān)的編程任務(wù)中解脫出來(lái)。Hibernate處理從類到數(shù)據(jù)庫(kù)表的映射(且從面向?qū)ο髷?shù)據(jù)類型到SQL數(shù)據(jù)類型)以及提供數(shù)據(jù)查詢和獲取功能。Hibernate是以實(shí)例為中心并且建立表示實(shí)例之間關(guān)系的圖形??刂频怪煤鸵蕾嚨怪迷砜刂频怪?,也被稱為IOC,是可以被用于減少計(jì)算機(jī)程序中固有的耦合性(每個(gè)程序模塊依賴另一個(gè)模塊的程度)的面向?qū)ο缶幊淘?。IOC還被稱為依賴倒置原理。在IOC中,如果以下任意一個(gè)適用,則類X依賴類Y:l)X具有Y并調(diào)用Y;2)X是Y;或者3)X依賴某個(gè)類Z,而Z依賴Y(傳遞性)。值得注意X依賴Y并不意味著Y依賴X;如果兩種情況為真,則稱為循環(huán)依賴性;那么X在沒(méi)有Y的情況下不能被使用,反之亦然。實(shí)際上,如果(類X的)對(duì)象X調(diào)用(類Y的)對(duì)象Y的方法,則類X依賴Y。通過(guò)引入第三個(gè)類即接口類I來(lái)倒置依賴性,該接口類I必須包括X可以在Y上調(diào)用的所有方法。此外,Y必須被改變從而使得Y實(shí)施接口I。X和Y現(xiàn)在都依賴接口I以及類X不再依賴Y(假定X沒(méi)有實(shí)例化Y)。通過(guò)引入接口I來(lái)消除類X對(duì)Y的依賴性被稱為控制倒置(或依賴倒置)。必須注意Y可能依賴其他類。在應(yīng)用轉(zhuǎn)換之間,X依賴Y并由此X間接依賴Y所依賴的所有類。通過(guò)應(yīng)用控制倒置,所有這些間接依賴性也被打破了。新引入的接口I不依賴任何類。SpringFramework是用于使用IOC和依賴倒置的Java平臺(tái)的開(kāi)放資源應(yīng)用框架。具體地,SpringFramework的核心是控制容器的倒置,所述控制容器提供配置并管理Java對(duì)象的工具。該容器還被稱為BeanFactory、ApplicationContext或Core容器。該容器操作的示例為創(chuàng)建對(duì)象、配置對(duì)象、調(diào)用初始化方法并將對(duì)象傳遞到注冊(cè)的回調(diào)對(duì)象。由容器創(chuàng)建的對(duì)象還被稱為被管理對(duì)象(ManagedObjects)或Bean。通常通過(guò)裝載包含Bean定義的XML文件來(lái)配置容器。這些提供創(chuàng)建對(duì)象所需的所有信息。一旦在沒(méi)有產(chǎn)生錯(cuò)誤的條件下創(chuàng)建并配置對(duì)象,則對(duì)象可使用。通過(guò)依賴性查找或依賴性注入可以得到對(duì)象。依賴性查找是調(diào)用程序向容器對(duì)象請(qǐng)求具有特定名稱或特定類型的對(duì)象的方式。依賴性注入是容器經(jīng)由構(gòu)造器、屬性或工廠(factory)方法按名稱將對(duì)象傳遞給其他對(duì)象。因此,SpringFramework是以存儲(chǔ)器為中心的,并建立表示實(shí)例之間關(guān)系的圖形。圖形工具Javadoc是解析一組Java資源文件中的聲明和文件注釋并產(chǎn)生對(duì)應(yīng)的一組的HTML頁(yè)的工具,該HTML頁(yè)表示(默認(rèn)地)公共和受保護(hù)類、套嵌類(不是匿名內(nèi)部類)、接口、構(gòu)造器、方法以及字段(加利福尼亞州,圣克拉拉市的SunMicrosystems公司)。Javadoc可以用于生成API(應(yīng)用編程接口)文件或用于一組源文件的執(zhí)行文件。Javadoc是類和方法為中心的并建立表示類的組合及其方法之間的關(guān)系的圖形。用于設(shè)計(jì)軟件應(yīng)用的另一個(gè)系統(tǒng)包括由解釋器分析的用于表示并復(fù)制計(jì)算機(jī)應(yīng)用的對(duì)象的圖形。該系統(tǒng)使用存儲(chǔ)在代碼庫(kù)中的預(yù)寫(xiě)編程類,該類可以被編寫(xiě)以遵循在以下文檔中描述的設(shè)計(jì)模式AddisonWesley1995年出版的Gamma等人的"DesignPattern"、ComputerPublishing1998年出版的Grand,Wiley的"PatterninJava"、和/或高級(jí)計(jì)算機(jī)輔助軟件工程(CASE)工具。更具體地,一些這樣的類基于觀察者行為方式。預(yù)編寫(xiě)的代碼庫(kù)表示應(yīng)用狀態(tài)節(jié)點(diǎn)、處理邏輯以及不同應(yīng)用狀態(tài)間的系統(tǒng)數(shù)據(jù)流(即,預(yù)編寫(xiě)的應(yīng)用數(shù)據(jù)元素),從而用戶在創(chuàng)建軟件應(yīng)用時(shí)不需要編寫(xiě)、編輯或編譯代碼。而是,用戶通過(guò)編輯與當(dāng)前應(yīng)用狀態(tài)節(jié)點(diǎn)相關(guān)聯(lián)的可視對(duì)象(例如應(yīng)用狀態(tài)節(jié)點(diǎn)中的數(shù)據(jù)或在應(yīng)用狀態(tài)節(jié)點(diǎn)中執(zhí)行的進(jìn)程)來(lái)手動(dòng)編輯圖形用戶界面中的軟件應(yīng)用。之后,基于用戶對(duì)當(dāng)前應(yīng)用狀態(tài)節(jié)點(diǎn)做出的改變,解釋器針對(duì)剛被編輯的應(yīng)用狀態(tài)向用戶顯示更新后的應(yīng)用狀態(tài)。系統(tǒng)然后可以沿著用戶定義的過(guò)渡邊緣過(guò)渡到另一個(gè)應(yīng)用狀態(tài),在該另一個(gè)應(yīng)用狀態(tài)用戶可以編輯下一個(gè)應(yīng)用狀態(tài)或過(guò)度邊緣。在軟件應(yīng)用運(yùn)行時(shí)可以對(duì)解釋器執(zhí)行的圖形實(shí)例做出圖形改變。用于設(shè)計(jì)軟件應(yīng)用的系統(tǒng)可以包括運(yùn)行軟件應(yīng)用的可視表示,該運(yùn)行軟件應(yīng)用可以被制定為利用應(yīng)用控制器"可以被用"。當(dāng)用戶改變表示運(yùn)行軟件應(yīng)用的可視對(duì)象時(shí),控制器使用輸入來(lái)促使解釋器改變圖形。然后控制器等待更多的改變。此外,這種軟件應(yīng)用的可視表示可以作為XML文件被輸入或輸出,該XML文件描述應(yīng)用的可視表示從而描述軟件應(yīng)用。為了以節(jié)點(diǎn)、定向的邊緣以及應(yīng)用狀態(tài)的可視表示的形式編輯和/或創(chuàng)建軟件應(yīng)用,系統(tǒng)還可以包括應(yīng)用程序接口和應(yīng)用編輯器。來(lái)自預(yù)編寫(xiě)的代碼庫(kù)中的關(guān)鍵詞和相關(guān)定義使應(yīng)用開(kāi)發(fā)者能手動(dòng)定義軟件應(yīng)用、處理步驟,以及通過(guò)在編輯器中提供圖形應(yīng)用的圖形表示得到的軟件應(yīng)用的可視表示,所述圖形應(yīng)用與實(shí)際應(yīng)用結(jié)構(gòu)密切相關(guān)。用戶通過(guò)"應(yīng)用定義向?qū)?定義新應(yīng)用,該"應(yīng)用定義向?qū)?在完成某些初步事情后將新應(yīng)用顯示為編輯器工作區(qū)中的圖形組件。用戶還通過(guò)使用電腦鼠標(biāo)和鍵盤(pán)從顯示的預(yù)先創(chuàng)建的可能應(yīng)用組件列表中選擇并將組件拖動(dòng)并放入工作區(qū)來(lái)與應(yīng)用交互。用戶可以選擇組件并在已有的組件上"拖動(dòng)"組件。當(dāng)新組件"落到"已有組件上,則該新組件成為應(yīng)用圖形中已有組件的子組件。應(yīng)用中的組件的關(guān)系由編輯器中的用戶選擇手動(dòng)定義。因此用戶建立表示應(yīng)用的樹(shù)結(jié)構(gòu)。當(dāng)應(yīng)用被創(chuàng)建,用戶可以選擇應(yīng)用導(dǎo)航視窗來(lái)顯示構(gòu)建的應(yīng)用的樹(shù)視圖,該樹(shù)視圖能夠選擇并編輯應(yīng)用的任何組件。編輯器界面處理用戶輸入和選擇,包括創(chuàng)建或刪除應(yīng)用元素、更新組件屬性以及更新應(yīng)用的顯示屬性。上述的系統(tǒng)在使用軟件應(yīng)用的可視表示時(shí)還可以用作定義并更新相關(guān)數(shù)據(jù)庫(kù)的可視編程工具。系統(tǒng)使用軟件應(yīng)用的可視表示的XML描述。工具解析并解釋XML描述以產(chǎn)生等價(jià)的關(guān)系數(shù)據(jù)庫(kù)表圖示以及該圖示的改變。當(dāng)數(shù)據(jù)在軟件應(yīng)用的可視表示內(nèi)發(fā)生改變時(shí),該改變的描述與其他改變一起被存儲(chǔ)在日志文件中且之后被作為分組處理。中間程序(在其自身的線程上操作的Java應(yīng)用程序)執(zhí)行軟件應(yīng)用的可視表示與關(guān)系數(shù)據(jù)庫(kù)之間的事務(wù)。Java應(yīng)用程序輪詢(即,檢查)可視表示(即數(shù)據(jù)庫(kù)中的數(shù)據(jù))的節(jié)點(diǎn)改變的日志,且如果存在改變,就對(duì)數(shù)據(jù)庫(kù)做出更改。因此,通過(guò)更換可視表示中的數(shù)據(jù),系統(tǒng)可以更新數(shù)據(jù)庫(kù)。相似的應(yīng)用程序在軟件應(yīng)用程序的可視表示與處理來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)請(qǐng)求的數(shù)據(jù)庫(kù)之間也是有效的。用于分析軟件的另一種系統(tǒng)稱為代碼樹(shù)分析器(CTA)。CTA分析用面向?qū)ο缶幊陶Z(yǔ)言編寫(xiě)的靜態(tài)源代碼。CTA從靜態(tài)源代碼中生成符號(hào)表和調(diào)用樹(shù)。使用符號(hào)表,CTA生成類圖。類似地,使用調(diào)用樹(shù),CTA生成序列圖。類圖闡釋用戶選擇的類和與所述用戶選擇的類相關(guān)的類之間的關(guān)系。序列圖闡釋不同方法被調(diào)用的順序。通過(guò)使用類圖和序列圖,CTA生成表示靜態(tài)源代碼的設(shè)計(jì)制品。當(dāng)用戶修改所述設(shè)計(jì)制品時(shí),CTA使用序列圖來(lái)標(biāo)識(shí)源代碼的受影響的部分。所述設(shè)計(jì)制品用于代碼維護(hù)和/或靜態(tài)源代碼的逆向工程。
發(fā)明內(nèi)容表述了具有場(chǎng)景支持的面向生成器圖形的編程框架的實(shí)施方式。在一個(gè)實(shí)施方式中,接收通過(guò)關(guān)于應(yīng)用程序的改變來(lái)評(píng)估潛在影響的請(qǐng)求。所述應(yīng)用程序包括一組生成器,每個(gè)生成器具有至少一個(gè)實(shí)例以及與該實(shí)例相關(guān)聯(lián)的方法。響應(yīng)于所述請(qǐng)求,可以在保存生成器的現(xiàn)有狀態(tài)和現(xiàn)有輸出的情況下用改變來(lái)模擬應(yīng)用程序。通過(guò)參照以下描述和附圖可以更好地理解本發(fā)明,附圖用于圖示本發(fā)明的實(shí)施方式,其中圖1A是示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的對(duì)面向?qū)ο笤创a中類的方法的生成器依賴性聲明與包括類、該類的給定實(shí)例以及該類的方法的生成器的關(guān)系的框圖1B示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的生成器110A與父生成器114A.1之間的示例性關(guān)系;圖1C示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的生成器110A與子生成器112A.1之間的示例性關(guān)系;圖1D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的父生成器114和子生成器112到生成器110A的示例性關(guān)系組合;圖1E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的相同類的不同實(shí)例可以具有基于相同和/或不同方法的生成器;圖2是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時(shí)的可重復(fù)使用性的框圖3A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時(shí)的框圖;圖3B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形的編程支持的運(yùn)行時(shí)的框圖,該支持還支持增量執(zhí)行(incrementalexecution)和被覆蓋(override)的生成器的輸出;圖4A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖4B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖4A中生成器圖形的初始執(zhí)行的框圖4C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖4B中的生成器圖形的增量執(zhí)行的框圖4D是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在相關(guān)生成器2被覆蓋后的圖4B中生成器圖形的增量執(zhí)行的框圖4E是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在相關(guān)生成器2被覆蓋且無(wú)關(guān)源生成器3被修改后圖4B中生成器圖形的增量執(zhí)行的框圖5A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的包括未解析的依賴性的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖5B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行以及對(duì)未解析依賴性的解析的框圖5C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行和/或圖5B中生成器圖形的重新執(zhí)行的框圖5D是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行和/或圖5B或5C中生成器圖形的重新執(zhí)行的框圖6是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的運(yùn)行時(shí)客戶端的邏輯執(zhí)行流以及其與具有面向生成器圖形編程支持的運(yùn)行時(shí)的關(guān)系的流程圖7A示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用快捷聲明的依賴性的方法的生成器依賴性聲明的偽代碼;圖7B是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性生成器的框圖7C示出了使用非快捷聲明的依賴性的方法的生成器依賴性聲明的偽代碼,并示出了示例性生成器的框圖7D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的依賴性的方法的生成器依賴性聲明的偽代碼;圖7E是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性生成器的框圖7F是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的通過(guò)使用具有依賴性確定生成器的向上依賴性的示例性依賴性的框圖7G是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的通過(guò)使用具有依賴性確定生成器的弱約束依賴性(WeaklyConstrainedDependency)的可能的示例性依賴性的框圖7H示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的標(biāo)準(zhǔn)生成器的示例性生成器圖形;圖71示出了生成器依賴性以及用于發(fā)現(xiàn)、解析并建立圖7H中的生成器圖形的依賴性確定生成器的一個(gè)示例;圖8A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的第一示例性框架的框圖,其中在該框架中應(yīng)用被提供給終端用戶;圖8B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的第二示例性框架的框圖,其中在該框架中應(yīng)用被提供給終端用戶;圖8C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的自由單元選擇的示例性屏幕截圖以及使用;圖8D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的自由單元選擇的另一個(gè)示例性屏幕截圖以及使用;圖8E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的表格創(chuàng)建的示例性屏幕截圖以及使用;圖8F示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的表格創(chuàng)建的另一個(gè)示例性屏幕截圖以及使用;圖9A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的第一方案的框圖9B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的第二方案的框圖9C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的第三方案的框圖10是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性實(shí)施的框圖IIA是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖IO中類跟蹤結(jié)構(gòu)1092的示例的框圖IIB是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖IO中實(shí)例跟蹤結(jié)構(gòu)1065的示例的框圖IIC是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖10中生成器圖形結(jié)構(gòu)1060的示例的框圖IID是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖10中方法跟蹤結(jié)構(gòu)1058的示例的框圖12是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的支持偶然(contingent)和訂閱類型的動(dòng)態(tài)生成器依賴性的圖10中另外細(xì)節(jié)的框圖13A示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的、非動(dòng)態(tài)(非偶然、非訂閱)的依賴性的方法的生成器依賴性聲明的偽代碼;圖13B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性非快捷聲明的、非動(dòng)態(tài)(非偶然、非訂閱)的生成器依賴性的生成器的框圖13C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13D是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性非快捷聲明的、偶然、非訂閱的生成器依賴性的生成器的框圖13E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13F是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的非快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、偶然、非訂閱的生成器依賴性的生成器的框圖13G示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、非偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13H是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、非偶然、非訂閱的生成器依賴性的生成器的框圖13I示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用快捷聲明的、非動(dòng)態(tài)(非偶然、非訂閱)的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13J是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性快捷聲明的、非動(dòng)態(tài)的生成器依賴性的生成器框圖14A是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖12中的訂閱日志1250的示例的框圖14B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的非偶然、吸收訂閱(absorbingsubscription)的生成器依賴性的示例性生成器的框圖;圖14C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的非偶然、粘附訂閱(stickysubscription)的生成器依賴性的示例性生成器的框圖14D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的基于由粘附訂閱創(chuàng)建的父依賴性確定生成器的父生成器的選擇;圖14E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的基于由子依賴性確定生成器創(chuàng)建的父依賴性確定生成器的父生成器的選擇,所述子依賴性確定生成器通過(guò)對(duì)依賴性排序而被鏈接;圖15是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的實(shí)例化新實(shí)例的流程圖16是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的實(shí)例化新生成器且不覆蓋生成器的流程圖17是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖16中的塊1650的流程圖;圖18是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖17中的塊1745的流程圖;圖19是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖16中的塊1630的流程圖;圖20是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖16中的塊1635和塊1670的流程圖21是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的覆蓋生成器的流程圖;圖22A是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的一部分;圖22B是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的另一部分;圖23是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖22中的塊2205的流程圖24是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖22中的塊2225的流程圖25是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖22中的塊2260的流程圖26示出了支持場(chǎng)景的本發(fā)明的一個(gè)可替換實(shí)施方式;圖27A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持和場(chǎng)景支持的運(yùn)行時(shí)的框圖27B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有還支持增量執(zhí)行和被覆蓋的生成器的輸出以及場(chǎng)景的面向生成器圖形的編程支持的運(yùn)行時(shí)的框圖28A-圖28D示出了用于不同場(chǎng)景的應(yīng)用程序的一些示例性生成器圖形;圖29是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的運(yùn)行時(shí)客戶端的邏輯執(zhí)行流以及該運(yùn)行時(shí)客戶端與具有面向生成器圖形編程支持的運(yùn)行時(shí)的關(guān)系的流程圖;圖30是根據(jù)支持場(chǎng)景的本發(fā)明的一個(gè)實(shí)施方式的可替換實(shí)施的框圖;圖31A示出了類跟蹤結(jié)構(gòu)的一個(gè)示例性實(shí)施方式;圖31B示出了實(shí)例跟蹤結(jié)構(gòu)的一個(gè)示例性實(shí)施方式;圖31C示出了生成器圖形結(jié)構(gòu)的一個(gè)示例性實(shí)施方式;圖31D示出了場(chǎng)景跟蹤結(jié)構(gòu)的一個(gè)示例性實(shí)施方式;圖31E示出了場(chǎng)景對(duì)象跟蹤結(jié)構(gòu)的一個(gè)示例性實(shí)施方式;圖31F示出了影響列表的一個(gè)示例性實(shí)施方式;圖32是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的新的場(chǎng)景實(shí)例化流的流程圖33是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的支持場(chǎng)景的新的實(shí)例實(shí)例化流的流程圖34A-圖34G示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在目標(biāo)場(chǎng)景中的新的被強(qiáng)調(diào)的(stressed)生成器的實(shí)例化的流程圖;以及圖35A-圖35B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的被強(qiáng)調(diào)的生成器圖形執(zhí)行流的流程圖。具體實(shí)施方式在以下的描述中,例如邏輯執(zhí)行、操作碼、規(guī)定操作數(shù)的方法、資源劃分/共享/復(fù)制執(zhí)行、系統(tǒng)組件的類型和相互關(guān)系以及邏輯劃分/集成選擇的多個(gè)具體細(xì)節(jié)被提出以為本發(fā)明提供更全面的理解。但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在沒(méi)有這些具體細(xì)節(jié)的情況下本發(fā)明也能實(shí)施。在其它的情況,沒(méi)有具體示出控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)以及全軟件指令序列以避免使本發(fā)明晦澀。本領(lǐng)域技術(shù)人員在有了這些描述后能夠在沒(méi)有不適當(dāng)?shù)膶?shí)驗(yàn)的情況下能實(shí)現(xiàn)合適的功能。除非另有規(guī)定,否則圖中的虛線(虛分界線除外)用于表示圖中可選項(xiàng)。但是不應(yīng)該認(rèn)為所有的可選項(xiàng)都是使用虛線來(lái)顯示的,而是用虛線顯示的這些項(xiàng)由于各種原因被選擇(例如,它們可以很容易地被顯示以提供更好的清晰度等)。說(shuō)明書(shū)中的引用"一個(gè)實(shí)施方式"、"實(shí)施方式"、"示例性實(shí)施方式"等表示所述的實(shí)施方式可以包括特定的特征、結(jié)構(gòu)或特性,但是每一個(gè)實(shí)施方式不用必須包括所述特定的特征、結(jié)構(gòu)或特性。此外,這些短語(yǔ)不一定是指同一個(gè)實(shí)施方式。再者,當(dāng)結(jié)合實(shí)施方式描述特定的特征、結(jié)構(gòu)或特性時(shí),可以理解,無(wú)論是否明確描述,改變與實(shí)施方式有關(guān)的這些特征、結(jié)構(gòu)或特性是本領(lǐng)域技術(shù)人員所了解的。在下面的描述和權(quán)利要求中,可能使用了術(shù)語(yǔ)"耦合"和"連接"以及它們的派生詞。應(yīng)當(dāng)理解這些術(shù)語(yǔ)不是彼此的同義詞。而是,在特定實(shí)施方式中,"連接"可以用于表示兩個(gè)或多個(gè)元件彼此直接接觸。"耦合"可以表示兩個(gè)或多個(gè)元件直接連接。但是"耦合"還可以表示兩個(gè)或多個(gè)元件彼此沒(méi)有直接連接,但仍然互相合作或相互作用。在一些情況下,參考其他框圖的示例性實(shí)施方式來(lái)描述流程圖的操作。然而,應(yīng)當(dāng)理解,流程圖的操作可以被本發(fā)明的實(shí)施方式執(zhí)行而不是被參考其他框圖論述的實(shí)施方式來(lái)執(zhí)行,且參考其他框圖論述的本發(fā)明的實(shí)施方式可以執(zhí)行與參考流程圖而論述的操作不同的操作。可以使用存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)上并在該一個(gè)或多個(gè)計(jì)算機(jī)上執(zhí)行的代碼和數(shù)據(jù)來(lái)執(zhí)行圖中所示的技術(shù)。該計(jì)算機(jī)使用諸如機(jī)器存儲(chǔ)介質(zhì)(例如,磁盤(pán)、光盤(pán)、隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器、閃存裝置)的機(jī)器可讀介質(zhì)來(lái)存儲(chǔ)代碼和數(shù)據(jù)并使用機(jī)器通信介質(zhì)(例如,電、光、聲或其他形式的傳播信號(hào)一例如載波、紅外信號(hào)、數(shù)字信號(hào)等)傳送(在內(nèi)部和通過(guò)網(wǎng)絡(luò)與其他計(jì)算機(jī))該代碼和數(shù)據(jù)。此外,該計(jì)算機(jī)通常包括一組一個(gè)或多個(gè)處理器,該處理器與一個(gè)或多個(gè)其他組件耦合,例如存儲(chǔ)裝置、多個(gè)用戶輸入/輸出裝置(例如鍵盤(pán)和顯示器)以及網(wǎng)絡(luò)連接。該組處理器與其他組件的耦合一般通過(guò)一個(gè)或多個(gè)總線和橋(也稱為總線控制器)。存儲(chǔ)裝置和網(wǎng)絡(luò)流量分別表示一個(gè)或多個(gè)機(jī)器存儲(chǔ)介質(zhì)和機(jī)器通信介質(zhì)。因此,給定計(jì)算機(jī)系統(tǒng)的存儲(chǔ)裝置一般存儲(chǔ)用于在該計(jì)算機(jī)的所述一組一個(gè)或多個(gè)處理器上執(zhí)行的代碼和數(shù)據(jù)。當(dāng)然,可以使用軟件、固件和/或硬件的不同組合來(lái)實(shí)施本發(fā)明的實(shí)施方式的一個(gè)或多個(gè)部分。根據(jù)本發(fā)明的一個(gè)方面,生成器是至少一個(gè)特定實(shí)例(或?qū)ο?和特定方法,從而如果在運(yùn)行時(shí)期間執(zhí)行該生成器,則該特定方法在特定實(shí)例上被執(zhí)行。由此,給定的生成器根據(jù)給定實(shí)例以及與該實(shí)例相關(guān)聯(lián)的給定方法而被實(shí)例化。如類、實(shí)例和方法,生成器是運(yùn)行時(shí)處理的基本元素和結(jié)構(gòu)。因此運(yùn)行時(shí)解釋并跟蹤生成器的實(shí)例化,且由此運(yùn)行時(shí)跟蹤由生成器表示的實(shí)例和方法的組合。換句話說(shuō),生成器是由運(yùn)行時(shí)跟蹤、執(zhí)行的運(yùn)行時(shí)可實(shí)例化的結(jié)構(gòu),且包括至少一個(gè)實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,從而運(yùn)行時(shí)執(zhí)行生成器使該生成器的方法在生成器的實(shí)例上被執(zhí)行。此外,生成器的方法與其生成器依賴性聲明相關(guān)聯(lián),該聲明為給定生成器標(biāo)識(shí)一組零個(gè)或多個(gè)生成器依賴性、一組零個(gè)或多個(gè)生成器。具體地,使用生成器依賴性聲明來(lái)為方法聲明生成器依賴性,用于給定方法的生成器依賴性聲明可以包括零個(gè)或多個(gè)生成器依賴性,且每一個(gè)生成器依賴性標(biāo)識(shí)一組零個(gè)或多個(gè)生成器。因此,生成器依賴性聲明以及該聲明定義的生成器依賴性由運(yùn)行時(shí)來(lái)解釋并跟蹤,且由此運(yùn)行時(shí)跟蹤生成器依賴性聲明指示的生成器之間的關(guān)系。當(dāng)給定生成器依賴于一組一個(gè)或多個(gè)其他生成器時(shí),運(yùn)行時(shí)將確保在給定生成器之前執(zhí)行所述一組其他生成器。因此,生成器依賴性聲明表示生成器之間的執(zhí)行關(guān)系,而生成器表示將被執(zhí)行的操作(方法)和實(shí)例。當(dāng)在本發(fā)明的一些實(shí)施方式中,允許子生成器上的父生成器的生成器依賴性在與父生成器的方法相關(guān)聯(lián)的生成器依賴性聲明中被聲明(父生成器的生成器依賴性聲明標(biāo)識(shí)任意子生成器一一這里稱為向下聲明),本發(fā)明的其他實(shí)施方式還允許依賴性在與子生成器的方法相關(guān)聯(lián)的生成器依賴性聲明中被聲明(子生成器的生成器依賴性聲明標(biāo)識(shí)一個(gè)或多個(gè)父生成器一這里稱為向上聲明)。在本發(fā)明的不同實(shí)施方式中,生成器標(biāo)識(shí)另外的事情。例如,當(dāng)在本發(fā)明的某些實(shí)施方式中,生成器是至少一個(gè)實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,在本發(fā)明的其他實(shí)施方式中,生成器是類、類的實(shí)例以及與該實(shí)例相關(guān)聯(lián)的方法(例如,生成器可以直接包括類、實(shí)例以及方法;生成器可以直接包括實(shí)例和方法,而通過(guò)引用(例如,實(shí)例中的引用)間接標(biāo)識(shí)該實(shí)例的類)。在本發(fā)明可以用于用不同編程語(yǔ)言(例如,用反射式面向?qū)ο蟮恼Z(yǔ)言編寫(xiě)的面向?qū)ο蟠a;用反射式基于對(duì)象的語(yǔ)言編寫(xiě)的面向?qū)ο蟠a;用過(guò)程、非反射式面向?qū)ο?、非反射式基于?duì)象的語(yǔ)言編寫(xiě)并轉(zhuǎn)換成面向反射對(duì)象語(yǔ)言代碼的代碼)編寫(xiě)的代碼上下文中的同時(shí),參考反射式面向?qū)ο缶幊陶Z(yǔ)言并參考直接包括類、實(shí)例和方法的生成器,以舉例而非限定的方式來(lái)描述本發(fā)明的實(shí)施方式。此外,雖然在本發(fā)明的一個(gè)實(shí)施方式中生成器的方法是實(shí)例方法(除了作為參量被接收的任何輸入,還可以使用實(shí)例字段的方法),本發(fā)明的可替換實(shí)施方式還可以或可替換地支持為類方法的生成器的方法(接收所有輸入作為參量和/或使用實(shí)例無(wú)關(guān)變量的方法)(當(dāng)生成器的方法是實(shí)例方法時(shí),生成器的實(shí)例是類實(shí)例;而當(dāng)生成器的方法是類方法時(shí),該生成器的實(shí)例是表示該類的元類實(shí)例)。圖1A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的對(duì)面向?qū)ο笤创a中類的方法與生成器的生成器依賴性聲明的關(guān)系的框圖,所述生成器包括類、該類的給定實(shí)例以及該類的方法。在圖1A中,顯示了面向?qū)ο笤创a100,其包括類102,而類102包括方法104以及用于方法104的生成器依賴性聲明106。當(dāng)然類102—般包括一個(gè)或多個(gè)字段(未顯示)和另外的方法(未顯示)。另外,面向?qū)ο笤创a100—般包括另外的類。在運(yùn)行時(shí)期間,類102的實(shí)例108被實(shí)例化。實(shí)例108包括類102的字段數(shù)據(jù)。另外,生成器110被實(shí)例化,其中生成器IIO標(biāo)識(shí)類102、類102的實(shí)例108(與類102的方法104相關(guān)聯(lián))以及類102的方法104。生成器依賴性聲明106向運(yùn)行時(shí)標(biāo)識(shí)一組零個(gè)或多個(gè)生成器112(稱為生成器110的子生成器),該一組零個(gè)或多個(gè)生成器112在執(zhí)行生成器110之前必須被執(zhí)行。換句話說(shuō),生成器IIO依賴一組零個(gè)或多個(gè)生成器112。除了或代替使用一組生成器112的輸出,生成器IIO可以使用實(shí)例108的數(shù)據(jù)。此外,生成器110提供至少一個(gè)輸出,輸出可以在實(shí)例108的內(nèi)部(從而修改實(shí)例108的數(shù)據(jù))和/或外部;任何一種方式,生成器110的輸出可以被一組零個(gè)或多個(gè)其他生成器114(稱為生成器110的父生成器)使用。如之前所示和之后所詳細(xì)描述的,在本發(fā)明的一些實(shí)施方式中,生成器依賴性聲明106還可以向運(yùn)行時(shí)標(biāo)識(shí)零個(gè)或多個(gè)生成器114。應(yīng)當(dāng)理解生成器的輸入和輸出是基于方法的輸入和輸出,這些生成器基于該方法。這樣,這些輸入和輸出可以表示具有各種數(shù)據(jù)結(jié)構(gòu)的多個(gè)參數(shù)。用于給定方法的生成器依賴性聲明在運(yùn)行時(shí)標(biāo)識(shí)被實(shí)例化并執(zhí)行的一組零個(gè)或多個(gè)生成器。通過(guò)示例的方式,如果用于給定方法(例如方法104)的生成器依賴性聲明(例如生成器依賴性聲明106)在給定生成器(例如該組生成器112中的一個(gè))(該給定生成器標(biāo)識(shí)第一類、該類的第一實(shí)例以及第一類的第一方法)上標(biāo)識(shí)生成器依賴性,則給定方法的生成器依賴性聲明向運(yùn)行時(shí)標(biāo)識(shí)第一實(shí)例將被實(shí)例化(如果還沒(méi)有)和第一方法將用于實(shí)例化第一實(shí)例的給定生成器(在這些示例中,第一不是指位置或順序)。在操作中,當(dāng)在運(yùn)行時(shí)期間給定的一組一個(gè)或多個(gè)生成器被指定為感興趣的且具有為它們聲明的生成器依賴性時(shí),則運(yùn)行時(shí)1)基于生成器依賴性聲明從指定為感興趣的給定的一組生成器向下至源生成器,自動(dòng)生成(發(fā)現(xiàn)、建立以及可選地解析)一組一個(gè)或多個(gè)圖形,該圖形可以是多級(jí)和各種形狀(例如,鏈形、樹(shù)形);2)順序執(zhí)行所述一組圖形的生成器以生成指定為感興趣的給定的一組生成器的輸出。因此,運(yùn)行時(shí)使用生成器依賴性聲明來(lái)確定在哪些實(shí)例上執(zhí)行具有哪些參量的哪些方法以及何時(shí)用于同步。因此,生成器依賴性向運(yùn)行時(shí)表示生成器的執(zhí)行順序。但是,在本發(fā)明的不同實(shí)施方式中,除了指示執(zhí)行順序,生成器依賴性還表示不同的輸入與輸出的關(guān)系。例如,本發(fā)明的不同實(shí)施方式可以支持一個(gè)或多個(gè)參量生成器依賴性、字段生成器依賴性以及僅排序的(sequencingonly)生成器依賴性(僅排序的生成器依賴性這里稱為速記排序生成器依賴性)。當(dāng)每一個(gè)參量生成器依賴性、字段生成器依賴性以及排序生成器依賴性表示生成器之間的執(zhí)行順序關(guān)系時(shí),參量和字段生成器依賴性還表示運(yùn)行時(shí)知道的數(shù)據(jù)。具體地,參量生成器依賴性使運(yùn)行時(shí)將作為輸入?yún)?shù)的子生成器的輸出映射到父生成器,而字段生成器依賴性指示實(shí)例的字段的使用。不管生成器依賴性表示的輸入與輸出的關(guān)系如何,恰當(dāng)使用生成器依賴性能確保生成器訪問(wèn)信息在影響該信息的生成器之后被排序。排序依賴性可以用于多種目的,包括確保以運(yùn)行時(shí)不知道的方式修改數(shù)據(jù)的生成器與使用該數(shù)據(jù)的生成器之間的執(zhí)行順序(子生成器可以以需要父生成器的方法來(lái)包括代碼以訪問(wèn)輸出的方式來(lái)編寫(xiě)其輸出(例如,通過(guò)影響不是常規(guī)生成器輸出且不被運(yùn)行時(shí)檢測(cè)的輸出來(lái)影響環(huán)境的方法,不檢測(cè)該方法一例如設(shè)定全局變量的方法、設(shè)定不是生成器輸出的實(shí)例中的字段的方法、影響外部數(shù)據(jù)源的方法等))。因此,排序依賴性在子生成器上反映父生成器的依賴性,但是需要被提供的輸出(如果有),該輸出通過(guò)編寫(xiě)代碼一次又一次產(chǎn)生而被提供(例如,寫(xiě)入輸出到給定機(jī)制(例如設(shè)定全局變量、影響外部數(shù)據(jù)源、設(shè)定不是生成器輸出的實(shí)例的字段等)的子生成器的方法中的代碼和從給定機(jī)制讀出該輸出的父生成器的方法中的代碼)。以這種方式,排序依賴性允許運(yùn)行時(shí)對(duì)依賴運(yùn)行時(shí)不能檢測(cè)的輸出的任意父生成器的執(zhí)行進(jìn)行同步。影響運(yùn)行時(shí)不知道的源(例如總變量或外部數(shù)據(jù)源)以及從這些源中讀取是在需要場(chǎng)景能力的生成器中應(yīng)當(dāng)避免的特性。在本發(fā)明的一個(gè)實(shí)施方式中,用于給定方法的生成器依賴性聲明在生成器上只標(biāo)識(shí)直接依賴性(例如,直接繼承(子),與間接繼承相對(duì)照(孫子、曾孫子等))。在這樣的實(shí)施方式中,每一個(gè)生成器依賴性聲明只提供生成器的一個(gè)等級(jí)或?qū)?,該生成器的輸出可以被根?jù)給定方法實(shí)例化的生成器直接使用;將生成器圖形的另外層的發(fā)現(xiàn)/建立/解析留給其他生成器依賴性聲明的運(yùn)行時(shí)處理。示例性關(guān)鍵字生成器可以被視為一組多個(gè)標(biāo)識(shí)符,一個(gè)標(biāo)識(shí)符用于每一個(gè)指定粒度(granularity)的另外等級(jí)(類、實(shí)例、方法等)。此外,本發(fā)明的一些實(shí)施方式將每一個(gè)標(biāo)識(shí)符實(shí)施為單獨(dú)的關(guān)鍵字,而其他實(shí)施方式具有共享關(guān)鍵字的某些標(biāo)識(shí)符。通過(guò)示例的方式,本發(fā)明的一些實(shí)施方式將生成器實(shí)施為類、實(shí)例以及方法三元組并實(shí)施關(guān)鍵字,從而三元組的每一個(gè)部分由單獨(dú)的關(guān)鍵字來(lái)標(biāo)識(shí)(類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字)且生成器由類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字的組合(生成器關(guān)鍵字)來(lái)標(biāo)識(shí)。使用關(guān)鍵字的本發(fā)明的實(shí)施方式可以改變使用的關(guān)鍵字的唯一性。例如,在本發(fā)明的一個(gè)實(shí)施方式中,每一個(gè)類關(guān)鍵字是唯一的,每一個(gè)實(shí)例關(guān)鍵字在所有類的所有實(shí)例中是唯一的,且每一個(gè)方法關(guān)鍵字在所有類的所有方法中是唯一的。作為另一個(gè)示例,在本發(fā)明的另一個(gè)實(shí)施方式中,每一個(gè)類具有唯一的關(guān)鍵字,每一個(gè)給定類的實(shí)例具有唯一的關(guān)鍵字(在類實(shí)例中),以及每個(gè)類的方法具有唯一的關(guān)鍵字(在類方法中);但是不同類的實(shí)例可以具有相同的實(shí)例關(guān)鍵字,且不同類的方法可以具有相同的方法關(guān)鍵字;后者的方法可以以舉例而非限定的方式用于本文的后面的部分。例如,假定第一類包括方法并具有用于這些方法中每一個(gè)的在第一類中是唯一的關(guān)鍵字,則該類的實(shí)例(每一個(gè)實(shí)例具有的關(guān)鍵字相較于另一個(gè)是唯一的)具有與其相關(guān)聯(lián)的相同的方法關(guān)鍵字。作為另一個(gè)示例,假定不同的第二類包括方法(與第一類的方法有一些、全部或沒(méi)有相同),該方法具有與用于第一類的關(guān)鍵字相同的關(guān)鍵字;這樣,該不同類的實(shí)例可以與和第一類的實(shí)例相關(guān)聯(lián)的相同的方法相關(guān)聯(lián)。關(guān)鍵字的使用允許多個(gè)特征,包括1)生成器標(biāo)識(shí)符標(biāo)識(shí)的每一個(gè)實(shí)體的跟蹤(例如,每一個(gè)類、實(shí)例和方法的跟蹤);2)基于父生成器的生成器依賴性聲明(該聲明使用生成器關(guān)鍵字規(guī)定生成器依賴性)連接到相同子生成器的一些父生成器(不知道相互的存在);等等。在本發(fā)明的一個(gè)實(shí)施方式中,實(shí)例關(guān)鍵字是擁有兩個(gè)元素的類的實(shí)例(實(shí)例關(guān)鍵字)實(shí)例關(guān)鍵字性質(zhì),指示關(guān)鍵字指示符是否是對(duì)實(shí)例的引用或?qū)α硪粋€(gè)對(duì)象(例如,字符串)的引用;以及關(guān)鍵字指示符,該關(guān)鍵字指示符可以是對(duì)實(shí)例或另一個(gè)對(duì)象(例如,字符串)的引用。在實(shí)例關(guān)鍵字中存儲(chǔ)實(shí)例引用可以讓程序員不用為標(biāo)識(shí)這些實(shí)例而起名字。示例性關(guān)系在關(guān)于生成器被視為一組多個(gè)標(biāo)識(shí)符(一個(gè)標(biāo)識(shí)符用于所規(guī)定粒度的每一個(gè)另外層)的上述上下文中,在本發(fā)明的一個(gè)實(shí)施方式中,生成器及其子生成器和父生成器之間的各種支持的關(guān)系是至少一個(gè)所述標(biāo)識(shí)符在生成器和其一組零個(gè)或多個(gè)父生成器之間不同,且至少一個(gè)所述標(biāo)識(shí)符在生成器和其一組零個(gè)或多個(gè)子生成器的每一個(gè)之間不同。通過(guò)提供一些示例性關(guān)系,假定第一生成器被實(shí)例化,如果第一生成器是第一類的第一實(shí)例和第一類的第一方法,并假定用于該第一方法的生成器依賴性聲明在運(yùn)行時(shí)將第二生成器標(biāo)識(shí)為子生成器,那么第二生成器可以是1)第一類的第一實(shí)例和該第一類的第二方法;2)第一類的第二實(shí)例和該第一類的第二方法;3)第一類的第二實(shí)例和該第一類的第一方法;或4)第二類的實(shí)例和該第二類的方法。這種情況,第一生成器依賴于第二生成器一由此,在第二生成器上表示第一生成器的輸入與輸出的關(guān)系。以下對(duì)使用面向?qū)ο笳Z(yǔ)言的本發(fā)明的一個(gè)實(shí)施方式描述各種關(guān)系和這些關(guān)系的組合,且其中生成器標(biāo)識(shí)至少一個(gè)類、實(shí)例和方法。圖1B-1D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的給定生成器、其一組父生成器以及其一組子生成器之間的示例性關(guān)系。圖1B-1D每一個(gè)示出了1)類定義102A,包括方法104A-C和分別用于這些方法的每一個(gè)的生成器依賴性聲明106A-C;2)類定義102B,包括方法104D-E和分別用于這些方法的每一個(gè)的生成器依賴性聲明106D-E;3)類定義102C,包括方法104F和用于該方法的生成器依賴性聲明106F;4)類102A的實(shí)例108A;5)生成器IIOA,該生成器112A標(biāo)識(shí)類102A、實(shí)例108A以及方法104A;以及6)生成器112A.1和生成器114A.1,分別表示一組生成器112和一組生成器114中的一個(gè)。圖1B-1D中在其上具有帶框的字母的虛線用于表示示例性關(guān)系。因此,在其上具有帶框的A的虛線的集合表示一種關(guān)系。圖1B中的關(guān)系可以與圖1C中的關(guān)系結(jié)合;這樣,這些結(jié)合表示父生成器114A和子生成器112A到生成器110A之間的關(guān)系的組合。此外,圖1D示出了父生成器114A和子生成器112A到生成器110A之間的關(guān)系的一些另外的示例性組合。圖1B示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的生成器110A與父生成器114A.1之間的示例性關(guān)系。圖1B還包括實(shí)例108B。一組生成器114由相同類的不同方法、相同類的不同實(shí)例和/或不同類的方法的其他生成器依賴性聲明來(lái)標(biāo)識(shí);且由此,一組生成器114的每一個(gè)可以是1)與生成器110A相同的實(shí)例(類102A的實(shí)例108A)和與該實(shí)例相關(guān)聯(lián)的不同方法(由從實(shí)例108A到生成器114A.1以及從方法104B到生成器114A.1的虛線上的帶框的A示出);2)類102A的不同實(shí)例和與該實(shí)例相關(guān)聯(lián)的不同方法(由從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1以及從方法104B到生成器114A.1的虛線上的帶框的B示出);3)不同類的實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法(由從類102B到實(shí)例108B,從實(shí)例108B到生成器114A.1以及從方法104D到生成器114A.1的虛線上的帶框的C示出);或4)類102A的不同實(shí)例(不是實(shí)例108A)和該實(shí)例的相同方法(方法104A)(例如,具有偶然依賴性——在后面描述)(由從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1以及從方法104A到生成器114A.1的虛線上的帶框的D示出);此外,如果一組生成器114中有多個(gè)生成器,則生成器本身可以是類102A的相同實(shí)例、類102A的不同實(shí)例、不同類的實(shí)例和/或以上的混合中的一部分。圖1C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的生成器110A與子生成器112A.1之間的示例性關(guān)系。圖1C還包括實(shí)例108C。一組生成器112A的每一個(gè)可以是1)與生成器IIOA相同的實(shí)例(類102A的實(shí)例108A)和與該實(shí)例相關(guān)聯(lián)的不同方法(由從實(shí)例108A到生成器112A.1和從方法104C到生成器112A.1的虛線上帶框的E示出);2)類102A的不同實(shí)例和與該實(shí)例相關(guān)聯(lián)的不同方法(由從類102A到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104C到生成器112A.1的虛線上帶框的F示出);3)不同類的實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法(由從類102C到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104F到生成器112A.1的虛線上的帶框的G示出);或類102A的不同實(shí)例(不是實(shí)例108)和該實(shí)例的相同方法(例如,具有后面描述的偶然依賴性)(由從類102A到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104A到生成器112A.1的虛線上的帶框的H示出)。因此,一組生成器112A的每一個(gè)可以是與生成器110A相同的實(shí)例、與類102A不同的實(shí)例或不同類的實(shí)例;此外,如果在一組生成器112A中存在多個(gè)生成器,則生成器112A本身可以是類102A的相同實(shí)例、類102A的不同實(shí)例、不同類的相同實(shí)例、不同類的不同實(shí)例和/或以上的混合中的一部分。圖1D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的父生成器114和子生成器112到生成器110A的關(guān)系的一些另外的示例性組合。圖1D還包括實(shí)例108B和實(shí)例108C。圖1D的組合如以下表1中所示表1<table>tableseeoriginaldocumentpage34</column></row><table>到生成器114A.1,以及從方法104B到生成器114A.1法104B到生成器112A.1從類102B到實(shí)例108B,從實(shí)例108B到生成器114A.1,以及從方法104E到生成器114A.1從類102B到實(shí)例108B,從實(shí)例108B到生成器112A.1,以及從方法104E到生成器112A.1M從類102B到實(shí)例108B,從實(shí)例108B到生成器114A.1,以及從方法104E到生成器114A.1從類102B到實(shí)例108C,從實(shí)例108C到生成器112A.1,以及從方法104E到生成器112A.1N從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1,以及從方法104A到生成器114A.1從類102A到實(shí)例108C,從實(shí)例108C到生成器112A.1,以及從方法104A到生成器112A.10從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1,以及從方法104A到生成器114A.1從類102A到實(shí)例108B,從實(shí)例108B到生成器112A.1,以及從方法104A到生成器112A.1P從實(shí)例108A到生成器114A.1以及從方法104B到生成器114A.1從類102A到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104A到生成器112A.1Q從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1,以及從方法104A到生成器114A.1從類102A到實(shí)例108B,從實(shí)例108B到生成器112A.1,以及從方法104B到生成器112A.1R從類102B到實(shí)例108B,從實(shí)例108B到生成器114A.1,以及從方法104D到生成器114A.1從類102B到實(shí)例108B,從實(shí)例108B到生成器112A.1,以及從方法104E到生成器112A.1圖1E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的相同類的不同實(shí)例可以具有基于相同和/或不同方法的生成器。圖1E顯示1)類定義102A,包括方法104A-C和分別用于所述方法的每一個(gè)的生成器依賴性聲明106A-C;2)類102A的實(shí)例108A和實(shí)例108B;3)生成器IIOA是類102A的實(shí)例108A的方法104A;4)生成器110B是是類102A的實(shí)例108A的方法104B;5)生成器110C是類102A的實(shí)例108B的方法104A;6)生成器110D是類102A的實(shí)例108B的方法104C。此外,圖1D顯示1)用于方法104A的生成器依賴性聲明106A在運(yùn)行時(shí)標(biāo)識(shí)生成器IIOA和生成器110C的子生成器;2)用于方法104B的生成器依賴性聲明106B在運(yùn)行時(shí)標(biāo)識(shí)生成器110B的子生成器;以及3)用于方法104C的生成器依賴性聲明106C在運(yùn)行時(shí)標(biāo)識(shí)生成器110D的子生成器。示例性運(yùn)行時(shí)圖2是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時(shí)的可重復(fù)使用性的框圖。在圖2中,多個(gè)面向?qū)ο髴?yīng)用程序(具有生成器依賴性聲明210A-I的面向?qū)ο髴?yīng)用代碼)由具有面向生成器圖形編程支持的相同運(yùn)行時(shí)220運(yùn)行。圖3A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時(shí)的框圖。在圖3A中,具有面向生成器圖形編程支持的運(yùn)行時(shí)335包括自動(dòng)生成器圖形生成模塊340和生成器圖形執(zhí)行模塊345。另外,運(yùn)行時(shí)335用于執(zhí)行面向?qū)ο笤创a,以及從而包括未顯示的另外的模塊。此外,圖3A顯示了用于面向?qū)ο笤创a中的方法的生成器依賴性聲明320、當(dāng)前組一個(gè)或多個(gè)其輸出是感興趣輸出的生成器325(這里也稱為當(dāng)前選擇的感興趣生成器)以及源生成器的輸出330(在后面描述)。自動(dòng)生成器圖形生成模塊340接收生成器依賴性聲明320和當(dāng)前組的感興趣生成器325。自動(dòng)生成器圖形生成模塊340嘗試基于生成器依賴性聲明發(fā)現(xiàn)具有直接或間接促成(contribute)當(dāng)前選擇的感興趣生成器的輸入的輸出的子生成器(以及在支持向上聲明的依賴性的本發(fā)明的一些實(shí)施方式中的父生成器),并建立一組一個(gè)或多個(gè)當(dāng)前的生成器圖形,該圖形表示從當(dāng)前選擇的感興趣生成器通過(guò)為非源生成器的任何被發(fā)現(xiàn)的生成器到為源生成器的被發(fā)現(xiàn)的生成器的這些生成器對(duì)彼此的依賴性。當(dāng)前的生成器圖形被存儲(chǔ)在生成器圖形結(jié)構(gòu)380中。雖然本發(fā)明的實(shí)施方式可以將生成器圖形存儲(chǔ)和處理為圖形的集合,但本發(fā)明的其他實(shí)施方式將生成器圖形存儲(chǔ)和處理為相互鏈接以形成圖形的生成器的集合(相對(duì)于圖形的集合)以便于生成器圖形的合并和分割。通過(guò)舉例而非限定的方式,描述了將生成器圖形存儲(chǔ)和處理為生成器的集合的本發(fā)明的實(shí)施方式。生成器圖形執(zhí)行模塊345從自動(dòng)生成器圖形生成模塊340和源生成器330的輸出接收當(dāng)前生成器圖形,并執(zhí)行當(dāng)前生成器圖形的生成器以確定當(dāng)前選擇的感興趣生成器的當(dāng)前輸出。生成器圖形執(zhí)行模塊345緩存生成器輸出緩存384示出的生成器圖形結(jié)構(gòu)380中的當(dāng)前生成器輸出。在執(zhí)行期間對(duì)生成器圖形的生成器輸出的緩存允許同步。例如,執(zhí)行依賴于多個(gè)子生成器的父生成器的合適時(shí)間是在所有多個(gè)子生成器已經(jīng)被執(zhí)行之后;換句話說(shuō),每一次執(zhí)行完它的子生成器后執(zhí)行父生成器是很浪費(fèi)的(并且,在一些情況下是不可能的)。對(duì)生成器輸出的緩存不但允許推遲父生成器的執(zhí)行直到其所有的子生成器被執(zhí)行完,而且允許當(dāng)所有的子生成器被執(zhí)行完且它們的輸出被緩存時(shí),確定用于執(zhí)行父生成器的合適時(shí)間。因此,運(yùn)行時(shí)通過(guò)檢查其子生成器的執(zhí)行狀態(tài)來(lái)為程序員做出這種同步?jīng)Q定;換句話說(shuō),這種同步是自動(dòng)的(程序員不需要包括用于確定標(biāo)識(shí)實(shí)例并在該實(shí)例上執(zhí)行與該實(shí)例相關(guān)聯(lián)的給定方法的合適時(shí)間的單獨(dú)源代碼)。通過(guò)另一個(gè)示例,如果某些父生成器依賴于相同的子生成器以及其他不同子生成器,則執(zhí)行所述某些父體生成器的每一個(gè)的合適時(shí)間通常是不同的;運(yùn)行時(shí)依據(jù)父生成器的一組子生成器的輸出的可用性來(lái)自動(dòng)確定執(zhí)行所述某些父生成器的每一個(gè)的合適時(shí)間。如在后面詳細(xì)描述的,因?yàn)樯善鲌D形的一些部分由于動(dòng)態(tài)生成器依賴性而可能不是當(dāng)前可發(fā)現(xiàn)的,因此自動(dòng)生成器圖形生成模塊340"嘗試"發(fā)現(xiàn)并建立整個(gè)生成器圖形,但是初始可能不能完成整個(gè)生成器圖形直到一些生成器被執(zhí)行。這樣,生成器圖形執(zhí)行模塊345可以在當(dāng)前生成器圖形執(zhí)行期間調(diào)用具有所需生成器輸出的自動(dòng)生成器圖形生成模塊340以完成當(dāng)前生成器圖形中任何未解析的余項(xiàng)(這在圖3A中由從生成器圖形執(zhí)行模塊345到自動(dòng)生成器圖形生成模塊340的虛箭頭線示出;使用虛箭頭線是因?yàn)檫@種支持是可選的)。圖4A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖。圖4A顯示了當(dāng)前組的感興趣生成器包括生成器1?;谏善鱨及其生成器依賴性聲明,生成器2和生成器3被發(fā)現(xiàn)。換句話說(shuō),生成器1的生成器依賴性聲明標(biāo)識(shí)生成器1的輸入需要生成器2和生成器3的執(zhí)行。這樣,生成器l是相關(guān)的生成器(具有一個(gè)或多個(gè)生成器依賴性的生成器)。圖4A還顯示了當(dāng)生成器3是無(wú)關(guān)生成器(不具有生成器依賴性的生成器,且因此是源生成器),生成器2是相關(guān)生成器。因此,基于生成器2的生成器依賴性聲明,生成器4和生成器5被發(fā)現(xiàn)。在圖2A中,生成器4和生成器5是無(wú)關(guān)生成器(因此,是源生成器)。圖4B示出了是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖4A中生成器圖形的初始執(zhí)行的框圖。在圖4B中,彎曲的箭頭線示出執(zhí)行一個(gè)生成器以生成被提供作為另一個(gè)生成器輸入的輸出。如圖3A中所示,源生成器330的輸出被提供給生成器圖形執(zhí)行模塊345;相反,如圖4B所示相關(guān)生成器1-2的輸出通過(guò)執(zhí)行這些生成器來(lái)被確定。因此,在圖4B中,發(fā)生1)源生成器4和源生成器5的輸出被提供給相關(guān)生成器2;2)相關(guān)生成器2被執(zhí)行;3)相關(guān)生成器2和源生成器3的輸出被提供給生成器1;以及4)生成器1被執(zhí)行且其輸出被提供作為當(dāng)前感興趣輸出。值得注意,圖4B的生成器圖形是在數(shù)據(jù)在圖形上從一個(gè)生成器流向另一個(gè)生成器的情況上被驅(qū)動(dòng)的數(shù)據(jù)。因此,生成器依賴性聲明320限制(bound)可能被生成的可能的生成器圖形;而當(dāng)前選擇的一組感興趣生成器325標(biāo)識(shí)要生成的當(dāng)前生成器圖形的起始節(jié)點(diǎn)。根據(jù)這兩點(diǎn),自動(dòng)生成器圖形生成模塊340發(fā)現(xiàn)并建立生成器圖形。發(fā)現(xiàn)和建立的自動(dòng)化在于自動(dòng)生成器圖形生成模塊340沒(méi)有被提供生成器圖形(例如,其不需要由程序員手動(dòng)標(biāo)識(shí))或甚至在生成器圖形中的生成器列表。而是,自動(dòng)生成器圖形生成模塊340解析當(dāng)前選擇的一組感興趣生成器的生成器依賴性聲明以發(fā)現(xiàn)它們的子生成器(以及在支持向上聲明的依賴性的本發(fā)明的一些實(shí)施方式中的父生成器),然后向下解析這些被發(fā)現(xiàn)的生成器的生成器依賴性聲明等直到源生成器(在后面描述的本發(fā)明的一些實(shí)施方式中,這可以借助生成器圖形執(zhí)行模塊345來(lái)完成)。在生成器圖形是樹(shù)的情況下,當(dāng)前選擇的感興趣生成器一般是根節(jié)點(diǎn),且生成器依賴性聲明被解析直到發(fā)現(xiàn)葉節(jié)點(diǎn)(源生成器)。被覆蓋的生成器和增量執(zhí)行圖3B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時(shí)的框圖,該支持還支持增量執(zhí)行和被覆蓋的生成器輸出。應(yīng)當(dāng)理解,增量執(zhí)行和被覆蓋的生成器輸出是各自無(wú)關(guān)的可選特征,且因此本發(fā)明的不同實(shí)施方式可以實(shí)施一者或兩者。在圖3B中,具有面向生成器圖形的編程支持的運(yùn)行時(shí)360包括自動(dòng)生成器圖形生成模塊365、生成器圖形執(zhí)行模塊370以及覆蓋生成器輸出模塊390。運(yùn)行時(shí)360用于執(zhí)行面向?qū)ο笤创a,且從而包括未顯示的另外的模塊。此外,圖3B顯示用于面向?qū)ο笤创a320中的方法的生成器依賴性聲明、當(dāng)前組的一個(gè)或多個(gè)具有感興趣輸出的生成器325(這里也稱為當(dāng)前選擇的感興趣生成器)和源生成器的輸出350。源生成器的輸出350包括源代碼中的無(wú)關(guān)生成器組的輸出352(例如,常數(shù)、默認(rèn)值等)和當(dāng)前替換的生成器輸出354(無(wú)關(guān)生成器的輸出和/或其輸出當(dāng)前被覆蓋的相關(guān)生成器的輸出)。在本發(fā)明的一些實(shí)施方式中,可以用當(dāng)前提供的值顯式(explicitly)覆蓋生成器的輸出(即,不是執(zhí)行生成器以基于其當(dāng)前輸入來(lái)確定其輸出,用于生成器的輸出值被顯示提供)。除了生成器圖形的任意無(wú)關(guān)生成器,生成器圖形的源生成器包括任意當(dāng)前被覆蓋的生成器。覆蓋生成器輸出模塊390接收被覆蓋的生成器輸出354(標(biāo)識(shí)哪些生成器被覆蓋且用什么輸出值來(lái)覆蓋)。在本發(fā)明的一個(gè)實(shí)施方式中,生成器可以被分類為屬性生成器或方法生成器。屬性生成器是基于屬性方法(例如,獲得和設(shè)定)。方法生成器是基于非屬性方法。覆蓋生成器輸出模塊390包括用于被覆蓋的屬性生成器的覆蓋屬性生成器輸出模塊392和用于被覆蓋的方法生成器的覆蓋方法生成器輸出模塊394。覆蓋屬性生成器輸出模塊392促使被覆蓋的值被存儲(chǔ)在生成器輸出緩存384和實(shí)例的數(shù)據(jù)中,而覆蓋方法生成器輸出模塊394促使被覆蓋的值被存儲(chǔ)在生成器輸出緩存384中。根據(jù)本發(fā)明的實(shí)施方式,這種促使可以是直接或間接的。圖3B示出了通過(guò)使用覆蓋日志396的間接促使,該覆蓋日志396收集覆蓋生成器輸出模塊390的輸出且由生成器圖形執(zhí)行模塊370來(lái)使用。為了優(yōu)化,覆蓋日志396允許覆蓋的延遲以為批處理收集多個(gè)覆蓋。與自動(dòng)生成器圖形生成模塊340類似,自動(dòng)生成器圖形生成模塊365:1)接收生成器依賴性聲明320和當(dāng)前組感興趣生成器325;以及2)嘗試基于生成器依賴性聲明發(fā)現(xiàn)具有直接或間接促成當(dāng)前選擇的感興趣生成器的輸入的輸出的子生成器(以及在支持向上聲明的依賴性的本發(fā)明的一些實(shí)施方式中的父生成器),并建立一組一個(gè)或多個(gè)當(dāng)前的生成器圖形,該當(dāng)前生成器圖形表示從當(dāng)前選擇的感興趣生成器通過(guò)任何被發(fā)現(xiàn)的非源生成器而到為源生成器的所發(fā)現(xiàn)的生成器(無(wú)關(guān)生成器和當(dāng)前被覆蓋的生成器)的這些生成器彼此的輸入依賴性。生成器圖形被存儲(chǔ)在生成器圖形結(jié)構(gòu)380中。與生成器圖形執(zhí)行模塊345類似,生成器圖形執(zhí)行模塊370從自動(dòng)圖形模塊365和源生成器350的輸出接收當(dāng)前生成器圖形,并執(zhí)行當(dāng)前生成器圖形的生成器以確定當(dāng)前所選擇的感興趣生成器的當(dāng)前輸出。生成器圖形執(zhí)行模塊370緩存如生成器輸出緩存384示出的生成器圖形結(jié)構(gòu)380中的生成器的當(dāng)前輸出。如之前所述,在執(zhí)行期間對(duì)生成器輸出的緩存允許同步(例如,不需要編寫(xiě)單獨(dú)的源代碼以確定何時(shí)圖4B中的生成器2應(yīng)當(dāng)被執(zhí)行,但是運(yùn)行時(shí)通過(guò)檢査生成器輸出緩存384中所需輸出的可用性來(lái)為程序員做出同步?jīng)Q定;換句話說(shuō),該同步是自動(dòng)的)。此外,該生成器輸出緩存384用于增量執(zhí)行。更具體地,在生成器圖形被初始生成和執(zhí)行后,當(dāng)前生成器圖形中的生成器的覆蓋需要某種層次的再執(zhí)行(reexecution)。雖然本發(fā)明的一些實(shí)施方式簡(jiǎn)單地再執(zhí)行整個(gè)圖形,但本發(fā)明的可替換實(shí)施方式支持增量執(zhí)行(只再執(zhí)行生成器圖形的被覆蓋所影響的這些部分)。支持增量執(zhí)行的一些示例性實(shí)施方式使用生成器圖形結(jié)構(gòu)380中的增量執(zhí)行標(biāo)記382來(lái)幫助確定哪些生成器需要再執(zhí)行。因此,維持生成器圖形是指在多個(gè)執(zhí)行中必要地修改生成器圖形的鏈接以使該生成器圖形保持為當(dāng)前(最新的),而增量執(zhí)行是指維持生成器圖形并使用當(dāng)前(最新的)生成器圖形來(lái)只再執(zhí)行生成器圖形中被覆蓋所影響的那些部分。與圖3A類似,存在從生成器圖形執(zhí)行模塊370到自動(dòng)生成器圖形執(zhí)行模塊365的虛箭頭線,用于表示對(duì)動(dòng)態(tài)依賴性的可選支持。應(yīng)當(dāng)注意動(dòng)態(tài)依賴性可以在生成器圖形的再執(zhí)行期間改變。圖4C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖4B的生成器圖形的增量執(zhí)行的框圖。在圖4C中,生成器5的輸出被顯式修改,但是生成器3和生成器4的輸出沒(méi)有被顯式修改。基于跟蹤生成器圖形中輸出到輸入的依賴性和只有生成器5的輸出被顯式修改,可以確定該修改只影響生成器2和生成器1。因此,更新后的生成器1的輸出的確定只需要用生成器5的新的輸出和生成器4以及生成器3的之前輸出來(lái)再執(zhí)行生成器2和生成器1。在圖4C生成器圖形的部分再執(zhí)行可以由從生成器5到生成器2以及從生成器2到生成器1(而不是從生成器4到生成器2或從生成器3到生成器1)的彎曲的箭頭線示出。缺少?gòu)纳善?到生成器2以及從生成器3到生成器1的彎曲的箭頭線不是表明生成器3和生成器4的輸出不需要,而是表明如果它們之前的輸出可用(例如從生成器圖形的先前執(zhí)行中緩存)則不需要再執(zhí)行生成器3和生成器4。圖4C的相對(duì)簡(jiǎn)單的示例示出了在增量執(zhí)行產(chǎn)生的處理資源中存在節(jié)約。該節(jié)約依賴多個(gè)因素(例如,不需要被再執(zhí)行的生成器的數(shù)量、這些生成器需要的處理量等)。雖然本發(fā)明的一個(gè)實(shí)施方式示出執(zhí)行增量執(zhí)行,但可替換實(shí)施方式可以以不同的方式被實(shí)現(xiàn)(例如,可替換實(shí)施方式可以響應(yīng)于修改而再執(zhí)行所有的生成器)。圖4D是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在相關(guān)生成器2被覆蓋后圖4B的生成器圖形的增量執(zhí)行的框圖。在圖4D中,生成器2的輸出被顯式修改,但是生成器3的輸出則沒(méi)有?;谏善鲌D形和只有生成器2的輸出被顯式修改,可以確定只有生成器1受該修改影響。結(jié)果,確定生成器l的更新后的輸出僅需要用生成器2的被覆蓋的輸出和生成器3的之前輸出來(lái)再執(zhí)行生成器1。該生成器圖形的部分再執(zhí)行可以在圖4D中由從生成器2到生成器1(而不是從生成器4和5到生成器2或從生成器3到生成器1)的彎曲的箭頭線示出。圖4E是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在相關(guān)生成器2被覆蓋且無(wú)關(guān)源生成器3被修改之后圖4B中的生成器圖形的增量執(zhí)行的框圖?;谏善鲌D形和只有生成器2和生成器3的輸出被修改,可以確定只有生成器l受該修改的影響。因此,生成器1的更新后的輸出的確定僅需要用生成器2的被覆蓋的輸出和生成器3的修改后的輸出來(lái)再執(zhí)行生成器1。生成器圖形的該部分再執(zhí)行可以在圖4E中由從生成器2和3到生成器1(不是從生成器4和5到生成器2)的彎曲的箭頭線示出。雖然支持覆蓋的生成器輸出的本發(fā)明的一個(gè)實(shí)施方式還支持不BEI覆蓋的生成器輸出,但是本發(fā)明的可替換實(shí)施方式可以不支持。雖然支持不覆蓋的生成器的本發(fā)明的一個(gè)實(shí)施方式在生成器明確地不被覆蓋之前覆蓋掉被覆蓋的生成器,但是本發(fā)明的可替換實(shí)施方式可以以不同方式實(shí)施(例如,當(dāng)替換的生成器的繼承中的一個(gè)被覆蓋時(shí)不覆蓋該被覆蓋的生成器)。生成器圖形建立和執(zhí)行本發(fā)明的不同實(shí)施方式可以被實(shí)施以在不同程度發(fā)現(xiàn)并擴(kuò)建生成器圖形(例如,建立生成器圖形直到來(lái)自根節(jié)點(diǎn)的所有圖形在無(wú)關(guān)生成器處結(jié)束(在這種情況下,生成器圖形的端節(jié)點(diǎn)是無(wú)關(guān)生成器,可能任何替換的生成器是中間節(jié)點(diǎn));擴(kuò)建生成器圖形直到來(lái)自根節(jié)點(diǎn)的每一個(gè)路徑在被替換的生成器或無(wú)關(guān)生成器中終止,無(wú)論哪條首先到達(dá)(這種情況,生成器圖形的每一個(gè)端節(jié)點(diǎn)是無(wú)關(guān)生成器或被覆蓋的生成器))。"執(zhí)行開(kāi)始生成器"是指生成器圖形的給定執(zhí)行從其開(kāi)始的生成器圖形的生成器。為了生成器圖形的初始執(zhí)行,不同的實(shí)施方式可以從不同的生成器開(kāi)始(例如,在本發(fā)明的實(shí)施方式中,建立生成器圖形直到來(lái)自根節(jié)點(diǎn)的所有路徑在無(wú)關(guān)生成器處終止,執(zhí)行可以從端節(jié)點(diǎn)處(該端節(jié)點(diǎn)為無(wú)關(guān)生成器)開(kāi)始、從源生成器處(該源生成器包括無(wú)關(guān)生成器節(jié)點(diǎn)和任意被覆蓋的生成器節(jié)點(diǎn))開(kāi)始、從源生成器的子集開(kāi)始(該子集包括在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意無(wú)關(guān)生成器與任意被覆蓋的生成器的組合),或從源生成器的子集開(kāi)始(該子集包括任意沒(méi)有任何被覆蓋的繼承的被覆蓋的生成器與在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意無(wú)關(guān)生成器的組合);在本發(fā)明的實(shí)施方式中,如果且直到生成器沒(méi)有被覆蓋,則被覆蓋的生成器下的生成器圖形不被建立,執(zhí)行可以從端節(jié)點(diǎn)處開(kāi)始(端節(jié)點(diǎn)可以是無(wú)關(guān)生成器和/或被覆蓋的生成器)等)。為了生成器圖形的后續(xù)執(zhí)行,不同的實(shí)施方式可以從不同的生成器開(kāi)始(例如,從生成器圖形的無(wú)關(guān)生成器(例如,在不支持增量執(zhí)行的本發(fā)明的實(shí)施方式中);從生成器圖形的源生成器(例如,在不支持增量執(zhí)行的本發(fā)明的實(shí)施方式中);從源生成器的子集,該子集包括自從上一次執(zhí)行開(kāi)始被覆蓋的和/或添加的源生成器(例如,在支持增量執(zhí)行的本發(fā)明的實(shí)施方式中);是自從上一次執(zhí)行開(kāi)始被覆蓋的和/或添加的源生成器,從不具有被覆蓋的繼承的任意這種被覆蓋的生成器與在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意這種被添加的生成器的組合(例如,在支持增量執(zhí)行的本發(fā)明的實(shí)施方式中)等)。通過(guò)舉例而非限定的方式,下面將描述執(zhí)行以下各項(xiàng)的本發(fā)明的實(shí)施方式1)如果且直到生成器沒(méi)有被覆蓋,則不建立在被覆蓋的生成器下的生成器圖形;2)為了生成器圖形的初始執(zhí)行,從端節(jié)點(diǎn)處開(kāi)始執(zhí)行(端節(jié)點(diǎn)可以是無(wú)關(guān)生成器和/或被覆蓋的生成器);3)實(shí)施增量執(zhí)行;以及4)為了生成器圖形的后續(xù)執(zhí)行,從源生成器的子集開(kāi)始執(zhí)行,該子集包括自從上一次執(zhí)行開(kāi)始已經(jīng)被覆蓋和/或添加的那些源生成器。關(guān)于以上執(zhí)行開(kāi)始生成器的概念,生成器圖形的執(zhí)行的處理流在不同的實(shí)施方式之間也可以不同。例如,在本發(fā)明的一個(gè)實(shí)施方式中,執(zhí)行開(kāi)始生成器的前身(ancestry)被確定并被放置在集合中,執(zhí)行開(kāi)始生成器被執(zhí)行,且針對(duì)生成器(對(duì)于該生成器所有的依賴性被執(zhí)行)該集合被反復(fù)掃描——最后達(dá)到根節(jié)點(diǎn)。作為另一個(gè)示例,在本發(fā)明的一個(gè)實(shí)施方式中,執(zhí)行開(kāi)始生成器被執(zhí)行,執(zhí)行開(kāi)始生成器的父體(parents)被標(biāo)識(shí),這些父體被執(zhí)行,且該父體的父體被標(biāo)識(shí)并執(zhí)行等。以下以舉例而非限定的方式使用后面的本發(fā)明的實(shí)施方式。示例性類型的依賴性示例性動(dòng)態(tài)生成器依賴性動(dòng)態(tài)生成器依賴性是可以在運(yùn)行時(shí)期間改變的生成器依賴性。應(yīng)當(dāng)理解用于解析生成器依賴性的準(zhǔn)則在源代碼中,且由此生成器依賴性可以被解析的生成器是有限的。參考圖3A,從生成器圖形執(zhí)行模塊345到自動(dòng)生成器圖形生成模塊340的虛箭頭線表示支持當(dāng)前生成器圖形中一個(gè)或多個(gè)生成器的執(zhí)行,該生成器對(duì)發(fā)現(xiàn)并建立整個(gè)當(dāng)前生成器圖形是必須的。換句話說(shuō),支持動(dòng)態(tài)生成器依賴性的本發(fā)明的實(shí)施方式可以在自動(dòng)生成器圖形生成模塊340和生成器圖形執(zhí)行模塊345之間重復(fù)直到整個(gè)生成器圖形被發(fā)現(xiàn)、建立、解析并執(zhí)行(即,在以下之間重復(fù)1)調(diào)用自動(dòng)生成器圖形生成模塊以發(fā)現(xiàn)并建立在此時(shí)能被解析的當(dāng)前生成器圖形的這些部分;以及2)調(diào)用生成器圖形執(zhí)行模塊以執(zhí)行當(dāng)前生成器圖形的生成器)。在這個(gè)意義上,發(fā)現(xiàn)是指訪問(wèn)生成器依賴性聲明并確定該生成器依賴性聲明所標(biāo)識(shí)的生成器;建立是指實(shí)例化生成器并將它們添加到生成器圖形;以及解析是指確定當(dāng)前未解析的動(dòng)態(tài)生成器依賴性。圖5A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的包括未解析的依賴性的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖。圖5A示出包括生成器1的當(dāng)前組的感興趣生成器?;谏善鱨及其生成器依賴性聲明,生成器2和生成器3被發(fā)現(xiàn)。換句話說(shuō),用于生成器1的依賴性聲明標(biāo)識(shí)生成器1需要生成器2和生成器3的輸出作為輸入。圖5A還示出生成器3是無(wú)關(guān)生成器(因此,是源生成器)而生成器2不是。由此,基于生成器2的依賴性聲明,生成器4和生成器5被發(fā)現(xiàn)。此外,圖5A示出生成器4是無(wú)關(guān)生成器(因此,是源生成器)而生成器5不是。由此,基于生成器5的依賴性聲明,生成器6和當(dāng)前未解析的依賴性被發(fā)現(xiàn)。圖5A還示出當(dāng)前未解析的依賴性可以用于生成器7A和/或生成器7B。圖5B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖5A中的生成器圖形的初始執(zhí)行和對(duì)未解析依賴性的解析的框圖。圖5B用彎曲的箭頭線示出圖5A的生成器圖形,該彎曲的箭頭線顯示了生成器的執(zhí)行和提供生成器的輸出給相關(guān)父生成器。此外,圖5B示出生成器5的未解析的依賴性被解析為生成器7A的依賴性,且生成器7A是無(wú)關(guān)生成器。圖5C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行和/或圖5B中生成器圖形的再執(zhí)行。圖5C示出圖5A中的生成器圖形,彎曲的箭頭線示出生成器的執(zhí)行和提供該生成器的輸出給相關(guān)父生成器。此外,圖5C示出生成器5的未解析依賴性被解析為生成器7B的依賴性,且生成器7B是相關(guān)生成器。由此,基于生成器7B的依賴性聲明,生成器8被發(fā)現(xiàn)。生成器8是無(wú)關(guān)生成器(因此,是源生成器)。假定圖5C表示圖5A中生成器圖形的初始執(zhí)行,圖5C中所有的彎曲的箭頭線可以被使用。但是,假定圖5C表示圖5B中生成器圖形的再執(zhí)行,則該再執(zhí)行導(dǎo)致動(dòng)態(tài)依賴性以不同方式被解析(從生成器5依賴于生成器7A轉(zhuǎn)換到生成器7B)。此外,如果再執(zhí)行在沒(méi)有增量執(zhí)行的情況下被執(zhí)行,則圖5C中所有的彎曲的箭頭線可以被使用;但是,如果使用了增量執(zhí)行,則只有不是虛線的彎曲的箭頭線可以被使用(生成器8到生成器7B、生成器7B到生成器5、生成器5到生成器2、以及生成器2到生成器1)。還應(yīng)當(dāng)理解,圖5C中所示的依賴性中的動(dòng)態(tài)改變是示例性的,且由此任意數(shù)量的不同情況可以出現(xiàn)(例如,動(dòng)態(tài)改變可以永遠(yuǎn)不發(fā)生;生成器5首先依賴于生成器7B然后改變到生成器7A;生成器5可以首先依賴于生成器7B且曾經(jīng)沒(méi)有動(dòng)態(tài)改變發(fā)生;生成器5可以被發(fā)現(xiàn)依賴于生成器7A和生成器7B兩者,如圖5D中所示,等等)。雖然不同的實(shí)施方式可以以不同的方式解析動(dòng)態(tài)生成器依賴性,但這里稍后提供了一些示例。因此,生成器圖形的自動(dòng)再執(zhí)行不能限定為生成器被修改以及其直接的父體被再執(zhí)行;而是改變通過(guò)生成器圖形由運(yùn)行時(shí)自動(dòng)使其波動(dòng)(ripple),影響任意合適的生成器和依賴性,因?yàn)樯善鲌D形被保持(在支持的情況下使用增量執(zhí)行)。這樣,改變導(dǎo)致任何必須的另外的發(fā)現(xiàn)、建立、解析以及執(zhí)行。因此,在用戶/程序員不需要確定生成器圖形的哪一個(gè)生成器受影響且可能手動(dòng)校正圖形的情況下,生成器圖形的再執(zhí)行被自動(dòng)執(zhí)行。靜態(tài)生成器依賴性靜態(tài)依賴性是在運(yùn)行時(shí)期間不能改變的依賴性。因此,在支持偶然和訂閱動(dòng)態(tài)依賴性的本發(fā)明的實(shí)施方式(稍后被描述)中,非偶然、非訂閱依賴性是靜態(tài)依賴性。圖4A中的示例性生成器圖形示出了靜態(tài)依賴性的生成器圖形。生成器圖形形狀由于生成器至少是實(shí)例以及與該實(shí)例相關(guān)聯(lián)的方法,因此生成器圖形是表示實(shí)例和與這些實(shí)例相關(guān)聯(lián)的方法的圖形-并且因此生成器圖形至少以實(shí)例和方法為中心。在本發(fā)明的實(shí)施方式中,生成器至少是類、實(shí)例以及方法,生成器圖形至少以類、實(shí)例以及方法為中心。應(yīng)當(dāng)理解,生成器圖形可以采取各種不同形狀(例如,生成器的單鏈、樹(shù)等)。圖5B的示例性生成器圖形是具有生成器1的根節(jié)點(diǎn)的樹(shù),從根節(jié)點(diǎn)開(kāi)始具有兩個(gè)分支一一個(gè)分支到達(dá)生成器2和生成器3的每一個(gè)。其中生成器3是葉節(jié)點(diǎn),生成器2具有從其延伸的兩個(gè)分支一一個(gè)到達(dá)生成器4和生成器5的每一個(gè)。生成器5具有從其延伸的兩個(gè)分支一一個(gè)到達(dá)生成器6和生成器7A的每一個(gè)。圖5B中的示例性生成器圖形為多級(jí),等級(jí)1包括根節(jié)點(diǎn)生成器l,等級(jí)2包括生成器2和生成器3,等級(jí)3包括生成器4和生成器5,等級(jí)4包括生成器6生成器7A(在圖5C中,等級(jí)4包括生成器7B,等級(jí)5包括生成器8)。在圖5B中,當(dāng)考慮具有生成器2的從生成器1開(kāi)始的分支時(shí),該分支上的一個(gè)生成器是生成器2且該分支的最后一個(gè)生成器是生成器4、生成器6以及生成器7A。雖然圖5B示出了生成器圖形,其中當(dāng)前組的感興趣生成器包括單個(gè)生成器,但支持多于一個(gè)的當(dāng)前感興趣生成器的本發(fā)明的實(shí)施方式可以為每一個(gè)生成器發(fā)現(xiàn)并建立生成器圖形。應(yīng)當(dāng)理解如果同時(shí)存在多個(gè)感興趣生成器,則產(chǎn)生的生成器圖形可以是無(wú)關(guān)的或可以交叉。如果生成器圖形交叉,則本發(fā)明的實(shí)施方式可以被實(shí)施以1)復(fù)制生成器以保持獨(dú)自的生成器圖形;或2)避免這種復(fù)制并保持交叉的生成器圖形。還應(yīng)當(dāng)理解這種交叉的生成器圖形可以包括是另一個(gè)生成器圖形的子集的生成器圖形。例如,如果生成器5和生成器1被包括在當(dāng)前組的感興趣生成器中,則存在具有生成器5的根節(jié)點(diǎn)的第一生成器圖形和具有生成器1的根節(jié)點(diǎn)的第二生成器圖形,其中該第二生成器圖形包括第一生成器圖形。例如,如果生成器7B和生成器l以及生成器5被包括在當(dāng)前組的感興趣生成器中,則存在與第一和第二生成器圖形分開(kāi)的具有圖5B中的生成器7B的根節(jié)點(diǎn)的第三生成器圖形。進(jìn)一步地,如果生成器5的動(dòng)態(tài)依賴性從生成器7A變到生成器7B(圖5C),則該改變使第三生成器圖形成為余項(xiàng)的第二生成器圖形的子集,并且使第二生成器圖形成為第一生成器圖形的子集。如之前所述,雖然本發(fā)明的實(shí)施方式可以將生成器圖形存儲(chǔ)和處理為圖形的集合,但本發(fā)明的其他實(shí)施方式將生成器圖形存儲(chǔ)和處理為相互鏈接以形成圖形的生成器的集合(相對(duì)于圖形的集合)以便于生成器圖形的合并和分割。通過(guò)舉例而非限定的方式,描述了將生成器圖形存儲(chǔ)和處理為生成器的集合的本發(fā)明的實(shí)施方式。示例性執(zhí)行流圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的運(yùn)行時(shí)客戶端的邏輯執(zhí)行流以及其與具有面向生成器圖形編程支持的運(yùn)行時(shí)的關(guān)系的流程圖。在圖6中,虛分界線600將運(yùn)行時(shí)客戶端610的邏輯執(zhí)行流與具有面向生成器圖形編程支持的運(yùn)行時(shí)640分開(kāi)。運(yùn)行時(shí)客戶端610的邏輯執(zhí)行流包括塊615,620,625以及630,而具有面向生成器圖形編程支持的運(yùn)行時(shí)640包括塊645,650,660以及可選的655。實(shí)箭頭線表示從塊630到塊660的直接因果關(guān)系。相比之下,點(diǎn)狀箭頭線表示分別從運(yùn)行時(shí)客戶端610的邏輯執(zhí)行流中的塊615和625到具有面向生成器圖形支持的運(yùn)行時(shí)640中的塊645和650的因果關(guān)系;根據(jù)本發(fā)明的實(shí)施方式,該因果關(guān)系可以是直接的或間接的。例如,圖6通過(guò)使用在虛線600具有面向生成器圖形支持的運(yùn)行時(shí)640側(cè)的虛線橢圓中的命令日志665示出可選間接原因。命令日志665收集由運(yùn)行時(shí)客戶端610的邏輯執(zhí)行流的塊615和625產(chǎn)生的命令;且命令日志665響應(yīng)于塊630而被處理塊660使用。因此,為了優(yōu)化,命令日志665允許延遲命令以將多個(gè)命令收集在一起并對(duì)其進(jìn)行批處理。因此,命令日志665與圖3B的覆蓋日志396類似,且在本發(fā)明的一些實(shí)施方式中實(shí)際上可以包括覆蓋日志396。在塊615中,一組一個(gè)或多個(gè)感興趣生成器可以被確定為當(dāng)前組的感興趣生成器并且控制傳到塊620。響應(yīng)于塊615和645之間的因果關(guān)系,塊645顯示當(dāng)前組的感興趣生成器被實(shí)例化并嘗試為每一個(gè)生成器發(fā)現(xiàn)、建立以及解析(如果動(dòng)態(tài)依賴性被支持且在生成器圖形中發(fā)現(xiàn)一個(gè)或多個(gè))生成器圖形,包括基于運(yùn)行時(shí)客戶端610中的生成器依賴性聲明,在需要時(shí)實(shí)例化任意的實(shí)例以及實(shí)例的生成器。參考圖3A和3B,自動(dòng)生成器圖形生成模塊340和365分別被調(diào)用。在塊620中,確定是否存在任意生成器輸出覆蓋。如果存在,則控制傳到塊625;否則,控制傳到塊630。在塊625中,為一組一個(gè)或多個(gè)生成器接收一個(gè)或多個(gè)生成器輸出覆蓋并且控制傳到塊630。響應(yīng)于塊625和塊650之間的因果關(guān)系,塊650顯示當(dāng)前組的被替換的生成器被實(shí)例化(如果在塊645中沒(méi)有被實(shí)例化),其輸出被修改并被跟蹤。因?yàn)楸桓采w的生成器己經(jīng)被發(fā)現(xiàn)是塊645中的生成器圖形的一部分,因此該被覆蓋的生成器可以已經(jīng)被實(shí)例化。但是,由于未解析的動(dòng)態(tài)依賴性,被覆蓋的生成器可以在塊645中沒(méi)有被發(fā)現(xiàn)。這樣,該被覆蓋的生成器被實(shí)例化并被覆蓋,除了當(dāng)動(dòng)態(tài)依賴性被解析時(shí)該被覆蓋的生成器可以被添加到生成器圖形。此外,如前所示,圖3B的覆蓋日志396如果被實(shí)施,則會(huì)存在于塊625與塊650之間并成為命令日志665的一部分。再者,所述一組被覆蓋的生成器在支持增量執(zhí)行的本發(fā)明的一些實(shí)施方式中被跟蹤。而在支持覆蓋日志396/命令日志665的本發(fā)明的實(shí)施方式中,跟蹤是日志的一部分,在本發(fā)明的可替換實(shí)施方式中,使用不同的機(jī)制在塊650中單獨(dú)執(zhí)行跟蹤。在塊630中,生成器圖形執(zhí)行模塊被調(diào)用并可選地控制返回到塊615和/或塊625。響應(yīng)于塊630與塊660之間的因果關(guān)系,塊660顯示了當(dāng)前生成器圖形被巡視(walk)以及基于跟蹤執(zhí)行需要執(zhí)行的任意生成器。之前已經(jīng)論述了用于執(zhí)行生成器圖形的生成器并在這里適用的各種技術(shù)。參考圖3A和3B,生成器圖形執(zhí)行模塊345和370分別被調(diào)用。此外,在本發(fā)明的實(shí)施方式中,命令日志665被實(shí)施,因果關(guān)系包括使用命令日志665并在塊660之前執(zhí)行處理塊645和650。此外,在支持未解析依賴性的可能性的本發(fā)明的實(shí)施方式中,當(dāng)需要時(shí)控制從塊660流到塊655。在塊655中,嘗試解析未解析的依賴性并發(fā)現(xiàn)和建立生成器圖形中的余項(xiàng),包括實(shí)例化任意實(shí)例及其生成器。從塊655控制流回到塊660。生成器依賴性聲明的示例性形式圖7A-圖7F示出了根據(jù)本發(fā)明的實(shí)施方式的生成器依賴性聲明的一些示例性形式。雖然圖7A-圖7F示出了支持參量、字段以及排序依賴性的實(shí)施方式,但是應(yīng)當(dāng)理解不同的實(shí)施方式可以支持三種依賴性形式中的僅一種或兩種。在本圖7A-圖7F中示出的本發(fā)明的實(shí)施方式中,生成器依賴性聲明由生成器依賴性聲明陳述和可選的顯式生成器依賴性聲明代碼組成。非快捷聲明的生成器依賴性是在其中使用顯式生成器依賴性聲明代碼的生成器依賴性,而快捷聲明的生成器依賴性是在其中沒(méi)有使用顯式生成器依賴性聲明代碼的生成器依賴性(而是,運(yùn)行時(shí)沒(méi)有使用生成器依賴性聲明代碼和/或基于生成器依賴性聲明陳述中的信息即時(shí)地(onthefly)執(zhí)行該代碼)。本發(fā)明的不同實(shí)施方式可以使用不同的語(yǔ)法來(lái)聲明生成器依賴性。例如,本發(fā)明的不同實(shí)施方式可以包括在生成器依賴性聲明陳述中使用的不同語(yǔ)法,該語(yǔ)法強(qiáng)約束、弱約束和/或不約束可以被創(chuàng)建的生成器依賴性的類型。強(qiáng)約束的生成器依賴性是為其在生成器依賴性聲明陳述中使用基本限定可以被創(chuàng)建的生成器依賴性的類型的語(yǔ)法的生成器依賴性;弱約束生成器依賴性是為其在生成器依賴性聲明陳述中使用不完全限定可以被創(chuàng)建的生成器依賴性的類型的語(yǔ)法的生成器依賴性;而未約束的生成器依賴性是為其在生成器依賴性聲明陳述中使用不限定可以被創(chuàng)建的生成器依賴性的類型的語(yǔ)法的生成器依賴性。通過(guò)舉例而非限定的方式,下面描述的本發(fā)明的實(shí)施方式包括以下1)用于參量的強(qiáng)約束生成器依賴性的語(yǔ)法(參量依賴性(ArgumentDependency)H雖約束向下聲明的參量[靜態(tài)或動(dòng)態(tài),且如果是動(dòng)態(tài)、偶然和/或吸收訂閱]依賴性);2)用于字段的強(qiáng)約束生成器依賴性的語(yǔ)法(字段依賴性(FieldDepencency)=強(qiáng)約束向下聲明的字段[靜態(tài)或動(dòng)態(tài),且如果是動(dòng)態(tài)、偶然和/或吸收訂閱]依賴性);3)用于排序依賴性的強(qiáng)約束生成器依賴性的語(yǔ)法(排序依賴性(SequencingDependency)=強(qiáng)約束向下聲明的排序[靜態(tài)或動(dòng)態(tài),且如果是動(dòng)態(tài)、偶然和/或粘附訂閱]依賴性);4)用于參量、字段或排序依賴性的弱約束向上聲明的生成器依賴性的語(yǔ)法(向上依賴性(UpwardDependency)-弱約束的向上聲明的字段、參量或排序[靜態(tài)或動(dòng)態(tài),且如果是動(dòng)態(tài)、偶然]依賴性);以及5)弱約束生成器依賴性的語(yǔ)法(弱約束依賴性=3)僅向下聲明的排序(靜態(tài)或動(dòng)態(tài),且如果是動(dòng)態(tài)、偶然和/或粘附訂閱)依賴性;或b)向上聲明[參量、字段或排序][靜態(tài)或動(dòng)態(tài),且如果是動(dòng)態(tài)、偶然]依賴性)。應(yīng)當(dāng)理解雖然本發(fā)明的一些實(shí)施方式支持生成器依賴性聲明陳述的語(yǔ)法,所述語(yǔ)法區(qū)分向下聲明參量依賴性、向下聲明字段依賴性、向上聲明依賴性(可以返回向上聲明參量、字段或排序依賴性),和弱約束依賴性(可以返回向下聲明排序依賴性、向上聲明參量、字段或排序依賴性),本發(fā)明的可替換實(shí)施方式可以采用不同的語(yǔ)法(例如,具有語(yǔ)法,該語(yǔ)法使所有依賴性是具有可以返回任意支持的依賴性(向下和向上聲明的參量、字段以及排序依賴性)的確定生成器的不受約束的依賴性;具有區(qū)分所有支持的依賴性的語(yǔ)法;具有區(qū)分向下和向上聲明的參量和字段依賴性和區(qū)分僅返回向上和向下聲明的排序依賴性的語(yǔ)法;區(qū)分向下聲明的參量和字段依賴性并區(qū)分僅返回向上聲明的排序依賴性的向上聲明的依賴性的語(yǔ)法;區(qū)分向下聲明的參量、字段和排序依賴性(不支持粘附訂閱和向上聲明的依賴性)的語(yǔ)法等等)。應(yīng)當(dāng)理解生成器依賴性聲明陳述的語(yǔ)法不必等于在生成器圖形中創(chuàng)建的生成器依賴性(例如,鏈接)(例如,ArgumentDependency創(chuàng)建參量依賴性;而UpwardDependency可以創(chuàng)建參量、字段或排序依賴性)。這樣,如果理解適當(dāng),限定詞(例如,參量、字段或排序)和詞"依賴性"之間的空間可以用于指由運(yùn)行時(shí)創(chuàng)建的依賴性,而缺少該空間可以用于指語(yǔ)法。圖7A示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用快捷聲明的依賴性的方法的生成器依賴性聲明的偽代碼;而圖7B是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性生成器的框圖。圖7A顯示1)生成器依賴性聲明陳述705,包括參量依賴性l-N、字段依賴性l-M、排序依賴性l-L、向上依賴性l-P以及弱約束依賴性l-Q;和2)方法a(alpha)710,具有來(lái)自生成器依賴性聲明陳述705的參量1-N。在本發(fā)明的一個(gè)實(shí)施方式中,生成器依賴性聲明陳述的參量被計(jì)數(shù)以為每一個(gè)參量提供參量ID,以用于跟蹤。圖7B顯示生成器720,具有以下的子依賴性1)參量ID1的生成器725;2)參量IDN的生成器730;3)字段依賴性l-M的生成器740-745;4)排序依賴性l-L的生成器746-747;以及5)向上依賴性l-P的生成器748-749(注意,弱約束依賴性l...Q未顯示,但將參考圖7G更詳細(xì)地描述)。因此生成器依賴性聲明陳述705的參量對(duì)應(yīng)于方法a710的參量,且生成器依賴性聲明陳述705中的參量的參量ID關(guān)于其標(biāo)識(shí)的子生成器而被跟蹤。圖7C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式使用非快捷聲明的依賴性的方法的生成器依賴性聲明的偽代碼,并示出了示例性生成器的框圖。圖7C顯示了圖7A的生成器依賴性聲明陳述705和方法a710以及圖7B的生成器720和725。此外,圖7C包括與參量依賴性1相關(guān)聯(lián)的生成器依賴性聲明代碼715。在運(yùn)行時(shí)期間,運(yùn)行時(shí)響應(yīng)于生成器依賴性聲明陳述705的參量依賴性1來(lái)訪問(wèn)并執(zhí)行生成器依賴性聲明代碼715。生成器依賴性聲明代碼715的執(zhí)行返回生成器725作為參量依賴性1的生成器依賴性。因此,圖7C示出了本發(fā)明的實(shí)施方式,其中生成器依賴性聲明代碼715可以是方法的一部分(不是方法a710)而不是生成器的一部分。圖7D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的依賴性的方法的生成器依賴性聲明的偽代碼;而圖7E是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性生成器的框圖。圖7D顯示了圖7A的生成器依賴性聲明陳述705和方法ct710,而圖7E顯示了圖7B的生成器720和725。此外,圖7D包括1)生成器依賴性聲明代碼750;以及2)方法P(beta)755包括生成器依賴性聲明代碼760。圖7D還顯示了生成器依賴性聲明陳述705的參量依賴性1基于將返回參量依賴性1的依賴性的方法e755來(lái)標(biāo)識(shí)生成器(圖7E中顯示為生成器765)。在運(yùn)行時(shí)期間,運(yùn)行時(shí)響應(yīng)于生成器依賴性聲明陳述705的參量依賴性1,執(zhí)行生成器765以返回參量依賴性1的生成器依賴性是生成器725的標(biāo)識(shí)。這樣,生成器765被稱為依賴性確定生成器(其輸出是生成器依賴性-因此由具有面向生成器圖形編程支持的運(yùn)行時(shí)使用為特殊處理(生成器圖形的處理)而被監(jiān)控的類/實(shí)例來(lái)返回該輸出),而生成器725稱為標(biāo)準(zhǔn)生成器(其輸出,如果有的話,不由處理生成器圖形的運(yùn)行時(shí)直接處理;但是其輸出,如果有的話,可以由父生成器(可以是依賴性確定生成器或其他標(biāo)準(zhǔn)生成器)使用和/或被提供作為生成器圖形的輸出(如果標(biāo)準(zhǔn)生成器是感興趣生成器,由此是根節(jié)點(diǎn)))。因此,圖7D-圖7E示出了本發(fā)明的實(shí)施方式,其中生成器依賴性聲明代碼715是被稱為依賴性確定生成器的另一個(gè)生成器的一部分。雖然在圖7D-圖7E中面向?qū)ο笤创a包括方法中顯式的生成器依賴性聲明代碼,根據(jù)所述方法依賴性確定生成器在運(yùn)行時(shí)被非快捷聲明的依賴性的運(yùn)行時(shí)實(shí)例化,本發(fā)明的可替換實(shí)施方式另外或替代地執(zhí)行運(yùn)行時(shí)以包括通用生成器依賴性聲明代碼,該代碼為快捷聲明的依賴性即時(shí)地(onthefly)調(diào)用作為一個(gè)或多個(gè)通用依賴性確定生成器。另外,雖然圖7C-圖7E參考參量依賴性被示出,但是示出的技術(shù)適用于其他類型的向下聲明的依賴性。此外,圖7F-圖7G示出了為向上依賴性和弱約束依賴性使用依賴性確定生成器。圖7F是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的通過(guò)使用具有依賴性確定生成器的向上依賴性的示例性依賴性的框圖。圖7F顯示了具有排序生成器依賴性的生成器720到依賴性確定生成器772。依賴性確定生成器可以在生成器720上返回父生成器748的非訂閱向上聲明的參量、字段或排序依賴性。此外,該依賴性確定生成器可以執(zhí)行動(dòng)態(tài)依賴性(即,根據(jù)數(shù)據(jù)值在以上之間選擇的偶然依賴性,包括在不同的參量ID之間,如后面所述)。雖然本發(fā)明的一些實(shí)施方式支持所有的這些可能性,但是本發(fā)明的可替換實(shí)施方式可以僅支持子集(例如,僅非訂閱向上聲明的排序依賴性)。圖7G是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的通過(guò)使用具有依賴性確定生成器的弱約束依賴性的可能的示例性依賴性的框圖。圖7G顯示了具有排序生成器依賴性的生成器720到依賴性確定生成器775。在本發(fā)明的一些實(shí)施方式中,依賴性確定生成器可以返回任意以下各項(xiàng)1)在子生成器780上的非訂閱向下聲明的排序依賴性;2)在生成器720上的父生成器785的非訂閱向上聲明的參量、字段或排序依賴性;以及3)粘附訂閱(在后面描述)。此外,該依賴性確定生成器可以執(zhí)行動(dòng)態(tài)依賴性(例如,根據(jù)數(shù)據(jù)值在以上之間選擇的偶然依賴性,包括在不同的參量ID之間,如后面所述)。雖然本發(fā)明的一些實(shí)施方式支持所有的這種可能性,但是本發(fā)明的可替換實(shí)施方式僅支持子集(例如,僅非訂閱向上聲明的排序依賴性)。如之前所示,排序依賴性可以用于不同的目的,包括確保修改數(shù)據(jù)的生成器與使用數(shù)據(jù)的生成器之間的執(zhí)行順序,該修改數(shù)據(jù)的生成器以運(yùn)行時(shí)不知道的方式修改數(shù)據(jù)(子生成器可以以需要父生成器的方法來(lái)包括訪問(wèn)該輸出的代碼的方式來(lái)編寫(xiě)子生成器的輸出(例如,通過(guò)影響不是常規(guī)生成器輸出這樣不被運(yùn)行時(shí)檢測(cè)的輸出來(lái)影響環(huán)境的方法一例如設(shè)定全局變量的方法、設(shè)定不是生成器輸出的實(shí)例中的字段的方法、影響外部數(shù)據(jù)源的方法,不同的實(shí)施方式可以支持一種或多種關(guān)于屬性生成器來(lái)聲明生成器依賴性的方式。具體地,在本發(fā)明的一些實(shí)施方式中,讀取字段的生成器依賴于獲取屬性生成器,而獲取屬性生成器應(yīng)當(dāng)依賴于設(shè)定獲取屬性方法所負(fù)責(zé)的字段的任何生成器。處理這種情況的一種技術(shù)可以在支持排序生成器依賴性的本發(fā)明的實(shí)施方式中使用,用于為獲取屬性方法提供依賴性聲明陳述,該陳述在設(shè)定獲取屬性方法負(fù)責(zé)的字段的每一個(gè)方法上創(chuàng)建排序生成器依賴性(例如,關(guān)于圖7G,生成器780是設(shè)定字段的生成器而生成器720是負(fù)責(zé)該字段的獲取屬性生成器,依賴性確定生成器775被寫(xiě)入以在生成器780上返回生成器720的向下聲明的排序依賴性)。處理該情況的第二種技術(shù)可以在支持排序生成器依賴性和向上聲明的生成器依賴性的本發(fā)明的實(shí)施方式中使用,該技術(shù)在用于設(shè)定字段的任何方法的生成器依賴性聲明陳述/代碼中包括在負(fù)責(zé)該字段的獲取方法上的向上聲明排序生成器依賴性(例如,使用向上依賴性或限制依賴性)(例如,關(guān)于圖7G,生成器720是設(shè)定字段的生成器而生成器785是負(fù)責(zé)該字段的獲取屬性生成器,依賴性確定生成器775被寫(xiě)入以在生成器720上返回父生成器785的向上聲明的排序依賴性)。該第二種技術(shù)允許設(shè)定字段方法的程序員負(fù)責(zé)提供生成器依賴性給合適的獲取方法,而不需要程序員進(jìn)入獲取方法并修改其生成器依賴性聲明陳述/代碼。在使用排序依賴性的情況下,當(dāng)給定的生成器依賴給定的變量時(shí),該變量應(yīng)當(dāng)在生成器圖形的給定執(zhí)行中被多于一個(gè)生成器的繼承生成器修改(應(yīng)當(dāng)注意通過(guò)偶然依賴性(在后面描述),不同的繼承生成器可以在當(dāng)前生成器圖形的不同執(zhí)行期間修改變量)。例如,在當(dāng)前生成器圖形的給定執(zhí)行中,獲取屬性生成器可以僅依據(jù)設(shè)定該獲取屬性生成器負(fù)責(zé)的字段的另一個(gè)生成器。應(yīng)當(dāng)理解,本發(fā)明的不同實(shí)施方式可以實(shí)施圖7A-圖7F中所示的一個(gè)或多個(gè)本發(fā)明的實(shí)施方式。例如,本發(fā)明的一個(gè)實(shí)施方式支持快捷和非快捷聲明的依賴性,這兩種都使用依賴性確定生成器;具體地,在本發(fā)明的該實(shí)施方式中1)面向?qū)ο笤创a包括方法中的顯式生成器依賴性聲明代碼,根據(jù)該方法運(yùn)行時(shí)為非快捷聲明的依賴性在運(yùn)行時(shí)實(shí)例化依賴性確定生成器;2)運(yùn)行時(shí)包括通用生成器依賴性聲明代碼,該代碼為快捷聲明即時(shí)地調(diào)用偶然依賴性(在后面描述)作為一個(gè)或多個(gè)通用依賴性確定生成器;以及3)運(yùn)行時(shí)包括直接鏈接到快捷聲明、非偶然的生成器依賴性的支持(在后面描述)。作為另一個(gè)示例,本發(fā)明的一個(gè)實(shí)施方式支持使用依賴性確定生成器的非快捷和快捷聲明的生成器依賴性;具體地,在該本發(fā)明的實(shí)施方式中1)面向?qū)ο笤创a包括方法中的顯式生成器依賴性聲明代碼,根據(jù)該方法運(yùn)行時(shí)為非快捷聲明的依賴性在運(yùn)行時(shí)實(shí)例化依賴性確定生成器;2)運(yùn)行時(shí)包括通用生成器依賴性聲明代碼,該代碼為快捷聲明的依賴性(不管類型)調(diào)用作為一個(gè)或多個(gè)通用依賴性確定生成器。該后一個(gè)實(shí)施方式允許一致處理生成器依賴性,因此可以簡(jiǎn)化運(yùn)行時(shí)。此外,雖然在本發(fā)明的一個(gè)實(shí)施方式中用于方法的生成器依賴性聲明陳述只位于面向?qū)ο笤创a中的方法的上面,但是在在本發(fā)明可替換實(shí)施方式中,該陳述可以位于任何位置(例如,用于類的所有方法的生成器依賴性聲明陳述在該類中組合到一起,用于所有類中的所有方法的生成器依賴性聲明陳述組合一起作為單獨(dú)的數(shù)據(jù)表,等等)。另外,雖然在本發(fā)明的一個(gè)實(shí)施方式中,生成器依賴性聲明代碼與生成器依賴性聲明陳述分開(kāi),但是在本發(fā)明的可替換實(shí)施方式中,它們可以結(jié)合起來(lái)(例如,生成器依賴性聲明代碼在生成器依賴性聲明陳述的插入語(yǔ)中,生成器依賴性聲明代碼直接置于生成器依賴性聲明陳述下面并由運(yùn)行時(shí)當(dāng)做單個(gè)單元來(lái)處理,等)。圖7H-圖71示出了由于依賴性確定生成器導(dǎo)致的存在于生成器圖形中的不同子圖形之間的區(qū)別。圖7H示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的標(biāo)準(zhǔn)生成器的示例性生成器圖形。具體地,圖7H顯示了具有根節(jié)點(diǎn)Sl的生成器圖形、具有根節(jié)點(diǎn)S5的生成器圖形、以及具有根節(jié)點(diǎn)Sll的生成器圖形。標(biāo)準(zhǔn)生成器Sl具有作為子體的標(biāo)準(zhǔn)生成器S2、S3以及S4;標(biāo)準(zhǔn)生成器S2和S3具有作為子體的標(biāo)準(zhǔn)生成器S7和S8;標(biāo)準(zhǔn)生成器S5具有作為子體的標(biāo)準(zhǔn)生成器S4和S6;以及標(biāo)準(zhǔn)生成器Sll具有作為子體的標(biāo)準(zhǔn)生成器S6和S10。圖7H的示例性生成器圖形可以通過(guò)使用任意數(shù)量的生成器依賴性和依賴性確定生成器而被發(fā)現(xiàn)、建立以及解析。圖71示出了用于發(fā)現(xiàn)、解析以及建立圖7H中的生成器圖形的生成器依賴性和依賴性確定生成器的一個(gè)示例。具體地,圖7I顯示圖7H中的圖形是一大組的成器圖形的子圖形。換句話說(shuō),圖71的生成器圖形包括圖7H中的圖形(稱為"目標(biāo)子圖形"并使用實(shí)箭頭線和實(shí)橢圓示出)和輔助發(fā)現(xiàn)、解析以及建立目標(biāo)子圖形的圖形(稱為"決定子圖形"并用虛箭頭線和虛橢圓示出)。圖7H中的決定子圖形包括依賴性確定生成器(DDP)1-11和標(biāo)準(zhǔn)生成器S9-10。在圖7H中,Sl被顯示為益來(lái)與DDP1-3,DDPl-3分別在S2、S3和S4上返回Sl的向下聲明的生成器依賴性;S4被顯示為依賴于DDP4依賴性,該DDP4在S4上返回S5的向上聲明的生成器依賴性;S5被顯示為依賴于DDP5,DDP5在S6上返回S5的向下聲明的生成器依賴性;S3被顯示為依賴于DDP6,而DDP6依賴于DDP8,DDP8在S9和S10上返回DDP6的向下聲明的生成器依賴性,這使DDP6在S7上返回S3的向下聲明的依賴性;S3被顯示為依賴于DDP7,DDP7在S8上返回S3的向下聲明的生成器依賴性;S8被顯示為依賴于DDP9,DDP9返回粘附訂閱,對(duì)于該粘附訂閱S6是觸發(fā)生成器而S11是被創(chuàng)建的父體(由此,在S6上的Sll的生成器依賴性);S2被顯示為依賴于DDP10,DDP10在S7和S8上返回S2的向下聲明的生成器依賴性的集合;以及Sll被顯示為依賴于DDPll,DDP11在S10上返回Sll的向下聲明的生成器依賴性。應(yīng)當(dāng)理解標(biāo)準(zhǔn)生成器可以既是目標(biāo)子圖形的部分也是決定子圖形的部分(例如,見(jiàn)SIO)。值得注意的是在圖形上數(shù)據(jù)從一個(gè)標(biāo)準(zhǔn)生成器流到另一個(gè)標(biāo)準(zhǔn)生成器的情況下,目標(biāo)子圖形是被驅(qū)動(dòng)的數(shù)據(jù)。示例性編程和執(zhí)行框架圖8A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的第一示例性框架的框圖,在該框架中應(yīng)用被提供給終端用戶。圖8A所示的框架包括三個(gè)基本分區(qū),第一個(gè)分區(qū)包括具有面向生成器圖形編程支持810的運(yùn)行時(shí)的創(chuàng)建。該第一個(gè)分區(qū)由具有高級(jí)編程技能的程序員執(zhí)行。當(dāng)在該分區(qū)中工作時(shí),程序員稱為運(yùn)行時(shí)程序員。當(dāng)創(chuàng)建具有面向生成器圖形編程支持時(shí),運(yùn)行時(shí)程序員包括生成器圖形支持和執(zhí)行各種類型的在轉(zhuǎn)換代碼、實(shí)例化代碼以及數(shù)據(jù)準(zhǔn)備代碼中使用的命令的支持。第二個(gè)分區(qū)包括運(yùn)行時(shí)執(zhí)行的面向?qū)ο髴?yīng)用源代碼820的創(chuàng)建。面向?qū)ο髴?yīng)用源代碼820包括兩個(gè)基本分區(qū)1)類定義,包括具有生成器依賴性聲明822的在方法中表達(dá)的業(yè)務(wù)邏輯(這可以可選地包括其他功能,例如圖形用戶界面一在該情況下,使用生成器和生成器依賴性聲明來(lái)編寫(xiě)圖形用戶界面);以及2)類定義,包括在方法824中表達(dá)的客戶端代碼,包括實(shí)例化代碼824A(類、實(shí)例以及感興趣生成器,以促使生成器圖形的生成)、數(shù)據(jù)準(zhǔn)備代碼824B(例如,設(shè)定命令,例如觸發(fā)生成器輸出的覆蓋的設(shè)定命令)、導(dǎo)致生成器圖形的執(zhí)行的總的執(zhí)行命令824C(例如執(zhí)行并獲取命令)以及任何所需的圖形用戶界面824D(未包括在822中)。生成器依賴性聲明用于在定義包括業(yè)務(wù)邏輯的類期間(而不是在創(chuàng)建這些類的實(shí)例之后)定義生成器之間的聯(lián)系。面向?qū)ο笤创a820是被編譯和執(zhí)行的硬編碼的類、實(shí)例以及方法。雖然在本發(fā)明的一個(gè)實(shí)施方式中執(zhí)行全局執(zhí)行命令,所述命令的執(zhí)行促使嘗試執(zhí)行當(dāng)前在生成器圖形結(jié)構(gòu)380中的所有生成器圖形,但是本發(fā)明可替換實(shí)施方式可替換地或還能執(zhí)行圖形特定執(zhí)行命令,該圖形特定執(zhí)行命令需要當(dāng)前被執(zhí)行的生成器圖形的給定圖形的標(biāo)識(shí)。此外,全局執(zhí)行命令根據(jù)運(yùn)行時(shí)的執(zhí)行可以是顯式的(例如,設(shè)定、設(shè)定、設(shè)定、執(zhí)行、獲取、獲取)或隱式的。例如,隱式全局執(zhí)行命令可以1)被感興趣生成器上的第一獲取命令觸發(fā)(例如,設(shè)定、設(shè)定、設(shè)定、獲取(隱式執(zhí)行)、獲取);2)被每一個(gè)數(shù)據(jù)處理觸發(fā)(設(shè)定(隱式執(zhí)行)、設(shè)定(隱式執(zhí)行)、設(shè)定(隱式執(zhí)行)、獲取、獲取);等等。第二分區(qū)也由具有高級(jí)編程技能且了解應(yīng)用的商業(yè)目的的程序員執(zhí)行。當(dāng)在該分區(qū)中工作時(shí),程序員稱為應(yīng)用程序員。作為該分區(qū)的一部分,如果應(yīng)用需要圖形用戶界面,則應(yīng)用程序員還為該特定應(yīng)用設(shè)計(jì)并編碼該圖形用戶界面;且由此也稱為應(yīng)用設(shè)計(jì)者。第三個(gè)分區(qū)包括使用由運(yùn)行時(shí)運(yùn)行的應(yīng)用程序。該第三個(gè)分區(qū)由不需要具有任何編程技能的終端用戶執(zhí)行。應(yīng)用程序可以以各種方式被分配(例如,作為源代碼;源代碼的轉(zhuǎn)換,例如字節(jié)代碼;二進(jìn)制等)。此外,應(yīng)用程序可以被分配用于獨(dú)立使用(standaloneuse)830(在該情況下,全部應(yīng)用程序(以及運(yùn)行程序(和運(yùn)行時(shí)(如果還沒(méi)有))被提供給計(jì)算機(jī)系統(tǒng))和/或客戶端/服務(wù)器使用。在本發(fā)明的一個(gè)實(shí)施方式中,客戶端/服務(wù)器分配包括為服務(wù)器使用832分配類定義,該類定義包括在具有生成器依賴性聲明822的方法(和運(yùn)行時(shí)(如果還沒(méi)有))中表達(dá)的業(yè)務(wù)邏輯;以及分配類定義,該類定義包括在方法824(和運(yùn)行時(shí)(如果還沒(méi)有))中表達(dá)的客戶端代碼,其中計(jì)算機(jī)系統(tǒng)上的客戶端使用834促使與服務(wù)器系統(tǒng)上的服務(wù)器使用832的通信。圖8A還示出了為獨(dú)立使用830和客戶端使用834而提供的可選可配置交互生成器輸出布局圖形用戶界面模塊840。面向?qū)ο笤创a820可以由運(yùn)行時(shí)來(lái)運(yùn)行以生成生成器圖形,且可配置交互生成器輸出布局圖形用戶界面模塊840允許以圖形方式顯示來(lái)自生成器圖形的輸出并與生成器圖形交互。具體地,可配置交互生成器輸出布局圖形用戶界面模塊840包括l)配置和映射圖形用戶界面模塊844,用于允許選擇的生成器輸出的布局和映射的配置(例如,使用的屏幕的區(qū)域,怎樣顯示數(shù)據(jù)等);以及2)顯現(xiàn)和交互圖形用戶界面模塊846,用于顯現(xiàn)配置的布局并允許生成器輸出的覆蓋(導(dǎo)致通過(guò)全局執(zhí)行命令更新生成器圖形)。應(yīng)當(dāng)理解可配置交互生成器輸出布局圖形用戶界面模塊840可以或不可以由編寫(xiě)運(yùn)行時(shí)810的同一個(gè)實(shí)體來(lái)創(chuàng)建。圖8B是示出可根據(jù)本發(fā)明的一個(gè)實(shí)施方式的第二示例性框架的框圖,在該框架中應(yīng)用被提供給終端用戶。圖8B與圖8A—樣,除了以下不同1)獨(dú)立使用830不存在;2)面向?qū)ο笤创a820被提供給服務(wù)器使用832,而客戶端代碼824沒(méi)有提供給客戶端使用834;3)可配置交互生成器輸出布局圖形用戶界面模塊840被提供給服務(wù)器使用832而沒(méi)有提供給客戶端使用834;以及4)通用可配置交互生成器輸出布局客戶端界面885被提供給客戶端使用834。可配置交互生成器輸出布局客戶端界面885用于與可配置交互生成器輸出布局圖形用戶界面模塊840接口。不管是否使用框架,在本發(fā)明的一個(gè)實(shí)施方式中,面向生成器圖形編程框架提供與未寫(xiě)入生成器依賴性聲明的程序進(jìn)行接口的能力。該與未寫(xiě)入生成器依賴性聲明的程序進(jìn)行接口的能力包括1)調(diào)用器部分(例如,沒(méi)有根據(jù)面向生成器圖形編程而編寫(xiě)的圖形用戶界面);以及2)調(diào)用的部分(例如沒(méi)有根據(jù)面向生成器圖形編程而編寫(xiě)的外部數(shù)據(jù)源)。調(diào)用器部分可以通過(guò)客戶端代碼發(fā)布面向生成器圖形編程命令。調(diào)用的部分可以被執(zhí)行作為封包(wmp)被調(diào)用的部分的生成器的一部分(稱為"封包生成器(wrappingproducer)")。執(zhí)行調(diào)用的部分(例如從數(shù)據(jù)源讀取數(shù)據(jù)或訂閱外部數(shù)據(jù)源中的數(shù)據(jù)改變)可以一次觸發(fā)實(shí)例的修改。這種改變可以通過(guò)調(diào)用封包生成器的代碼中的屬性設(shè)定方法來(lái)發(fā)生。獲取屬性生成器(獲得者)被促使在這些封包生成器上具有依賴性,以確保在外部數(shù)據(jù)源中發(fā)生的由改變觸發(fā)的實(shí)例修改通過(guò)生成器圖形被合適地傳播。如之前所述,不同的實(shí)施方式可以支持一多個(gè)聲明關(guān)于屬性生成器的生成器依賴性的方式。例如,在支持排序生成器依賴性的本發(fā)明的一些實(shí)施方式中,排序依賴性可以用于聲明封包生成器上非訂閱向下聲明的排序生成器依賴性。作為另一個(gè)示例,在支持排序生成器依賴性和非訂閱向上聲明的生成器依賴性的本發(fā)明的一些實(shí)施方式中,向上依賴性和/或弱約束依賴性可以位于封包生成器的生成器依賴性聲明中,從而為屬性生成器創(chuàng)建非訂閱向上聲明的排序生成器依賴性。圖8C-圖8F示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的可配置交互生成器輸出布局圖形用戶界面模塊840的示例性截屏和使用。雖然將參考可配置交互生成器輸出布局圖形用戶界面模塊840來(lái)描述本發(fā)明的實(shí)施方式,所述可配置交互生成器輸出布局圖形用戶界面模塊840提供配置、映射以及以電子表格的形式與選擇的當(dāng)前生成器圖形的輸出的交互,但是本發(fā)明的可替換實(shí)施方式可以被執(zhí)行以另外或可替換地提供另一種形式的支持。此外,雖然根據(jù)一些實(shí)施方式描述了執(zhí)行配置、映射以及電子表格形式的交互的示例方式,但是本發(fā)明的其他實(shí)施方式可以以其他方式執(zhí)行這些操作,具有不同的界面和/或不同的屏幕布局。此外,電子表格可以支持任意已知的與電子表格相關(guān)聯(lián)的功能(例如,色彩選擇、字體選擇、條形/餅形/線形圖、數(shù)據(jù)透視表、保存布局、裝載布局,等)。圖8C-圖8D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的自由單元選擇的示例性截屏和使用,而圖8E-圖8F示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的表格創(chuàng)建的示例性截屏和使用。圖8C-圖8F中的每一個(gè)包括屏幕上方的菜單條850、當(dāng)前生成器圖形中的生成器的類列表852和其在屏幕左下側(cè)的輸出、以及用電子表格似的布局填充屏幕的剩余部分的配置和映射視窗854。另外,圖8C-圖8F還顯示具有列表852中類的獲取屬性方法的類的示例性列表,如下1)62類PERSON(人);2)類PERSON的獲取屬性方法,包括FIRSTNAME(名)(例如,字符串)、LASTNAME(姓)(例如,字符串)、GENDER(性別)(例如,字符串)、HOMEADDRESS(家庭住址)(類地址的實(shí)例)、PROFESSIONALADDRESS(工作地址)(類地址的實(shí)例)、DATEOFBIRTH(出生日期)(例如,日期)以及AGE(年齡)(例如,整數(shù));3)類地址;4)類ADDRESS的獲取屬性方法,包括CITY(城市)(例如,字符串)、STATE(州)(例如,字符串)、ZIPCODE(郵編)(例如,字符串)。這樣,當(dāng)前生成器圖形包括類PERSON和類ADDRESS的生成器以及其輸出是類PERSON和ADDRESS的生成器。還值得注意,獲取屬性方法AGE基于獲取屬性方法DATEOFBIRTH的輸出而計(jì)算年齡;這樣,根據(jù)獲取屬性方法AGE實(shí)例化的生成器與根據(jù)獲取屬性方法DATEOFBIRTH實(shí)例化的生成器相關(guān)。圖8C-圖8D示出了輸入到視窗的第一列的連續(xù)單元的自由文本,如下顧客、名、姓、出生日期以及年齡;而圖8E-圖8F顯示如下1)輸入到視窗的第一行的自由文本——顧客列表;以及2)輸入到視窗的第二行的連續(xù)單元的自由文本名、姓、出生日期以及年齡。圖8C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式具有可配置交互生成器輸出布局圖形用戶界面模塊840的自由單元選擇的示例性截屏和使用。圖8C顯示了類PERSON和選擇的類PERSON的獲取屬性方法到視窗不同單元的一組映射。具體地,類PERSON映射到自由文本"顧客"右邊的單元。作為該動(dòng)作的一部分,本發(fā)明的一些實(shí)施方式提示用戶從多個(gè)支持的過(guò)濾器中的一個(gè)中做出選擇(顯示為過(guò)濾器選擇858)(例如,下拉列表,形成滾動(dòng)箭頭等)。這些過(guò)濾器能夠選擇的被選擇的類的生成器的一個(gè)或多個(gè)實(shí)例關(guān)鍵字,或選擇其輸出類是被選擇的類的生成器的一個(gè)或多個(gè)實(shí)例關(guān)鍵字。雖然本發(fā)明的一些實(shí)施方式支持多個(gè)過(guò)濾器,但是本發(fā)明的其他實(shí)施方式默認(rèn)為一個(gè)(且允許用戶選擇是否選擇其他不同的)或僅支持一個(gè)且不需要執(zhí)行過(guò)濾器選擇858。映射856還顯示類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE分別被映射到與具有對(duì)應(yīng)自由文本的單元鄰近的單元。這種映射可以用任意數(shù)量的公知技術(shù)來(lái)執(zhí)行,包括在GUI領(lǐng)域拖放、鍵入等。圖8D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的自由單元選擇的另一個(gè)示例性截屏和使用。圖8D顯示了類PERSON所映射到的單元允許實(shí)例選擇854。具體地,基于用于該單元的過(guò)濾器,給用戶機(jī)會(huì)從包括類PERSON的生成器的實(shí)例關(guān)鍵字和產(chǎn)生類PERSON的生成器的實(shí)例關(guān)鍵字的列表中選擇類PERSON的實(shí)例。類PERSON的實(shí)例的選擇(或單個(gè)實(shí)例的存在)致使用該實(shí)例的對(duì)應(yīng)的獲取屬性方法的輸出自動(dòng)填充類PERSON的獲取屬性方法被映射到的單元。基于類PERSON的實(shí)例的表格填充被標(biāo)記為858。在圖8D中的示例中,類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE被映射到的單元分別被填充JOHN、SMITH、7/20/1990以及16。圖8D還顯示了獲取屬性方法已經(jīng)被映射到的視窗的單元可以被覆蓋。通過(guò)舉例的方式,圖8D顯示如果獲取屬性方法DATEOFBIRTH被映射到的單元被覆蓋,則該單元使其輸出當(dāng)前正填充該單元的生成器的輸出的覆蓋、全局執(zhí)行命令的調(diào)用(這導(dǎo)致其輸出當(dāng)前正填充該單元的生成器的再執(zhí)行,獲取屬性方法AGE被映射到該單元)以及任意顯示的所需更新。圖8E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的表格創(chuàng)建的示例性截屏和使用。圖8E顯示了區(qū)域和方向選擇864被執(zhí)行以標(biāo)識(shí)具有自由文本——名、姓、出生日期以及年齡——的單元正下方的三行垂直的表格(用圍繞這些單元的粗虛線示出)。本發(fā)明的不同實(shí)施方式可以以各種方式支持用戶執(zhí)行該操作,(包括l)用如鼠標(biāo)的輸入裝置來(lái)選擇區(qū)域;以及2)用如彈出式菜單的界面在豎直表格、水平表格或數(shù)據(jù)透視表之間選擇——假定支持多個(gè)方向)。圖8E還顯示被選擇的類PERSON的獲取屬性方法到視窗的不同單元的一組映射866。具體地,映射866顯示類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE分別被映射到具有對(duì)應(yīng)自由文本的單元的正下方的單元。圖8F示出列入根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的表格創(chuàng)建的另一個(gè)示例性截屏和使用。映射866導(dǎo)致類的實(shí)例的相應(yīng)的獲取屬性方法的輸出自動(dòng)填充表格的列,類PERSON的獲取屬性方法被映射到該列?;陬怭ERSON的實(shí)例的表格填充被標(biāo)記為868。在圖8D的示例中,類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE被映射到的列用以下行的數(shù)據(jù)來(lái)填入1)史蒂夫,柯林斯,7/20/1990以及16:2)珍妮弗,亞當(dāng)斯,7/20/1990和16;以及3)約翰,史密斯,7/20/1985,和21。如圖8D中一樣,圖8F顯示了獲取屬性方法己經(jīng)映射到的視窗的單元可以被覆蓋。通過(guò)舉例的方式,圖8F顯示如果獲取屬性方法DATEOFBIRTH被被映射到的列的第二行的單元被覆蓋,則該覆蓋導(dǎo)致其輸出當(dāng)前填充該單元的生成器的輸出的覆蓋、全局執(zhí)行命令的調(diào)用(這導(dǎo)致其輸出當(dāng)前正填充該單元的生成器的再執(zhí)行,獲取屬性方法AGE被映射到該單元)以及任何顯示的所需更新。圖8C-圖8F示出了由配置和映射圖形用戶界面模塊842生成的示例性屏幕。通過(guò)顯現(xiàn)和交互圖形用戶界面模塊846生成的屏幕是相同的,不同在于通過(guò)類列表(具有其獲取屬性方法)852,配置和映射視窗854被顯現(xiàn)和交互視窗(未顯示)替代,該顯現(xiàn)和交互視窗包括與顯示的配置和映射視窗854相同的圖像(不同的是映射特性不再可用)。示例性運(yùn)行時(shí)分配方案圖9A-圖9C示出了分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的各種方案。應(yīng)當(dāng)理解這些分配方案是示例性的,因此其他方案也在本發(fā)明的范圍中。圖9A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的第一方案的框圖。在圖9A中,面向?qū)ο笤创a905(其包括生成器依賴性聲明)被顯示在具有面向生成器圖形編程支持的運(yùn)行時(shí)910的上面,該運(yùn)行時(shí)910在具有類裝載、動(dòng)態(tài)類實(shí)例化、動(dòng)態(tài)單方法調(diào)用以及類/方法自省(introspection)的運(yùn)行時(shí)915的上面,運(yùn)行時(shí)915在操作系統(tǒng)920的上面。在圖9A中,運(yùn)行時(shí)910與運(yùn)行時(shí)915—起工作。盡管任意數(shù)量的機(jī)制可以用于允許運(yùn)行時(shí)910與運(yùn)行時(shí)915—起工作,但元數(shù)據(jù)功能以舉例的方式被描述。元數(shù)據(jù)功能允許附加信息被添加到源代碼,所述信息被開(kāi)發(fā)工具使用。例如,用于Java的元數(shù)據(jù)功能規(guī)范將用于注釋字段、方法以及類的API定義為具有特定屬性,該特定屬性指示它們應(yīng)當(dāng)以特殊方式由開(kāi)發(fā)工具、部署工具或運(yùn)行時(shí)庫(kù)來(lái)處理(Java規(guī)范請(qǐng)求175)。在該示例中,對(duì)面向?qū)ο笤创a905進(jìn)行編程的程序員可以將注釋以生成器依賴性聲明的形式添加到方法。由于這些注釋由運(yùn)行時(shí)915切換到運(yùn)行時(shí)910,因此運(yùn)行時(shí)910指示生成器依賴性聲明的語(yǔ)法。在圖9A中,運(yùn)行時(shí)910和運(yùn)行時(shí)915可以由不同的機(jī)構(gòu)開(kāi)發(fā)和/或分配。圖9B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的第二方案的框圖。在圖9B中,面向?qū)ο笤创a925(其包括生成器依賴性聲明)被顯示在運(yùn)行時(shí)930(具有類裝載、動(dòng)態(tài)類實(shí)例化、動(dòng)態(tài)單方法調(diào)用和類/方法自省,以及面向生成器圖形編程支持)的上面,運(yùn)行時(shí)930在操作系統(tǒng)935的上面。與圖9A比較,運(yùn)行時(shí)910和915被合并成單個(gè)運(yùn)行時(shí)930。這種合并的結(jié)果是,運(yùn)行時(shí)930指示生成器依賴性聲明的語(yǔ)法。因此,對(duì)面向?qū)ο笤创a925進(jìn)行編程的程序員可以將生成器依賴性聲明添加到所需語(yǔ)法中。圖9c是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時(shí)的第三方案的框圖。在圖9C中,面向?qū)ο笤创a940(其包括生成器依賴性聲明)被顯示在運(yùn)行時(shí)945(具有類裝載、動(dòng)態(tài)類實(shí)例化、動(dòng)態(tài)單方法調(diào)用和類/方法自省,以及面向生成器圖形編程支持)的上面。與圖9B比較,運(yùn)行時(shí)920和935被合并成單個(gè)實(shí)體。這種合并的結(jié)果是,操作系統(tǒng)945指示生成器依賴性聲明的語(yǔ)法。因此,對(duì)面向?qū)ο笤创a940進(jìn)行編程的程序員可以將生成器依賴性聲明添加到所需語(yǔ)法中。雖然描述了實(shí)施方式,其中運(yùn)行時(shí)具有類裝載、動(dòng)態(tài)類實(shí)例化、動(dòng)態(tài)單方法調(diào)用以及類/方法自省,但是可替換實(shí)施方式可以包括更多或更少的特征(例如,實(shí)例克隆、動(dòng)態(tài)代理、原始類型轉(zhuǎn)換等)。示例性優(yōu)點(diǎn)在本發(fā)明的一個(gè)實(shí)施方式中,為方法聲明生成器依賴性,作為指定使用合適實(shí)例而不是用手動(dòng)調(diào)用排序代碼的方法調(diào)用排序(其中合適的實(shí)例包括作為參量使用的實(shí)例、實(shí)例方法使用的實(shí)例以及類方法使用的元類實(shí)例)的方式。有效地,生成一些或所有手動(dòng)調(diào)用排序代碼的工作被替換為1)應(yīng)用程序員為編寫(xiě)生成器依賴性聲明所完成的工作;以及2)運(yùn)行時(shí)為發(fā)現(xiàn)并建立生成器圖形以及執(zhí)行這些生成器圖形的生成器所完成的工作。換句話說(shuō),之前包含在手動(dòng)調(diào)用排序代碼中的邏輯基于生成器依賴性聲明在運(yùn)行時(shí)期間是可被運(yùn)行時(shí)發(fā)現(xiàn)的。因此,生成器依賴性聲明告知運(yùn)行時(shí)具有什么樣的參量的什么實(shí)例的什么方法被執(zhí)行以及為了同步何時(shí)執(zhí)行。盡管編寫(xiě)運(yùn)行時(shí)的工作相對(duì)較大,但是只需要編寫(xiě)一次就能用于執(zhí)行為運(yùn)行時(shí)編寫(xiě)的任何面向?qū)ο髴?yīng)用;相反,為了典型應(yīng)用,編寫(xiě)生成器依賴性聲明的工作與編寫(xiě)手動(dòng)調(diào)用排序代碼相比相對(duì)較少。減少編程錯(cuò)誤面向生成器圖形編程一般降低與手動(dòng)調(diào)用排序代碼的調(diào)試和/或性能調(diào)節(jié)相關(guān)的耗費(fèi)。這至少因?yàn)閼?yīng)用程序的基礎(chǔ)結(jié)構(gòu)從概念上是操作特定輸入的對(duì)象的轉(zhuǎn)換方法(與對(duì)象相關(guān)聯(lián)的一個(gè)方法的輸出是另一個(gè)的輸入,等)的一組非格式化圖形的原因是真實(shí)的。生成器依賴性聲明和具有面向生成器圖形編程支持的運(yùn)行時(shí)將這些圖形格式化為生成器圖形。因此,對(duì)于每一次改變數(shù)據(jù)的機(jī)會(huì),應(yīng)用程序員不需要考慮其影響,并編寫(xiě)手動(dòng)調(diào)用排序代碼以利用合適的輸入使合適的實(shí)例的合適的轉(zhuǎn)換方法以合適的順序被調(diào)用。換句話說(shuō),對(duì)于每一次改變數(shù)據(jù)的機(jī)會(huì),應(yīng)用程序員不需要考慮哪些圖形受影響,和在這些圖形內(nèi)的實(shí)例的哪些轉(zhuǎn)換方法受影響。而是,自動(dòng)生成器圖形生成模塊發(fā)現(xiàn)并建立生成器圖形且生成器圖形執(zhí)行模塊再執(zhí)行需要反映數(shù)據(jù)改變的生成器圖形。該自動(dòng)化幫助應(yīng)用程序員避免如下錯(cuò)誤,例如1)以錯(cuò)誤順序調(diào)用合適實(shí)例的合適轉(zhuǎn)換方法;2)忘記包括使圖形中實(shí)例的一個(gè)或多個(gè)所需的轉(zhuǎn)換方法響應(yīng)于一些改變的數(shù)據(jù)而被調(diào)用的命令;3)包括使實(shí)例的不必要的轉(zhuǎn)換方法響應(yīng)于一些改變的數(shù)據(jù)而被調(diào)用的命令(例如,包括用于調(diào)用不是受數(shù)據(jù)改變的影響的圖形一部分的實(shí)例的轉(zhuǎn)換方法的命令;包括用于調(diào)用是受數(shù)據(jù)改變的影響但自身沒(méi)有被影響的圖形一部分的實(shí)例的轉(zhuǎn)換方法的命令,等等)。同步化如之前所述,在執(zhí)行期間的生成器輸出的緩存允許同步化。因此,根據(jù)與觀察者模式的比較,生成器依賴性聲明向具有面向生成器圖形編程支持的運(yùn)行時(shí)通知依賴性,且該運(yùn)行時(shí)確定何時(shí)回調(diào)哪個(gè)生成器。完全解釋任意結(jié)果的能力在本發(fā)明的一個(gè)實(shí)施方式中,操練(drilling)/查看模塊(未顯示)被包括作為運(yùn)行時(shí)的一部分。操練/查看模塊提供圖形用戶界面,該圖形用戶界面通過(guò)終端用戶的交互允許向下操練生成器圖形(從根節(jié)點(diǎn)下行到生成器圖形)以查看生成器圖形的各種生成器的輸出。這允許終端用戶觀察分配到感興趣生成器的輸出的各種輸出,包括數(shù)據(jù)值和依賴性(由依賴性確定生成器返回)。此外,在本發(fā)明的一個(gè)實(shí)施方式中,操練/查看模塊給終端用戶提供查看生成器的方法內(nèi)的代碼、生成器的實(shí)例的值和/或生成器的類的內(nèi)容的能力。因此,操練/査看模塊提供多種后置處理活動(dòng),包括調(diào)試、輸出解釋等。示例性實(shí)際應(yīng)用/技術(shù)效果/工業(yè)適用性存在不同方面的多種示例性實(shí)際應(yīng)用和本發(fā)明的實(shí)施方式。例如,運(yùn)行時(shí)作為執(zhí)行應(yīng)用程序的一部分,促使從機(jī)器存儲(chǔ)介質(zhì)中取得信息(例如,訪問(wèn)面向?qū)ο笤创a,包括生成器依賴性聲明)、將信息存儲(chǔ)到機(jī)器存儲(chǔ)介質(zhì)(例如,存儲(chǔ)像生成器圖形結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)等)、硬件處理資源的操作、提供感興趣生成器的輸出(例如,通過(guò)圖形用戶界面、存儲(chǔ)到機(jī)器存儲(chǔ)介質(zhì)、傳輸?shù)?等。在某個(gè)意義上,預(yù)處理行為包括編寫(xiě)這樣的應(yīng)用程序和/或提供數(shù)據(jù)(數(shù)據(jù)可以表示任意數(shù)量的物理和/或?qū)嶋H項(xiàng),例如金融值、地理值、氣象值、保險(xiǎn)統(tǒng)計(jì)值、統(tǒng)計(jì)值、物理測(cè)量、機(jī)器狀態(tài)值等),而后置處理行為包括結(jié)果的提供(所述結(jié)果可以表示任意數(shù)量的物理和/或?qū)嶋H項(xiàng),例如金融值、地理值、氣象值、保險(xiǎn)統(tǒng)計(jì)值、統(tǒng)計(jì)值、工業(yè)測(cè)量、機(jī)器控制信息等)。通過(guò)具體示例的方式,后置處理行為可以由以下來(lái)提供1)圖10的生成器圖形視窗模塊1062,用于以圖形方式顯示顯示運(yùn)行時(shí)生成的當(dāng)前生成器圖形的表示;和/或2)可配置交互生成器輸出布局圖形用戶界面模塊840(同樣見(jiàn)圖10的可配置交互生成器輸出布局圖形用戶界面模塊1085),用于以圖形方式顯示來(lái)自生成器圖形的輸出并與該生成器圖形交互。作為另一個(gè)示例,自身具有生成器依賴性聲明的應(yīng)用程序在被運(yùn)行時(shí)執(zhí)行時(shí)表示物理/實(shí)際項(xiàng)并促使上述操作。通過(guò)具體示例的方式,這些生成器依賴性聲明響應(yīng)于運(yùn)行時(shí)對(duì)它們的執(zhí)行而促使數(shù)據(jù)結(jié)構(gòu)在機(jī)器存儲(chǔ)介質(zhì)中被形成。而且,生成器依賴性聲明和應(yīng)用程序一起被存儲(chǔ)并從機(jī)器存儲(chǔ)介質(zhì)中和應(yīng)用程序一起被取得。此外,這些生成器依賴性聲明表示生成器之間的關(guān)系,而生成器表示執(zhí)行的操作(方法)和實(shí)例。面向?qū)ο缶幊讨械膶?shí)例可以用于表示物理和/或?qū)嶋H項(xiàng),而生成器表示在這些描述上被執(zhí)行的操作。通過(guò)另一個(gè)示例,一組一個(gè)或多個(gè)應(yīng)用程序和運(yùn)行時(shí)實(shí)施交叉資產(chǎn)風(fēng)險(xiǎn)管理軟件,包括外幣兌換、資產(chǎn)凈值、利率、信貸、膨脹、商品以及交叉資產(chǎn)復(fù)合產(chǎn)品。這些產(chǎn)品范圍從現(xiàn)金和實(shí)際普通產(chǎn)品到特殊且復(fù)雜的衍生產(chǎn)品。還包括的是一組用于這些產(chǎn)品的數(shù)學(xué)估價(jià)模型,以及它們相關(guān)的市場(chǎng)數(shù)據(jù)、支付和記賬項(xiàng)生成例程和它們的相關(guān)可觀察的標(biāo)定模型以及它們相關(guān)的原始輸入。通過(guò)另一個(gè)示例,一組一個(gè)或多個(gè)應(yīng)用程序和運(yùn)行時(shí)可以實(shí)施文字處理器、電子數(shù)據(jù)表、通信/電子郵件軟件、照片査看軟件、病毒掃描軟件、媒體播放器、數(shù)據(jù)庫(kù)服務(wù)器、游戲、工業(yè)應(yīng)用、計(jì)算機(jī)輔助設(shè)計(jì)工具應(yīng)用和/或操作系統(tǒng)。當(dāng)然,應(yīng)用程序可以被實(shí)施以執(zhí)行各種其他任務(wù)。示例性實(shí)施通過(guò)圖示的方式,本發(fā)明的示例性實(shí)施方式將被描述,其支持依賴性、動(dòng)態(tài)依賴性(包括偶然依賴性和訂閱依賴性)、用于快捷聲明的依賴性和非快捷聲明的依賴性的顯式依賴性確定生成器、用于快捷聲明的依賴性、類關(guān)鍵字、實(shí)例關(guān)鍵字、方法關(guān)鍵字、生成器覆蓋/不覆蓋命令(其是設(shè)定命令類型)以及全局執(zhí)行命令的即時(shí)依賴性確定生成器。此外,示例性實(shí)施方式可選地支持生成器圖形交互視窗模塊和增量執(zhí)行。當(dāng)然,本發(fā)明的可替換實(shí)施方式可以實(shí)施更多、更少和/或不同的特征。圖IO是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性實(shí)施的框圖。在圖10中,虛分界線1000將運(yùn)行時(shí)客戶端1002與具有面向生成器圖形編程支持的運(yùn)行時(shí)間1004隔開(kāi)。運(yùn)行時(shí)客戶端1002的邏輯執(zhí)行流包括塊1010、1020、1025、1030以及1035,且具有面向生成器圖形編程支持的運(yùn)行時(shí)間1004分別包括對(duì)應(yīng)的塊1095、1098、1040、1045以及1070;實(shí)箭頭線表示從運(yùn)行時(shí)客戶端1002的邏輯執(zhí)行流的塊1035到具有面向生成器圖形編程支持的運(yùn)行時(shí)間1004的塊1070的直接因果關(guān)系,而點(diǎn)箭頭線示出了從運(yùn)行時(shí)客戶端1002的塊1010、1020、1025和1030到具有面向生成器圖形編程支持的運(yùn)行時(shí)間1004的塊1095、1098、1040和1045的因果關(guān)系。根據(jù)本發(fā)明的實(shí)施方式,這些后來(lái)的因果關(guān)系可以是直接或間接的。例如,與圖6類似,通過(guò)使用命令日志(未顯示)和/或覆蓋日志1047可選間接因果關(guān)系可以被使用。此外,塊1095和1098是虛線,因?yàn)楦鶕?jù)本發(fā)明的實(shí)施方式它們可選地可以是不同塊的一部分(例如,塊1095可以是塊1098的一部分;塊1098可以是塊1040的一部分;塊1095和1098可以是塊1040的一部分)。類似的,塊1045是虛線,是因?yàn)楦鶕?jù)本發(fā)明的實(shí)施方式它可選地可以是不同塊的一部分(例如,塊1045可以是塊1070的一部分)。在圖10中,運(yùn)行時(shí)1002包括類定義IOIO,該類定義包括具有數(shù)據(jù)1012、方法1014、生成器依賴性聲明1016以及可選的類關(guān)鍵字1090的業(yè)務(wù)邏輯。類定義1010是面向?qū)ο缶幊陶Z(yǔ)言的類,因此包括用于數(shù)據(jù)1012和方法1014的定義。此外,這些類定義1010包括如前所述的用于方法1014的生成器依賴性聲明1016。此外,在本發(fā)明的一個(gè)實(shí)施方式中,每一個(gè)類具有用于跟蹤的類關(guān)鍵字1090。運(yùn)行時(shí)1004的新的類模塊1095裝載并自省類定義1010(例如,響應(yīng)于新的類命令)。該裝載和自省可以使用任意數(shù)量的公知或?qū)?lái)開(kāi)發(fā)的技術(shù)來(lái)完成,包括為了優(yōu)化而選擇性地裝載類的技術(shù)。新的類模塊1095裝載類通過(guò)運(yùn)行時(shí)1004的類1054來(lái)示出。作為裝載和自省類1054的一部分,新的類模塊1095還裝載并自省生成器依賴性聲明1016,如通過(guò)類1054中的方法和生成器依賴性聲明1056所示的。新的類模塊1095還保持類跟蹤結(jié)構(gòu)1092,該類跟蹤結(jié)構(gòu)1092用于使用類關(guān)鍵字來(lái)跟蹤類。因此,類跟蹤結(jié)構(gòu)1092保持類關(guān)鍵字與類1054的引用之間的對(duì)應(yīng)。此外,新的類模塊1095還保持用于使用方法關(guān)鍵字跟蹤方法的方法跟蹤結(jié)構(gòu)1058。因此,方法跟蹤結(jié)構(gòu)1058保持方法關(guān)鍵字與方法的引用以及關(guān)于生成器依賴性聲明的信息之間的對(duì)應(yīng)。運(yùn)行時(shí)客戶端1002還包括具有實(shí)例關(guān)鍵字1020的實(shí)例實(shí)例化命令。運(yùn)行時(shí)1004的新的實(shí)例模塊1098實(shí)例化由具有實(shí)例關(guān)鍵字1020的實(shí)例實(shí)例化命令指定的實(shí)例(例如,響應(yīng)于新的實(shí)例命令)。該實(shí)例的實(shí)例化可以使用任意數(shù)量的公知或?qū)?lái)開(kāi)發(fā)的技術(shù)來(lái)完成,包括為了優(yōu)化而選擇性實(shí)例化實(shí)例的技術(shù)。作為該實(shí)例的實(shí)例化的一部分,新的實(shí)例模塊1098使用類關(guān)鍵字訪問(wèn)類跟蹤結(jié)構(gòu)1092從而訪問(wèn)來(lái)自類1054的合適的類。新的實(shí)例模塊1098實(shí)例化實(shí)例可以通過(guò)運(yùn)行時(shí)1004的實(shí)例1052來(lái)示出。新的實(shí)例模塊1095還保持用于使用實(shí)例關(guān)鍵字來(lái)跟蹤實(shí)例的實(shí)例跟蹤結(jié)構(gòu)1065。因此,實(shí)例跟蹤結(jié)構(gòu)1065保持實(shí)例關(guān)鍵字與實(shí)例1052的引用之間的對(duì)應(yīng)。如之前所示,新的類模塊1095可以是新的實(shí)例模塊1098的一部分,在其中,類1054可以響應(yīng)于實(shí)例實(shí)例化命令1020(而不是單獨(dú)的新的類命令)被實(shí)例化。運(yùn)行時(shí)客戶端1002還包括具有生成器關(guān)鍵字1025的生成器實(shí)例化命令。運(yùn)行時(shí)1004的自動(dòng)生成器圖形生成模塊1040實(shí)例化由具有生成器關(guān)鍵字1025的生成器實(shí)例化命令指定的生成器(例如,響應(yīng)于指定當(dāng)前組的感興趣生成器的新的生成器命令)。此外,自動(dòng)生成器圖形生成模塊1040還響應(yīng)于之前所述的當(dāng)前組的感興趣生成器發(fā)現(xiàn)、建立并可選地解析生成器圖形。在本發(fā)明的一個(gè)實(shí)施方式中,生成器關(guān)鍵字包括類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字。作為該生成器實(shí)例化的一部分,自動(dòng)生成器圖形生成模塊1040:1)使用類關(guān)鍵字來(lái)訪問(wèn)類跟蹤結(jié)構(gòu)1092以訪問(wèn)來(lái)自類1054中的合適的類;2)使用實(shí)例關(guān)鍵字來(lái)訪問(wèn)實(shí)例跟蹤結(jié)構(gòu)1065以訪問(wèn)來(lái)自實(shí)例1052中的合適實(shí)例;3)使用方法關(guān)鍵字訪問(wèn)方法跟蹤結(jié)構(gòu)以訪問(wèn)合適的生成器依賴性聲明陳述。具有生成器關(guān)鍵字1025的生成器實(shí)例化命令指定的生成器的實(shí)例化和任意被發(fā)現(xiàn)的生成器和建立生成器圖形的實(shí)例化通過(guò)運(yùn)行時(shí)1004的生成器圖形結(jié)構(gòu)1060來(lái)示出。因此,在本發(fā)明的一個(gè)實(shí)施方式中,由具有生成器關(guān)鍵字1025的生成器實(shí)例化命令標(biāo)識(shí)的生成器關(guān)鍵字和通過(guò)生成器圖形生成而被發(fā)現(xiàn)的關(guān)鍵字與表示當(dāng)前生成器圖形的另外信息一起被存儲(chǔ)在生成器圖形結(jié)構(gòu)1060中。如之前所述,塊1095和1098可以是塊1040的一部分,因此,關(guān)于裝載/實(shí)例化哪些類、實(shí)例以及生成器的決定由當(dāng)前生成器圖形中有什么生成器來(lái)驅(qū)動(dòng)。在該本發(fā)明的實(shí)施方式中,類、實(shí)例以及生成器的裝載/實(shí)例化可以被優(yōu)化且是以生成器為中心的。運(yùn)行時(shí)客戶端1002還包括數(shù)據(jù)準(zhǔn)備命令,包括生成器輸出覆蓋/不覆蓋命令1030。覆蓋/不覆蓋命令包括被覆蓋/不覆蓋的生成器的生成器關(guān)鍵字,以及被覆蓋時(shí)的覆蓋值。運(yùn)行時(shí)1004的覆蓋生成器輸出模塊1045使由生成器覆蓋/不覆蓋命令指定的生成器被覆蓋/不覆蓋。該因果關(guān)系可以間接或直接的。在間接因果關(guān)系的情況,覆蓋生成器輸出模塊1045填充覆蓋日志1047以用于生成器圖形執(zhí)行模塊1070的使用。在直接因果關(guān)系的情況,覆蓋生成器輸出模塊1045訪問(wèn)生成器圖形結(jié)構(gòu)1060的生成器輸出緩存1097和實(shí)例1052。具體地,如參考覆蓋生成器輸出模塊390所描述的,在一個(gè)實(shí)施方式中,生成器可以被分類為屬性生成器或方法生成器;因此,覆蓋生成器輸出模塊1045可以包括用于被覆蓋的屬性生成器的覆蓋屬性生成器輸出模塊(未顯示)和用于被覆蓋的方法生成器的覆蓋方法生成器輸出模塊(未顯示);屬性方法的覆蓋使覆蓋值被存儲(chǔ)在生成器圖形結(jié)構(gòu)1060的生成器輸出緩存1097中且被存儲(chǔ)在實(shí)例1052的合適實(shí)例的數(shù)據(jù)中,而方法生成器的覆蓋使覆蓋值被存儲(chǔ)在生成器輸出緩存1097中。在本發(fā)明的一個(gè)實(shí)施方式中,生成器在生成器圖形初始被執(zhí)行前可以不被覆蓋,其中生成器將是該生成器圖形的一部分(因此,生成器已經(jīng)被實(shí)例化,從而被自動(dòng)生成器圖形生成模塊1040指定為感興趣生成器或被發(fā)現(xiàn))。但是,在圖IO所示的實(shí)施方式中,生成器可以通過(guò)使用生成器覆蓋命令來(lái)實(shí)例化并覆蓋而在初始執(zhí)行之前被覆蓋。該被覆蓋的生成器一般通過(guò)發(fā)現(xiàn)進(jìn)程來(lái)最后成為生成器圖形的一部分(例如,當(dāng)動(dòng)態(tài)依賴性被解析時(shí))。在本發(fā)明的一些實(shí)施方式中,該數(shù)據(jù)準(zhǔn)備還可以包括其他類型的設(shè)定命令。覆蓋生成器輸出模塊1045被顯示為虛線框,這是因?yàn)樵摳采w生成器輸出模塊1045在本發(fā)明的可替換實(shí)施方式中可以不出現(xiàn)。生成器圖形結(jié)構(gòu)1060還可選地包括用于支持增量執(zhí)行的本發(fā)明的一些實(shí)施方式的增量執(zhí)行標(biāo)記1080。如之前參考圖3B的增量執(zhí)行標(biāo)記382所述,增量執(zhí)行標(biāo)記1080用于輔助在初始執(zhí)行之外的執(zhí)行上的生成器圖形的增量執(zhí)行。本發(fā)明的不同實(shí)施方式以不同的方式使用增量執(zhí)行標(biāo)記382。例如,在具有命令日志的本發(fā)明的一個(gè)實(shí)施方式中,日志用于跟蹤被添加和/或被修改的生成器,而增量執(zhí)行標(biāo)記382用于標(biāo)記受影響的生成器(被修改或添加的生成器的前身(ancestor),以由此依賴于所述前身)。作為另一個(gè)示例,在不具有命令日志的本發(fā)明的一個(gè)實(shí)施方式中,增量執(zhí)行標(biāo)記382用于標(biāo)記被添加或修改的生成器和被修改或添加的生成器的前身(由此與該生成器相關(guān))。作為另一個(gè)示例,在不具有命令日志的本發(fā)明的一個(gè)實(shí)施方式中,生成器的修改和添加立即被完成且增量執(zhí)行標(biāo)記382用于標(biāo)記為是修改或添加的生成器的前身(因此依賴于所述前身)的生成器。雖然本發(fā)明的實(shí)施方式已經(jīng)被描述支持增量執(zhí)行并使用增量執(zhí)行標(biāo)記,但是本發(fā)明的其他實(shí)施方式支持不適用增量執(zhí)行標(biāo)記的增量執(zhí)行(例如,命令日志用于跟蹤被添加或修改的生成器,且執(zhí)行開(kāi)始生成器的列表被保留在執(zhí)行開(kāi)始日志中;其中生成器圖形執(zhí)行模塊1070從執(zhí)行開(kāi)始生成器開(kāi)始,且以生成器圖形的前身向上到頂部的方式工作;通過(guò)舉例而非限定的方式,本發(fā)明的該實(shí)施方式在后面參考圖15-25被描述)。運(yùn)行時(shí)客戶端1002還包括全局執(zhí)行命令1035。運(yùn)行時(shí)1004的生成器圖形執(zhí)行模塊1070執(zhí)行生成器圖形。這樣,生成器圖形執(zhí)行模塊1070修改生成器輸出緩存1097(在屬性生成器和方法生成器的情況)、使用增量執(zhí)行標(biāo)記1080(如果存在)以及修改實(shí)例1052的數(shù)據(jù)(在屬性方法的情況)。之前已經(jīng)論述過(guò)用于執(zhí)行生成器圖形的生成器并這里可適用的各種技術(shù)。例如,在實(shí)施命令日志的實(shí)施方式中,命令日志被使用然后生成器圖形被執(zhí)行。此外,在支持未解析依賴性的可能性的本發(fā)明的實(shí)施方式中,生成器圖形執(zhí)行模塊1070包括動(dòng)態(tài)依賴性模塊1075,該動(dòng)態(tài)依賴性模塊1075可以調(diào)用自動(dòng)生成器圖形生成模塊1040。圖IO還示出了提供機(jī)制(例如,圖形用戶界面)的可選生成器圖形視窗模塊1062,通過(guò)該模塊1062程序員/用戶可以查看生成器圖形和生成器圖形結(jié)構(gòu)的生成器輸出。此外,圖10示出了可選的可配置交互生成器輸出布局圖形用戶界面模塊1085,用于提供圖形用戶界面(包括塊1030和1035的動(dòng)態(tài)調(diào)用),該圖形用戶界面表示可配置交互生成器輸出布局圖形用戶界面模塊840。在使用命令日志的本發(fā)明的實(shí)施方式中,不同的觸發(fā)用于觸發(fā)不同的動(dòng)作。例如,響應(yīng)于顯式命令(開(kāi)始記錄和結(jié)束記錄)、顯式全局執(zhí)行命令(記錄在啟動(dòng)且在每個(gè)顯式總執(zhí)行命令后自動(dòng)開(kāi)始,且響應(yīng)于接下來(lái)的顯式總執(zhí)行命令處理每一個(gè)日志)、顯式數(shù)據(jù)準(zhǔn)備命令等,生成器實(shí)例化命令可以被記錄并批處理。類似地,響應(yīng)于顯式全局執(zhí)行命令、第一獲取命令、每一個(gè)獲取命令等,數(shù)據(jù)準(zhǔn)備命令可以被記錄并批處理。示例性跟蹤結(jié)構(gòu)圖11A-圖IID是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖IO中的數(shù)據(jù)結(jié)構(gòu)的示例性內(nèi)容的框圖。雖然圖11A-圖IID將這些數(shù)據(jù)結(jié)構(gòu)作為表格示出,但是應(yīng)當(dāng)理解可以使用合適的數(shù)據(jù)結(jié)構(gòu)(例如,哈希映射表(hashmap)、集合、列表)。圖IIA是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖10中的類跟蹤結(jié)構(gòu)1092的示例的框圖。在圖11A中,類關(guān)鍵字列1110和類引用列1115被顯示為分別用于存儲(chǔ)類關(guān)鍵字和裝載的類的對(duì)應(yīng)的引用。圖11B是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖10中的實(shí)例跟蹤結(jié)構(gòu)1065的示例的框圖。在圖11B中,實(shí)例關(guān)鍵字列1120和實(shí)例引用列1125被顯示用于分別存儲(chǔ)實(shí)例關(guān)鍵字和對(duì)應(yīng)的實(shí)例引用。在本發(fā)明的實(shí)施方式中,其中實(shí)例關(guān)鍵字在所有的類之間不需要是唯一的,實(shí)例跟蹤結(jié)構(gòu)還包括類關(guān)鍵字或?qū)嵗念惖囊谩D11C是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖10中的生成器圖形結(jié)構(gòu)1060的示例的框圖。在圖11C中,類引用列1135、實(shí)例引用列1140以及方法引用列1145被顯示為分別用于存儲(chǔ)組成當(dāng)前生成器圖形的當(dāng)前生成器的引用。這些引用可以采用各種形式。例如,這些列可以分別存儲(chǔ)類1054(或可替換的1092)的引用、實(shí)例1052(或可替換的1065)的引用和方法1056(或可替換的1058)的引用。雖然在本發(fā)明的一個(gè)實(shí)施方式中,這些列存儲(chǔ)引用,但在本發(fā)明的可替換實(shí)施方式中,這些列中的一個(gè)或多個(gè)可以存儲(chǔ)關(guān)鍵字。另外,圖11C包括父生成器鏈接列1150(對(duì)每一條鏈接包括父生成器7引用和依賴性確定生成器引用)和子生成器鏈接列1160(對(duì)每一條鏈接包括子生成器引用、依賴性確定生成器引用、鏈接模式以及粘附鏈接指示符)。每一個(gè)生成器在列1160中可以具有0個(gè)或多個(gè)子生成器鏈接。列1160中的每一個(gè)子生成器鏈接包括1)子生成器引用,該子生成器引用是生成器圖形結(jié)構(gòu)的其他行的引用,用于根據(jù)生成器依賴性聲明表示生成器依賴性;2)依賴性確定生成器引用,其是生成器圖形結(jié)構(gòu)的另一行的引用,并表示已經(jīng)創(chuàng)建子鏈接的依賴性確定生成器;以及3)具有生成器依賴性類型的鏈接模式,用于標(biāo)識(shí)生成器依賴性是參量、字段還是排序依賴性的結(jié)果(見(jiàn)關(guān)于圖7A-圖7F的論述),且如果是參量,則為生成器依賴性的參量ID;和4)粘附指示符,用于指示鏈接模式是向上聲明依賴性的結(jié)果(在支持向上聲明依賴性的本發(fā)明的實(shí)施方式中)或粘附訂閱的結(jié)果(在支持粘附訂閱的本發(fā)明的實(shí)施方式中)且不能通過(guò)該生成器的生成器參量依賴性聲明被修改(即,生成器存儲(chǔ)在包含粘附指示符的列的行中)。每一個(gè)生成器在列1150中具有0個(gè)或多個(gè)父生成器鏈接。列1150中每一個(gè)父生成器鏈接包括1)父生成器引用,該父生成器引用依照另一個(gè)生成器的子生成器引用存儲(chǔ)回引用(即,生成器圖形結(jié)構(gòu)的另一行的引用,用于表示依賴于該生成器的父生成器);以及2)依賴性確定生成器引用,其是生成器圖形結(jié)構(gòu)的另一行的引用并表示已經(jīng)創(chuàng)建父體鏈接的的依賴性確定生成器。因此,當(dāng)鏈接被創(chuàng)建時(shí),子生成器行的父生成器鏈接列和父生成器行的子生成器鏈接列被修改以表示鏈接(且依賴性確定生成器引用在這兩者中相同)。在本發(fā)明的實(shí)施方式中,由于一個(gè)生成器圖形中或不同的生成器圖形中的多條路徑可以包括給定的生成器,因此對(duì)于給定生成器可以有多條父生成器鏈接。此外,圖11C包括生成器輸出緩存和覆蓋生成器輸出修改列1170,用于存儲(chǔ)當(dāng)前生成器輸出和生成器是被覆蓋的還是不被覆蓋的輸出值的指示。另外,圖11C包括增量執(zhí)行標(biāo)記1180用于存儲(chǔ)增量執(zhí)行標(biāo)記,如之前所述。圖IID是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖10中方法跟蹤結(jié)構(gòu)1058的示例的框圖。在圖IID中,方法關(guān)鍵字列1190和方法引用列1192被顯示用于分別存儲(chǔ)方法關(guān)鍵字和被裝載類的方法的對(duì)應(yīng)引用。此外,圖IID還包括參量依賴性列1194、字段依賴性列1196、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199、輸出類列1197和可選的附加注釋列1198。參量依賴性列1194、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199和字段依賴性列1196存儲(chǔ)從方法的生成器依賴性聲明陳述中解析的生成器依賴性信息(例如,見(jiàn)圖7A的705),而輸出類列1197存儲(chǔ)關(guān)于方法的輸出的輸出類的信息(通過(guò)方法的簽名可確定-例如,見(jiàn)圖7A的710)。在本發(fā)明的一些實(shí)施方式中使用的參量依賴性列1194、字段依賴性列1196、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199的示例性內(nèi)容在后面提供。動(dòng)態(tài)生成器依賴性如之前所述,本發(fā)明的一個(gè)實(shí)施方式支持非動(dòng)態(tài)和動(dòng)態(tài)生成器依賴性。在不同的實(shí)施方式可以支持不同類型的動(dòng)態(tài)生成器依賴性的情況下,本發(fā)明的一個(gè)實(shí)施方式支持偶然和訂閱類型的動(dòng)態(tài)生成器依賴性。因此,非偶然、非訂閱依賴性是非動(dòng)態(tài)(靜態(tài))依賴性。圖12是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的支持偶然和訂閱類型的動(dòng)態(tài)生成器依賴性的圖10的另外的細(xì)節(jié)的框圖。圖12包括來(lái)自圖10的虛分界線1000;類定義,該類定義包括業(yè)務(wù)邏輯IOIO(包括數(shù)據(jù)1012、方法1014以及生成器依賴性聲明1016);新的類模塊1095;類1054(包括方法和生成器依賴性聲明1056);新的實(shí)例模塊1098;實(shí)例1052、實(shí)例跟蹤結(jié)構(gòu)1065、自動(dòng)生成器圖形生成模塊1040、生成器圖形結(jié)構(gòu)1060、以及生成器圖形執(zhí)行模塊1070(包括動(dòng)態(tài)依賴性模塊1075)。圖12顯示生成器依賴性聲明1016可選地包括偶然依賴性1210、訂閱依賴性1220和多個(gè)生成器1215。這里,多個(gè)生成器1215是指返回生成器集合的生成器依賴性的能力。另外,圖12包括自動(dòng)生成器圖形生成模塊1040中的訂閱模塊1240和偶然性模塊1230,用于處理偶然依賴性1210和訂閱依賴性1220。圖12還顯示訂閱模塊1240訪問(wèn)訂閱日志1250。此外,動(dòng)態(tài)依賴性模塊1075包括偶然性模塊1260和訂閱模塊1265,用于處理偶然依賴性1210和訂閱依賴性1220。訂閱模塊1265訪問(wèn)訂閱日志1250。偶然和訂閱依賴性的以下描述在使用類DEP(依賴性的簡(jiǎn)寫(xiě))的本發(fā)明的實(shí)施方式的上下文中完成,通過(guò)依賴性確定生成器從所述類DEP返回實(shí)例并通過(guò)具有面向生成器圖形編程支持的運(yùn)行時(shí)分析。類DEP包括以下字段l)TYPE,可以被設(shè)定成訂閱、非訂閱向下聲明(不是訂閱的子生成器)或非訂閱向上聲明(不是訂閱的父生成器);2)PROD,用于非訂閱向下聲明的依賴性并是子生成器的集合(這樣,其可以存儲(chǔ)O個(gè)或多個(gè)生成器);3)SUBTYPE,用于訂閱依賴性且被設(shè)定成指示訂閱依賴性的類型(用于支持多種類型的訂閱的本發(fā)明的實(shí)施方式;雖然這里描述的本發(fā)明的實(shí)施方式支持兩種類型一粘附和吸收,但可替換實(shí)施方式可以支持更多、更少和/或不同的訂閱類型);4)SUBCRIT,用于訂閱依賴性并被設(shè)定成指示訂閱標(biāo)準(zhǔn);5)PARLINKMODE,用于粘附訂閱依賴性和非訂閱向上聲明依賴性并被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么鏈接模式;6)PARCLASS,用于粘附訂閱依賴性和非訂閱向上聲明依賴性并被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么類(例如,類關(guān)鍵字);7)PARMETHOD,用于粘附訂閱依賴性和非訂閱向上聲明依賴性并被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么方法(例如,方法關(guān)鍵字);以及8)PARINSTANCE,用于粘附訂閱依賴性和非訂閱向上聲明依賴性且被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么實(shí)例(例如,實(shí)例關(guān)鍵字)(如果PARINSTANCE是左空白,則子生成器的實(shí)例關(guān)鍵字用于父生成器)。可替換實(shí)施方式在粘附訂閱依賴性和/或非訂閱向上聲明依賴性的情況下可以使用父生成器的集合(集合中的每一項(xiàng)保持PAR—CLASS,PAR—INSTANCE,PAR—METHOD,PAR—LINKMODE)。當(dāng)然,本發(fā)明的其他可替換實(shí)施方式可以使用不同的結(jié)構(gòu)來(lái)返回依賴性。偶然依賴性在本發(fā)明的一個(gè)實(shí)施方式中,非偶然和偶然的生成器依賴性都被支持。非偶然生成器依賴性是不依賴于其他生成器的輸出的依賴性,而偶然生成器依賴性是依賴于其他生成器的輸出的依賴性。雖然本發(fā)明的一個(gè)實(shí)施方式支持非偶然和偶然的生成器依賴性,但是可替換實(shí)施方式僅支持非偶然或偶然的(偶然生成器依賴性可以最初由默認(rèn)值驅(qū)動(dòng))。如之前所述,生成器可以被視為多個(gè)標(biāo)識(shí)符的集合,一個(gè)標(biāo)識(shí)符用于每一個(gè)指定粒度的附加層。在本發(fā)明的一個(gè)實(shí)施方式中,在一組標(biāo)識(shí)符中的任意一個(gè)或所有的標(biāo)識(shí)符可以基于當(dāng)前數(shù)據(jù)值有條件地被確定的情況下,偶然生成器依賴性可以是偶然的。例如,第一偶然生成器依賴性可以僅使實(shí)例標(biāo)識(shí)符被有條件確定(類和方法標(biāo)識(shí)符是固定的),而第二偶然生成器依賴性可以使類、實(shí)例和方法標(biāo)識(shí)符被有條件確定。雖然在本發(fā)明的一個(gè)實(shí)施方式中,偶然生成器依賴性的多個(gè)標(biāo)識(shí)符的所有標(biāo)識(shí)符是有條件的,但是本發(fā)明的可替換實(shí)施方式可以以不同的方式被實(shí)施(例如,只允許多個(gè)標(biāo)識(shí)符的子集是有條件的)。圖13A-圖13J是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的偽代碼和示例性生成器的框圖。此外,圖13A-圖13J中所示的實(shí)施方式使用用于偶然和非偶然依賴性的相同的依賴性確定機(jī)制。這樣,出于解釋的目的,圖13A-圖13J中的一些示例是非偶然生成器依賴性的示例,而其他是偶然生成器依賴性的示例。此外,非偶然生成器依賴性是其中依賴性是關(guān)于依賴性確定生成器的生成器依賴性,所述依賴性確定生成器為無(wú)關(guān)生成器(例如,在本發(fā)明的一個(gè)實(shí)施方式中,依賴性類型由于其生成器依賴性聲明為空而是可標(biāo)識(shí)的);而偶然生成器依賴性是其中依賴性是關(guān)于依賴性確定生成器的生成器依賴性,所述依賴性確定生成器為相關(guān)生成器(例如,在本發(fā)明的一個(gè)實(shí)施方式中,依賴性類型由于其生成器依賴性聲明不為空而是可標(biāo)識(shí)的)。此外,圖13A-圖13J中帶圈的數(shù)字和字母用于示出根據(jù)本發(fā)明的實(shí)施方式執(zhí)行操作的順序。另外,圖13A-圖13J中的注釋X::Y::Z用于表示生成器關(guān)鍵字,所述生成器關(guān)鍵字由類關(guān)鍵字(X)、實(shí)例關(guān)鍵字(Y)以及方法關(guān)鍵字(Z)組成。另外虛線圈和虛箭頭線表示在本發(fā)明的一些實(shí)施方式中沒(méi)有被執(zhí)行的操作。特別地,如果用于給定依賴性的無(wú)關(guān)依賴性確定生成器的執(zhí)行經(jīng)常返回相同的依賴性(例如,無(wú)關(guān)依賴性確定生成器),則本發(fā)明的一些實(shí)施方式中的該依賴性確定生成器在生成器圖形中被執(zhí)行但是不被實(shí)例化和鏈接。顯式依賴性確定生成器圖13A示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的、非動(dòng)態(tài)(非偶然、非訂閱)依賴性的方法的生成器依賴性聲明的偽代碼;而圖13B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性非快捷聲明的、非動(dòng)態(tài)(非偶然、非訂閱)生成器依賴性的框圖。圖13A顯示1)方法ci1305的生成器依賴性聲明陳述1300,其中該生成器依賴性聲明陳述1300包括到生成器CW::IY::BETA的生成器依賴性;以及2)方法P1315的生成器依賴性聲明陳述1310,其中該生成器依賴性聲明1310為空,且方法P1315返回類DEP的實(shí)例作為參量。方法P1315包括生成器依賴性聲明代碼1320,該代碼1320將依賴性類型(DEP.TYPE)設(shè)定成非訂閱向下聲明,將依賴性生成器(DERPROD)設(shè)定成生成器13,并返回DEP。在圖13A中,帶圈的1指示生成器依賴性聲明1300被訪問(wèn)(例如,由于基于方法a1305的生成器(感興趣生成器)的命名、由于基于方法a1305的生成器(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等)。圖13B中帶圈的2顯示生成器C0::I0::ALPHA基于方法a1305被實(shí)例化。圖13A中帶圈的3指示到生成器CW::IY::BETA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的4指示生成器依賴性聲明1310被訪問(wèn)。圖13中帶虛線圈的5顯示生成器CW::IY::BETA被實(shí)例化為依賴性確定生成器1380。圖13B中帶虛線圈的6指示生成器CO::IO::ALPHA在生成器圖形中被鏈接以指示生成器CW::IY::BETA是子生成器。圖13B中帶圈的7指示生成器CW::IY::BETA被執(zhí)行并返回DEP以標(biāo)識(shí)生成器13。帶圈的8指示生成器13被實(shí)例化,而帶圈的9指示生成器13在生成器圖形中作為子生成器被鏈接到生成器CO::IO::ALPHA。在圖13B中,生成器CO::IO::ALPHA和生成器13是標(biāo)準(zhǔn)生成器1385(不是依賴性確定生成器)。圖13C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13D是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性非快捷聲明的、偶然、非訂閱的生成器依賴性的生成器的框圖。此外,圖13D涉及圖5A的生成器5、7A和7B,以及生成器5至生成器7A的動(dòng)態(tài)依賴性的解析。圖13C顯示1)用于方法a1305的生成器依賴性聲明陳述1300,其中生成器依賴性聲明陳述1300包括生成器CW::IY::BETA的生成器依賴性;2)用于方法P1315的生成器依賴性聲明陳述1325,其中該生成器依賴性聲明陳述1325包括到生成器CU::IV::DELTA的生成器依賴性,且其中方法P1315返回作為參量的類DEP的實(shí)例;3)用于方法S(delta)1334的生成器依賴性聲明陳述1332,其中生成器依賴性聲明陳述1332為空,且方法S1334返回作為參量的類DEP的實(shí)例;以及4)用于方法Y(gamma)1340的生成器依賴性聲明陳述1338,其中生成器依賴性聲明陳述1338為空,且方法Y1340返回變量X(其中X來(lái)自外部源、默認(rèn)值(顯式或類中的常量))。方法31315包括生成器依賴性聲明代碼1330,該代碼1330將DEP.TYPE設(shè)定成非訂閱向下聲明,依據(jù)生成器CX::IZ::GAMMA的輸出將DEP.PROD設(shè)定成生成器7A或7B,并返回DEP。方法51332包括生成器依賴性聲明代碼1336,該代碼1336將DEP.TYPE設(shè)定成非訂閱向下聲明,將DEP.PROD設(shè)定成生成器CX::IZ::GAMMA,并返回DEP.PROD。在圖13C中,帶圈的1指示生成器依賴性聲明1300被訪問(wèn)(例如,由于基于方法a1305的生成器(作為感興趣生成器)的命名、由于基于方法a1305的生成器(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等等)。圖13D中帶圈的2顯示生成器5基于方法a1305被實(shí)例化。圖13C中帶圈的3指示到生成器CW::IY::BETA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的4指示生成器依賴性聲明1325被訪問(wèn)。圖13D中帶圈的5顯示生成器CW::IY::BETA被實(shí)例化作為依賴性確定生成器1380。圖13D中帶圈的6指示生成器5在生成器圖形中被鏈接以指示生成器CW::IY::BETA是子生成器。圖13C中帶圈的7指示到生成器CU::IV::DELTA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的8指示生成器依賴性聲明1332被訪問(wèn)。圖13D中帶虛線圈的9顯示生成器CU::IV::DELTA被實(shí)例化作為依賴性確定生成器1380。圖13D中帶虛線圈的10指示CW::IY::BETA在生成器圖形中被鏈接以指示生成器CU::IV::DELTA是子生成器。圖13D中帶圈的11指示生成器CU::IV::DELTA被執(zhí)行并返回DEP以標(biāo)識(shí)CX::IZ::GAMMA。帶圈的12指示生成器CX::IZ::GAMMA被實(shí)例化,而帶圈的13指示生成器CX::IZ::GAMMA作為子生成器在生成器圖形中被鏈接到生成器CW::IY::BETA。在圖13D中,帶圈的A指示生成器CX::IZ::GAMMA被執(zhí)行并返回X到生成器CW::IY::BETA,而帶圈的B指示生成器CW::IY::BETA返回DEP以標(biāo)識(shí)生成器7A;帶圈的C指示未解析的余項(xiàng)(方法P)1390現(xiàn)在被解析,且生成器7A被實(shí)例化,而帶圈的D指示生成器5到生成器7A的鏈接。在圖13D中,生成器CX::IZ::GAMMA、5以及7A是標(biāo)準(zhǔn)生成器1385。即時(shí)(Ontheflv)依賴性確定生成器圖13E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用非快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明偽代碼;而圖13F是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的非快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、偶然、非訂閱的生成器依賴性的生成器的框圖。與圖13D類似,圖13F涉及圖5A的生成器5、7A和7B以及生成器5到生成器7A的動(dòng)態(tài)依賴性的解析。圖13E-圖13F與圖13C-圖13D相同,不同之處在于1)生成器依賴性聲明陳述1342替換生成器依賴性聲明陳述1325;2)方法fly1344替換方法S1334;以及3)生成器CW::IY::FLY替換生成器CU::IV::DELTA。生成器依賴性聲明陳述1342包括到CX::IZ::GAMMA的快捷聲明的生成器依賴性。因此,圖13E中帶圈的4現(xiàn)在指示生成器依賴性聲明1342被訪問(wèn)。圖13E中帶圈的7現(xiàn)在指示到生成器CX::IZ::GAMMA的快捷聲明的生成器依賴性被處理以確定生成器依賴性,且由此運(yùn)行時(shí)基于方法fly1344即時(shí)調(diào)用依賴性確定生成器CW::IY::FLY。帶圈的8現(xiàn)在指示生成器依賴性聲明1332被訪問(wèn)。圖13F中帶虛線圈的9現(xiàn)在顯示生成器CW::IY::FLY被實(shí)例化。圖13F中帶虛線圈的10指示生成器CW::IY::BETA在生成器圖形中被鏈接以指示生成器CW::IY::FLY是子生成器。圖13F中帶圈的11指示生成器CW::IY::FLY被執(zhí)行且返回DEP以標(biāo)識(shí)CX::IZ::GAMMA。圖13E-圖13F中的余項(xiàng)與圖13C-圖13D中的相同。依賴性確定生成器CW::IY::FLY的運(yùn)行時(shí)生成即時(shí)減輕了應(yīng)用程序員必須編寫(xiě)顯式生成器依賴性聲明代碼并基于該代碼實(shí)例化依賴性確定生成器的麻煩。此外,其還允許程序員為方法e1315在生成器依賴性聲明陳述中直接規(guī)定生成器CX::IZ::GAMMA的依賴性,而不是規(guī)定依賴性確定生成器CU::IV::DELTA。快捷技術(shù)可以用于多種情況,且可以另外具有多種格式。例如,雖然在圖13E-圖13F中快捷聲明的依賴性是用于非偶然的依賴性(其直接標(biāo)識(shí)子生成器)且是在用于方法的生成器依賴性聲明陳述中,其中依賴性確定生成器基于該方法,但是其他情況和格式可以被顯示如下1)圖13G-圖13H示出兩個(gè)快捷的使用,其中一個(gè)是偶然的且是用于標(biāo)準(zhǔn)生成器所基于的方法的生成器依賴性聲明陳述的一部分,并且另一個(gè)是非偶然的且是用于依賴性確定生成器所基于的方法的生成器依賴性聲明陳述的一部分;以及2)圖I-圖J示出快捷的使用,該快捷是非偶然的且在用于方法的生成器依賴性聲明陳述中,其中標(biāo)準(zhǔn)生成器基于該方法。圖13G示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、非偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13H是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性快捷聲明的、偶然、非訂閱的生成器依賴性和快捷聲明的、非偶然、非訂閱的生成器依賴性的生成器的框圖。圖13G顯示1)用于方法al305的生成器依賴性聲明陳述1345,其中生成器依賴性聲明陳述1345包括到生成器〈P〉GETC1::I1::M1的快捷聲明的、偶然生成器依賴性;2)用于方法flyl1355的生成器依賴性聲明陳述1350,其中生成器依賴性聲明陳述1350包括到生成器C0::I0::GETC1的快捷聲明的、非偶然生成器依賴性,且方法flyl1355返回作為參量的DEP的實(shí)例;3)用于方法fly21362的生成器依賴性聲明陳述1332,其中方法fly21362返回作為參量的DEP的實(shí)例;以及4)用于方法getcl1370的生成器依賴性聲明陳述1365,其中方法getcl1370返回具有值CX或CY的C1。響應(yīng)于快捷聲明的依賴性〈P〉GETC1::I1::M1(指示該快捷被用于類關(guān)鍵字)運(yùn)行時(shí)提供方法FLY11355及其生成器依賴性聲明陳述1350。方法flyl1355包括生成器依賴性聲明代碼1360,該代碼1360將DEP.TYPE設(shè)定成非訂閱向下聲明,依據(jù)生成器C0::I0::GETC1的Cl輸出值將DEP.PROD設(shè)定成生成器CX::I1::M1或CY::I1::M1,并返回DEP。雖然在圖13H的示例中〈P〉用于指定其是偶然的生成器的類關(guān)鍵字,但是本發(fā)明的可替換實(shí)施方式可以使用其他語(yǔ)法。此外,雖然在圖13H的示例中,〈P〉用于指定其是偶然的生成器的類關(guān)鍵字,但是本發(fā)明的一個(gè)實(shí)施方式支持具有多個(gè)和/或不同的標(biāo)識(shí)符,所述標(biāo)識(shí)符組成以這種方式被指示為偶然的生成器關(guān)鍵字。在圖13G中,帶圈的1指示生成器依賴性聲明1345被訪問(wèn)(例如,由于基于方法a1305的生成器(作為感興趣生成器)的命名,由于基于方法a1305的生成器(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等等)。圖13H中帶圈的2顯示生成器C0::I0::ALPHA基于方法a1305被實(shí)例化。圖13G中帶圈的3指示快捷聲明的生成器依賴性被處理以確定生成器依賴性且運(yùn)行時(shí)提供方法flyl1355;且由此,帶圈的4指示生成器依賴性聲明1350被訪問(wèn)。圖13H中帶圈的5顯示生成器C0::I0::FLY1被實(shí)例化作為依賴性確定生成器1380。圖13H中帶圈的6指示生成器C0::I0::ALPHA在生成器圖形中被鏈接以指示生成器C0::I0::FLY1是子生成器。圖13G中帶圈的7指示到生成器C0::I0::GETC1的快捷聲明的生成器依賴性被處理以確定生成器依賴性且運(yùn)行時(shí)提供方法fly21362,且由此,帶圈的8指示生成器依賴性聲明1332被訪問(wèn)。圖13H中帶虛線圈的9顯示生成器C0::I0::FLY2被實(shí)例化。圖13H中帶虛線圈的10指示生成器C0::I0二FLY1在生成器圖形中被鏈接以指示生成器C0::I0::FLY2是子生成器。圖13H中帶圈的11指示生成器C0::I0::FLY2被執(zhí)行并返回DEP以標(biāo)識(shí)生成器C0::I0::GETC1。帶圈的12指示生成器C0::I0::GETC1被實(shí)例化,而帶圈的13指示生成器C0::I0::GETC1在生成器圖形中被鏈接到作為子生成器的生成器C0::I0::FLY1。在圖13H中,帶圈的A指示生成器C0::I0::GETC1被執(zhí)行并返回C1=CX到生成器C0::I0::FLY1,而帶圈的B指示生成器C0::I0::FLY1被執(zhí)行并返回DEP以標(biāo)識(shí)生成器CX::I1::M1;帶圈的C指示未解析的余項(xiàng)(方法flyl)1390現(xiàn)在被解析,且?guī)Φ腄指示生成器CO::IO::ALPHA到生成器CX::I1::M1的鏈接。在圖13H中,生成器C0::I0::GETC1、C0::I0::ALPHA以及CX::I1::M1是標(biāo)準(zhǔn)生成器1385。依賴性確定生成器C0::I0::FLY1和C0::I0::FLY2的運(yùn)行時(shí)產(chǎn)生即時(shí)減輕了應(yīng)用程序員必須編寫(xiě)顯式生成器依賴性聲明代碼并基于該代碼實(shí)例化依賴性確定生成器的麻煩。此外,其允許應(yīng)用程序員在用于方法a1305的生成器依賴性聲明陳述中通過(guò)方法getCl在生成器^::I1::M1上直接規(guī)定偶然依賴性,而不是規(guī)定依賴性確定生成器CW::IY::BETA。圖13I示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的使用快捷聲明的、非動(dòng)態(tài)(非偶然、非訂閱)生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13J是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的示例性快捷聲明的、非動(dòng)態(tài)生成器依賴性的生成器的框圖。圖131顯示1)用于方法al305的生成器依賴性聲明陳述1372,其中生成器依賴性聲明陳述1372包括到生成器10的快捷聲明的生成器依賴性;2)用于方法fly1376的生成器依賴性聲明陳述1374,其屮該生成器依賴性聲明陳述1374為空,且方法fly1376返回作為參量的DEP的實(shí)例。響應(yīng)于快捷聲明的依賴性運(yùn)行時(shí)提供方法fly1776及其生成器依賴性聲明陳述1374。方法fly1376包括生成器依賴性聲明代碼1378,該代碼1378將DEP.TYPE設(shè)定成非訂閱向下聲明,將DEP.PROD設(shè)定成生成器10,并返回DEP。在圖131中,帶圈的1指示生成器依賴性聲明1372被訪問(wèn)(例如,由于基于方法a1305的生成器(作為感興趣生成器)的命名,由于基于a1305的生成器(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等等)。圖13J中帶圈的2顯示生成器CO::IO::ALPHA基于方法a1305被實(shí)例化。圖131中帶圈的3指示快捷聲明的生成器依賴性被處理以確定生成器依賴性且運(yùn)行時(shí)提供方法flyl376;且由此,帶圈的4指示生成器依賴性聲明1374被訪問(wèn)。圖13J中帶虛線圈的5顯示生成器CO::IO::FLY被實(shí)例化作為依賴性確定生成器1380。圖13J中帶虛線圈的6指示生成器C0::I0::ALPHA在生成器圖形中被鏈接以指示生成器CO::IO::FLY是子生成器。圖13J中帶圈的7指示生成器CO::IO::FLY被執(zhí)行且返回DEP以標(biāo)識(shí)生成器10。帶圈的8指示生成器10被實(shí)例化,而帶圈的9指示生成器CO::IO::ALPHA在生成器圖形中被鏈接以指示生成器10是子生成器。在圖13J中,生成器CO::IO::ALPHA和生成器10是標(biāo)準(zhǔn)生成器1385。應(yīng)當(dāng)理解,在本發(fā)明的一個(gè)實(shí)施方式中,運(yùn)行時(shí)程序員編寫(xiě)單個(gè)fly方法以解釋所有支持的語(yǔ)法和組合(例如,方法fly1334、方法flyl1355、方法fly21362、方法fly1376)并將該fly方法包含在運(yùn)行時(shí)中。這不但允許應(yīng)用程序員避免編寫(xiě)用于依賴性確定生成器的代碼,其中在該依賴性確定生成器中fly方法可以被使用,運(yùn)行時(shí)程序員僅需要編寫(xiě)通用fly方法(用于所有支持的情況的單個(gè)fly)。此外,應(yīng)當(dāng)理解快捷聲明的依賴性允許運(yùn)行時(shí)使用依賴性確定生成器而同時(shí)允許應(yīng)用程序員指示生成器依賴性聲明中的標(biāo)準(zhǔn)生成器(例如,圖13G-圖13J)。方法跟蹤結(jié)構(gòu)回過(guò)來(lái)參考圖11D的方法跟蹤結(jié)構(gòu),現(xiàn)在將描述在本發(fā)明的一些實(shí)施方式中使用的參量依賴性列1194、字段依賴性列1196、排序依賴性列1195、向上依賴性列1193、以及弱約束依賴性列1199的示例性內(nèi)容。具體地,參量依賴性列1194存儲(chǔ)項(xiàng)的集合,每項(xiàng)用于每個(gè)參量依賴性。在本發(fā)明的一個(gè)實(shí)施方式中,每一項(xiàng)包括以下1)參量ID;2)類關(guān)鍵字性質(zhì)標(biāo)識(shí)符,為顯式類、相同類以及偶然類中的一者;3)當(dāng)類關(guān)鍵字性質(zhì)標(biāo)識(shí)符指示顯式類時(shí)所填充的顯式類關(guān)鍵字性標(biāo)識(shí)符;4)當(dāng)類關(guān)鍵字性質(zhì)標(biāo)識(shí)符指示偶然類時(shí)所填充的偶然類確定方法關(guān)鍵字標(biāo)識(shí)符;5)實(shí)例關(guān)鍵字性質(zhì)標(biāo)識(shí)符,為顯式實(shí)例,相同實(shí)例以及偶然實(shí)例中的一者;6)當(dāng)實(shí)例關(guān)鍵字性質(zhì)標(biāo)識(shí)符指示顯式實(shí)例時(shí)所填充的顯式實(shí)例關(guān)鍵字標(biāo)識(shí)符;7)當(dāng)實(shí)例關(guān)鍵字性質(zhì)標(biāo)識(shí)符指示偶然實(shí)例時(shí)所填充的偶然實(shí)例確定方法關(guān)鍵字標(biāo)識(shí)符;8)方法關(guān)鍵字性質(zhì)標(biāo)識(shí)符,為顯式方法、相同方法以及偶然方法中的一者;9)當(dāng)方法關(guān)鍵字性質(zhì)標(biāo)識(shí)符指示顯式方法時(shí)所填充的顯式方法關(guān)鍵字標(biāo)識(shí)符;10)當(dāng)方法關(guān)鍵字性質(zhì)標(biāo)識(shí)符指示偶然方法時(shí)所填充的偶然方法確定方法關(guān)鍵字標(biāo)識(shí)符;以及l(fā)l)快捷標(biāo)識(shí)符,指示生成器依賴性聲明陳述中的用于參量的生成器依賴性聲明是否包含快捷的指示(即,生成器依賴性聲明陳述直接標(biāo)識(shí)標(biāo)準(zhǔn)子生成器而不是依賴性確定生成器)。各種關(guān)鍵字性質(zhì)標(biāo)識(shí)符的"...顯式"指示用于顯式關(guān)鍵字被提供用于生成器依賴性聲明陳述中的生成器依賴性的情況。通過(guò)舉例的方式,圖13A的生成器依賴性聲明陳述1300的生成器依賴性"CW::IY::BETA"提供顯式類、實(shí)例以及方法關(guān)鍵字。在本發(fā)明的一些實(shí)施方式中,速記技術(shù)被支持用于生成器依賴性聲明陳述,從而1)如果過(guò)沒(méi)有為給定生成器依賴性提供類,則使用與父生成器相同的類;以及2)如果沒(méi)有為給定生成器依賴性提供類和實(shí)例,則使用與父生成器相同的類和實(shí)例。在本發(fā)明的其他實(shí)施方式中,語(yǔ)法用于允許類、實(shí)例以及方法的任意組合與父體相同(除了所有都相同)(例如,分隔符用于指定類、實(shí)例以及方法中的每一個(gè),且沒(méi)有這種分隔符指示與父體相同一通過(guò)特定示例的方式,語(yǔ)法可以是"#C:"、和"#M:",由此生成器依賴性聲明陳述中的生成器依賴性可以是弁C:"類關(guān)鍵字"::射:"實(shí)例關(guān)鍵字":^M:"方法關(guān)鍵字")(其中引號(hào)表示值或變量的占位符)不同關(guān)鍵字性質(zhì)標(biāo)識(shí)符的"...相同"指示用于在生成器依賴性聲明陳述中使用速記技術(shù)的情況。如之前所示,在本發(fā)明的一些實(shí)施方式中,偶然生成器依賴性的指示通過(guò)在生成器依賴性聲明陳述自身中使用的語(yǔ)法(例如,)而被支持(見(jiàn)圖13G的1345),且該語(yǔ)法可以用于生成器依賴性的類、實(shí)例和方法的一者或多者。不同關(guān)鍵字性質(zhì)標(biāo)識(shí)符的"…偶然"指示用于標(biāo)識(shí)該偶然生成器依賴性何時(shí)發(fā)生,而"偶然...確定方法關(guān)鍵字標(biāo)識(shí)符"指示子生成器的方法關(guān)鍵字(類和實(shí)例與父生成器的相同)。通過(guò)舉例的方式,圖13G中的生成器依賴性聲明1345的生成器依賴性"GETC1::I1::M1"提供偶然類(其中偶然類確定方法關(guān)鍵字是GETC1)、顯式實(shí)例關(guān)鍵字以及顯式方法關(guān)鍵字。排序依賴性列1195、向上依賴性列1193以及弱約束依賴性列1195的每--個(gè)存儲(chǔ)項(xiàng)的集合,每一項(xiàng)用于每個(gè)排序依賴性、向上依賴性以及弱約束依賴性。在本發(fā)明的一個(gè)實(shí)施方式中,每一個(gè)這樣的項(xiàng)具有與用于參量依賴性的集合項(xiàng)相同的結(jié)構(gòu),除了不包括參量ID。此外,盡管圖13A-圖13J示出了源于依賴性確定生成器的非訂閱向下聲明的依賴性,但是應(yīng)當(dāng)理解在向上聲明的依賴性或弱約束依賴性的情況,參照?qǐng)D7F-圖7G所論述的,依賴性確定生成器可以返回其他依賴性。字段依賴性列1196存儲(chǔ)項(xiàng)的集合,每一項(xiàng)用于每個(gè)字段依賴性。雖然在本發(fā)明的一個(gè)實(shí)施方式中每一項(xiàng)包括屬性方法關(guān)鍵字,但在本發(fā)明的可替換實(shí)施方式中,每項(xiàng)可以具有與來(lái)自排序依賴性的集合項(xiàng)相同的結(jié)構(gòu)。訂閱依賴性在本發(fā)明的一個(gè)實(shí)施方式中,非訂閱和訂閱的生成器依賴性都被支持。當(dāng)為給定方法聲明訂閱生成器依賴性且從該給定方法實(shí)例化給定生成器時(shí),運(yùn)行時(shí)可以在運(yùn)行時(shí)期間解析符合訂閱標(biāo)準(zhǔn)的一組零個(gè)或多個(gè)生成器(基于其他生成器的存在)。雖然在本發(fā)明的一個(gè)實(shí)施方式支持非訂閱和訂閱的生成器依賴性,但是可替換實(shí)施方式僅支持非訂閱。此外,雖然在本發(fā)明的一個(gè)實(shí)施方式中支持兩種類型的訂閱依賴性(吸收和粘附),但是本發(fā)明的可替換實(shí)施方式支持更多、更少和/或不同類型的訂閱生成器依賴性。圖14A-圖14C是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的吸收和粘附訂閱的框圖。圖14A是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖12中的訂閱日志1250的示例的框圖。雖然圖14A示出作為表格的這種日志結(jié)構(gòu),但是應(yīng)當(dāng)理解可以使用任意合適的數(shù)據(jù)結(jié)構(gòu)(例如,哈希映射表)。圖14B是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的非偶然、吸收訂閱生成器依賴性的示例性生成器的框圖。圖14C是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的非偶然、粘附訂閱生成器依賴性的示例生成器的框圖。圖14A的表中顯示了填充有在圖14B-圖14C的示例中使用的內(nèi)容的兩行。圖14B-圖14C中使用帶圈的數(shù)字來(lái)示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式執(zhí)行操作的順序。在圖14A中,訂戶的生成器關(guān)鍵字列1400、訂閱類型列1405以及用于觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410被顯示用于分別存儲(chǔ)對(duì)應(yīng)于列名稱的內(nèi)容。此外,圖14A顯示父鏈接模式列1425用于存儲(chǔ)訂閱依賴性的父生成器的鏈接模式;該信息將參考圖14B-圖14C被更詳細(xì)地描述。圖14A還顯示用于吸收訂閱的匹配生成器列1415和完成列1420。匹配生成器列1415用于存儲(chǔ)符合吸收訂閱的訂閱標(biāo)準(zhǔn)的觸發(fā)生成器的生成器關(guān)鍵字,而完成列1420用于在當(dāng)前組的生成器圖形的給定執(zhí)行期間跟蹤吸收訂閱是否己完成。匹配生成器列1415和完成列1420提供另外的可選優(yōu)化,其允許掃描在自動(dòng)生成器圖形生成和生成器圖形執(zhí)行之間劃分的被實(shí)例化的生成器的工作,這在后面描述。圖14A還顯示用于粘附訂閱的父類列1430、父方法列1435以及父實(shí)例列1437。父類列1430、父方法列1435以及父實(shí)例列1437分別存儲(chǔ)被創(chuàng)建用于粘附訂閱的父生成器的類關(guān)鍵字、方法關(guān)鍵字以及實(shí)例關(guān)鍵字。此外,圖14A還顯示依賴性確定生成器引用列1421存儲(chǔ)創(chuàng)建訂閱的依賴性確定生成器的引用。吸收訂閱在吸收訂閱生成器依賴性中,該依賴性是符合吸收訂閱標(biāo)準(zhǔn)的當(dāng)前生成器圖形結(jié)構(gòu)的所有生成器的集合。參考圖14B,帶圈的1表示生成器1450被實(shí)例化(例如,由于生成器1450(作為感興趣生成器)的命名、由于生成器1450(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等等)。生成器1450基于方法,該方法的生成器依賴性聲明包括生成器依賴性(例如,具有參量IDX)的方法。帶圈的2表示生成器1450的生成器依賴性被處理以標(biāo)識(shí)生成器1455。帶圈的3表示生成器1450在生成器圖形中被鏈接到作為子生成器的生成器1455。帶圈的4表示生成器1455的執(zhí)行。生成器1455是依賴性確定生成器,包括生成器依賴性聲明代碼,該代碼指示吸收訂閱生成器依賴性并指示吸收訂閱標(biāo)準(zhǔn)。這樣,生成器1455的執(zhí)行導(dǎo)致填充訂閱日志。參考圖14A的第一行中的示例,訂戶的生成器關(guān)鍵字列1400、訂閱類型列1405、用于觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410、父鏈接模式列1425以及依賴性確定生成器引用列1421分別填充有生成器1450的生成器關(guān)鍵字、用于指示訂閱是吸收類型的指示、包含在生成器1455中的吸收訂閱標(biāo)準(zhǔn)、鏈接到生成器1455的生成器1450的鏈接模式(在吸收訂閱的情況下,其為參量依賴性且包括參量ID,但是其粘附指示符在以上示例中指示沒(méi)有粘附的參量IDX)以及生成器1455(創(chuàng)建訂閱的依賴性確定生成器)的引用。帶圈的5A-圖5N表示生成器1460A-N的實(shí)例化。在該示例中,生成器1460A-N符合吸收訂閱標(biāo)準(zhǔn),由此為觸發(fā)生成器。這樣,帶圈的6A-N指示生成器1450到生成器1460A-N的鏈接(在以上示例中,通過(guò)參量IDX)。帶圈的7指示對(duì)于生成器圖形的當(dāng)前執(zhí)行,吸收訂閱依賴性已完成,且生成器1450之后被執(zhí)行。在本發(fā)明的一個(gè)實(shí)施方式中,吸收訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字任意關(guān)鍵字中的一個(gè)或多個(gè)。因此,在生成器關(guān)鍵字包括類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字的本發(fā)明的實(shí)施方式中,訂閱標(biāo)準(zhǔn)可以是一個(gè)或多個(gè)這樣的關(guān)鍵字。例如,參考圖IIC,針對(duì)符合訂閱標(biāo)準(zhǔn)的生成器對(duì)實(shí)例化的生成器的掃描是對(duì)生成器圖形結(jié)構(gòu)的第一個(gè)三列中的一個(gè)或多個(gè)進(jìn)行掃描以確定實(shí)例化的生成器的關(guān)鍵字是否與吸收訂閱標(biāo)準(zhǔn)的關(guān)鍵字匹配。雖然在本發(fā)明的一個(gè)實(shí)施方式中吸收訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字的任意關(guān)鍵字中的一個(gè)或多個(gè),但是在本發(fā)明的可替換實(shí)施方式中吸收訂閱標(biāo)準(zhǔn)被限定為組成生成器關(guān)鍵字的關(guān)鍵字的子集。粘附訂閱在粘附訂閱生成器依賴性中,該依賴性使父生成器針對(duì)符合粘附訂閱標(biāo)準(zhǔn)的每一個(gè)生成器而被實(shí)例化。參考圖14C,帶圈的1指示生成器1470被實(shí)例化(作為生成器1470(由于感興趣生成器)的命名、由于通過(guò)排序依賴性(例如,由于排序依賴性或弱約束依賴性等)生成器1470(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等等)。生成器1470是依賴性確定生成器,包括生成器依賴性聲明代碼,該代碼指示粘附訂閱、用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)以及被創(chuàng)建的父生成器的粘附訂閱特性。生成器1470的執(zhí)行導(dǎo)致填充訂閱日志。參考圖14A的第二行中的示例,訂戶的生成器關(guān)鍵字列1400、訂閱類型列1405以及用于觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410分別填充有生成器1470的生成器關(guān)鍵字、用于指示訂閱是粘附類型的指示以及包含在生成器1470中用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)。此外,父類列1430、父方法列1435、父實(shí)例列1437以及鏈接到觸發(fā)生成器的父生成器的鏈接模式列1425填充有被創(chuàng)建的父生成器的粘附訂閱特性——在本發(fā)明的該實(shí)施方式中,分別是被實(shí)例化的父生成器的類、被實(shí)例化的父生成器的方法、被實(shí)例化的父體生成器的實(shí)例(如果被留為空,則等于觸發(fā)生成器的實(shí)例關(guān)鍵字)、鏈接模式(其在粘附訂閱的情況下可以是1)參量、字段或排序依賴性;2)參量ID(如果參量依賴性——父生成器的參量ID被鏈接到觸發(fā)生成器(例如參量IDY))。此外,依賴性確定生成器引用列1421填充有創(chuàng)建訂閱的依賴性確定生成器引用(圖14C中的生成器1470)。參考圖14C,帶圈的2指示生成器1475被實(shí)例化(例如,由于生成器1475(作為感興趣生成器)的命名、由于生成器1475(作為感興趣生成器的子代)的自動(dòng)發(fā)現(xiàn),等等)。此外,可以確定生成器1475是否符合用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)。帶圈的3指示響應(yīng)于該觸發(fā)生成器1475,基于用于被創(chuàng)建的父生成器的粘附訂閱特性來(lái)實(shí)例化生成器1480。參考圖14C的示例性第二行,類關(guān)鍵字、方法關(guān)鍵字、實(shí)例關(guān)鍵字以及鏈接模式分別從父類列1430、父方法列1435、實(shí)例列1347以及父鏈接模式列1425中被訪問(wèn)。父生成器具有生成器關(guān)鍵字,該關(guān)鍵字包括被訪問(wèn)的類關(guān)鍵字、被訪問(wèn)的實(shí)例關(guān)鍵字(如果被留為空,則為觸發(fā)生成器(圖14C中的生成器1475)的實(shí)例關(guān)鍵字)以及被訪問(wèn)的方法關(guān)鍵字——在圖14C的示例中,為生成器1480。帶圈的4指示實(shí)例化的父生成器1480在生成器圖形中通過(guò)被訪問(wèn)的連接模式被鏈接到子觸發(fā)生成器1475(在以上示例中,鏈接模式類型=參量依賴性;鏈接模式參量ID=Y)。還有在參量依賴性的情況中,在帶圈的4處,粘附指示符被設(shè)定成指示粘附——在用于實(shí)例化的父生成器1480所基于的方法的生成器的依賴性聲明陳述的位置中的生成器依賴性對(duì)于生成器1480應(yīng)當(dāng)被忽略一一這防止粘附訂閱生成器依賴性創(chuàng)建的鏈接被后來(lái)的自動(dòng)生成器圖形生成操作重寫(xiě)。在本發(fā)明的一個(gè)實(shí)施方式中,用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字的一個(gè)或多個(gè)關(guān)鍵字。因此,在生成器關(guān)鍵字包括類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字的實(shí)施方式中,用于觸發(fā)的粘附訂閱標(biāo)準(zhǔn)可以是類、實(shí)例以及方法關(guān)鍵字中的一個(gè)或多個(gè)。例如,參考圖11C,針對(duì)符合用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)的生成器,對(duì)實(shí)例化的生成器的掃描是對(duì)生成器圖形結(jié)構(gòu)的第一到第三列中的一個(gè)或多個(gè)進(jìn)行掃描以確定實(shí)例化的生成器的關(guān)鍵字是否匹配用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)的關(guān)鍵字。雖然在本發(fā)明的一個(gè)實(shí)施方式中,用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字的關(guān)鍵字的一個(gè)或多個(gè),但是在本發(fā)明的可替換實(shí)施方式中,吸收訂閱標(biāo)準(zhǔn)可以是進(jìn)一步限定數(shù)量的組成生成器關(guān)鍵字的關(guān)鍵字。圖14D-圖14E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的基于體依賴性確定生成器的父生成器的選擇。雖然圖14D-圖14E參考參量依賴性被描述,但是本發(fā)明的實(shí)施方式可以支持使用排序和字段依賴性。圖14D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的基于粘附訂閱創(chuàng)建的父依賴性確定生成器的父生成器的選擇。像圖14C,圖14D顯示粘附訂閱生成器1470和觸發(fā)生成器1475;但是,生成器1480不同,圖14D顯示通過(guò)粘附訂閱生成器1470的粘附訂閱創(chuàng)建的依賴性確定生成器1480。此外,圖14D顯示粘附訂閱的連接模式是參量依賴性、參量ID:X,且粘附指示符=粘附。如果從生成器1475到依賴性確定生成器1480的虛曲線所示,依賴性確定生成器返回的DEP可以基于生成器1475本身的輸出(參量ID二X的參量)。在圖14D中,依賴性確定生成器1480在生成器1482上返回非訂閱向上聲明的生成器依賴性,具有指示參量依賴性和參量ID:Y的鏈接模式。雖然參量IDX和Y在圖14D中用于顯示它們可以不同,但應(yīng)當(dāng)理解它們可以相等。圖14E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的基于子依賴性確定生成器創(chuàng)建的父依賴性確定生成器的父生成器的選擇,其中子依賴性確定生成器被排序依賴性鏈接。圖14E在結(jié)構(gòu)上與圖14D類似;具體地,生成器1475、1480以及1482用生成器1486、1496以及1498來(lái)替換。但是,不同于在生成器1480和1475之間創(chuàng)建鏈接的粘附訂閱生成器1470,生成器1486在依賴性確定生成器1494上具有排序依賴性(例如,通過(guò)向上依賴性或弱約束依賴性創(chuàng)建),其通過(guò)非訂閱向上聲明的依賴性來(lái)創(chuàng)建依賴性確定生成器1496。值得注意粘附訂閱和非訂閱向上聲明的依賴性(例如,通過(guò)向上依賴性和/或弱約束依賴性而被創(chuàng)建)導(dǎo)致自下而上建立生成器圖形(而不是之前所述的自上而下建立)。此外,該自下而上建立不限于單個(gè)層的建立,而是刻意多個(gè)層(例如,如果由于粘附訂閱或非訂閱向上聲明的依賴性,父生成器被實(shí)例化,相同的父生成器還可以是用于粘附訂閱的觸發(fā)生成器或可以包括非訂閱向上聲明的依賴性且使另一個(gè)父生成器被實(shí)例化,等)。在這種意義上,粘附訂閱和非訂閱向上聲明的依賴性使生成器圖形的建立倒置。雖然在本發(fā)明的一些實(shí)施方式中,由粘附訂閱特性標(biāo)識(shí)的父生成器是標(biāo)準(zhǔn)生成器(見(jiàn)圖14C),但是可替換實(shí)施方式可以被實(shí)施為支持其他類型的生成器的標(biāo)識(shí)。例如,在允許粘附訂閱特性標(biāo)識(shí)依賴性確定生成器的本發(fā)明的實(shí)施方式中(見(jiàn)圖14D),這樣的依賴性確定生成器可以訪問(wèn)觸發(fā)生成器的輸出,且可以基于該輸出觸發(fā)作為需要粘在子體上的父生成器的特定生成器的創(chuàng)建(該父生成器可以已經(jīng)存在或不存在;如果已經(jīng)存在,則被簡(jiǎn)單鏈接且子生成器被添加到其參量;如果不存在,則其被創(chuàng)建)。在依賴性確定生成器返回常量的情況下生成器模擬吸收訂閱。依賴性確定生成器返回生成器(其實(shí)例關(guān)鍵字對(duì)于每一個(gè)觸發(fā)生成器是唯一的)(例如,返回其實(shí)例關(guān)鍵字是觸發(fā)生成器的生成器關(guān)鍵字的生成器)的情況造成于每一個(gè)子生成器有單獨(dú)的父生成器并且被稱為純粘附訂閱。依賴性確定生成器返回對(duì)每一個(gè)觸發(fā)生成器既不是常量也不是唯一的實(shí)例關(guān)鍵字的情況可以混合純粘附訂閱和吸收訂閱的行為且被稱為非純粘附訂閱。示例性優(yōu)點(diǎn)如之前所述,在本發(fā)明的一個(gè)實(shí)施方式中,生成器依賴性針對(duì)方法被聲明作為規(guī)定使用合適實(shí)例而不使用手動(dòng)調(diào)用排序代碼的方法調(diào)用排序的方式(其中合適的實(shí)例包括作為參量使用的實(shí)例、被實(shí)例方法使用的實(shí)例以及被類方法使用的元類實(shí)例);有效地,生成一些或全部手動(dòng)調(diào)用排序代碼的的工作被以下替代1)編寫(xiě)生成器依賴性聲明的應(yīng)用程序員完成的工作;以及2)發(fā)現(xiàn)并建立生成器圖形并執(zhí)行該生成器圖形的生成器的運(yùn)行時(shí)完成的工作。盡管編寫(xiě)運(yùn)行時(shí)的工作量相對(duì)較大,但是其只需要編寫(xiě)一次就可以用于執(zhí)行為運(yùn)行時(shí)編寫(xiě)的面向?qū)?yīng)應(yīng)用;相比之下,對(duì)于一般的應(yīng)用,編寫(xiě)生成器依賴性聲明的工作量與編寫(xiě)手動(dòng)調(diào)用排序代碼相比相對(duì)較低。非動(dòng)態(tài)生成器依賴性提供用于規(guī)定無(wú)條件方法調(diào)用排序代碼的方式,從而避免對(duì)編寫(xiě)無(wú)條件手動(dòng)調(diào)用排序代碼的需要。偶然生成器依賴性提供規(guī)定有條件處理的方式,從而代替對(duì)編寫(xiě)有條件手動(dòng)調(diào)用排序代碼的需要。支持生成器依賴性允許集合被返回的生成器,其提供規(guī)定在集合作為參數(shù)被傳遞之前的集合的填充,從而不需要編寫(xiě)手動(dòng)調(diào)用排序代碼中的多個(gè)調(diào)用以在該集合被作為參數(shù)傳遞之前填充該集合。支持訂閱提供這樣的環(huán)境,在該環(huán)境中程序員不需要為每一種類型的被收聽(tīng)(listen)的對(duì)象編寫(xiě)特定的收聽(tīng)代碼(例如,在面向生成器圖形編程的電子數(shù)據(jù)表中,吸收訂閱可以用于通過(guò)使該吸收訂閱標(biāo)準(zhǔn)標(biāo)識(shí)在范圍內(nèi)的單元來(lái)計(jì)算一定范圍的單元的平均值(每一個(gè)單元是一個(gè)生成器),并在每一次新生成器被添加到吸收訂閱時(shí)重新計(jì)算平均值;在面向生成器圖形編程的電子數(shù)據(jù)表中,粘附訂閱可以通過(guò)使粘附訂閱標(biāo)準(zhǔn)標(biāo)識(shí)保持當(dāng)前值內(nèi)容的單元和標(biāo)識(shí)執(zhí)行當(dāng)前值轉(zhuǎn)換的被實(shí)例化的粘附生成器的粘附訂閱特性而用作當(dāng)前值轉(zhuǎn)換器(粘附訂閱創(chuàng)建的生成器(保持轉(zhuǎn)換后的量)之后可以用于其他單元中的顯示))。操作新實(shí)例命令圖15是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于實(shí)例化新實(shí)例的流程圖。如之前參考圖10所述,圖10中新類模塊1095可以被實(shí)施為新實(shí)例模塊1098的一部分。圖15的流程圖假定該實(shí)施方式并被新實(shí)例模塊1098執(zhí)行;圖15的流程圖中表示新類模塊1095的部分被顯示為虛線塊1580,其包括塊1540和1550。響應(yīng)于新實(shí)例命令(塊1510),控制傳遞到塊1520。在塊1520中,確定是否己經(jīng)存在實(shí)例。如果不存在,則控制傳遞到塊1530,否則,實(shí)例不需要被實(shí)例化且控制傳遞到1570,在塊1570中,流程圖結(jié)束。在支持實(shí)例關(guān)鍵字的一個(gè)實(shí)施方式中,通過(guò)訪問(wèn)用于被提供作為新實(shí)例命令的一部分的實(shí)例關(guān)鍵字(和類關(guān)鍵字,如果實(shí)例關(guān)鍵字在類中不需要是唯一的)的圖10中的實(shí)例跟蹤結(jié)構(gòu)1065來(lái)執(zhí)行塊1520。在塊1530中,確定實(shí)例的類定義是否已經(jīng)被裝載。如果沒(méi)有,則控制傳遞到塊1540;否則,控制傳遞到塊1560。在支持類關(guān)鍵字的一個(gè)實(shí)施方式中,通過(guò)訪問(wèn)用于被提供作為新實(shí)例命令的類關(guān)鍵字的圖10中的類跟蹤結(jié)構(gòu)1092來(lái)執(zhí)行塊1540。在塊1540,類被裝載且控制傳遞到塊1550。在塊1550,類定義根據(jù)類關(guān)鍵字被存儲(chǔ)并自省,包括任意生成器依賴性聲明陳述(根據(jù)類中的方法關(guān)鍵字被存儲(chǔ),見(jiàn)圖IID)??刂茝膲K1550傳遞到塊1560。參考圖10,在塊1540和1550執(zhí)行以下1)類從類定義被裝載,該類定義將業(yè)務(wù)邏輯1010包括到類1054中(該裝載使類的方法和生成器依賴性聲明被存儲(chǔ)在方法和生成器依賴性聲明1056中);2)類可以被添加到類跟蹤結(jié)構(gòu)1092;以及3)方法可以被添加到方法跟蹤結(jié)構(gòu)1058。此外,方法的輸出類可以被裝載。在塊1560,類的實(shí)例可以被實(shí)例化并根據(jù)實(shí)例關(guān)鍵字被存儲(chǔ)。參考圖10,該實(shí)例可以被實(shí)例化成實(shí)例1052;且該實(shí)例可以被添加到實(shí)例跟蹤結(jié)構(gòu)1065??刂茝膲K1550傳遞到塊1570,在塊1570中流程圖結(jié)束。在使用對(duì)象關(guān)系映射技術(shù)的本發(fā)明的一些實(shí)施方式中,作為塊1560的一部分,數(shù)據(jù)可以從外部數(shù)據(jù)源被裝載以填充實(shí)例的字段。在本發(fā)明的一些實(shí)施方式中,類和實(shí)例可以在具有面向生成器圖形編程支持的運(yùn)行時(shí)不知道的情況下被裝載/實(shí)例化(例如,在圖9A中,如果運(yùn)行時(shí)915裝載/實(shí)例化而運(yùn)行時(shí)910不知道)。在這種情況下,本發(fā)明的實(shí)施方式還支持實(shí)例關(guān)鍵字,該實(shí)例關(guān)鍵字是類的實(shí)例的實(shí)例關(guān)鍵字(保持兩個(gè)元素實(shí)例關(guān)鍵字性質(zhì),指示關(guān)鍵字標(biāo)識(shí)符是否是對(duì)實(shí)例的引用或?qū)α硪粋€(gè)對(duì)象(例如串)的引用;和關(guān)鍵字標(biāo)識(shí)符,可以是對(duì)實(shí)例的引用或?qū)α硪粋€(gè)對(duì)象(例如串))的引用,塊1520和1530詢問(wèn)實(shí)例和類是否在具有面向生成器圖形編程支持的運(yùn)行時(shí)知道的情況下被實(shí)例化/裝載。在具有面向生成器圖形編程支持的運(yùn)行時(shí)不知道已經(jīng)裝載的類的情況下,類可以不被裝載,但是類可以被添加到類跟蹤結(jié)構(gòu)1092且方法可以被添加到方法跟蹤結(jié)構(gòu)1058。在在具有面向生成器圖形編程支持的運(yùn)行時(shí)不知道已經(jīng)實(shí)例化的實(shí)例的情況下,實(shí)例可以不被實(shí)例化,但是實(shí)例可以被添加到實(shí)例跟蹤結(jié)構(gòu)1065。新生成器和不覆蓋命令圖16是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的實(shí)例化新生成器和不覆蓋生成器的流程圖。參考圖10,圖15的流程被自動(dòng)生成器圖形生成模塊1040和覆蓋生成器模塊1045(或,參考圖10的可替換實(shí)施方式所述的處理覆蓋和不覆蓋的模塊)執(zhí)行。響應(yīng)于新生成器命令(塊1600),控制傳遞到塊1605。在本發(fā)明的一個(gè)實(shí)施方式中,新生成器命令可以響應(yīng)于各種情況來(lái)執(zhí)行。下面的表2標(biāo)識(shí)根據(jù)本發(fā)明的一個(gè)實(shí)施方式的各種情況和傳遞的參數(shù)。表2<table>tableseeoriginaldocumentpage100</column></row><table>在塊1065中,確定生成器是否已經(jīng)存在。如果不存在,則控制傳遞到塊1610;否則,控制傳遞到1670。通過(guò)訪問(wèn)作為新生成器命令的一部分的被標(biāo)識(shí)的類、實(shí)例和方法(例如,通過(guò)關(guān)鍵字和/或引用)來(lái)執(zhí)行塊1605。在支持生成器關(guān)鍵字的一個(gè)實(shí)施方式中,通過(guò)訪問(wèn)用于被提供作為新生成器命令的生成器關(guān)鍵字(表2的調(diào)用的生成器列中的生成器關(guān)鍵字)的圖10中生成器圖形結(jié)構(gòu)1060來(lái)執(zhí)行塊1605。在塊1610中,利用新實(shí)例命令調(diào)用新實(shí)例模塊,并且控制傳遞到塊1615。在本發(fā)明的一個(gè)實(shí)施方式中,通過(guò)使用來(lái)自表2的調(diào)用的生成器列中的生成器關(guān)鍵字的實(shí)例關(guān)鍵字來(lái)調(diào)用圖15的流程圖從而執(zhí)行塊1610。在塊1615中,生成器的實(shí)例的類定義被訪問(wèn)且控制傳遞到塊1620。參考圖10,通過(guò)使用來(lái)自表2的調(diào)用的生成器列中的生成器關(guān)鍵字的類關(guān)鍵字來(lái)執(zhí)行塊1615,從而根據(jù)類跟蹤結(jié)構(gòu)1092訪問(wèn)類1054中合適的一個(gè)。在塊1620,生成器的方法和生成器依賴性聲明陳述被訪問(wèn)且控制傳遞到塊1625。參考圖10,通過(guò)使用來(lái)自表2的調(diào)用的生成器列中的生成器關(guān)鍵字的方法關(guān)鍵字來(lái)執(zhí)行塊1620,從而訪問(wèn)來(lái)自位于塊1615中的類的方法和生成器依賴性聲明1056中合適的一個(gè)。在塊1625,生成器被添加到生成器圖形且控制傳遞到塊1630。參考圖IIC中的本發(fā)明的實(shí)施方式,第一個(gè)三列被填充。在塊1630,對(duì)于每一個(gè)注冊(cè)的訂閱,訂閱過(guò)濾標(biāo)準(zhǔn)被處理以確定生成器是否匹配。參考圖14A中的本發(fā)明的實(shí)施方式,當(dāng)訂閱被添加到訂閱日志時(shí)該訂閱被認(rèn)為已注冊(cè)。注冊(cè)訂閱的示例性操作在后面描述。塊1630是可選優(yōu)化,其允許掃描實(shí)例化的生成器的工作在生成器圖形生成和生成器圖形執(zhí)行之間被劃分。這樣,本發(fā)明的可替換實(shí)施方式可以不執(zhí)行塊1630。在塊1635,如果由于依賴性生成器被調(diào)用,則生成器被鏈接到生成器圖形??刂茝膲K1635傳遞到塊1640。執(zhí)行塊1635的方式取決于導(dǎo)致新生成器命令被執(zhí)行的情況(見(jiàn)圖20)。例如,如果所述情況是感興趣生成器或被覆蓋的生成器,則由于依賴性生成器不被調(diào)用并且不做任何事。相反,如果情況是非訂閱向下聲明的,則由于非訂閱向下聲明的依賴性而調(diào)用生成器;且參考圖11C中的本發(fā)明的實(shí)施方式,執(zhí)行以下l)調(diào)用的子生成器的列1150中的父生成器鏈接(表2的調(diào)用的生成器列)被修改為對(duì)父調(diào)用器生成器的行的父生成器引用(表2的調(diào)用器生成器列)以及依賴性確定生成器引用(表2的依賴性確定生成器引用列);以及2)父調(diào)用器生成器的行的子生成器鏈接列1160(表2的調(diào)用器生成器列)被修改為對(duì)調(diào)用的子生成器的行的子生成器引用(表2的調(diào)用的生成器列)、依賴性確定生成器引用(表2的依賴性確定生成器引用列)以及鏈接模式(根據(jù)表2的鏈接模式列而被設(shè)定)。相反,如果情況是粘附訂閱,則由于觸發(fā)生成器被標(biāo)識(shí)而調(diào)用生成器;且參考圖11C中的本發(fā)明的實(shí)施方式,執(zhí)行以下1)調(diào)用器子生成器的父生成器鏈接列1150(表2的調(diào)用器生成器列)被修改為對(duì)父調(diào)用的生成器的行的父生成器引用(表2的調(diào)用的生成器列)以及依賴性確定生成器引用(表2的依賴性確定生成器引用列);以及2)父調(diào)用的生成器的行的子生成器鏈接列1160(表2的調(diào)用的生成器列)被修改為對(duì)調(diào)用器子生成器的行的子生成器引用(表2的調(diào)用器生成器列)、依賴性確定生成器引用(表2的依賴性確定生成器引用列)、鏈接模式(根據(jù)表2的鏈接模式列而被設(shè)定)以及被設(shè)定為指示粘附的粘附指示符。就此而言,非訂閱向下聲明的情況以與粘附訂閱相似的方式來(lái)被處理。在塊1640中,生成器被標(biāo)記為未執(zhí)行且控制傳遞到塊1645。參考圖11C中本發(fā)明的實(shí)施方式,合適行的增量執(zhí)行標(biāo)記列1180為填充有未執(zhí)行的指示。在塊1645中,確定生成器是否具有任何依賴性且沒(méi)有被覆蓋。如果是,則控制傳遞到塊1650;否則,控制傳遞到塊1665。通過(guò)檢查在塊1620中訪問(wèn)的生成器依賴性聲明以及表2的調(diào)用類型列來(lái)執(zhí)行塊1645。在塊1650中,對(duì)于現(xiàn)在被解析的生成器依賴性聲明中的每一個(gè)依賴性,確定生成器的數(shù)量且為每一個(gè)生成器調(diào)用新生成器命令??刂茝膲K1650傳遞到塊1655。本發(fā)明的不同實(shí)施方式在不同時(shí)間確定不同類型的依賴性;在本發(fā)明的一個(gè)示例性實(shí)施方式中執(zhí)行塊1650的方式將在后面描述。在塊1655中,如果生成器的所有相關(guān)生成器存在并已經(jīng)被執(zhí)行,則該生成器被添加到執(zhí)行開(kāi)始日志??刂茝膲K1655傳遞到塊1660。對(duì)于作為該流程的當(dāng)前重復(fù)的一部分而實(shí)例化的給定生成器,塊1655被執(zhí)行,然后用于給定生成器所依賴的生成器的該流程的其他重復(fù)的調(diào)用將返回該生成器的執(zhí)行狀態(tài)(見(jiàn)塊1660)(例如,參考圖IIC的本發(fā)明的實(shí)施方式,來(lái)自合適行的增量執(zhí)行標(biāo)記列1180的狀態(tài))。如果所有依賴性生成器存在且所有依賴性生成器的執(zhí)行狀態(tài)被執(zhí)行,則當(dāng)前重復(fù)的生成器被添加到執(zhí)行開(kāi)始日士心o在塊1660中,生成器的執(zhí)行狀態(tài)作為參數(shù)被返回。在塊1670中,與塊1635類似,如果由于生成器被調(diào)用,則生成器被鏈接到生成器圖形??刂茝膲K1670傳遞到塊1675。出于各種原因,可以達(dá)到塊1670。例如,由于響應(yīng)于生成器覆蓋命令之前生成器被實(shí)例化但沒(méi)有被鏈接到生成器圖形,則可以達(dá)到塊1670。作為另一個(gè)示例,由于生成器己經(jīng)是生成器圖形的一部分且被添加到另一個(gè)生成器圖形(例如,響應(yīng)于是感興趣生成器、感興趣生成器的子代等而之前被實(shí)例化),可以達(dá)到塊1670。在塊1675中,確定新生成器流程是否由于覆蓋、粘附訂閱依賴性或非訂閱向上聲明的依賴性而被調(diào)用。如果是,則控制傳遞到塊1680;否則,控制傳遞到塊1660。通過(guò)檢查表2的調(diào)用類型列來(lái)了解這是否是對(duì)于被覆蓋的生成器、粘附訂閱依賴性或非訂閱向上聲明的依賴性的調(diào)用,從而執(zhí)行塊1675。在塊1680中,與塊1640類似,生成器被標(biāo)記為未執(zhí)行且控制傳遞到塊1665。出于各種原因,可以達(dá)到塊1680。在塊1665中,生成器被添加到執(zhí)行開(kāi)始日志(如果還沒(méi)有)且控制傳遞到塊1660。響應(yīng)于生成器不覆蓋命令(塊1690),控制傳遞到塊1695。在塊1695,生成器被標(biāo)記為沒(méi)有被覆蓋且控制傳遞到塊1640。參考圖11C的本發(fā)明的實(shí)施方式,生成器的行的生成器輸出緩存和覆蓋生成器輸出指示列1170被訪問(wèn)且被改變以指示該生成器不再被覆蓋。繼續(xù)該流程,塊1640可以通向塊1645,且如果生成器具有任何依賴性,則塊1640可以通向塊1650,塊1650使生成器下面的生成器圖形被發(fā)現(xiàn)且如果還沒(méi)有則被建立。如果該生成器下面的生成器圖形已經(jīng)被發(fā)現(xiàn)并建立,則新生成器命令的調(diào)用可以使流程從1600到1605,到1670等;此外,在塊1660中的生成器下的圖形的生成器的執(zhí)行狀態(tài)的返回將確定生成器是否被添加到塊1655中的執(zhí)行開(kāi)始日志。但是,如果生成器下的生成器圖形沒(méi)有被發(fā)現(xiàn)并建立,則新生成器命令的調(diào)用使生成器在流程從1600到1605,到1610等的過(guò)程中被發(fā)現(xiàn)并建立。圖17是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖16的塊1650的流程圖。因此,在塊1650中,控制從塊1645流向塊1700。在塊1700中,針對(duì)生成器的生成器依賴性聲明(每一個(gè)用于每個(gè)參量依賴性、字段依賴性、排序依賴性、向上依賴性以及弱約束依賴性)中的每一個(gè)依賴性,下面的塊1705-1745被執(zhí)行。參考圖10和11D,方法跟蹤結(jié)構(gòu)被訪問(wèn)以確定關(guān)于生成器依賴性的信息。還應(yīng)當(dāng)理解塊1715、1725、1730、1740、1745以及1750是在執(zhí)行生成器圖形之前被執(zhí)行時(shí)的優(yōu)化。在塊1705中,確定依賴性是否是由于粘附依賴性而已經(jīng)被鏈接的參量依賴性。如果是,則控制傳遞到塊1710,其中針對(duì)該依賴性,流程結(jié)束;否則控制傳遞到塊1715。關(guān)于圖11C中所示的本發(fā)明的實(shí)施方式,粘附指示符被檢查以確定該依賴性的參量ID是否屬于粘附訂閱參量依賴性或向上聲明的參量依賴性。在塊1715中,確定依賴性是否是偶然依賴性。如果是,則控制傳遞到塊1720;否則,控制傳遞到塊1725。通過(guò)檢査依賴性鎖標(biāo)識(shí)的子生成器的生成器依賴性聲明來(lái)確定其是否為空(子生成器是無(wú)關(guān)生成器)從而執(zhí)行塊1715。參考圖13A-圖13J,這對(duì)具有帶虛線圈的數(shù)字的生成器可以為真(例如,在圖13D中,生成器CU::IV::DELTA),但是對(duì)其他生成器為假(例如,在圖13D中,生成器CU::IY::BETA)。因此,參考圖13D,塊1715由帶圈的1、4、和8來(lái)表示。塊1715和從該塊1715經(jīng)過(guò)塊1725-1750的流程是一種優(yōu)化,兩者都避免添加/鏈接具有帶虛線圈的數(shù)字的生成器到生成器圖形,也避免在自動(dòng)生成器圖形生成和生成器圖形執(zhí)行之間劃分執(zhí)行生成器的工作。在塊1720中,依賴性確定生成器的新生成器命令被調(diào)用且流程結(jié)束。例如,參考圖13D,塊1720引起帶圈的5、6和7所表示的。在塊1725中,依賴性確定生成器被執(zhí)行且控制傳遞到塊1730。例如,參考圖13D,塊1725由帶圈的11(從而,之前所述實(shí)施方式示出的圖17的流程,其中圖13D的帶圈的9和IO沒(méi)有被執(zhí)行)表示。在塊1730中,確定依賴性是否是非訂閱依賴性。如果是,則控制傳遞到1750;否則控制傳遞到塊1740。換句話說(shuō),在塊1725中,依賴性確定生成器的方法中的生成器依賴性確定代碼被執(zhí)行,所述代碼是父生成器的生成器依賴性聲明中的一部分。執(zhí)行該生成器依賴性聲明代碼(該代碼可以標(biāo)識(shí)依賴性是否是訂閱依賴性),可以確定父生成器的生成器依賴性類型。參考圖13D中的示例,帶圈的11可以使圖17的流程從塊1730傳遞到塊1750。在塊1750中,確定由塊1725中的依賴性確定生成器的執(zhí)行返回的生成器的數(shù)量,且使用表2中描述的參量來(lái)為每一個(gè)生成器調(diào)用新生成器命令,所述參量包括1725中執(zhí)行的依賴性確定生成器引用。例如,參考圖13D,塊1750引起帶圈的12和13以及帶圈的C和D。參考圖14B的吸收訂閱示例,塊1725表示帶圈的4;其使流程經(jīng)過(guò)塊1730傳遞到塊1740。在塊1740中,訂閱被添加到訂閱日志,且如果該訂閱是吸收的,則被標(biāo)記為未完成??刂茝膲K1740傳遞到塊1745。參考圖14A中所示的本發(fā)明的實(shí)施方式,訂閱日志被填充有之前所述的訂閱。在塊1745中,所有被實(shí)例化的生成器被掃描以了解它們是否匹配訂閱的標(biāo)準(zhǔn)(從而是觸發(fā)生成器),且任意匹配被處理。圖18是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖17的塊1745的流程圖。因此,控制從塊1740流向塊1745中的塊1800。在塊1800中,對(duì)于每一個(gè)被實(shí)例化的生成器,以下的塊1810-1830被執(zhí)行。在塊1810中,確定生成器是否符合訂閱的標(biāo)準(zhǔn)。如果符合,則控制傳遞到塊1815;否則,控制傳遞到塊1830,其中針對(duì)當(dāng)前被處理的生成器,流程結(jié)束。參考圖IIC和14A中所示的本發(fā)明的實(shí)施方式,生成器圖形被訪問(wèn)以確定它們是否包括符合訂閱標(biāo)準(zhǔn)的生成器。處理匹配的生成器的方式依據(jù)被處理的訂閱的類型。參考?jí)K1815,如果訂閱是吸收類型,則控制傳遞到塊1825;否則,控制傳遞到塊1820。塊1815可以響應(yīng)于添加在塊1740或2235中的訂閱的類型而被執(zhí)行。在塊1825中,匹配的生成器被添加到訂閱日志且具有吸收訂閱的生成器被鏈接到匹配的生成器??刂茝膲K1825傳遞到塊1830。參考圖11C和14A-圖14B中所示的本發(fā)明的實(shí)施方式,以下被執(zhí)行1)來(lái)自觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410的訂閱標(biāo)準(zhǔn)在塊1810中被使用且匹配的生成器被定位(生成器1460A-N中的一個(gè));2)匹配的生成器被添加到訂閱的行處的匹配的生成器列1415;以及3)(使用從用于給定吸收訂閱的訂閱日志14A的依賴性確定生成器引用列1421中提取的依賴性確定生成器引用)將具有吸收訂閱的生成器(例如生成器1450)鏈接到圖11C的生成器圖形結(jié)構(gòu)中的匹配的生成器(例如,生成器1460A-N中的一個(gè))。在塊1820中,新生成器命令被調(diào)用,用于被創(chuàng)建的父生成器??刂茝膲K1820傳遞到塊1830,在塊1830中,對(duì)于在塊1800中選擇的當(dāng)前生成器流程圖結(jié)束。參考圖14A和14C中所示的本發(fā)明的實(shí)施方式,以下被執(zhí)行1)來(lái)自觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410的訂閱標(biāo)準(zhǔn)在塊1810中被使用且匹配的生成器被定位(例如,生成器1475);以及2)新生成器命令被調(diào)用,具有按以下設(shè)定的表2的參數(shù)a)調(diào)用類型是粘附訂閱;b)調(diào)用器生成器是調(diào)用器子生成器(例如生成器1475)的生成器關(guān)鍵字;c)調(diào)用的生成器是被創(chuàng)建的調(diào)用的父生成器(例如生成器1480)的生成器關(guān)鍵字,使用來(lái)自用于被創(chuàng)建的父生成器的粘附訂閱特性的父類、實(shí)例以及方法關(guān)鍵字來(lái)形成所述生成器關(guān)鍵字(圖14A,列1430、1435和1437)(如果實(shí)例關(guān)鍵字為空,則使用調(diào)用器子生成器的實(shí)例關(guān)鍵字);以及d)調(diào)用的父生成器的鏈接模式(圖14A,鏈接模式列1425);以及e)從用于給定粘附訂閱的訂閱日志14A的依賴性確定生成器引用列1421中提取的依賴性確定生成器引用。圖19是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖16的塊1630的流程圖。因此,控制從塊1625流向塊1630中的塊1900。圖19與圖18非常類似。具體地,圖19中的塊1910、1915、1920以及1930與塊1810、1815、1820以及1830相同;而塊1900和1925與塊1800和1825不同。這樣,這里只描述不同之處。塊1900指示為每一個(gè)注冊(cè)的訂閱所執(zhí)行的流程,而塊1800指示為每一個(gè)實(shí)例化的生成器所執(zhí)行的流程。因此,圖18的流程側(cè)重在單個(gè)訂閱且掃描所有生成器,而圖19的流程側(cè)重在單個(gè)生成器且掃描所有訂閱。塊1925與塊1825相同,不同在于吸收訂閱被標(biāo)記為未完成。參考圖14A中所示的本發(fā)明的實(shí)施方式,在合適行的完成的列1420被更新以指示未完成。圖20是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖16中的塊1635和1670的流程圖。因此,控制從塊1605和塊1630流向塊1635和1670中的塊2005。在塊2005中,確定圖16的流程圖的重復(fù)是否由于依賴性被調(diào)用(例如,從之前重復(fù)的塊1630(塊1920)或1650(塊1720、1750或1745/1820))。如果不是,則控制根據(jù)流程進(jìn)入的地方(從塊1630或1605)而傳遞到塊1640或1675。在塊2010,確定流程是否由于粘附訂閱或非訂閱向上聲明情況而被調(diào)用。如果不是,則控制傳遞到塊2015;否則,控制傳遞到塊2020。通過(guò)檢查表2的調(diào)用類型參數(shù)(即,調(diào)用類型是粘附訂閱還是非訂閱向上聲明)來(lái)執(zhí)行塊2010。參考圖18和19中所示的本發(fā)明的實(shí)施方式,是否新生成器命令從塊1820或1920被調(diào)用。在塊2020,當(dāng)前父生成器被鏈接到調(diào)用器子生成器。參考圖IIC和14C中所示的本發(fā)明的實(shí)施方式,使用鏈接模式以及來(lái)自該鏈接模式和表2的依賴性確定生成器引用列的參數(shù)所標(biāo)識(shí)的依賴性確定生成器引用,由來(lái)自表2的調(diào)用的生成器列的參數(shù)所標(biāo)識(shí)的調(diào)用的父生成器(例如生成器1480)在圖11C的生成器圖形結(jié)構(gòu)中被鏈接到由來(lái)自表2的調(diào)用器生成器列的參數(shù)所標(biāo)識(shí)的調(diào)用器子生成器(例如,生成器1475)。如果父體之前存在,則塊2020的行為模擬吸收訂閱依賴性的行為,從而單個(gè)參量可以被映射成零個(gè)或更多個(gè)子生成器。在塊2015中,調(diào)用器父生成器被鏈接到當(dāng)前調(diào)用的子生成器。參考圖IIC中所示的本發(fā)明的實(shí)施方式,通過(guò)使用由表2的依賴性確定生成器引用列所標(biāo)識(shí)的依賴性確定生成器引用,由來(lái)自表2的調(diào)用器生成器列的參數(shù)所標(biāo)識(shí)的調(diào)用器父生成器在圖11C的生成器圖形結(jié)構(gòu)中被鏈接到由來(lái)自表2的調(diào)用的生成器列的參數(shù)所標(biāo)識(shí)的調(diào)用的子生成器。從塊2015和2020,控制依據(jù)流程進(jìn)入的地方(從塊1605或1630)而傳遞到塊1640或1675。圖21是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的覆蓋生成器的流程圖。參考圖10,由覆蓋生成器模塊1045執(zhí)行圖21的流程(或,如參考圖10的可替換實(shí)施方式所述的處理覆蓋和不覆蓋的模塊)。響應(yīng)于覆蓋生成器命令(塊2110),控制傳遞到塊2120。在塊2120,對(duì)于由覆蓋生成器命令所標(biāo)識(shí)的每一個(gè)生成器,調(diào)用新生成器命令,且控制傳遞到塊2130。在本發(fā)明的一個(gè)實(shí)施方式中,塊2120在被覆蓋的生成器還沒(méi)有被實(shí)例化情況下被執(zhí)行以及將該生成器標(biāo)記為未執(zhí)行的(塊1640或1680)并將其記錄在執(zhí)行開(kāi)始日志上(塊1665)。不允許覆蓋還沒(méi)有被實(shí)例化的生成器的本發(fā)明的可替換實(shí)施方式將執(zhí)行塊1605與塊1610之間的另外的檢查以確定是否響應(yīng)于覆蓋生成器命令來(lái)調(diào)用新生成器命令,以及如果該新生成器命令響應(yīng)于覆蓋生成器命令而被調(diào)用,則指示錯(cuò)誤。在塊2130中,在生成器輸出緩存中(以及如果輸出是字段,則在實(shí)例中的)的輸出被設(shè)定且該生成器被標(biāo)記為被覆蓋。全局執(zhí)行命令圖22A是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的一部分;而圖22B是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的另一部分。參考圖IO,由生成器圖形執(zhí)行模塊1070來(lái)執(zhí)行圖22的流程。響應(yīng)于全局執(zhí)行命令,塊2200顯示一組候選生成器基于執(zhí)行開(kāi)始日志上的生成器被選擇以被執(zhí)行,且控制傳遞到塊2205。在本發(fā)明的一個(gè)實(shí)施方式中,被覆蓋的生成器被標(biāo)記為未執(zhí)行且該生成器的執(zhí)行返回它們的被覆蓋結(jié)果(而不是使它們的方法被執(zhí)行),當(dāng)前組的候選生成器是執(zhí)行開(kāi)始日志上的生成器。雖然本發(fā)明的一個(gè)實(shí)施方式在上面被描述,其中被覆蓋的生成器被標(biāo)記為未執(zhí)行且它們的執(zhí)行返回其被覆蓋的結(jié)果(而不是使它們的方法被執(zhí)行),但是可替換實(shí)施方式可以以不同的方式操作(例如,標(biāo)記被覆蓋的生成器為己執(zhí)行且當(dāng)選擇當(dāng)前組的候選生成器時(shí),執(zhí)行開(kāi)始日志的無(wú)關(guān)生成器和執(zhí)行開(kāi)始日志上的被覆蓋的生成器的父體被選擇)。在塊2205中,準(zhǔn)備用于執(zhí)行的生成器的子集從一組候選生成器中被選擇且控制傳遞到塊2210。執(zhí)行塊2205的示例性方式在后面描述。在塊2210中,當(dāng)前組的就緒生成器中的生成器按類型被分類——標(biāo)準(zhǔn)生成器進(jìn)入塊2215而依賴性確定生成器進(jìn)入塊2225。在本發(fā)明的一個(gè)實(shí)施方式中,通過(guò)檢查生成器的返回類來(lái)執(zhí)行塊2210。參考圖10和11D,方法跟蹤結(jié)構(gòu)被訪問(wèn)以確定生成器的輸出類是否是DEP,從而該生成器是否是依賴性確定生成器。在塊2215中,當(dāng)前組的就緒生成器中的任何標(biāo)準(zhǔn)生成器被執(zhí)行,并且控制傳遞到塊2220。在本發(fā)明的一個(gè)實(shí)施方式中,通過(guò)調(diào)用具有從產(chǎn)生于參量依賴性的任何子生成器的輸出映射的任何輸入?yún)?shù)的方法來(lái)執(zhí)行塊2215(對(duì)于參量,鏈接模式的參量ID被用于將合適的子生成器的輸出映射到正在被執(zhí)行的方法的合適的輸入?yún)⒘?。在本發(fā)明的一些實(shí)施方式中,所述執(zhí)行可以導(dǎo)致將輸出寫(xiě)入給定機(jī)制的子生成器的方法中代碼的執(zhí)行(例如,設(shè)定全局變量、在不是生成器輸出的實(shí)例中設(shè)定字段、影響外部數(shù)據(jù)源等)或者將輸出從給定機(jī)制讀出的父生成器的方法中的代碼的執(zhí)行。在塊2220中,對(duì)于這些父體(如果有的話)在這些執(zhí)行的標(biāo)準(zhǔn)生成器的任意一個(gè)上具有吸收訂閱,該訂閱被標(biāo)記為未完成??刂茝膲K2220傳遞到塊2245。參考圖14A,完成的列1420的合適行被設(shè)定成指示未完成。在塊2225中,當(dāng)前組的就緒生成器中的任何依賴性確定生成器準(zhǔn)備用于執(zhí)行并且控制傳遞到塊2230。稍后描述了執(zhí)行塊2225的示例性方式。在塊2230中,當(dāng)前組的就緒生成器中的任何依賴性確定生成器被執(zhí)行并且控制傳遞到塊2235。在本發(fā)明的一個(gè)實(shí)施方式中,塊2230以與塊2215相似的方式被執(zhí)行。在塊2235中,對(duì)于任意發(fā)現(xiàn)的生成器,新生成器命令被執(zhí)行,且對(duì)于任意訂閱,訂閱記錄和處理被執(zhí)行。塊2235的新生成器命令的一部分以與塊1750相似的方式被執(zhí)行,而訂閱記錄和處理以與塊1740和1745相似的方式被執(zhí)行。在塊2240中,添加到一組候選生成器,其新添加到執(zhí)行開(kāi)始日志??刂茝膲K2240傳遞到塊2245。塊2240以與塊2200相似的方式被執(zhí)行,不同的只是作為塊2230和2235的結(jié)果的新添加到執(zhí)行開(kāi)始日志的生成器被添加到-一組候選生成器。在塊2245中,被執(zhí)行的生成器被標(biāo)記為已執(zhí)行,生成器輸出緩存(和實(shí)例緩存)在必要時(shí)被更新,被執(zhí)行的生成器的任意父生成器被添加到當(dāng)前組的候選生成器,且被執(zhí)行的生成器從當(dāng)前組的候選和就緒生成器中被移除??刂茝膲K2245傳遞到塊2250。在塊2250,確定一組候選生成器是否為空,如果不為空,則控制傳遞到塊2205;否則,控制傳遞到塊2255。在塊2255,確定所有的訂閱是否已經(jīng)完成。如果是,則控制傳遞到塊2265,在塊2265流程圖結(jié)束;否則,控制傳遞到塊2260。參考圖14A中的本發(fā)明的實(shí)施方式,為任何未完成的吸收訂閱來(lái)掃描訂閱類型列1405和完成的歹ij1420。在塊2260,未完成的吸收訂閱被處理且控制傳回到塊2205。執(zhí)行塊2260的示例性方式在后面描述。圖23是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖22的塊2205的流程圖。因此控制從塊2200流向塊2205中的塊2305。在塊2305中,對(duì)于一組候選生成器的的每一個(gè)生成器,以下的塊2310-2325被執(zhí)行。在塊2310中,確定生成器是否具有任意未完成的吸收訂閱依賴性。如果有,則控制傳遞到塊2325;否則,控制傳遞到塊2315。參考圖14A的實(shí)施方式,為匹配到當(dāng)前選擇的生成器和吸收訂閱類型,掃描訂戶的生成器關(guān)鍵字列1400和訂閱類型列1405;且如果找到匹配,則在合適的行檢査完成的列1420從而確定吸收訂閱依賴性的狀態(tài)。在塊2315中,確定當(dāng)前選擇的生成器所依賴的生成器是否被執(zhí)行。如果沒(méi)有,則控制傳遞到塊2325;否則,控制傳遞到塊2320。參考圖11C中所示的本發(fā)明的實(shí)施方式,檢查用于子依賴性的行的增量執(zhí)行標(biāo)記列1180以確定當(dāng)前選擇的生成器的子代的執(zhí)行狀態(tài)。在塊2320中,當(dāng)前選擇的候選生成器被添加到當(dāng)前組的就緒生成器,且控制傳遞到塊2325。在塊2325中,對(duì)于在塊2305中選擇的當(dāng)前生成器的流程結(jié)束。圖24是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖22的塊2225的流程圖。從而,控制從塊2210流向塊2225中的塊2405。在塊2405中,對(duì)于每一個(gè)依賴性確定生成器,以下塊2410-2430被執(zhí)行。在塊2410中,確定由當(dāng)前選擇的依賴性確定生成器所生成的任意之前的依賴性的類型。如果依賴性的類型是非訂閱,則控制傳遞到塊2420;如果類型是吸收訂閱,則控制傳遞到塊2415;而如果類型是粘附訂閱,則控制傳遞到塊2425。通過(guò)檢查存儲(chǔ)在生成器輸出緩存中的生成器的當(dāng)前輸出來(lái)確定塊2410。參考類DEP,輸出將指示非訂閱、吸收訂閱以及粘附訂閱。在塊2415和2425中,從訂閱日志中移除項(xiàng)。參考在圖14A-圖14C中示出的本發(fā)明的實(shí)施方式,執(zhí)行以下1)對(duì)于吸收訂閱(塊2415),依賴性確定生成器(例如,生成器1455)被用于在生成器圖形中確定其父生成器(例如,生成器1450),然后,在訂閱日志中査詢父生成器,并移除父生成器的項(xiàng);以及2)對(duì)于粘附訂閱(塊2425),在訂閱日志中查詢依賴性確定生成器(例如,生成器1470),并移除依賴性確定生成器的項(xiàng)??刂茝膲K2415傳遞到塊2420;控制從塊2425傳遞到塊2420。在塊2420中,已經(jīng)由當(dāng)前選擇的依賴性確定生成器創(chuàng)建的鏈接從生成器圖形中被清除,并且控制傳遞到塊2430。參考在圖11C中示出的本發(fā)明的實(shí)施方式,執(zhí)行以下所述。首先確定依賴性確定生成器是否"粘附"在己有的生成器上。這通過(guò)掃描在圖11C中的依賴性確定生成器的子生成器鏈接列以及檢査鏈接中的一個(gè)是否具有指示粘附的粘附指示符來(lái)完成。如果依賴性確定生成器沒(méi)有粘附在己有的生成器上,貝U:1)對(duì)于生成非訂閱向下聲明的依賴性(參量、字段或排序依賴性)的依賴性確定生成器,通過(guò)在當(dāng)前選擇的依賴性確定生成器的行的父生成器引用列1150來(lái)在生成器圖形中訪問(wèn)依賴性確定生成器的父體,并且在父生成器項(xiàng)中,子生成器鏈接列1160被訪問(wèn)以匹配依賴性確定生成器引用,并清除具有該依賴性確定生成器引用的子生成器的所有引用;2)對(duì)于生成非訂閱向上聲明的依賴性的依賴性確定生成器,通過(guò)在當(dāng)前選擇的依賴性確定生成器的行的父生成器鏈接列1150來(lái)在生成器圖形中訪問(wèn)依賴性確定生成器的父體,并且在父生成器項(xiàng)中,父生成器鏈接列1150被訪問(wèn)以匹配依賴性確定生成器引用,并清除具有該依賴性確定生成器引用的父生成器的所有引用;3)對(duì)于生成吸收訂閱的依賴性確定生成器,執(zhí)行與非訂閱向下聲明的依賴性相同的行為;以及4)對(duì)于生成粘附訂閱的依賴性確定生成器,在父生成器鏈接列1150中的生成器圖形結(jié)構(gòu)中査詢從移除訂閱之前的訂閱日志14A的列1421中提取的依賴性確定生成器引用,并清除具有該依賴性確定生成器引用的父生成器的所有引用。如果依賴性確定生成器粘附在己有的生成器上,由于非訂閱向上聲明的依賴性或粘附訂閱,則訪問(wèn)依賴性確定生成器所粘附的子生成器(在具有指示粘附的粘附指示符的列1160中的子生成器),并且在子生成器項(xiàng)中,父生成器鏈接列1150被訪問(wèn)以匹配依賴性確定生成器引用,并清除具有該依賴性確定生成器引用的父生成器的所有引用。在塊2430中,針對(duì)在塊2405中選擇的依賴性確定生成器,流程結(jié)束。圖25是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的圖22中的塊2260的流程圖。從而,控制從塊2255流向塊2260中的塊2505。在塊2505中,對(duì)于每一個(gè)具有未完成的吸收訂閱依賴性的生成器,以下塊2510-2525被執(zhí)行。在塊2510中,確定所有匹配的生成器是否巳被執(zhí)行。如果是,則控制傳遞到塊2515;否則,控制傳遞到塊2525。參考圖IIC和14A的實(shí)施方式,在合適的行的匹配的生成器列1415被訪問(wèn)以確定匹配的生成器,且為每一個(gè)匹配的生成器檢査在合適的行的增量執(zhí)行列1180。在塊2515中,吸收訂閱被標(biāo)記為完成且控制傳遞到塊2520。參考圖14A的實(shí)施方式,在合適的行的完成的列1420被設(shè)定成指示完成。在塊2520中,在塊2505中選擇的生成器被添加到當(dāng)前組的候選生成器且控制傳遞到塊2525。在塊2525中,用于在塊2505中的選擇的生成器的流程結(jié)束。吻足在一些實(shí)施方式中,場(chǎng)景提供規(guī)定用對(duì)具有不同參數(shù)的相同實(shí)例的相同方法調(diào)用多次的結(jié)果來(lái)填充集合的方法;從而避免需要用手動(dòng)調(diào)用排序代碼來(lái)編寫(xiě)具有不同參數(shù)的相同實(shí)例的相同方法的多個(gè)調(diào)用。在支持動(dòng)態(tài)依賴性的本發(fā)明的一些實(shí)施方式中,如果在場(chǎng)景中使用了不同的實(shí)例、不同的方法和/或不同的類,則一個(gè)應(yīng)用的兩個(gè)不同場(chǎng)景可以在應(yīng)用的生成器圖形中具有結(jié)構(gòu)上截然不同的生成器圖形或子圖形。例如,提供一個(gè)示例性應(yīng)用程序以基于數(shù)學(xué)模型來(lái)計(jì)算輸出,該數(shù)學(xué)模型把輸入作為數(shù)值的己命名的(named)矢量。為了使用不同的己命名的矢量來(lái)評(píng)估影響,可以創(chuàng)建使用不同矢量實(shí)例的場(chǎng)景,其中每個(gè)實(shí)例對(duì)應(yīng)于截然不同的矢量。可替換地,示例性應(yīng)用程序可以使用相同的矢量實(shí)例,但使用不同的數(shù)學(xué)模型以計(jì)算感興趣的輸出。為了評(píng)估采用第一數(shù)學(xué)模型與采用第二數(shù)學(xué)模型的影響,可以創(chuàng)建第一場(chǎng)景和第二場(chǎng)景。在第一場(chǎng)景中,調(diào)用表示第一模型的第一方法。在第二場(chǎng)景中,調(diào)用表示第二模型的第二方法。此外,在第一場(chǎng)景中的類可以或不可以與第二場(chǎng)景中的類相同。如果第一和第二方法被定義為在相同的類中,則類在第一和第二場(chǎng)景中保持相同。然而,如果第一方法被定義為在第一類中,并且第二方法被定義為在不同于第一類的第二類中,則第一和第二場(chǎng)景具有不同的類。注意,在第一類中的第一方法和在第二類中的第二方法可以或不可以具有同一名稱。圖26示出了支持場(chǎng)景的本發(fā)明的可替換實(shí)施方式。與在圖1A中示出的一個(gè)實(shí)施方式類似,面向?qū)ο蟮脑创a100包括類102,而類102包括方法104以及用于方法104的生成器依賴性聲明106。當(dāng)然,類102—般包括一個(gè)或多個(gè)字段(未顯示)和另外的方法(未顯示)。另外,面向?qū)ο笤创a100—般包括另外的類。如上面關(guān)于圖1A描述的,在運(yùn)行時(shí)期間,類102的實(shí)例108被實(shí)例化。實(shí)例108包括類102的字段數(shù)據(jù)。另外,生成器110被實(shí)例化,其中生成器110標(biāo)識(shí)類102、類102的實(shí)例108(與類102的方法104相關(guān)聯(lián))以及類102的方法104。生成器依賴性聲明106向運(yùn)行時(shí)標(biāo)識(shí)一組零個(gè)或多個(gè)生成器112(稱為生成器110的子生成器),該一組零個(gè)或多個(gè)生成器112在執(zhí)行生成器110之前必須被執(zhí)行。換句話說(shuō),生成器110依賴一組零個(gè)或多個(gè)生成器112。除了或代替使用一組生成器112的輸出,生成器110可以使用實(shí)例108的數(shù)據(jù)。此外,生成器110提供至少一個(gè)輸出,輸出可以在實(shí)例108的內(nèi)部(從而修改實(shí)例108的數(shù)據(jù))和/或外部;可選地,生成器110的輸出可以被一組零個(gè)或多個(gè)其他生成器114(稱為生成器110的父生成器)使用。在一些實(shí)施方式中,包括生成器IIO、父生成器114以及子生成器112的生成器圖形與具有唯一第一場(chǎng)景關(guān)鍵字的第一場(chǎng)景相關(guān)聯(lián)。為了創(chuàng)建用于不同于第一場(chǎng)景的第二場(chǎng)景的生成器圖形或子圖形,可以強(qiáng)調(diào)(stress)—個(gè)或多個(gè)生成器110、112禾P114。為了強(qiáng)調(diào)生成器,生成器被復(fù)制。在一個(gè)實(shí)施方式中,可以通過(guò)根據(jù)類聲明102、給定方法104以及生成器依賴性聲明106實(shí)例化生成器來(lái)復(fù)制生成器??商鎿Q地,可以通過(guò)克隆或復(fù)制用于引用場(chǎng)景(例如上面描述的第一場(chǎng)景)的相應(yīng)的已有生成器來(lái)復(fù)制生成器。下面論述兩種技術(shù)的一些實(shí)施方式的細(xì)節(jié)。一般而言,強(qiáng)調(diào)所有直接被影響的生成器。另外,依賴于直接被影響的生成器的生成器,即間接被影響的生成器也可以被強(qiáng)調(diào)。在一個(gè)實(shí)施方式中,如果間接被影響的生成器落入在感興趣生成器與直接被影響的生成器之間的路徑上,則強(qiáng)調(diào)間接被影響的生成器。再參考圖26,假設(shè)生成器110是用于第二場(chǎng)景的直接被影響的生成器,則生成器110被強(qiáng)調(diào)以生成用于第二場(chǎng)景的被強(qiáng)調(diào)的生成器2610。生成器110的所有父生成器114是間接被影響的,因?yàn)樗懈干善?14依賴于生成器110。如果在父生成器114的組中的父生成器落入在感興趣生成器與生成器110之間的路徑,則強(qiáng)調(diào)父生成器。生成器1I0的被強(qiáng)調(diào)的父生成器的集合通過(guò)用于第二場(chǎng)景的組2614來(lái)被表示。此外,如果在組2614中的一些生成器之間存在動(dòng)態(tài)依賴性,則在組2614中的生成器可以被遞歸地強(qiáng)調(diào)以用于第二場(chǎng)景。對(duì)于生成器110的子生成器112,由于子生成器112不依賴于生成器110,子生成器112可以不被強(qiáng)調(diào)以用于第二場(chǎng)景。然而,如果在組112中的子生成器在第二場(chǎng)景中直接或間接地被影響,則在組112中的被影響的子生成器可以被強(qiáng)調(diào)以生成用于第二場(chǎng)景的被強(qiáng)調(diào)的子生成器2612。在生成器2610、2612和2614之間的依賴性可以在第二場(chǎng)景中保持不變??商鎿Q地,在生成器2610、2612和2614之間的一些或所有依賴性可以在第二場(chǎng)景中改變。在圖26中,第二場(chǎng)景的生成器圖形用虛線被示出。在本發(fā)明的一個(gè)實(shí)施方式中,在應(yīng)用程序的第一生成器圖形中的所有生成器被強(qiáng)調(diào)以用于新的場(chǎng)景。因此,被強(qiáng)調(diào)的生成器的生成器圖形被創(chuàng)建并添加到表示應(yīng)用程序的生成器圖形的集合。然而,在一些實(shí)施方式中可以允許優(yōu)化,以使得只有生成器的子集被強(qiáng)調(diào)以創(chuàng)建在用于新的場(chǎng)景的第一生成器圖形中的子圖形。下面論述用于場(chǎng)景的生成器圖形或子圖形的創(chuàng)建的一些實(shí)施方式的更多細(xì)節(jié)。圖27A是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有面向生成器圖形編程支持和場(chǎng)景支持的運(yùn)行時(shí)的框圖。附圖標(biāo)記320、325、330、335、340、380、384以及345的細(xì)節(jié)已經(jīng)參考圖3A在上面被描述。為了支持場(chǎng)景,運(yùn)行時(shí)335還接收?qǐng)鼍皩?shí)例化信息328。場(chǎng)景實(shí)例化信息328可以通過(guò)不同的方法(例如通過(guò)客戶端代碼(例如,圖形用戶界面(GUI)、命令行界面(CLI)等))被提供到運(yùn)行時(shí)335??商鎿Q地,場(chǎng)景實(shí)例化信息328可以在生成器依賴性聲明(例如,生成器依賴性聲明陳述或生成器依賴性聲明代碼)中被規(guī)定。可替換地,一些或所有場(chǎng)景實(shí)例化信息328可以在被強(qiáng)調(diào)的生成器產(chǎn)生生成器(stressedproducergenerationproducer)的方法的源代碼中被規(guī)定。下面論述被強(qiáng)調(diào)的生成器產(chǎn)生生成器的更多細(xì)節(jié)。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,場(chǎng)景實(shí)例化信息328被提供到運(yùn)行時(shí)335的新的場(chǎng)景模塊337?;趫?chǎng)景實(shí)例化信息328,新的場(chǎng)景模塊337實(shí)例化新的場(chǎng)景。在一些實(shí)施方式中,運(yùn)行時(shí)335包括場(chǎng)景跟蹤結(jié)構(gòu)338以存儲(chǔ)場(chǎng)景關(guān)鍵字、場(chǎng)景對(duì)象的引用以及影響路徑跟蹤結(jié)構(gòu),所述場(chǎng)景對(duì)象的引用可以規(guī)定一組一個(gè)或多個(gè)直接被影響的生成器和直接被影響的生成器的相應(yīng)的預(yù)定輸出或輸出轉(zhuǎn)換,所述影響路徑跟蹤結(jié)構(gòu)將隨后持有被場(chǎng)景影響的生成器的列表?;诋?dāng)前組的具有感興趣的輸出的一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器325,自動(dòng)生成器圖形生成模塊340可以通過(guò)作用于場(chǎng)景跟蹤結(jié)構(gòu)338來(lái)生成用于一個(gè)或多個(gè)被強(qiáng)調(diào)的感興趣生成器的生成器圖形或子圖形。為了通過(guò)在場(chǎng)景中的一個(gè)或更多直接被影響的生成器的一個(gè)或多個(gè)預(yù)定輸出來(lái)評(píng)估在被強(qiáng)調(diào)的感興趣生成器上的影響,生成器圖形執(zhí)行模塊345可以通過(guò)用于場(chǎng)景的預(yù)定輸出或輸出轉(zhuǎn)換來(lái)巡視生成的生成器圖形或子圖形以執(zhí)行被直接或間接地影響的生成器。在一些實(shí)施方式中,場(chǎng)景信息328包括引用場(chǎng)景關(guān)鍵字、目標(biāo)場(chǎng)景關(guān)鍵字、一個(gè)或多個(gè)直接被影響的生成器的列表以及直接被影響的生成器的相應(yīng)的預(yù)定輸出。一般而言,場(chǎng)景關(guān)鍵字是標(biāo)識(shí)場(chǎng)景的唯一關(guān)鍵字。在一些實(shí)施方式中,引用場(chǎng)景是己有的場(chǎng)景,可以包括應(yīng)用程序的當(dāng)前狀態(tài)和輸出。目標(biāo)場(chǎng)景是屬于直接被影響的生成器及其相應(yīng)輸出的列表的影響的集合。對(duì)于目標(biāo)場(chǎng)景,由直接被影響的生成器的列表所標(biāo)識(shí)的生成器的輸出將被在列表中規(guī)定的輸出覆蓋。運(yùn)行時(shí)335可以使用引用場(chǎng)景來(lái)找到被直接被影響的生成器間接影響的生成器。直接被影響的生成器在被強(qiáng)調(diào)的感興趣生成器上的影響可以在沒(méi)有重寫(xiě)或修改引用場(chǎng)景的情況下使用目標(biāo)場(chǎng)景而被評(píng)估。換句話說(shuō),生成器的已有的輸出和/或?qū)嵗槐A艋虮4嬉杂糜诘谝粓?chǎng)景。在一些實(shí)施方式中,如果感興趣生成器依賴于引用場(chǎng)景的生成器圖形的一部分,并且該部分沒(méi)有被目標(biāo)場(chǎng)景中的直接被影響的生成器直接或間接地影響,則該部分可以被鏈接到目標(biāo)場(chǎng)景的生成器圖形。換句話說(shuō),可以在引用場(chǎng)景的生成器圖形中創(chuàng)建用于目標(biāo)場(chǎng)景的子圖形。圖27B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有還支持增量執(zhí)行和被覆蓋的生成器的輸出以及場(chǎng)景的面向生成器圖形的編程支持的運(yùn)行時(shí)的框圖。組件320、325、350、352、354、360、365、380、382、384、370、396、390、392以及394的細(xì)節(jié)已經(jīng)參考圖3B在上面被論述。為了支持場(chǎng)景,場(chǎng)景實(shí)例化信息328被輸入到自動(dòng)生成器圖形生成模塊365。場(chǎng)景實(shí)例化信息328的一些實(shí)施方式的細(xì)節(jié)己經(jīng)參考圖27A在上面被描述。基于場(chǎng)景實(shí)例化信息328,自動(dòng)生成器圖形生成模塊365可以構(gòu)建用于每個(gè)場(chǎng)景的生成器圖形或子圖形。下面描述了用于場(chǎng)景的生成器圖形或子圖形的構(gòu)建的一些實(shí)施方式的更多細(xì)節(jié)。為了評(píng)估在被強(qiáng)調(diào)的感興趣生成器(即,用于特定場(chǎng)景的感興趣生成器)上的影響,生成器圖形執(zhí)行模塊370可以巡視用于場(chǎng)景的被創(chuàng)建的生成器圖形或子圖形以相應(yīng)地執(zhí)行生成器。下面描述了用于場(chǎng)景的生成器圖形或子圖形的執(zhí)行的一些實(shí)施方式的更多細(xì)節(jié)。在一些實(shí)施方式中,場(chǎng)景實(shí)例化信息328被提供到覆蓋生成器輸出模塊390,所述覆蓋生成器輸出模塊390覆蓋在相應(yīng)的場(chǎng)景中的一個(gè)或多個(gè)直接被影響的生成器的輸出。覆蓋生成器輸出模塊390的操作的細(xì)節(jié)已經(jīng)參考圖3B在上面被描述。圖28A-圖28D示出了用于不同場(chǎng)景的應(yīng)用程序的一些示例性生成器圖形。參考圖28A,用于場(chǎng)景1的生成器圖形被顯示在上部,用于場(chǎng)景2的生成器圖形被顯示在下部。場(chǎng)景1和2分別具有場(chǎng)景關(guān)鍵字"S1"和"S2"。在一些實(shí)施方式中,場(chǎng)景l(fā)還指默認(rèn)場(chǎng)景或引用場(chǎng)景。樣本應(yīng)用程序至少具有7個(gè)生成器,稱為生成器l-生成器7,其中生成器1直接依賴于生成器3和生成器4,生成器2直接依賴于生成器4,生成器3直接依賴于生成器5和生成器6,以及生成器4直接依賴于生成器7。在場(chǎng)景1中,生成器7的輸出具有值X,以及生成器1的輸出具有值Z,。在一些實(shí)施方式中,通過(guò)成對(duì)的生成器關(guān)鍵字和場(chǎng)景關(guān)鍵字來(lái)標(biāo)識(shí)被強(qiáng)調(diào)的生成器。例如,在場(chǎng)景2中的被強(qiáng)調(diào)的生成器1通過(guò)對(duì){生成器1,S2}來(lái)被標(biāo)識(shí)。被強(qiáng)調(diào)的生成器可以通過(guò)多種方式被用戶規(guī)定,例如通過(guò)客戶端代碼的方式(例如,GUI、CLI等)??商鎿Q地,應(yīng)用程序可以包括被強(qiáng)調(diào)的生成器產(chǎn)生生成器以生成一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器。被強(qiáng)調(diào)的生成器產(chǎn)生生成器(也稱為生成器8)的示例性實(shí)施方式被顯示在圖28B中。參考圖28B,生成器8的示例性偽代碼被顯示在圖的右邊。開(kāi)始,被強(qiáng)調(diào)的生成器的類被定義為具有表示感興趣生成器關(guān)鍵字的字段和表示場(chǎng)景的字段。在當(dāng)前示例中,生成器8是無(wú)關(guān)的,即生成器8的生成器依賴性聲明陳述為空。然后,生成器8的方法可以提供場(chǎng)景2的場(chǎng)景信息,給被強(qiáng)調(diào)的生成器的字段賦值,以及輸出被強(qiáng)調(diào)的生成器的集合。再參考圖28A,場(chǎng)景2通過(guò)以下場(chǎng)景信息來(lái)被定義引用場(chǎng)景關(guān)鍵字=空,目標(biāo)場(chǎng)景關(guān)鍵字-S2,以及直接被影響的生成器及其相應(yīng)的輸出的列表。在當(dāng)前示例中,直接被影響的生成器的列表僅具有一個(gè)生成器,稱為生成器7,該生成器7具有指定的輸出X2。然而,應(yīng)當(dāng)理解,在場(chǎng)景中可以有多個(gè)直接被影響的生成器。在一些實(shí)施方式中,通過(guò)創(chuàng)建在圖28A中示出的生成器1-生成器7中的每個(gè)生成器來(lái)復(fù)制整個(gè)生成器圖形以用于場(chǎng)景2。在用于場(chǎng)景2的生成器圖形中,直接被影響的生成器(即生成器7)的輸出被場(chǎng)景2的定義中規(guī)定的輸出(即X2)覆蓋。在當(dāng)前示例中的感興趣生成器是生成器l。通過(guò)執(zhí)行用于場(chǎng)景2的生成器圖形,被強(qiáng)調(diào)的感興趣生成器(即場(chǎng)景2中的生成器1)的輸出被確定為Z2。在己有的生成器圖形中生成用于場(chǎng)景的子圖形的可替換的方法是可用的,并且該方法的一些實(shí)施方式在下面被詳細(xì)描述。由于第二生成器圖形被創(chuàng)建用于場(chǎng)景2,所以為場(chǎng)景2作出的修改(例如,覆蓋生成器7的輸出)不影響用于場(chǎng)景1的生成器圖形。因此,用于場(chǎng)景1的生成器的輸出沒(méi)有通過(guò)執(zhí)行應(yīng)用程序而被為場(chǎng)景2作出的修改所覆蓋。這樣,創(chuàng)建場(chǎng)景的技術(shù)對(duì)于評(píng)估在沒(méi)有丟失應(yīng)用程序中已有的生成器輸出的情況下的修改的潛在或可能的影響和/或效果來(lái)說(shuō)是有用的。保留或保存已有的生成器輸出可以用于各種原因,例如,用來(lái)使用有限差分來(lái)自動(dòng)確定生成器的導(dǎo)數(shù)。再參考圖28A的實(shí)施方式并假設(shè)Z,、Z2、X,和X2是數(shù)值,感興趣的生成器(即生成器1)的從場(chǎng)景1到場(chǎng)景2的導(dǎo)數(shù)可以使用從場(chǎng)景1和場(chǎng)景2的輸出來(lái)被容易地計(jì)算如下生成器1的導(dǎo)數(shù)-(ZrZD^XrX,)此外,更高階的導(dǎo)數(shù),即N階導(dǎo)數(shù)(其中N為大于1的整數(shù)),也可以使用來(lái)自不同場(chǎng)景的輸出來(lái)被容易地計(jì)算。在一些實(shí)施方式中,當(dāng)多于一個(gè)輸入從一個(gè)場(chǎng)景改變到另一個(gè)場(chǎng)景時(shí),可以計(jì)算感興趣生成器的輸出的交叉導(dǎo)數(shù)(crossderivative)。例如,假設(shè)輸入X,和Yt從一個(gè)場(chǎng)景到另一個(gè)場(chǎng)景分別改變到&和¥2。因此,感興趣生成器的輸出從Z!改變到Z2。然后,感興趣生成器的輸出的交叉導(dǎo)數(shù)可以被計(jì)算如下-感興趣生成器的交叉導(dǎo)數(shù)=(Z2-Z02/((X2-XQ*(Y2-Y0)由于運(yùn)行時(shí)可以保持用于不同場(chǎng)景的生成器輸出的跟蹤,并可以自動(dòng)確定生成器的導(dǎo)數(shù),所以程序員不需要編寫(xiě)手動(dòng)調(diào)用排序代碼來(lái)多次運(yùn)行應(yīng)用程序,以保持相應(yīng)輸出的跟蹤,并對(duì)用于使用相應(yīng)輸出來(lái)計(jì)算導(dǎo)數(shù)的方法進(jìn)行編碼。如上面所提到的,生成用于場(chǎng)景2的子圖形的可替換方式是可用的。一些可替換方式的示例在圖28C和28D中被示出。參考圖28C,鏈接用于場(chǎng)景l(fā)(即,引用場(chǎng)景)的生成器圖形的一部分的技術(shù)被用于生成用于場(chǎng)景2(即,目標(biāo)場(chǎng)景)的生成器圖形。開(kāi)始,運(yùn)行時(shí)可以通過(guò)客戶端代碼從用戶接收新的被強(qiáng)調(diào)的生成器命令以指示感興趣生成器是生成器l??商鎿Q地,被強(qiáng)調(diào)的生成器產(chǎn)生生成器(例如,生成器8)可以觸發(fā)新的被強(qiáng)調(diào)的生成器命令的調(diào)用。響應(yīng)于所述新的被強(qiáng)調(diào)的生成器命令,運(yùn)行時(shí)構(gòu)建用于場(chǎng)景1的生成器1的生成器圖形,所述場(chǎng)景1也稱為默認(rèn)場(chǎng)景或引用場(chǎng)景。然后,另一新的被強(qiáng)調(diào)的生成器命令通過(guò)客戶端代碼從用戶被接收,或通過(guò)強(qiáng)調(diào)生成器產(chǎn)生生成器(生成器8)來(lái)被觸發(fā)以指示感興趣生成器是生成器2。響應(yīng)于另一新的被強(qiáng)調(diào)的生成器命令,運(yùn)行時(shí)將生成器2添加到用于場(chǎng)景1的生成器圖形。然后,運(yùn)行時(shí)接收定義場(chǎng)景2的場(chǎng)景信息。場(chǎng)景信息可以再次來(lái)自客戶端代碼。場(chǎng)景信息規(guī)定引用場(chǎng)景關(guān)鍵字為"S1",目標(biāo)場(chǎng)景關(guān)鍵字為"S2",并規(guī)定了用于目標(biāo)場(chǎng)景的直接被影響的生成器及其相應(yīng)輸出的列表。直接被影響的生成器的列表在當(dāng)前示例中僅包括稱為生成器7的生成器和稱為X2的生成器7的輸出。為了評(píng)估場(chǎng)景2(即,將生成器7的輸出改變?yōu)閄2)在應(yīng)用程序中對(duì)諸如生成器1的生成器的影響或效果,生成器1被標(biāo)識(shí)為感興趣生成器。進(jìn)一步地,生成器1用感興趣的場(chǎng)景來(lái)標(biāo)識(shí)。因此,被強(qiáng)調(diào)的生成器被標(biāo)識(shí),稱為{生成器1,S2},所述被強(qiáng)調(diào)的生成器為成對(duì)的感興趣生成器關(guān)鍵字和場(chǎng)景關(guān)鍵字。在一些實(shí)施方式中,感興趣生成器通過(guò)諸如GUI、CLI等的客戶端代碼來(lái)被用戶標(biāo)識(shí)。可替換地,感興趣生成器可以在被強(qiáng)調(diào)的生成器產(chǎn)生生成器(例如,生成器8)的輸出中被標(biāo)識(shí)。基于生成器與場(chǎng)景信息之間的依賴性,運(yùn)行時(shí)可以標(biāo)識(shí)用于場(chǎng)景2的直接和間接被影響的生成器。對(duì)直接和間接被影響的生成器的標(biāo)識(shí)還可以被稱為跟蹤。直接和間接被影響的生成器可以使用被影響的路徑跟蹤結(jié)構(gòu)(IPTS)來(lái)被跟蹤。在當(dāng)前示例中,被影響的路徑跟蹤結(jié)構(gòu)包括生成器7、生成器4、生成器1和生成器2。注意生成器1、2和4是間接被影響的生成器,而生成器7是用于場(chǎng)景2的直接被影響的生成器。在一些實(shí)施方式中,通過(guò)使用場(chǎng)景2的影響列表,運(yùn)行時(shí)可以標(biāo)識(shí)直接被影響的生成器。然后,運(yùn)行時(shí)可以通過(guò)從在圖28C中由[B]、[C]、[D]和[E]指示的直接被影響的生成器中橫貫(traverse)用于場(chǎng)景1的生成器圖形,來(lái)使用用于場(chǎng)景1的生成器圖形以跟蹤間接被影響的生成器。如果用于場(chǎng)景1的生成器圖形還沒(méi)有被構(gòu)建,則運(yùn)行時(shí)可以在跟蹤間接被影響的生成器之前建立用于場(chǎng)景1的生成器圖形??商鎿Q地,如果沒(méi)有提供引用場(chǎng)景或用于引用場(chǎng)景的生成器圖形還沒(méi)有被構(gòu)建,則運(yùn)行時(shí)可以使用前述生成器的相應(yīng)方法和生成器依賴性聲明來(lái)創(chuàng)建感興趣生成器、直接被影響的生成器以及落到在感興趣生成器與用于場(chǎng)景2的直接被影響的生成器之間的路徑上的任何中間生成器。在一些實(shí)施方式中,運(yùn)行時(shí)遍歷被影響的路徑跟蹤結(jié)構(gòu)以調(diào)用在被影響的路徑跟蹤結(jié)構(gòu)中的用于每個(gè)被影響的生成器的新的被強(qiáng)調(diào)的生成器命令。所生成的被強(qiáng)調(diào)的生成器被相互連接以形成用于場(chǎng)景1的己有的生成器圖形。調(diào)用的順序沒(méi)有關(guān)系,因?yàn)樾碌谋粡?qiáng)調(diào)的生成器(即,用于場(chǎng)景2的生成器l、2、4和7)在如圖28C中的[G]所指示的那樣被創(chuàng)建時(shí)被相互連接。在一些實(shí)施方式中,在感興趣生成器不存在于引用場(chǎng)景中的情況下,該感興趣生成器將不在被影響的路徑跟蹤結(jié)構(gòu)中被跟蹤。然而,運(yùn)行時(shí)調(diào)用用于所述感興趣生成器的新的被強(qiáng)調(diào)的生成器命令以創(chuàng)建用于場(chǎng)景2的生成器圖形。為了優(yōu)化用于場(chǎng)景2的生成器圖形,沒(méi)有被生成器7直接或間接影響但被感興趣生成器(即生成器l)所依賴的生成器可以不在場(chǎng)景2中被復(fù)制或強(qiáng)調(diào)。而是,這些生成器被從場(chǎng)景1鏈接到場(chǎng)景2的生成器圖形。在當(dāng)前示例中,這些生成器包括生成器3、5和6,其中生成器1直接依賴于生成器3,生成器3直接依賴于生成器5和6。如圖28C所7^,鏈接在[F]被創(chuàng)建以將場(chǎng)景1的生成器3鏈接到場(chǎng)景2的生成器1。這樣,具有生成器3和生成器3的子生成器(即生成器5和6)的場(chǎng)景1的生成器圖形的子集被鏈接到場(chǎng)景2的生成器圖形。換句話說(shuō),在用于場(chǎng)景1的生成器圖形中的子圖形已經(jīng)被創(chuàng)建以用于場(chǎng)景2。注意,用于場(chǎng)景2的在生成器7上的影響不影響生成器3,因?yàn)樯善?不直接或間接依賴于生成器7。為了進(jìn)一步優(yōu)化創(chuàng)建場(chǎng)景2的生成器圖形的過(guò)程,運(yùn)行時(shí)可以不復(fù)制或不強(qiáng)調(diào)不被感興趣生成器所直接或間接依賴的生成器,而不管這些生成器是否在場(chǎng)景2中被影響。這種優(yōu)化的一個(gè)示例在圖28D中被示出。與圖28C相似,用于場(chǎng)景1的生成器圖形被創(chuàng)建,并且生成器1被標(biāo)識(shí)為場(chǎng)景2中的感興趣生成器,其中場(chǎng)景2如上所述被定義。在一些實(shí)施方式中,新的被強(qiáng)調(diào)的生成器命令在感興趣生成器上被調(diào)用,所述感興趣生成器即生成器1,如圖28D中的[A]所示。新的被強(qiáng)調(diào)的生成器命令可以通過(guò)客戶端代碼被用戶調(diào)用或被諸如圖28B中的生成器8的被強(qiáng)調(diào)的生成器產(chǎn)生生成器所觸發(fā)。依賴于初始的依賴性聲明順序,運(yùn)行時(shí)可以以所述順序調(diào)用生成器1所依賴的生成器上的新的被強(qiáng)調(diào)的生成器命令。例如,如果在初始依賴性聲明中,生成器3在生成器4之前,則新的被強(qiáng)調(diào)的生成器命令在生成器3上首先被調(diào)用,然后在生成器4上被調(diào)用,反之亦然。當(dāng)新的被強(qiáng)調(diào)的生成器命令在生成器3上被調(diào)用時(shí),鏈接在[F]被創(chuàng)建以將在場(chǎng)景2中的生成器1鏈接到在場(chǎng)景1中的生成器3,因?yàn)樯善?在場(chǎng)景2中不被影響。當(dāng)新的被強(qiáng)調(diào)的生成器命令在生成器4上被調(diào)用時(shí),被強(qiáng)調(diào)的生成器4在場(chǎng)景2中被克隆,如圖28D中的[G]所示。為了克隆在場(chǎng)景2中的被強(qiáng)調(diào)的生成器4,運(yùn)行吋可以使用在場(chǎng)景1的生成器圖形中來(lái)自生成器4的信息,以在用于場(chǎng)景2的子圖形中制作生成器4的副本??商鎿Q地,運(yùn)行時(shí)可以基于生成器4的生成器依賴性聲明和面向?qū)ο蟮脑创a來(lái)通過(guò)實(shí)例化生成器4而創(chuàng)建新的生成器4。在被強(qiáng)調(diào)的生成器4被添加到生成器圖形之后,在生成器7上調(diào)用新的被強(qiáng)調(diào)的生成器命令以強(qiáng)調(diào)如圖28D中的[H]所示的用于場(chǎng)景2的生成器7。像生成器4一樣,生成器7可以通過(guò)實(shí)例化或克隆而被強(qiáng)調(diào)。注意,用于場(chǎng)景2的子圖形現(xiàn)在如圖28D所示完全被構(gòu)建,而沒(méi)有強(qiáng)調(diào)場(chǎng)景2中的生成器2,因?yàn)榉Q為生成器1的在場(chǎng)景2中的感興趣生成器沒(méi)有直接或間接依賴于生成器2,雖然生成器2被生成器7間接影響。因此,創(chuàng)建用于場(chǎng)景2的子圖形的過(guò)程被進(jìn)一步優(yōu)化。圖29是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的運(yùn)行時(shí)客戶端的邏輯執(zhí)行流以及該運(yùn)行時(shí)客戶端與具有面向生成器圖形編程支持的運(yùn)行時(shí)的關(guān)系的流程圖。在圖29中,虛線600將運(yùn)行時(shí)客戶端610的邏輯執(zhí)行流與具有面向生成器圖形編程支持的運(yùn)行時(shí)640分離。塊615、620、625、630、645、650、655和660的細(xì)節(jié)已經(jīng)參考圖6在上面被描述。為了支持場(chǎng)景,運(yùn)行時(shí)客戶端610首先檢查在塊616中是否有新的場(chǎng)景。如果有新的場(chǎng)景,則運(yùn)行時(shí)客戶端610在塊617中確定新的場(chǎng)景信息。此外,場(chǎng)景實(shí)例化命令可以被調(diào)用或被記錄在命令日志665中以實(shí)例化新的場(chǎng)景。響應(yīng)于新的場(chǎng)景命令,運(yùn)行時(shí)640在塊648實(shí)例化新的場(chǎng)景。然后,運(yùn)行時(shí)客戶端610轉(zhuǎn)向塊615來(lái)繼續(xù)執(zhí)行流。否則,運(yùn)行時(shí)客戶端610跳過(guò)塊617并轉(zhuǎn)向塊615以繼續(xù)執(zhí)行流。在塊615,運(yùn)行時(shí)客戶端610確定一組一個(gè)或多個(gè)具有感興趣的輸出的被強(qiáng)調(diào)的生成器。然后,運(yùn)行時(shí)客戶端610轉(zhuǎn)向塊620以繼續(xù)參考圖6在上面描述的執(zhí)行流。為了評(píng)估在用于場(chǎng)景的一個(gè)或多個(gè)感興趣生成器上的影響,生成器圖形執(zhí)行模塊在塊630被調(diào)用。然后,在塊660中,生成器圖形執(zhí)行模塊可以巡視場(chǎng)景的生成器圖形或子圖形以基于跟蹤來(lái)執(zhí)行必須被執(zhí)行的任何生成器。在塊630中,生成器圖形執(zhí)行模塊被調(diào)用,并且控制有選擇地返回到塊615、塊625和/或塊616。圖30是根據(jù)支持場(chǎng)景的本發(fā)明的一個(gè)實(shí)施方式的可替換實(shí)施的框圖。在圖30中,虛線1000將運(yùn)行時(shí)客戶端1002與具有面向生成器圖形編程支持的運(yùn)行時(shí)1004分離。運(yùn)行時(shí)客戶端1002和運(yùn)行時(shí)1004的各個(gè)組件的細(xì)節(jié)已經(jīng)參考圖IO在上面被描述。因此,以下描述集中在場(chǎng)景相關(guān)的組件上。在一些實(shí)施方式中,運(yùn)行時(shí)1004進(jìn)一步包括新的場(chǎng)景模塊1096和場(chǎng)景跟蹤結(jié)構(gòu)1050以支持場(chǎng)景。如上面參考圖10所論述的,新的類模塊1095可以基于類定義1010來(lái)實(shí)例化類。被實(shí)例化的類的信息可以被存儲(chǔ)在類跟蹤結(jié)構(gòu)1092中。類跟蹤結(jié)構(gòu)1092的一個(gè)示例性實(shí)施方式在圖31A中被示出。參考圖31A,類關(guān)鍵字1110和類引用1115(例如類指針)被存儲(chǔ)在用于每個(gè)被實(shí)例化的類的類跟蹤結(jié)構(gòu)中。再參考圖30,在運(yùn)行時(shí)客戶端1002—邊的類定義1010包括根據(jù)本發(fā)明的一個(gè)實(shí)施方式的被強(qiáng)調(diào)的生成器產(chǎn)生生成器代碼1018。如上面參考圖28B所論述的,被強(qiáng)調(diào)的生成器產(chǎn)生生成器是輸出被強(qiáng)調(diào)的生成器的集合的生成器,每個(gè)被強(qiáng)調(diào)的生成器包括生成器關(guān)鍵字和場(chǎng)景關(guān)鍵字。被強(qiáng)調(diào)的生成器產(chǎn)生生成器代碼1018的一些示例性偽代碼在圖28B中被示出。為了支持場(chǎng)景,運(yùn)行時(shí)客戶端1002進(jìn)一步提供具有場(chǎng)景關(guān)鍵字的場(chǎng)景實(shí)例化命令1019。場(chǎng)景關(guān)鍵字可以被用于新的實(shí)例的實(shí)例化中以將實(shí)例與相應(yīng)的場(chǎng)景相關(guān)聯(lián)。在被實(shí)例化的實(shí)例上的信息可以被存儲(chǔ)在實(shí)例跟蹤結(jié)構(gòu)1065中。實(shí)例跟蹤結(jié)構(gòu)1065的示例性實(shí)施方式在圖31B中被示出。對(duì)于每個(gè)被實(shí)例化的實(shí)例來(lái)說(shuō),場(chǎng)景關(guān)鍵字1123、實(shí)例引用1120以及被強(qiáng)調(diào)的實(shí)例引用1125被存儲(chǔ)在圖31B中的示例性實(shí)例跟蹤結(jié)構(gòu)中。再參考圖30,運(yùn)行時(shí)客戶端1002可以調(diào)用具有唯一場(chǎng)景關(guān)鍵字的場(chǎng)景實(shí)例化命令1019以創(chuàng)建新的場(chǎng)景。響應(yīng)于場(chǎng)景實(shí)例化命令1019,新的場(chǎng)景模塊1096可以將新的場(chǎng)景信息(例如在圖27A中的場(chǎng)景信息328)保存在場(chǎng)景跟蹤結(jié)構(gòu)1050中。場(chǎng)景跟蹤結(jié)構(gòu)1050的示例性實(shí)施方式在圖31D中示出。在一些實(shí)施方式中,如圖31D所示,場(chǎng)景跟蹤結(jié)構(gòu)1050包括具有用于場(chǎng)景關(guān)鍵字的列、用于場(chǎng)景引用的列以及用于影響跟蹤結(jié)構(gòu)的列的表格。場(chǎng)景關(guān)鍵字3110可以是指派給場(chǎng)景的唯一關(guān)鍵字以標(biāo)識(shí)場(chǎng)景。場(chǎng)景引用3112可以指場(chǎng)景對(duì)象。影響路徑跟蹤結(jié)構(gòu)3113保持對(duì)在相應(yīng)場(chǎng)景中被影響的生成器的跟蹤。圖31E示出了場(chǎng)景對(duì)象跟蹤結(jié)構(gòu)的一個(gè)示例性實(shí)施方式。場(chǎng)景對(duì)象跟蹤結(jié)構(gòu)可以包括具有用于每個(gè)場(chǎng)景的行的表格。對(duì)于每個(gè)場(chǎng)景,引用場(chǎng)景關(guān)鍵字3120、目標(biāo)場(chǎng)景關(guān)鍵字3122以及對(duì)影響列表的引用3124被存儲(chǔ)在場(chǎng)景對(duì)象跟蹤結(jié)構(gòu)中。目標(biāo)場(chǎng)景關(guān)鍵字3122標(biāo)識(shí)要被建立的場(chǎng)景。因此,目標(biāo)場(chǎng)景關(guān)鍵字3122與在圖31D中的場(chǎng)景跟蹤結(jié)構(gòu)中的相應(yīng)的場(chǎng)景關(guān)鍵字3110相同。引用場(chǎng)景關(guān)鍵字3120標(biāo)識(shí)場(chǎng)景,基于該場(chǎng)景,目標(biāo)場(chǎng)景可以被建立。如果沒(méi)有引用場(chǎng)景,則引用場(chǎng)景關(guān)鍵字3120為空。對(duì)場(chǎng)景的影響列表的引用3124指場(chǎng)景的影響列表,例如,在圖31F中示出的示例性影響列表。在圖31F中,場(chǎng)景的示例性影響列表包括用于下列中的每一個(gè)的列直接被影響的生成器關(guān)鍵字3130、相對(duì)或絕對(duì)指示符3134、輸出實(shí)例3132、轉(zhuǎn)換參數(shù)3136以及轉(zhuǎn)換方法名稱和方法類3138。在相應(yīng)場(chǎng)景中的每個(gè)直接被影響的生成器占據(jù)影響列表的一行。直接被影響的生成器關(guān)鍵字3130標(biāo)識(shí)在場(chǎng)景中的直接被影響的生成器。在一些實(shí)施方式中,輸出值可以被指派一個(gè)絕對(duì)值或相對(duì)值。相對(duì)或絕對(duì)指示符3134指示輸出值被指派一個(gè)絕對(duì)值還是一個(gè)相對(duì)值。如果指示符3134指示輸出值是絕對(duì)的,則直接被影響的生成器的輸出值被指定為輸出實(shí)例3132,而不管對(duì)于直接被影響的生成器的輸入。否則,轉(zhuǎn)換參數(shù)3136被應(yīng)用到直接被影響的生成器的當(dāng)前輸出(即,用于引用場(chǎng)景的直接被影響的生成器的輸出)以使用具有轉(zhuǎn)換方法名稱和方法類3138的轉(zhuǎn)換方法來(lái)轉(zhuǎn)換直接被影響的生成器的當(dāng)前輸出。然后,用于目標(biāo)場(chǎng)景的直接被影響的生成器的輸出被轉(zhuǎn)換后的當(dāng)前輸出覆蓋。注意,直接被影響的生成器的輸出可以是值(例如數(shù)值)或?qū)嵗@?,直接被影響的生成器的?dāng)前輸出是數(shù)值,轉(zhuǎn)換參數(shù)3136是因數(shù)值,以及轉(zhuǎn)換方法是乘法,則用于目標(biāo)場(chǎng)景的直接被影響的生成器的輸出是等于因數(shù)值與直接被影響的生成器的當(dāng)前輸出值的乘積的值。在另一個(gè)示例中,轉(zhuǎn)換參數(shù)3136是擴(kuò)展值,以及轉(zhuǎn)換方法是求和,則用于目標(biāo)場(chǎng)景的直接被影響的生成器的輸出可以等于擴(kuò)展值與直接被影響的生成器的當(dāng)前輸出值的和。應(yīng)當(dāng)理解的是,直接被影響的生成器的輸出值可以使用不同實(shí)施方式中的其他公式作為當(dāng)前輸出的函數(shù)來(lái)被生成。再參考圖30,自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊3040訪問(wèn)場(chǎng)景跟蹤模塊1050。響應(yīng)于具有生成器關(guān)鍵字和場(chǎng)景關(guān)鍵字的被強(qiáng)調(diào)的生成器實(shí)例化命令1025,自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊3040可以基于來(lái)自場(chǎng)景跟蹤結(jié)構(gòu)1050、類跟蹤結(jié)構(gòu)1092、方法跟蹤結(jié)構(gòu)1058、實(shí)例跟蹤結(jié)構(gòu)1065以及實(shí)例1052的相應(yīng)場(chǎng)景的場(chǎng)景信息來(lái)實(shí)例化被強(qiáng)調(diào)的生成器。可替換地,在類定義1010中的被強(qiáng)調(diào)的生成器產(chǎn)生生成器代碼1018被運(yùn)行時(shí)1004處理以生成被強(qiáng)調(diào)的生成器產(chǎn)生生成器的類3054以及生成被強(qiáng)調(diào)的生成器的方法3056。所生成的類和方法被輸入到自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊3040中,以相應(yīng)地實(shí)例化被強(qiáng)調(diào)的生成器。自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊3040與被實(shí)例化的被強(qiáng)調(diào)的生成器相互連接以生成用于相應(yīng)場(chǎng)景的生成器圖形或子圖形。支持場(chǎng)景的新的被強(qiáng)調(diào)的生成器實(shí)例化流的一些實(shí)施方式的細(xì)節(jié)在下面參考圖34A-圖34G來(lái)論述。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,生成器圖形被存儲(chǔ)在生成器圖形結(jié)構(gòu)1060中。一個(gè)示例性的生成器圖形結(jié)構(gòu)在圖31C中示出。生成器圖形結(jié)構(gòu)實(shí)質(zhì)上與圖11C中示出的生成器圖形結(jié)構(gòu)相同。由于每個(gè)場(chǎng)景在相應(yīng)的生成器圖形或子圖形中被單獨(dú)跟蹤,被強(qiáng)調(diào)的生成器圖形執(zhí)行模塊3070可以巡視用于場(chǎng)景的相應(yīng)的生成器圖形或子圖形以執(zhí)行用于場(chǎng)景的被強(qiáng)調(diào)的生成器中的至少一些來(lái)評(píng)估對(duì)用于場(chǎng)景的一個(gè)或多個(gè)被強(qiáng)調(diào)的感興趣生成器的影響,而不重寫(xiě)或改變用于其他場(chǎng)景的生成器的輸出。在下面參考圖35A和35B論述了支持場(chǎng)景的生成器圖形的執(zhí)行流的一些實(shí)施方式的細(xì)節(jié)。注意,在上面描述的運(yùn)行時(shí)客戶端1002和運(yùn)行時(shí)1004中支持場(chǎng)景的模塊和結(jié)構(gòu)可以被添加到支持偶然和訂閱類型的動(dòng)態(tài)生成器依賴性的一些實(shí)施方式(例如在上面的圖12中示出的)中。圖32是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的新的場(chǎng)景實(shí)例化流的流程圖。在塊3210中,運(yùn)行時(shí)接收新的場(chǎng)景實(shí)例化命令。然后,運(yùn)行時(shí)檢查被新的場(chǎng)景實(shí)例化命令所標(biāo)識(shí)的場(chǎng)景是否己經(jīng)存在于塊3220中。如果該場(chǎng)景己經(jīng)存在,則新的場(chǎng)景實(shí)例化流在塊3290完成。否則,在塊3230,運(yùn)行時(shí)添加諸如目標(biāo)場(chǎng)景關(guān)鍵字、引用場(chǎng)景關(guān)鍵字以及對(duì)場(chǎng)景的影響列表的引用的場(chǎng)景信息到場(chǎng)景跟蹤結(jié)構(gòu)中。然后,運(yùn)行時(shí)轉(zhuǎn)入塊3290,新的場(chǎng)景實(shí)例化流被完成。圖33是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的支持場(chǎng)景的新的實(shí)例實(shí)例化流的流程圖。注意,圖33實(shí)質(zhì)上與圖15相似,流程的細(xì)節(jié)已經(jīng)在上面參考圖15被描述。為了支持場(chǎng)景,在圖33中的塊3360中,運(yùn)行時(shí)實(shí)例化類的實(shí)例并存儲(chǔ)具有實(shí)例關(guān)鍵字、被強(qiáng)調(diào)的實(shí)例引用以及場(chǎng)景關(guān)鍵字的實(shí)例。如上所述,每個(gè)場(chǎng)景具有唯一的場(chǎng)景關(guān)鍵字。因此,如果實(shí)例與多個(gè)場(chǎng)景相關(guān)聯(lián),則可以有多個(gè)場(chǎng)景關(guān)鍵字。在一個(gè)實(shí)施方式中,實(shí)例關(guān)鍵字和場(chǎng)景關(guān)鍵字被存儲(chǔ)在如圖31B中示出的實(shí)例跟蹤結(jié)構(gòu)中。參考圖31B,實(shí)例跟蹤結(jié)構(gòu)包括用于場(chǎng)景關(guān)鍵字1123、實(shí)例關(guān)鍵字1120以及被強(qiáng)調(diào)的實(shí)例引用1125中的每一個(gè)的一列。圖34A-圖34G示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在目標(biāo)場(chǎng)景中的新的被強(qiáng)調(diào)的生成器的實(shí)例化的流程圖。圖34A-圖34C示出了新的被強(qiáng)調(diào)的生成器的實(shí)例化的全部流程,而圖34D-圖34G示出了在全部流程中的特定操作的擴(kuò)展流程。參考圖34A,在塊1600,運(yùn)行時(shí)接收新的被強(qiáng)調(diào)的生成器命令。新的被強(qiáng)調(diào)的生成器命令規(guī)定了生成器關(guān)鍵字和目標(biāo)場(chǎng)景關(guān)鍵字。具有生成器關(guān)鍵字和目標(biāo)場(chǎng)景關(guān)鍵字的生成器是將要由新的被強(qiáng)調(diào)的生成器命令生成的被強(qiáng)調(diào)的生成器。在本發(fā)明的一個(gè)實(shí)施方式中,新的被強(qiáng)調(diào)的生成器命令可以響應(yīng)于各種情況而執(zhí)行。下面的表3標(biāo)識(shí)根據(jù)本發(fā)明的一個(gè)實(shí)施方式的各種情況和傳遞的參數(shù)。<table>tableseeoriginaldocumentpage130</column></row><table>在塊1605,響應(yīng)于新的被強(qiáng)調(diào)的生成器命令,運(yùn)行時(shí)檢查被強(qiáng)調(diào)的生成器(即具有生成器關(guān)鍵字和目標(biāo)場(chǎng)景關(guān)鍵字的生成器)是否己經(jīng)存在。在塊1670,如果被強(qiáng)調(diào)的生成器已經(jīng)存在,且如果生成器由于依賴性而被調(diào)用,則運(yùn)行時(shí)將生成器鏈接到生成器圖形。否則,在塊1601,如果被強(qiáng)調(diào)的生成器不存在,且如果生成器是感興趣生成器,則運(yùn)行時(shí)標(biāo)識(shí)直接和間接被影響的生成器。塊1601的細(xì)節(jié)在下面參考圖34D被論述。然后運(yùn)行時(shí)轉(zhuǎn)向塊1602來(lái)處理場(chǎng)景,在所述場(chǎng)景期間,運(yùn)行時(shí)設(shè)定生成器創(chuàng)建的值。在一些實(shí)施方式中,生成器創(chuàng)建具有3個(gè)可能的值,稱為不創(chuàng)建、創(chuàng)建新的以及克隆。塊1602的細(xì)節(jié)在下面參考圖34E而被論述。然后,在塊1603,運(yùn)行時(shí)檢查生成器創(chuàng)建的值。如果生成器創(chuàng)建是創(chuàng)建新的,則運(yùn)行時(shí)轉(zhuǎn)向圖34B中的入口點(diǎn)A。如果生成器創(chuàng)建是克隆,則運(yùn)行時(shí)轉(zhuǎn)向圖34B中的入口點(diǎn)B。如果生成器創(chuàng)建是不創(chuàng)建,則運(yùn)行時(shí)轉(zhuǎn)向塊1670。在塊1670之后,運(yùn)行時(shí)在塊1675檢查生成器是否被覆蓋、具有粘附訂閱、或是向上聲明的。如果是,運(yùn)行時(shí)在塊1680將生成器標(biāo)記為未執(zhí)行,并在塊1665將生成器記錄在執(zhí)行開(kāi)始日志中。然后,運(yùn)行時(shí)在塊1660返回生成器的執(zhí)行狀態(tài)。否則,如果生成器沒(méi)有被覆蓋,則運(yùn)行時(shí)轉(zhuǎn)向塊1660以返回生成器的執(zhí)行狀態(tài)。參考圖34B,如果生成器創(chuàng)建時(shí)創(chuàng)建新的,則運(yùn)行時(shí)轉(zhuǎn)到入口點(diǎn)A。從入口點(diǎn)A,運(yùn)行時(shí)轉(zhuǎn)向塊1610以調(diào)用新的實(shí)例模塊。然后,運(yùn)行時(shí)在塊1615訪問(wèn)生成器的實(shí)例的類定義。之后,在塊1620,運(yùn)行時(shí)訪問(wèn)在類定義中的生成器的方法和生成器依賴性聲明陳述。然后,在塊1625,運(yùn)行時(shí)將生成器添加到目標(biāo)場(chǎng)景的生成器圖形。之后,運(yùn)行時(shí)轉(zhuǎn)向塊1604。再參考圖34A中的塊1603,如果生成器創(chuàng)建是克隆,則運(yùn)行時(shí)轉(zhuǎn)向在圖34B中的入口點(diǎn)B。從入口點(diǎn)B,運(yùn)行時(shí)轉(zhuǎn)向塊1626以調(diào)用新的實(shí)例模塊來(lái)實(shí)例化空的實(shí)例。然后,在塊1627,運(yùn)行時(shí)從具有生成器關(guān)鍵字和引用場(chǎng)景關(guān)鍵字的生成器復(fù)制信息,以填充空的實(shí)例。接下來(lái),在塊162S,運(yùn)行時(shí)克隆具有被填充的實(shí)例的生成器。然后在塊1629,運(yùn)行時(shí)將具有目標(biāo)場(chǎng)景關(guān)鍵字的被克隆的生成器添加到生成器圖形中。之后,運(yùn)行時(shí)轉(zhuǎn)向塊1604。在塊1604,如果生成器在場(chǎng)景的影響列表中,則運(yùn)行時(shí)處理影響。塊1604的細(xì)節(jié)在下面參考圖34G被論述。然后,在塊1630,對(duì)于每一個(gè)注冊(cè)的訂閱,運(yùn)行時(shí)處理訂閱過(guò)濾標(biāo)準(zhǔn)。在塊1635,如果生成器由于依賴性而被調(diào)用,則運(yùn)行時(shí)將生成器鏈接到生成器圖形。然后,運(yùn)行時(shí)轉(zhuǎn)向入口點(diǎn)C。參考圖34C,運(yùn)行時(shí)從入口點(diǎn)C轉(zhuǎn)向塊1640以將生成器標(biāo)記為未執(zhí)行。在一些實(shí)施方式中,在塊1690,運(yùn)行時(shí)可以接收生成器不覆蓋命令。響應(yīng)于生成器不覆蓋命令,在塊1695,運(yùn)行時(shí)可以將生成器標(biāo)記為沒(méi)有被覆蓋,然后轉(zhuǎn)向塊1640。從塊1640,運(yùn)行時(shí)轉(zhuǎn)向塊1645以檢查生成器是否具有任何依賴性以及是否沒(méi)有被覆蓋。如果生成器不具有依賴性且沒(méi)有被覆蓋,則運(yùn)行時(shí)轉(zhuǎn)向入口點(diǎn)D以返回在圖34A中的塊1665。否貝U,運(yùn)行時(shí)轉(zhuǎn)向塊1650。在塊1650,對(duì)于現(xiàn)在將要被確定的依賴性聲明中的每一個(gè)依賴性,運(yùn)行時(shí)確定生成器的數(shù)量并為每一個(gè)生成器調(diào)用新的被強(qiáng)調(diào)的生成器命令。在塊1655,如果所有相關(guān)生成器存在并己經(jīng)被執(zhí)行,則運(yùn)行時(shí)將生成器添加到執(zhí)行開(kāi)始日志,并轉(zhuǎn)向入口點(diǎn)E以返回在圖34A中的塊1660。圖34D示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的塊1601的被擴(kuò)展的流程圖。在塊3405中,運(yùn)行時(shí)首先使用場(chǎng)景跟蹤結(jié)構(gòu)和場(chǎng)景關(guān)鍵字來(lái)定位影響路徑跟蹤結(jié)構(gòu)。然后運(yùn)行時(shí)在塊3410確定在場(chǎng)景跟蹤結(jié)構(gòu)中的影響路徑跟蹤結(jié)構(gòu)是否己經(jīng)被實(shí)例化。如果影響路徑跟蹤結(jié)構(gòu)已經(jīng)被實(shí)例化,則直接和間接被影響的生成器已經(jīng)被標(biāo)識(shí)。因此,運(yùn)行時(shí)轉(zhuǎn)向塊3419以結(jié)束流程。否則,運(yùn)行時(shí)轉(zhuǎn)向塊3412。在塊3412,影響路徑跟蹤結(jié)構(gòu)被實(shí)例化并存儲(chǔ)在場(chǎng)景跟蹤結(jié)構(gòu)中。然后,運(yùn)行時(shí)轉(zhuǎn)向塊3413。對(duì)于在場(chǎng)景定義中的每個(gè)直接被影響的生成器,運(yùn)行時(shí)査找在場(chǎng)景定義中的具有相應(yīng)生成器關(guān)鍵字和引用場(chǎng)景關(guān)鍵字的生成器。在塊3415,運(yùn)行時(shí)確定該生成器是否存在。如果所述生成器存在,則運(yùn)行時(shí)在塊3417將生成器和所有前身一起添加到影響路徑跟蹤結(jié)構(gòu)中,然后轉(zhuǎn)向塊3418。否則,運(yùn)行時(shí)跳過(guò)塊3417并轉(zhuǎn)向塊3418。在塊3418,運(yùn)行時(shí)檢查在場(chǎng)景定義中是否還有直接被影響的生成器。如果有,則運(yùn)行時(shí)返回塊3413以重復(fù)上述操作。否則,運(yùn)行時(shí)轉(zhuǎn)向塊3419以結(jié)束流程。圖34E示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的塊1602的被擴(kuò)展的流程圖。在塊3420,運(yùn)行時(shí)檢查影響路徑跟蹤結(jié)構(gòu)是否為空。如果影響路徑跟蹤結(jié)構(gòu)為空,則運(yùn)行時(shí)轉(zhuǎn)向塊3429。否則,在塊3422,運(yùn)行時(shí)檢查具有引用場(chǎng)景關(guān)鍵字的生成器是否在影響路徑跟蹤結(jié)構(gòu)中。如果是,則運(yùn)行時(shí)在塊3424將生成器創(chuàng)建設(shè)定為"克隆"。否則,在塊3426,運(yùn)行時(shí)檢査生成器是否存在于具有引用場(chǎng)景的生成器圖形中。如果存在,則運(yùn)行時(shí)在塊3428將生成器創(chuàng)建設(shè)定為"不創(chuàng)建"。這是一種優(yōu)化,使得僅復(fù)制用于目標(biāo)場(chǎng)景的生成器圖形的一部分。沒(méi)有被創(chuàng)建或克隆的生成器可以從引用場(chǎng)景被鏈接到用于目標(biāo)場(chǎng)景的子圖形。否則,運(yùn)行時(shí)轉(zhuǎn)向塊3429。在塊3429,運(yùn)行時(shí)將生成器創(chuàng)建設(shè)定為"創(chuàng)建新的"。圖34F示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在圖34A中的塊1605的被擴(kuò)展的圖。在塊1605,運(yùn)行時(shí)檢査被強(qiáng)調(diào)的生成器是否已經(jīng)存在。在一些實(shí)施方式中,運(yùn)行時(shí)檢查類關(guān)鍵字、實(shí)例關(guān)鍵字、方法關(guān)鍵字以及場(chǎng)景關(guān)鍵字的組合是否已經(jīng)存在于生成器表格中。如果所述組合存在,則被強(qiáng)調(diào)的生成器存在。否則,被強(qiáng)調(diào)的生成器不存在。圖34G示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的塊1604的被擴(kuò)展的流程圖。在一些實(shí)施方式中,有相應(yīng)的專用接口來(lái)獲得和設(shè)定生成器輸出。在塊3430,運(yùn)行時(shí)檢查對(duì)生成器的影響是否是相對(duì)的。如果不是,則對(duì)生成器的影響是絕對(duì)的。因此,在塊3436,運(yùn)行時(shí)將來(lái)自場(chǎng)景的影響列表的輸出實(shí)例指派為在目標(biāo)場(chǎng)景中的生成器的新的輸出。然后運(yùn)行時(shí)轉(zhuǎn)向塊3440。否則,對(duì)生成器的影響是相對(duì)的,運(yùn)行時(shí)在塊3432獲得生成器的當(dāng)前輸出。然后,在塊3434,運(yùn)行時(shí)使用在場(chǎng)景的影響列表中的當(dāng)前輸出以及相應(yīng)的轉(zhuǎn)換方法和相應(yīng)的轉(zhuǎn)換參數(shù)來(lái)生成生成器的新的輸出。接下來(lái),運(yùn)行時(shí)轉(zhuǎn)向塊3440。在一些實(shí)施方式中,運(yùn)行時(shí)可以通過(guò)將擴(kuò)展值添加到當(dāng)前輸出來(lái)生成新的輸出??商鎿Q地,運(yùn)行時(shí)可以通過(guò)將當(dāng)前輸出與因數(shù)值相乘來(lái)生成新的輸出。在塊3440,運(yùn)行時(shí)設(shè)定在生成器輸出緩存中和在實(shí)例中(如果輸出是字段)生成的新的輸出值的生成器的輸出。然后在塊3442,運(yùn)行時(shí)將生成器標(biāo)記為沒(méi)被覆蓋,并轉(zhuǎn)向在圖34B中的塊1630。圖35A-圖35B是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的被強(qiáng)調(diào)的生成器圖形執(zhí)行流的流程圖。在塊2200,運(yùn)行時(shí)基于在執(zhí)行開(kāi)始日志上的生成器來(lái)選擇要執(zhí)行的一組候選生成器為當(dāng)前組的候選生成器。然后,在塊2205,運(yùn)行時(shí)從準(zhǔn)備被執(zhí)行的當(dāng)前組的候選生成器中選擇生成器的子集為當(dāng)前組的就緒生成器。對(duì)于在當(dāng)前組的就緒生成器中的每個(gè)生成器,運(yùn)行時(shí)在塊2210檢查該生成器的類型。在一個(gè)實(shí)施方式中,有3種類型的生成器,稱為標(biāo)準(zhǔn)生成器、被強(qiáng)調(diào)的生成器產(chǎn)生生成器以及依賴性聲明生成器。如果生成器是標(biāo)準(zhǔn)生成器,則運(yùn)行時(shí)轉(zhuǎn)向塊2215以執(zhí)行該生成器。然后在塊2220,運(yùn)行時(shí)將具有對(duì)所執(zhí)行的生成器的吸收訂閱依賴性的任何父體標(biāo)記為未完成,并轉(zhuǎn)向入口點(diǎn)A。如果生成器是被強(qiáng)調(diào)的生成器產(chǎn)生生成器,則運(yùn)行時(shí)轉(zhuǎn)向塊3710以執(zhí)行該生成器。然后在塊3720,運(yùn)行時(shí)將在所執(zhí)行的生成器上的具有吸收訂閱依賴性的任意父體標(biāo)記為未完成。接下來(lái),在塊3730,運(yùn)行時(shí)調(diào)用用于所發(fā)現(xiàn)的生成器的新的被強(qiáng)調(diào)的生成器命令、日志,并處理訂閱。然后在塊3740,運(yùn)行時(shí)基于最新添加到執(zhí)行開(kāi)始日志中的生成器來(lái)添加到一組候選生成器。然后,運(yùn)行時(shí)轉(zhuǎn)向入口點(diǎn)A。在塊2225,如果生成器是依賴性聲明生成器,則運(yùn)行時(shí)準(zhǔn)備依賴性確定生成器。然后,在塊2230,運(yùn)行時(shí)執(zhí)行依賴性確定生成器以解析要被解析的任何未解析的依賴性。然后,在塊2235,運(yùn)行時(shí)調(diào)用用于所發(fā)現(xiàn)的生成器的新的被強(qiáng)調(diào)的生成器命令、日志,并處理訂閱。在塊2240,運(yùn)行時(shí)將最新添加到執(zhí)行開(kāi)始日志中的生成器添加到一組候選生成器中。然后,運(yùn)行時(shí)轉(zhuǎn)向入口點(diǎn)A。參考圖35B,運(yùn)行時(shí)從入口點(diǎn)A轉(zhuǎn)向塊2245。在塊2245,運(yùn)行時(shí)將生成器標(biāo)記為已執(zhí)行并必要地更新生成器輸出緩存和實(shí)例緩存。此外,運(yùn)行時(shí)將任何父生成器添加到要被執(zhí)行的一組候選生成器并標(biāo)記為未執(zhí)行。運(yùn)行時(shí)還從當(dāng)前組的候選和就緒生成器中移除已執(zhí)行的生成器。運(yùn)行時(shí)從塊2245轉(zhuǎn)向塊2250以檢查一組候選生成器是否為空。如果不為空,運(yùn)行時(shí)通過(guò)入口點(diǎn)B轉(zhuǎn)向塊2205以重復(fù)上述流程。如果一組候選生成器為空,則運(yùn)行時(shí)轉(zhuǎn)向塊2255以檢查所有訂閱是否已經(jīng)完成。如果沒(méi)有完成,則運(yùn)行時(shí)在塊2260處理未完成的吸收訂閱生成器,然后通過(guò)入口點(diǎn)B返回塊2205。否則,所有訂閱已經(jīng)完成,運(yùn)行時(shí)轉(zhuǎn)向塊2248。在塊2248,場(chǎng)景跟蹤結(jié)構(gòu)被掃描,所有實(shí)例路徑跟蹤結(jié)構(gòu)被釋放。然后,運(yùn)行時(shí)轉(zhuǎn)向塊2265以結(jié)束流程。過(guò)程語(yǔ)言如上所述,正確編寫(xiě)的過(guò)程語(yǔ)言、非反射式面向?qū)ο蟮恼Z(yǔ)言以及非反射式基于對(duì)象的語(yǔ)言代碼可以被轉(zhuǎn)換為反射式面向?qū)ο蟮恼Z(yǔ)言代碼。通過(guò)示例的方式,類可以通過(guò)數(shù)據(jù)結(jié)構(gòu)和一組靜態(tài)函數(shù)來(lái)仿真,所述靜態(tài)函數(shù)以對(duì)于數(shù)據(jù)結(jié)構(gòu)的實(shí)例的指針作為第一參數(shù)。這些函數(shù)是構(gòu)造器和析構(gòu)器。構(gòu)造器在數(shù)據(jù)結(jié)構(gòu)的指針的分配之后被運(yùn)行時(shí)調(diào)用并提供數(shù)據(jù)結(jié)構(gòu)中的元素的默認(rèn)狀態(tài);析構(gòu)器在數(shù)據(jù)結(jié)構(gòu)的指針的釋放之前被運(yùn)行時(shí)調(diào)用。每個(gè)類具有通過(guò)文件的描述,包括1)數(shù)據(jù)結(jié)構(gòu);2)描述類的另一個(gè)結(jié)構(gòu),具有結(jié)構(gòu)的大小以及一組函數(shù)指針;3)具有代碼的靜態(tài)函數(shù)的列表(對(duì)于非反射式面向?qū)ο蟮恼Z(yǔ)言和非反射式基于對(duì)象的語(yǔ)言,通過(guò)掃描真正類的方法并針對(duì)每個(gè)方法創(chuàng)建執(zhí)行相關(guān)方法的有效調(diào)用的靜態(tài)函數(shù),來(lái)自動(dòng)生成靜態(tài)函數(shù)的代碼);以及4)在每個(gè)函數(shù)上方的注釋(包括生成器依賴性聲明)以及函數(shù)類型(構(gòu)造器、析構(gòu)器、屬性等)。除了在過(guò)程語(yǔ)言、非反射式面向?qū)ο蟮恼Z(yǔ)言或非反射式基于對(duì)象的語(yǔ)言中的類的定義,還實(shí)施了動(dòng)態(tài)調(diào)用。具體地,編譯器生成用于每個(gè)類的下面的初始化代碼,代碼被(新的類模塊)調(diào)用一次以1)實(shí)例化描述類的結(jié)構(gòu),用有效靜態(tài)函數(shù)填充函數(shù)指針;2)用類的映射(類跟蹤結(jié)構(gòu))來(lái)注冊(cè)結(jié)構(gòu)的實(shí)例,所述類具有對(duì)應(yīng)于類名稱的關(guān)鍵字;以及3)用對(duì)應(yīng)于函數(shù)名稱的關(guān)鍵字(與增量依賴性、排序依賴性、字段依賴性、向上依賴性、弱約束依賴性、輸出類關(guān)鍵字以及附加注釋一起)在函數(shù)映射(方法跟蹤結(jié)構(gòu))中注冊(cè)所有函數(shù)指針。映射允許在一般調(diào)用函數(shù)的運(yùn)行時(shí)中的實(shí)施,所述函數(shù)能夠1)(由新的實(shí)例模塊)通過(guò)名稱實(shí)例化類的實(shí)例(具體地,運(yùn)行時(shí)a)根據(jù)數(shù)據(jù)結(jié)構(gòu)的大小分配存儲(chǔ)器,并將頭添加到指針以存儲(chǔ)描述類的結(jié)構(gòu)指針,并實(shí)施靈活的指針(例如,能夠查詢類型的指針);以及b)在從映射重新獲得靜態(tài)函數(shù)的相關(guān)指針之后調(diào)用正確的構(gòu)造函數(shù));以及2)通過(guò)名稱調(diào)用方法,假設(shè)所有參數(shù)在從映射重新獲得靜態(tài)函數(shù)的相關(guān)指針之后被正確地傳遞。將參數(shù)正確地傳遞到由函數(shù)指針標(biāo)識(shí)的函數(shù)將通過(guò)匯編語(yǔ)言在/從輸入和輸出參數(shù)的棧中推或拉元素來(lái)完成。上述方法假設(shè)在過(guò)程語(yǔ)言、非反射式面向?qū)ο蟮恼Z(yǔ)言或非反射式基于對(duì)象的語(yǔ)言中的數(shù)據(jù)結(jié)構(gòu)的概念的存在和函數(shù)指針的概念的存在。示例性的面向?qū)ο笤创a的語(yǔ)法A.客戶端代碼在本發(fā)明的一個(gè)實(shí)施方式中,客戶端代碼采取以下語(yǔ)法(以表頭示出):ProducerKeyNew(StringClassKey,InstanceKeyInstanceKey,StringMethodKey);RuntimeNew()AddProducerOflnterest(ProducerKeyProducerOflnterestKey);SetProducerOutput(ProducerKeyProducerToOverrideKey,ObjectProducerOutputlnstance);Execute0;ProducerKey禾QRuntime是類,而New、AddProducerOflnterest、SetProducerOutput以及Execute是方法。AddProducerOflnterest調(diào)用具有用于表2中的感興趣生成器情況的合適的值的新的生成器命令。ProducerOutputlnstance是被覆蓋的生成器輸出類的實(shí)例。因此通過(guò)相應(yīng)的生成器輸出類構(gòu)造器來(lái)進(jìn)行實(shí)例化。B.陳述1.依賴性聲明陳述的語(yǔ)法argumentDependency="Argument1Dependency;Argument2Dependency;...,,;fieldDependency="FieldDependencyl;FieldDependency2;…,,;sequencingDependency="SequencingDependencyl;SequencingDependency2;…";upwardDependency="UpwardDependencyl;UpwardDependency2;…";weeklyConstrainedDependency="WeeklyConstrainedDependency1;^VeeklyConstrainedDependency2;..,,;unConstrainedDependency=2.依賴性的語(yǔ)法a.字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語(yǔ)法-#C:'ClassKey,::#1:,InstanceKey,:駕:,MethodKey'b.增量X依賴性的語(yǔ)法ArgumentID::#C:,ClassKey,:#I:,InstanceKey,:#M:'MethodKey,在本發(fā)明的一個(gè)實(shí)施方式中,ArgumentID在語(yǔ)法中被省略,并且增量依賴性被聲明的順序表示ArgumentID。因此,ArgumentID被添加以增強(qiáng)可讀性。3.快捷和非快捷對(duì)于非快捷,語(yǔ)法是相同的,但在生成器關(guān)鍵字之前使用弁S::指示快捷。a.字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語(yǔ)法#S::#C:'ClassKey,::#I:'InstanceKey,::#M:'MethodKey'b.增量X依賴性的語(yǔ)法ArgumentID::#S::#C:'ClassKey,:#I:'InstanceKey,:#M:'MethodKey'在這種情況下,由依賴性指示的生成器關(guān)鍵字不是依賴性確定生成器。其他語(yǔ)法的實(shí)施可以假設(shè)快捷是用于特定依賴性類型(例如字段)的默認(rèn)依賴性,并省略存S::。在該情況下,可以使用弁DDP來(lái)指示DDP的存在。4.偶然和非偶然如前所述,可以將〈P〉放在偶然元素之前。a.偶然的類和方法的示例1)字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語(yǔ)法#C:<P〉'ClassDeterminationMethodKey,#I:'InstanceKey,#M:<P〉'MethodDeterminationMethodKey'2)增量X依賴性的語(yǔ)法ArgumentID::#C:<P〉'ClassDeterminationMethodKey,#I:'InstanceKey,#M:<P〉,MethodDeterminationMethodKey'b.偶然的方法的示例1)字段依賴性X,排序依賴性x,向上依賴性x,弱約束依賴性x,不受約束的依賴性X的語(yǔ)法#C:,ClassKey,::#1:,InstanceKey,:駕,MethodDeterminationMethodKey'2)增量X依賴性的語(yǔ)法ArgumentID::#C:,ClassKey,:#I:'InstanceKey,:#M:,MethodDeterminationMethodKey'C.偶然實(shí)例的示例1)字段依賴性X,排序依賴性x,向上依賴性x,弱約束依賴性x,不受約束的依賴性X的語(yǔ)法#C:'ClassKey,:#I:,InstanceDeterminationMethodKey,:#M:'MethodKey,2)增量X依賴性的語(yǔ)法Arg謹(jǐn)entID::#C:'ClassKey,:#1:,InstanceDeterminationMethodKey,#M:'MethodKey'5.速記技術(shù)被認(rèn)為與父生成器元素相同的諸如類、實(shí)例或方法的元素被省略。這一般用于快捷字段的情況。下面給出的示例結(jié)合了速記技術(shù)和快捷聲明(快捷由弁S::示出)。a.類和實(shí)例被省略的示例1)字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語(yǔ)法#S::#M:'MethodKey'2)增量X依賴性的語(yǔ)法ArgumentID::#S::#M:,MethodKey'b.類被省略的示例1)字段依賴性X,排序依賴性x,向上依賴性x,弱約束依賴性x,不受約束的依賴性X的語(yǔ)法#S::#1:,InstanceKey,:#M:,MethodKey,2)增量X依賴性的語(yǔ)法ArgumentID::#S::#I:,InstanceKey,#M:,MethodKey'可替換實(shí)施方式雖然圖中的流程圖顯示了本發(fā)明某些實(shí)施方式所執(zhí)行的操作的特定順序,但是應(yīng)當(dāng)理解該順序是示例性的(例如,可替換實(shí)施方式可以以不同順序執(zhí)行操作、結(jié)合某些操作、與某些操作重疊等)。雖然根據(jù)一些實(shí)施方式描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員可以理解本發(fā)明不限于所述的實(shí)施方式,而且可以通過(guò)在所附權(quán)利要求的實(shí)質(zhì)和范圍內(nèi)做出修改和改變來(lái)實(shí)施本發(fā)明。因此描述被視為示例性而非限制性的。權(quán)利要求1、一種用于執(zhí)行以面向?qū)ο蟮拇a所編寫(xiě)的應(yīng)用程序的計(jì)算機(jī)執(zhí)行方法,該方法包括實(shí)例化具有當(dāng)前感興趣的輸出的生成器,其中所述面向?qū)ο蟮拇a包括方法和生成器依賴性聲明,其中用于給定方法的所述生成器依賴性聲明標(biāo)識(shí)一組零個(gè)或多個(gè)生成器,其中所述生成器是運(yùn)行時(shí)可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個(gè)實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法;響應(yīng)于所述實(shí)例化,添加感興趣生成器作為第一生成器圖形的一部分;嘗試基于已經(jīng)在所述第一生成器圖形中的生成器的方法的生成器依賴性聲明通過(guò)鏈接以及在需要時(shí)實(shí)例化其他生成器來(lái)自動(dòng)生成所述第一生成器圖形的余項(xiàng);以及在保留所述第一生成器圖形中的生成器的已有的狀態(tài)和已有的輸出的情況下,用所述應(yīng)用程序中的改變來(lái)模擬所述應(yīng)用程序。2、根據(jù)權(quán)利要求1所述的方法,其中多個(gè)生成器基于在所述第一生成器圖形中的生成器之間的依賴性而相互連接,其中所述應(yīng)用程序的第一生成器圖形、已有的狀態(tài)以及已有的輸出對(duì)應(yīng)于第一場(chǎng)景,其中所述改變包括所述應(yīng)用程序的一個(gè)或多個(gè)直接被影響的生成器的輸出的改變。3、根據(jù)權(quán)利要求2所述的方法,該方法還包括接收?qǐng)鼍靶畔⒑完P(guān)于所述一個(gè)或多個(gè)直接被影響的生成器的輸出的改變的信息,所述場(chǎng)景信息包括標(biāo)識(shí)所述第一場(chǎng)景的引用場(chǎng)景關(guān)鍵字、標(biāo)識(shí)目標(biāo)場(chǎng)景的目標(biāo)場(chǎng)景關(guān)鍵字以及對(duì)影響列表的引用,所述影響列表包含用于所述目標(biāo)場(chǎng)景的一個(gè)或多個(gè)直接被影響的生成器的一個(gè)或多個(gè)生成器關(guān)鍵字的集合;以及使用所述場(chǎng)景信息來(lái)創(chuàng)建第二場(chǎng)景。4、根據(jù)權(quán)利要求3所述的方法,其中創(chuàng)建所述第二場(chǎng)景包括使用所述第一生成器圖形來(lái)確定在所述第一生成器圖形中的生成器中的哪個(gè)生成器被所述一個(gè)或多個(gè)直接被影響的生成器的輸出所影響;以及將所述被影響的生成器記錄在影響生成器跟蹤結(jié)構(gòu)中。5、根據(jù)權(quán)利要求4所述的方法,其中創(chuàng)建所述第二場(chǎng)景包括-創(chuàng)建第二生成器圖形,該第二生成器圖形至少具有所述感興趣生成器、所述一個(gè)或多個(gè)直接被影響的生成器以及在所述感興趣生成器所依賴的影響生成器跟蹤結(jié)構(gòu)中的任何被影響的生成器的副本;以及根據(jù)所述影響列表中的信息來(lái)改變所述一個(gè)或多個(gè)直接被影響的生成器的副本的輸出。6、根據(jù)權(quán)利要求5所述的方法,其中根據(jù)所述影響列表中的信息來(lái)改變所述一個(gè)或多個(gè)直接被影響的生成器的副本的輸出包括用由所述影響列表中的信息所規(guī)定的預(yù)定值來(lái)覆蓋在所述第二生成器圖形中的一個(gè)或多個(gè)直接被影響的生成器的副本的輸出。7、根據(jù)權(quán)利要求5所述的方法,其中根據(jù)所述影響列表中的信息來(lái)改變所述一個(gè)或多個(gè)直接被影響的生成器的副本的輸出包括確定在所述第一場(chǎng)景中的生成器的輸出;以及使用在所述第一場(chǎng)景中的生成器的輸出以及在所述影響列表中的信息來(lái)生成在所述第二場(chǎng)景中的直接被影響的生成器的副本的輸出。8、根據(jù)權(quán)利要求5所述的方法,其中創(chuàng)建所述第二生成器圖形包括將在所述第一生成器圖形中的一個(gè)或多個(gè)生成器鏈接到所述第二生成器圖形,其中所述一個(gè)或多個(gè)生成器獨(dú)立于所述直接被影響的生成器。9、根據(jù)權(quán)利要求5所述的方法,其中創(chuàng)建所述第二生成器圖形包括使用所述第一生成器圖形來(lái)克隆所述感興趣生成器和所述感興趣生成器所依賴的任何被影響的生成器。10、根據(jù)權(quán)利要求5所述的方法,其中創(chuàng)建所述第二生成器圖形包括根據(jù)所述感興趣生成器以及所述感興趣生成器所依賴的被影響的生成器中的每一個(gè)生成器的方法的方法定義和依賴性聲明來(lái)創(chuàng)建所述感興趣生成器以及所述感興趣生成器所依賴的被影響的生成器。11、根據(jù)權(quán)利要求5所述的方法,該方法還包括在保存所述感興趣生成器、所述一個(gè)或多個(gè)直接被影響的生成器以及用于所述第一場(chǎng)景的被影響的生成器的已有的輸出的情況下,使用所述一個(gè)或多個(gè)直接被影響的生成器的副本的改變后的輸出來(lái)執(zhí)行所述第二場(chǎng)景中的應(yīng)用程序,以確定所述第二生成器圖形中的感興趣生成器的副本的輸出;在保留緩存中的用于所述第一場(chǎng)景的感興趣生成器的已有的輸出的情況下,將用于所述第二場(chǎng)景的感興趣生成器的副本的輸出存儲(chǔ)在所述緩存中;在保留所述緩存中的用于所述第一場(chǎng)景的一個(gè)或多個(gè)直接被影響的生成器的己有的輸出的情況下,將用于所述第二場(chǎng)景的一個(gè)或多個(gè)直接被影響的生成器的副本的改變后的輸出存儲(chǔ)在所述緩存中;以及在保留所述緩存中的用于第一場(chǎng)景的中間生成器的已有的輸出的情況下,將用于所述第二場(chǎng)景的中間生成器的副本的輸出存儲(chǔ)在所述緩存中,所述中間生成器在所述感興趣生成器與所述一個(gè)或多個(gè)直接被影響的生成器之間的路徑上。12、根據(jù)權(quán)利要求ll所述的方法,該方法還包括使用用于所述第二場(chǎng)景的感興趣生成器的副本的輸出和用于所述第一場(chǎng)景的感興趣生成器的輸出來(lái)自動(dòng)確定從所述第一場(chǎng)景到所述第二場(chǎng)景的感興趣生成器的輸出的導(dǎo)數(shù)。13、根據(jù)權(quán)利要求12所述的方法,該方法還包括使用從所述第一場(chǎng)景到所述第二場(chǎng)景的感興趣生成器的輸出的導(dǎo)數(shù)來(lái)自動(dòng)地且遞歸地確定N階導(dǎo)數(shù)和交叉導(dǎo)數(shù)中的至少一個(gè),其中N是大于1的整數(shù)。14、根據(jù)權(quán)利要求5所述的方法,其中模擬所述應(yīng)用程序包括執(zhí)行被強(qiáng)調(diào)的生成器產(chǎn)生生成器以動(dòng)態(tài)地創(chuàng)建在所述第二生成器圖形中的至少一個(gè)生成器。15、一種系統(tǒng),該系統(tǒng)包括運(yùn)行時(shí),用于運(yùn)行具有方法的生成器依賴性聲明的面向?qū)ο蟮脑创a,其中,生成器是運(yùn)行時(shí)可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)至少包括實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,其中用于給定方法的每一個(gè)生成器依賴性聲明標(biāo)識(shí)一組零個(gè)或多個(gè)生成器,且其中所述運(yùn)行時(shí)包括新的場(chǎng)景模塊,用于接收目標(biāo)場(chǎng)景的場(chǎng)景信息以及響應(yīng)于場(chǎng)景實(shí)例化命令來(lái)實(shí)例化所述目標(biāo)場(chǎng)景;自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊,該模塊耦合到所述新的場(chǎng)景模塊以接收當(dāng)前所選擇的具有感興趣輸出的生成器,并使用所述場(chǎng)景信息來(lái)建立用于所述目標(biāo)場(chǎng)景的生成器圖形,該生成器圖形包括當(dāng)前所選擇的生成器、一個(gè)或多個(gè)具有根據(jù)所述場(chǎng)景信息而在所述目標(biāo)場(chǎng)景中改變的輸出的生成器、以及在一個(gè)或多個(gè)生成器與所述當(dāng)前所選擇的生成器之間的中間生成器中的每一個(gè)生成器的副本;以及自動(dòng)化的被強(qiáng)調(diào)的生成器圖形執(zhí)行模塊,該模塊耦合到所述自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊以接收用于所述目標(biāo)場(chǎng)景的生成器圖形中的一個(gè)或多個(gè)生成器的改變后的輸出,并對(duì)用于所述目標(biāo)場(chǎng)景的生成器圖形的生成器應(yīng)用所述改變后的輸出以確定所述目標(biāo)場(chǎng)景中的當(dāng)前所選擇的感興趣生成器的輸出。16、根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述場(chǎng)景信息包括引用場(chǎng)景關(guān)鍵字、目標(biāo)場(chǎng)景關(guān)鍵字、對(duì)直接被影響的生成器的列表的引用以及與直接被影響的生成器中的每一個(gè)生成器相關(guān)聯(lián)的指示符,該指示符用于指示相應(yīng)的直接被影響的生成器的輸出是被改變?yōu)轭A(yù)定值還是從所述相應(yīng)的直接被影響的生成器的已有的輸出中被生成。17、根據(jù)權(quán)利要求16所述的系統(tǒng),其中所述運(yùn)行時(shí)還包括耦合到所述自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊的覆蓋生成器輸出模塊,用于用相應(yīng)的預(yù)定值來(lái)覆蓋所述直接被影響的生成器中的每一個(gè)生成器的輸出。18、根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述運(yùn)行時(shí)還包括耦合到所述自動(dòng)化的被強(qiáng)調(diào)的生成器圖形生成模塊的生成器圖形結(jié)構(gòu),用于在不重寫(xiě)任何被存儲(chǔ)在其中的已有的生成器圖形的情況下,存儲(chǔ)用于所述目標(biāo)場(chǎng)景的生成器圖形,其中所述生成器圖形結(jié)構(gòu)還包括生成器輸出緩存結(jié)構(gòu),該生成器輸出緩存結(jié)構(gòu)用于存儲(chǔ)當(dāng)前所選擇的感興趣生成器的輸出、所述中間生成器的輸出、以及用于所述目標(biāo)場(chǎng)景的一個(gè)或多個(gè)生成器的改變后的輸出,而不重寫(xiě)存儲(chǔ)在其中的當(dāng)前所選擇的感興趣生成器、中間生成器以及一個(gè)或多個(gè)生成器的任何己有的輸出。19、根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述運(yùn)行時(shí)還包括耦合到所述新的場(chǎng)景模塊的場(chǎng)景跟蹤結(jié)構(gòu),其中所述新的場(chǎng)景模塊可操作用于通過(guò)將所述場(chǎng)景信息添加到所述場(chǎng)景跟蹤結(jié)構(gòu)來(lái)實(shí)例化所述目標(biāo)場(chǎng)亭20、根據(jù)權(quán)利要求15所述的系統(tǒng),該系統(tǒng)還包括第二運(yùn)行時(shí),該第二運(yùn)行時(shí)可操作用于裝載和實(shí)例化類、調(diào)用方法以及對(duì)所述類和所述方法中的至少一者執(zhí)行自省,其中所述第二運(yùn)行時(shí)在邏輯上與所述運(yùn)行時(shí)分離。21、根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述運(yùn)行時(shí)還可操作用于裝載和實(shí)例化類、調(diào)用方法以及對(duì)所述類和所述方法中的至少一者執(zhí)行自省。22、根據(jù)權(quán)利要求15所述的系統(tǒng),該系統(tǒng)還包括操作系統(tǒng),其中所述運(yùn)行時(shí)被集成在所述操作系統(tǒng)內(nèi)。23、一種提供面向?qū)ο蟮脑创a的機(jī)器可讀介質(zhì),該機(jī)器可讀介質(zhì)包括多個(gè)類定義,每一個(gè)類定義包括一組一個(gè)或多個(gè)字段、一組一個(gè)或多個(gè)方法以及用于所述一組方法中的每一個(gè)方法的生成器依賴性聲明,其中用于所述方法中的給定的方法的生成器依賴性聲明在運(yùn)行時(shí)被使用以標(biāo)識(shí)一組零個(gè)或多個(gè)生成器,其中所述生成器是運(yùn)行時(shí)可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括多個(gè)類中的至少一個(gè)類的實(shí)例以及與該實(shí)例相關(guān)聯(lián)的方法;以及其中,所述多個(gè)類定義中的第一個(gè)類定義定義了具有一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器生成方法的類,所述方法用于生成一組一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器,所述一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器生成方法中的每一個(gè)方法包括用于標(biāo)識(shí)感興趣生成器和定義目標(biāo)場(chǎng)景的代碼,從而所述運(yùn)行時(shí)可操作用于執(zhí)行所述方法來(lái)評(píng)估對(duì)用于所述目標(biāo)場(chǎng)景的感興趣生成器的影響。24、根據(jù)權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中所述一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器生成方法中的每一個(gè)方法規(guī)定了引用場(chǎng)景關(guān)鍵字、目標(biāo)場(chǎng)景關(guān)鍵字、對(duì)直接被影響的生成器的列表的引用以及與所述直接被影響的生成器中的每一個(gè)生成器相關(guān)聯(lián)的指示符,該指示符用于指示相應(yīng)的直接被影響的生成器的輸出是被改變?yōu)轭A(yù)定值還是從相應(yīng)的直接被影響的生成器的已有的輸出中被生成。25、根據(jù)權(quán)利要求23所述的機(jī)器可讀介質(zhì),其中所述一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器生成方法中的每一個(gè)方法當(dāng)被所述運(yùn)行時(shí)執(zhí)行時(shí),使得所述運(yùn)行時(shí)在所述目標(biāo)場(chǎng)景中創(chuàng)建所述一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器,并將所述被強(qiáng)調(diào)的生成器添加到所述目標(biāo)場(chǎng)景的生成器圖形中。26、根據(jù)權(quán)利要求25所述的機(jī)器可讀介質(zhì),其中所述一個(gè)或多個(gè)被強(qiáng)調(diào)的生成器中的每一個(gè)生成器包括用于標(biāo)識(shí)所述生成器的生成器關(guān)鍵字和用于標(biāo)識(shí)場(chǎng)景的場(chǎng)景關(guān)鍵字。全文摘要描述了一種具有場(chǎng)景支持的面向生成器圖形的編程框架的實(shí)施方式。在一個(gè)實(shí)施方式中,接收由在應(yīng)用程序上的改變來(lái)評(píng)估潛在影響的請(qǐng)求。應(yīng)用程序包括一組生成器,每一個(gè)生成器具有至少一個(gè)實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法。在保留生成器的已有的狀態(tài)和已有的輸出的情況下,響應(yīng)于所述請(qǐng)求,可以用所述改變來(lái)模擬應(yīng)用程序。文檔編號(hào)G06F9/44GK101601012SQ200780050596公開(kāi)日2009年12月9日申請(qǐng)日期2007年11月30日優(yōu)先權(quán)日2006年12月1日發(fā)明者E·埃德,F·沙米耶申請(qǐng)人:莫雷克斯公司