亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種面向粒的程序構(gòu)造方法

文檔序號(hào):6602361閱讀:120來源:國(guó)知局
專利名稱:一種面向粒的程序構(gòu)造方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)理論領(lǐng)域,涉及一種程序構(gòu)造方法,尤其是一種面向粒的程序 構(gòu)造方法。
背景技術(shù)
過程語(yǔ)言如FortraruPascal和C等可以用來定義直線執(zhí)行的程序,程序開始于某 一點(diǎn),一步一步執(zhí)行至終點(diǎn)。這種模式中,設(shè)計(jì)理念體現(xiàn)在相繼執(zhí)行的程序單元中。直線的 模塊劃分體現(xiàn)在函數(shù)調(diào)用中,函數(shù)調(diào)用允許程序執(zhí)行從主程序跳轉(zhuǎn)到子程序,又跳回主程 序。子程序的使用使程序更有效的實(shí)現(xiàn)一般的程序。但是,隨著程序規(guī)模的不斷增大,程序 越來越復(fù)雜,過程式語(yǔ)言也變得很復(fù)雜并且很難維護(hù)。面向?qū)ο蠓椒ǖ某霈F(xiàn)把系統(tǒng)狀態(tài)變成一些單獨(dú)的對(duì)象,在這些對(duì)象中可以私有化 系統(tǒng)狀態(tài),并且通過公有的函數(shù)控制這些狀態(tài)。經(jīng)過結(jié)構(gòu)化和面向?qū)ο笏枷氲牟粩喟l(fā)展,現(xiàn) 代軟件的開發(fā)都朝著高內(nèi)聚和低耦合的方向發(fā)展。程序的功能分解為各個(gè)功能模塊。高級(jí) 語(yǔ)言通過結(jié)構(gòu)化抽象等方法模塊化程序,面向?qū)ο笳Z(yǔ)言通過對(duì)象和類等概念,這又進(jìn)一步 通過集合一個(gè)實(shí)體的行為和隱藏其內(nèi)部實(shí)現(xiàn)提高模塊的內(nèi)聚、降低模塊間的耦合。面向?qū)ο笙鄬?duì)于傳統(tǒng)設(shè)計(jì)語(yǔ)言和軟件設(shè)計(jì)方法有許多優(yōu)越性符合人類認(rèn)識(shí)和分 析事物的思維習(xí)慣;代碼是可高度重用的,可維護(hù)的。實(shí)現(xiàn)了功能模塊的組件化;代碼是共 享的,可繼承的,減少了軟件設(shè)計(jì)中的代碼量等。但是,OOP也不可能是完美無缺的,近些年 出現(xiàn)了很多針對(duì)OOP的不足提出新的語(yǔ)言構(gòu)建方法和相應(yīng)的實(shí)現(xiàn)。程序所面臨的上下文常常改變,比如程序所面臨的輸入、系統(tǒng)可用內(nèi)存、并行系統(tǒng) 中的處理機(jī)個(gè)數(shù)等。從某種意義上講,傳統(tǒng)編程機(jī)制隱式地蘊(yùn)含了程序與上下文之間的關(guān) 系,不過其潛在地假定程序與上下文之間的關(guān)系是固定不變的。然而,易變的上下文使得編 程時(shí)假定的程序與上下文之間的匹配關(guān)系常常被破壞。假設(shè)一個(gè)類擁有無返回類型方法 m。對(duì)于不同的情況,方法m可能需要進(jìn)行不同的行為演化來適應(yīng)新環(huán)境。傳統(tǒng)的編程模 型可能試圖使用繼承關(guān)系,通過定義該類的子類來對(duì)行為的多個(gè)候選實(shí)現(xiàn)進(jìn)行分組,解決 這個(gè)問題。然而,雖然繼承關(guān)系可通過在子類中重載基類方法的方式,實(shí)現(xiàn)該方法的行為版 本,但它不足以用來為某一個(gè)對(duì)象的某個(gè)方法編寫多個(gè)候選行為實(shí)現(xiàn),換句話說,靜態(tài)繼承 關(guān)系不能支持對(duì)象行為的動(dòng)態(tài)變化。當(dāng)然也可考慮通過使用不同的方法名稱來代表每個(gè)實(shí) 現(xiàn),或者通過方法的不同參數(shù)來指示哪個(gè)實(shí)現(xiàn)被執(zhí)行。但是這要求客戶端,也就是將要調(diào)用 這個(gè)方法的對(duì)象,對(duì)實(shí)現(xiàn)的細(xì)節(jié)了如指掌。這樣就破壞了類的封裝性。面向粒(Granule Oriented Programming, G0P)程序構(gòu)造方法就是在觀察程序的 不適合性現(xiàn)象的基礎(chǔ)上提出的。程序的運(yùn)行與其支撐環(huán)境是密不可分的。按照Wiki定義, 計(jì)算機(jī)程序是給計(jì)算機(jī)提供的指令,計(jì)算機(jī)需要程序以產(chǎn)生動(dòng)作,而程序僅當(dāng)它的指令被 計(jì)算機(jī)的處理器執(zhí)行時(shí)才有意義??梢钥闯?,一個(gè)有確定意義的程序除了代碼之外還默認(rèn) 地隱含了在什么計(jì)算機(jī)上運(yùn)行。完美的程序一旦運(yùn)行在陌生的機(jī)器上,會(huì)產(chǎn)生預(yù)料不到的 結(jié)果甚至不能夠正常運(yùn)行下去,由此引出了程序與機(jī)器之間適合性問題。
目前的各種編程語(yǔ)言都沒有關(guān)注程序適合性問題,面向粒的程序構(gòu)建方法中,用 粒來指代那些適合性可度量的、可以被動(dòng)態(tài)替換的構(gòu)成程序的單位。如果程序出現(xiàn)了不適 合性,這些不適合性被局部化到不適合的粒上面,從而用更適合的粒進(jìn)行替換,以達(dá)到改善 程序適合性的目標(biāo)。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有程序構(gòu)建方法沒有關(guān)注程序適合性缺點(diǎn),提供一 種面向粒的程序構(gòu)造方法,該方法是在觀察程序的不適合性現(xiàn)象的基礎(chǔ)上提出的,引入粒 作為系統(tǒng)的基本模塊,并將程序所處的上下文作為編程要素,通過動(dòng)態(tài)監(jiān)測(cè),動(dòng)態(tài)替換從而 保證程序?qū)τ诃h(huán)境的適合性,有效延長(zhǎng)程序的生命周期。本發(fā)明的目的是通過以下技術(shù)方案來解決的該種面向粒的程序構(gòu)造方法,具體按照以下步驟(1)編寫GOP程序代碼所述的GOP程序是一個(gè)種子程序或個(gè)體程序;所述種子程序是一個(gè)不與任何上下 文相關(guān)聯(lián)且不包含任何粒的程序,所述個(gè)體程序是一個(gè)與已有上下文相關(guān)聯(lián)的程序,個(gè)體 程序由種子程序和依附于種子程序的粒組成;(2)將編寫的GOP程序代碼通過編譯生成個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼 文件、影子類字節(jié)碼文件、個(gè)體配置文件以及該個(gè)體程序?qū)?yīng)的粒樹;將粒體字節(jié)碼文件和 影子類字節(jié)碼文件存入粒庫(kù),所述粒庫(kù)是一個(gè)保存了所有粒的存儲(chǔ)單元;(3)通過個(gè)體樹加載運(yùn)行步驟(2)得到的個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼 文件和影子類字節(jié)碼文件,所述類字節(jié)碼文件、粒體字節(jié)碼文件和影子類字節(jié)碼文件運(yùn)行 在實(shí)際上下文下,所述實(shí)際上下文的取值實(shí)時(shí)變化;(4)動(dòng)態(tài)實(shí)時(shí)監(jiān)測(cè)的運(yùn)行程序適合性,若發(fā)現(xiàn)不適合現(xiàn)象,中斷運(yùn)行程序,進(jìn)入步 驟(5);若運(yùn)行程序因未引入的上下文而非正常終止,則進(jìn)入步驟(9),否則程序繼續(xù)運(yùn)行
直至結(jié)束;(5)從粒庫(kù)中查找相似粒,若找到相似粒則進(jìn)入步驟(6),若未找到相似粒進(jìn)入步 驟⑵;(6)以查找或編寫的相似粒替換被中斷的運(yùn)行程序中不適合的粒,若相似粒替換 后滿足適合性,則進(jìn)入步驟(8),若相似粒替換后不滿足適合性,則進(jìn)入步驟(5);(7)編寫新的包含相似粒的個(gè)體程序,并將新編寫的粒加入粒庫(kù),進(jìn)入步驟(6); 如果不編寫新的個(gè)體程序,進(jìn)入步驟(10);(8)演化成新的個(gè)體程序,被中斷的運(yùn)行程序結(jié)束中斷繼續(xù)運(yùn)行,進(jìn)入步驟(4);(9)引入新的上下文,編寫相應(yīng)的個(gè)體程序,進(jìn)入步驟(2),如果不編寫個(gè)體程序, 進(jìn)入步驟(10);(10)程序終止并且不能再運(yùn)行。進(jìn)一步,以上步驟(1)中,所述的上下文是指支持程序的所有非功能性因素的綜 合,上下文分為期望上下文和實(shí)際上下文,程序的期望上下文是該程序的理想的運(yùn)行環(huán)境 描述,一個(gè)程序在自己期望上下文中總是適合的;實(shí)際上下文是程序?qū)嶋H運(yùn)行的環(huán)境的描 述。
以上步驟(1)中,所述粒由粒名、類名、粒體和影子類構(gòu)成,其中類名用來表明該 粒所依附的類,將該類稱為粒的根類,粒體用來指定粒的期望環(huán)境,粒體可以定義自身的成 員并且粒體中必須包含一個(gè)適合性判斷方法,適合性判斷方法返回真或假;所述影子類是 對(duì)種子程序中與該影子類相同名字的類的改進(jìn),是在不同上下文下類行為的不同體現(xiàn),并 且只是在相應(yīng)粒體適合性判斷方法為真后才有效。以上步驟(2)中,所述的個(gè)體配置文件記錄個(gè)體程序的類層次結(jié)構(gòu)以及各類依附 的粒的XML文件。以上步驟(2)中,所述的粒樹反映個(gè)體程序所包含的粒和粒的層次的XML文件。以上步驟(4)中,所述的不適合現(xiàn)象是指將要運(yùn)行的程序段所屬的粒的適合性 判斷方法的返回值為假。以上步驟(4)中在中斷運(yùn)行程序時(shí),在安全點(diǎn)中斷程序運(yùn)行。以上步驟(5)中,所述的相似粒是指兩個(gè)粒在其各自對(duì)應(yīng)的粒樹上的所有祖先 粒的層次結(jié)構(gòu)相同,且這兩個(gè)粒依附的類相同,同時(shí)這兩個(gè)粒對(duì)應(yīng)的上下文名稱和次序相 同。本發(fā)明具有以下幾點(diǎn)有益效果1)本發(fā)明用粒來指代那些適合性可度量的、可以被動(dòng)態(tài)替換的構(gòu)成程序的單位。 程序運(yùn)行時(shí)動(dòng)態(tài)監(jiān)測(cè)運(yùn)行中的程序的適合性,如果運(yùn)行中的程序出現(xiàn)了不適合現(xiàn)象,這些 不適合性被局部化到不適合的粒上面,從而用更適合的粒進(jìn)行替換,以達(dá)到改善程序適合 性的目標(biāo)。使得程序自動(dòng)演化成為適合當(dāng)前運(yùn)行環(huán)境的適合的版本。同時(shí)也避免了程序因 為隱含的適合性問題而導(dǎo)致的程序運(yùn)行出錯(cuò),并能延長(zhǎng)了程序的生命周期。2)本發(fā)明對(duì)于可重用性也提供了很大的支持,對(duì)于應(yīng)用領(lǐng)域的粒建立粒庫(kù),粒庫(kù) 中包含了適應(yīng)不同上下文、完成不同功能的粒。當(dāng)運(yùn)行程序中某個(gè)粒發(fā)生不適合時(shí),從粒庫(kù) 中選擇適合的粒,在執(zhí)行過程中替換發(fā)生不適合的粒。由于粒庫(kù)保存了該應(yīng)用領(lǐng)域所有演 化過程中的粒,這使得那些不適合當(dāng)前實(shí)際上下文而被替換的粒依然得到保存。并且在實(shí) 際上下文再次變化時(shí)可能被再次使用,因而程序的可重用性得到提高。3)本發(fā)明是對(duì)OOP (面向?qū)ο缶幊?的完善和補(bǔ)充,并不是對(duì)OOP方法的完全替 代,面向粒的程序構(gòu)建方法繼承了 OOP的優(yōu)點(diǎn),同時(shí)把程序運(yùn)行環(huán)境抽象為上下文變量,根 據(jù)上下文變量將程序分為相關(guān)和不相關(guān)部分,對(duì)相關(guān)部分通過追加粒來改進(jìn),通過粒的適 合性監(jiān)測(cè)和替換機(jī)制,使得程序的行為與實(shí)際上下文間動(dòng)態(tài)適應(yīng)。


圖1是面向粒的程序構(gòu)造方法流程圖;圖2是粒的構(gòu)成圖;圖3是粒庫(kù)中粒的加載運(yùn)行機(jī)制圖;圖4是相同種子的個(gè)體間相似粒替換展示圖。
具體實(shí)施例方式GOP思想目前實(shí)現(xiàn)為對(duì)Java語(yǔ)言的擴(kuò)展,稱作GranuleJ。GranuleJ里面,對(duì)象代 碼體現(xiàn)在Java類里面,粒體和影子類代碼遵循我們?cè)O(shè)計(jì)的語(yǔ)法語(yǔ)義規(guī)則。
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)描述參見圖1 面向粒的程序構(gòu)造方法的流程按照以下步驟(1)編寫GOP程序代碼所述的GOP程序是一個(gè)種子程序或個(gè)體程序;所述種子程序是一個(gè)不與任何上下文相關(guān)聯(lián)且不包含任何粒的程序,所述個(gè)體程序是一個(gè)與已有上下文相關(guān)聯(lián)的程序,個(gè)體 程序由種子程序和依附于種子程序的粒組成;步驟(1)涉及的GOP程序構(gòu)建方法的相關(guān)概念和具體內(nèi)容1)上下文上下文是對(duì)程序運(yùn)行環(huán)境的一種抽象描述??偟膩砜矗鉀Q領(lǐng)域問題時(shí)支持程序 的所有非功能性因素的綜合為該程序的上下文。上下文分為期望上下文和實(shí)際上下文。程序的期望上下文是該程序的理想的運(yùn)行 環(huán)境描述,一個(gè)程序在自己的期望上下文中總是適合的;實(shí)際上下文是程序?qū)嶋H運(yùn)行的環(huán) 境的描述。另一方面,影響到程序整體的外界系統(tǒng)的上下文稱為環(huán)境上下文,比如程序運(yùn)行 環(huán)境的硬件條件,網(wǎng)絡(luò)狀態(tài)等。而對(duì)于組成程序的各個(gè)模塊,不僅受環(huán)境上下文影響,還有 領(lǐng)域上下文作用在其上,領(lǐng)域上下文指軟件系統(tǒng)內(nèi)部所有與某個(gè)模塊交互的模塊的狀態(tài), 根據(jù)這些模塊的狀態(tài)當(dāng)前模塊可以有不同的表現(xiàn)。2)粒GOP領(lǐng)域里,構(gòu)成軟件系統(tǒng)的基本模塊包括粒。粒是能感知其生存的環(huán)境(即上下 文),并完成某個(gè)特定功能的、可單獨(dú)執(zhí)行、可動(dòng)態(tài)裝卸的代碼段。GOP最大的突破在于粒不 單純是完成特定功能的代碼塊,粒是與其期望上下文“共生”的功能塊。粒的期望上下文是 該程序的理想的運(yùn)行環(huán)境描述,一個(gè)粒在自己的期望上下文中總是適合的。粒不僅關(guān)心其 本身作為組成軟件系統(tǒng)的功能模塊,粒同時(shí)是與其期望的運(yùn)行環(huán)境,即我們提及的上下文 這些非功能因素緊密結(jié)合的。粒分為底層粒和高層粒底層粒是一個(gè)最小的粒單元,它不包含子粒,對(duì)于問題領(lǐng) 域來講它的執(zhí)行過程是透明的,是一步完成的、不可再分的,或者編程人員認(rèn)為該粒的所有 內(nèi)容對(duì)應(yīng)的上下文都是一致的。高層粒是由底層?;蛘吒邔恿Mㄟ^一定邏輯組合在一起 的,高層粒在不適合發(fā)生時(shí),可能不需要全部進(jìn)行替換,適合性監(jiān)測(cè)模塊會(huì)根據(jù)實(shí)際上下文 局部化到某個(gè)更低層的粒。參見圖2,粒210是GOP程序的一階實(shí)體,粒提供可以將程序功能代碼和其期望的 環(huán)境相關(guān)聯(lián)的方法,所以粒需要包括粒名220、類名230、粒體240和影子類250四部分內(nèi) 容。其中類名用來表明該粒所依附的類,將該類稱為粒的根類,粒處于OOP程序中類層次結(jié) 構(gòu)中的某個(gè)位置,粒依附于基本OOP程序中某個(gè)類,將該類稱為粒的根類。粒體是程序?qū)τ?程序運(yùn)行環(huán)境和適合性的關(guān)注,粒體中可以定義粒成員,在粒本身或影子類中可以使用,粒 體還必須包含一段適合性計(jì)算方法,方法中定義粒在何種環(huán)境中適合運(yùn)行、何種環(huán)境下不 適合,并返回真或假值,由GOP程序運(yùn)行環(huán)境獲取,根據(jù)獲取到的值決定該粒是否適合在當(dāng) 前上下文環(huán)境中運(yùn)行。所述影子類是對(duì)種子程序中與該影子類相同名字的類的改進(jìn),是在 不同上下文下類行為的不同體現(xiàn),并且只是在相應(yīng)粒體適合性判斷方法為真后才有效。當(dāng) 監(jiān)測(cè)到實(shí)際上下文與該粒中粒體所描述的粒的期望上下文適合時(shí),影子類發(fā)生作用,類的行為被改變。GOP并不破壞OOP對(duì)象的繼承、封裝和多態(tài)特性。粒體只是對(duì)所處環(huán)境的判斷,而 影子類在軟件系統(tǒng)中處于與類相同的位置,所有對(duì)象的行為都是封裝在對(duì)象內(nèi)部,也只使 用消息發(fā)送來與其他類的對(duì)象發(fā)生交互,只是在GOP中,一部分對(duì)象的行為可以在影子類 內(nèi)定義。多個(gè)??梢砸栏接陬悓哟沃型粋€(gè)類,彼此之間是獨(dú)立的,各個(gè)粒關(guān)注不同的上 下文,描述在不同上下文環(huán)境下類應(yīng)該表現(xiàn)出來的不同行為。同一個(gè)類和該類的各個(gè)粒體、 影子類構(gòu)成了不同的粒,這些??坍嬃送瓿上嗨乒δ艿膶?shí)體在不同上下文中不同的行為表 現(xiàn),這些?;シQ為相似粒。當(dāng)程序運(yùn)行時(shí)的上下文不斷發(fā)生改變、切換時(shí),某個(gè)粒發(fā)生了不 適合現(xiàn)象,可以使用其與當(dāng)前實(shí)際上下文適合的相似粒來替換當(dāng)前粒。??梢砸栏接陬悓哟谓Y(jié)構(gòu)中任何一個(gè)類而存在,類層次結(jié)構(gòu)可以看做一顆向下生 長(zhǎng)的樹,樹的根節(jié)點(diǎn)在Java中是Object類,樹結(jié)構(gòu)中上層類總是比下層類更抽象,越是處 于下層的類越具體,相應(yīng)地,根類位于上層的粒稱上層粒,根類位于較低層的粒稱下層粒, 由此形成粒之間的層次結(jié)構(gòu)。當(dāng)程序發(fā)生不適合時(shí),首先檢查最局部的粒是否適合,如果不 適合,替換最局部的粒,否則,檢查上層粒是否適合,依此類推。這樣,程序的不適合性總可 以局部化到最小,替換付出的代價(jià)也最小。3)種子程序,個(gè)體程序一個(gè)程序的適合性是指該程序的期望上下文與實(shí)際上下文之間的匹配程度。GOP 定義最初的程序?yàn)閭€(gè)體程序,種子程序是程序演化過程的起點(diǎn),此時(shí)程序中沒有粒體、影子 類等,并且程序的類層次是一個(gè)樹結(jié)構(gòu)。程序執(zhí)行中如果發(fā)現(xiàn)不適合的狀況,程序停止,程 序員針對(duì)不適合性編寫相應(yīng)粒體和影子類,稱加入了粒體和影子類后的程序?yàn)閭€(gè)體程序。 網(wǎng)絡(luò)環(huán)境中,多個(gè)虛擬機(jī)假設(shè)最開始運(yùn)行種子相同的程序,由于所處的具體環(huán)境不同,環(huán)境 的變化過程不同,所以不適合發(fā)生的原因和位置不同,依據(jù)GOP程序的演化機(jī)制,會(huì)在多個(gè) 虛擬機(jī)上產(chǎn)生不同的個(gè)體程序。雖然這些個(gè)體程序本身不相同,但是具有相同的種子程序。 當(dāng)不適合性在某個(gè)虛擬機(jī)上被發(fā)現(xiàn)時(shí),使用種子-個(gè)體關(guān)聯(lián)方法,可以在本地或別的虛擬 機(jī)上尋找種子程序相同的個(gè)體程序,進(jìn)一步尋找相似粒,將不適合局部化,替換最小的粒。(2)將編寫的GOP程序代碼通過編譯生成個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼 文件、影子類字節(jié)碼文件、個(gè)體配置文件以及該個(gè)體程序?qū)?yīng)的粒樹;將粒體字節(jié)碼文件和 影子類字節(jié)碼文件存入粒庫(kù),所述粒庫(kù)是一個(gè)保存了所有粒的存儲(chǔ)單元;目前實(shí)現(xiàn)的GranuleJ系統(tǒng)內(nèi)部,編譯器以粒體、影子類和類文件作為輸入,對(duì)粒、 影子類和類分別產(chǎn)生二進(jìn)制字節(jié)碼作為輸出,同時(shí)生成種子文件。由于GOP引入上下文變 量、粒體和影子類作為程序的一階實(shí)體,所以字節(jié)碼需要與標(biāo)準(zhǔn)Java不同,GOP系統(tǒng)設(shè)計(jì)了 粒體和影子類的字節(jié)碼,這些實(shí)體是標(biāo)準(zhǔn)Java虛擬機(jī)不能識(shí)別的。參照標(biāo)準(zhǔn)Java和GOP語(yǔ)義,對(duì)粒體和影子類分別設(shè)計(jì)字節(jié)碼結(jié)構(gòu)。粒體的字節(jié)碼 結(jié)構(gòu)如下表1所示,影子類的字節(jié)碼結(jié)構(gòu)如下表2所示表1粒體字節(jié)碼結(jié)構(gòu)Magic粒體文件魔數(shù),使GVM明白當(dāng)前加載的是粒體
Version版本信息
Constant—pool與類相同,該項(xiàng)存放了粒體中各種文字字符串、粒名、方
法名等常量
Access—flag指名了粒體的訪問標(biāo)志,粒體統(tǒng)一作為private處理
This—granule指向表示該粒體全限定名稱的字符串常量的指針
Super—Granule指向表示父粒體全限定名稱的字符串常量的指針
Root—class指向表示根類全限定名稱的字符串常量的指針
Fields粒體中聲明的字段,不包括粒體對(duì)應(yīng)的根類中的字段
Fitness—Method粒體中唯一的適合性判斷方法,返回值類型是boolean型
Attributes該粒體中所定義的屬性的基本信息表2影子類的字節(jié)碼結(jié)構(gòu)
.影子類字節(jié)碼結(jié)構(gòu)
項(xiàng)描述
Magic.影子類文件魔數(shù),使GVM明白當(dāng)前加載的是影子類
Version版本信息
Constantjool“存放了影子類中各種文字字符串、粒名、方法名等常量
Access_flag“指名了影子類的訪問標(biāo)志,影子類統(tǒng)一作為pnvate處理
ThiS_claSS.指向表示該影子類全限定名稱的字符串常量的指針
GranuleJn“指向表示影子類所在粒體全限定名稱的字符串常量的指針
Seed_class“指向表示種子類全限定名稱的字符串常量的指針
Fields.影子類新聲明的字段,不包括種子類和粒體中的字段
Methods“影子類中定義的方法
Attributes影子類中所定義的屬性的基本信息參考表1、表2 影子類字節(jié)碼中各項(xiàng)與粒中各項(xiàng)相似,不同之處在于,影子類不存 在superclass,此項(xiàng)始終為O。影子類字節(jié)碼中包含seed_class項(xiàng)來指向shadowclass的 禾中子類seedclass, granule項(xiàng)來指向shadowclass的相關(guān)粒granule。(3)通過個(gè)體樹加載運(yùn)行步驟(2)得到的個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼 文件和影子類字節(jié)碼文件,所述類字節(jié)碼文件、粒體字節(jié)碼文件和影子類字節(jié)碼文件運(yùn)行 在實(shí)際上下文下,所述實(shí)際上下文的取值實(shí)時(shí)變化;
(4)動(dòng)態(tài)實(shí)時(shí)監(jiān)測(cè)的運(yùn)行程序適合性,若發(fā)現(xiàn)不適合現(xiàn)象,中斷運(yùn)行程序,進(jìn)入步驟(5);若運(yùn)行程序因未引入的上下文而非正常終止,則進(jìn)入步驟(9),否則程序繼續(xù)運(yùn)行
直至結(jié)束;(5)從粒庫(kù)中查找相似粒,若找到相似粒則進(jìn)入步驟(6),若未找到相似粒進(jìn)入步 驟⑵;參考圖3 :G0P對(duì)于應(yīng)用領(lǐng)域的粒建立粒庫(kù)310,粒庫(kù)中包含了適應(yīng)不同上下文、 完成不同功能的粒210。步驟(2)生成的類、粒體和影子類字節(jié)碼和種子文件加載運(yùn)行,動(dòng) 態(tài)地監(jiān)測(cè)程序所處上下文的變化,實(shí)時(shí)地根據(jù)當(dāng)前實(shí)際上下文選擇適合的粒運(yùn)行,并在某 個(gè)粒發(fā)生不適合時(shí),從粒庫(kù)中選擇適合的粒320,構(gòu)建新的目標(biāo)類330,根據(jù)粒的根類信息 321,在執(zhí)行過程中替換相應(yīng)位置處331發(fā)生不適合的粒,使程序的生命周期延長(zhǎng)。(6)以查找或編寫的相似粒替換被中斷的運(yùn)行程序中不適合的粒,若相似粒替換 后滿足適合性,則進(jìn)入步驟(8),若相似粒替換后不滿足適合性,則進(jìn)入步驟(5);參考圖4 每一次粒的替換都形成新的個(gè)體程序410、411,這些個(gè)體程序的形態(tài)各 異,但都是從相同種子程序演化而來,由個(gè)體程序-種子程序關(guān)聯(lián)方法,可以在不同個(gè)體程 序間根據(jù)位置信息確定相似粒421、422。個(gè)體程序中包含許多粒,不同層次的相似粒之間可 以互相替換,由此會(huì)形成更多個(gè)體程序,這些個(gè)體程序被保存入粒庫(kù),以提高粒的復(fù)用性。(7)編寫新的包含相似粒的個(gè)體程序,并將新編寫的粒加入粒庫(kù),進(jìn)入步驟(6); 如果不編寫新的個(gè)體程序,進(jìn)入步驟(10);(8)演化成新的個(gè)體程序,被中斷的運(yùn)行程序結(jié)束中斷繼續(xù)運(yùn)行,進(jìn)入步驟(4);(9)引入新的上下文,編寫相應(yīng)的個(gè)體程序,進(jìn)入步驟(2),如果不編寫個(gè)體程序, 進(jìn)入步驟(10);(10)程序終止并且不能再運(yùn)行。綜上所述,GOP是對(duì)OOP的完善和補(bǔ)充,并不是對(duì)OOP方法的完全替代,GOP繼承了 OOP的優(yōu)點(diǎn),同時(shí)把程序運(yùn)行環(huán)境抽象為上下文變量,根據(jù)上下文變量將程序分為相關(guān)和不 相關(guān)部分,對(duì)相關(guān)部分通過追加粒來改進(jìn),通過粒的適合性監(jiān)測(cè)和替換機(jī)制,使得程序的行 為與實(shí)際上下文間動(dòng)態(tài)適應(yīng)。提高了代碼的復(fù)用性,有效延長(zhǎng)程序的生命周期。
權(quán)利要求
一種面向粒的程序構(gòu)造方法,其特征在于,按照以下步驟(1)編寫GOP程序代碼所述的GOP程序是一個(gè)種子程序或個(gè)體程序;所述種子程序是一個(gè)不與任何上下文相關(guān)聯(lián)且不包含任何粒的程序,所述個(gè)體程序是一個(gè)與已有上下文相關(guān)聯(lián)的程序,個(gè)體程序由種子程序和依附于種子程序的粒組成;(2)將編寫的GOP程序代碼通過編譯生成個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼文件、影子類字節(jié)碼文件、個(gè)體配置文件以及該個(gè)體程序?qū)?yīng)的粒樹;將粒體字節(jié)碼文件和影子類字節(jié)碼文件存入粒庫(kù),所述粒庫(kù)是一個(gè)保存了所有粒的存儲(chǔ)單元;(3)通過個(gè)體樹加載運(yùn)行步驟(2)得到的個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼文件和影子類字節(jié)碼文件,所述類字節(jié)碼文件、粒體字節(jié)碼文件和影子類字節(jié)碼文件運(yùn)行在實(shí)際上下文下,所述實(shí)際上下文的取值實(shí)時(shí)變化;(4)動(dòng)態(tài)實(shí)時(shí)監(jiān)測(cè)的運(yùn)行程序適合性,若發(fā)現(xiàn)不適合現(xiàn)象,中斷運(yùn)行程序,進(jìn)入步驟(5);若運(yùn)行程序因未引入的上下文而非正常終止,則進(jìn)入步驟(9),否則程序繼續(xù)運(yùn)行直至結(jié)束;(5)從粒庫(kù)中查找相似粒,若找到相似粒則進(jìn)入步驟(6),若未找到相似粒進(jìn)入步驟(7);(6)以查找或編寫的相似粒替換被中斷的運(yùn)行程序中不適合的粒,若相似粒替換后滿足適合性,則進(jìn)入步驟(8),若相似粒替換后不滿足適合性,則進(jìn)入步驟(5);(7)編寫新的包含相似粒的個(gè)體程序,并將新編寫的粒加入粒庫(kù),進(jìn)入步驟(6);如果不編寫新的個(gè)體程序,進(jìn)入步驟(10);(8)演化成新的個(gè)體程序,被中斷的運(yùn)行程序結(jié)束中斷繼續(xù)運(yùn)行,進(jìn)入步驟(4);(9)引入新的上下文,編寫相應(yīng)的個(gè)體程序,進(jìn)入步驟(2),如果不編寫個(gè)體程序,進(jìn)入步驟(10);(10)程序終止并且不能再運(yùn)行。
2.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(1)中,所述的上 下文是指支持程序的所有非功能性因素的綜合,上下文分為期望上下文和實(shí)際上下文,程 序的期望上下文是該程序的理想的運(yùn)行環(huán)境描述,一個(gè)程序在自己期望上下文中總是適合 的;實(shí)際上下文是程序?qū)嶋H運(yùn)行的環(huán)境的描述。
3.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(1)中,所述粒由 粒名、類名、粒體和影子類構(gòu)成,其中類名用來表明該粒所依附的類,將該類稱為粒的根類, 粒體用來指定粒的期望環(huán)境,粒體可以定義自身的成員并且粒體中必須包含一個(gè)適合性判 斷方法,適合性判斷方法返回真或假;所述影子類是對(duì)種子程序中與該影子類相同名字的 類的改進(jìn),是在不同上下文下類行為的不同體現(xiàn),并且只是在相應(yīng)粒體適合性判斷方法為 真后才有效。
4.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(2)中,所述的個(gè) 體配置文件記錄個(gè)體程序的類層次結(jié)構(gòu)以及各類依附的粒的XML文件。
5.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(2)中,所述的粒 樹反映個(gè)體程序所包含的粒和粒的層次的XML文件。
6.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(4)中,所述的不適合現(xiàn)象是指將要運(yùn)行的程序段所屬的粒的適合性判斷方法的返回值為假。
7.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(4)中在中斷運(yùn)行 程序時(shí),在安全點(diǎn)中斷程序運(yùn)行。
8.根據(jù)權(quán)利要求1所述的面向粒的程序構(gòu)造方法,其特征在于,步驟(5)中,所述的相 似粒是指兩個(gè)粒在其各自對(duì)應(yīng)的粒樹上的所有祖先粒的層次結(jié)構(gòu)相同,且這兩個(gè)粒依附 的類相同,同時(shí)這兩個(gè)粒對(duì)應(yīng)的上下文名稱和次序相同。
全文摘要
本發(fā)明公開了一種面向粒的程序構(gòu)造方法,該方法通過編寫GOP程序代碼并將該代碼通過編譯生成個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼文件、影子類字節(jié)碼文件、個(gè)體配置文件以及該個(gè)體程序?qū)?yīng)的粒樹;通過個(gè)體樹得到的個(gè)體程序的類字節(jié)碼文件、粒體字節(jié)碼文件和影子類字節(jié)碼文件。動(dòng)態(tài)實(shí)時(shí)監(jiān)測(cè)的運(yùn)行程序適合性,若發(fā)現(xiàn)不適合現(xiàn)象,則從粒庫(kù)中查找相似?;蛘呔帉懶碌牧<尤肓?kù),以查找或編寫的相似粒替換被中斷的運(yùn)行程序中不適合的粒。本發(fā)明的方法是在觀察程序的不適合性現(xiàn)象的基礎(chǔ)上提出的,引入粒作為系統(tǒng)的基本模塊,并將程序所處的上下文作為編程要素,通過動(dòng)態(tài)監(jiān)測(cè),動(dòng)態(tài)替換從而保證程序?qū)τ诃h(huán)境的適合性,有效延長(zhǎng)程序的生命周期。
文檔編號(hào)G06F9/45GK101819536SQ20101017283
公開日2010年9月1日 申請(qǐng)日期2010年5月14日 優(yōu)先權(quán)日2010年5月14日
發(fā)明者張長(zhǎng)軍, 曾慶花, 朱常鵬, 李聰, 王一群, 王妮, 趙銀亮, 鄭雙明 申請(qǐng)人:西安交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1