欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

組件式開(kāi)發(fā)的改進(jìn)的制作方法

文檔序號(hào):6476427閱讀:143來(lái)源:國(guó)知局
專利名稱:組件式開(kāi)發(fā)的改進(jìn)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及組件式開(kāi)發(fā)(CBD ),特別涉及使組件適合于在不同上下文使用 的新方法。
背景技術(shù)
在過(guò)去的十年間,信息技術(shù)產(chǎn)業(yè)領(lǐng)域的許多軟件系統(tǒng)已經(jīng)采用了組件式系 統(tǒng)(CBS)這一創(chuàng)新的系統(tǒng)架構(gòu),并相應(yīng)的采用了組件式開(kāi)發(fā)(CBD)的軟件 開(kāi)發(fā)過(guò)程,這一架構(gòu)和過(guò)程大大地減少了開(kāi)發(fā)的時(shí)間和成本。組件式系統(tǒng)由同 一團(tuán)隊(duì)或第三方公司開(kāi)發(fā),封裝了早先開(kāi)發(fā)知識(shí)和專門技術(shù)的資產(chǎn),使用可重 復(fù)使用的軟件組件進(jìn)行軟件系統(tǒng)的設(shè)計(jì)和構(gòu)建。組件式系統(tǒng)將軟件設(shè)計(jì)的重點(diǎn) 從軟件編程轉(zhuǎn)向了整合軟件系統(tǒng)。
"組件"是指可在不同軟件系統(tǒng)中重用的一部分代碼或程序。組件由它的 接口特性來(lái)說(shuō)明,可能包含了組件的語(yǔ)義、操作或邏輯約束,或組件的行為。 定義接口特性的數(shù)據(jù)被稱為"組件規(guī)范"。組件規(guī)范給出了組件的特性及在不同 上下文或用例場(chǎng)景下的適用性。
組件重用和無(wú)縫的系統(tǒng)連接的一個(gè)難點(diǎn)在于重用上下文的高度變化性。在 此,由數(shù)據(jù)模型的類型、組件將放置的系統(tǒng)架構(gòu)及企圖使用的程序特性來(lái)表示 組件使用的上下文。術(shù)語(yǔ)"上下文" 一詞不同于單一的用例場(chǎng)景,單一的用例 場(chǎng)景僅僅由組件將^f吏用的應(yīng)用程序類型來(lái)說(shuō)明。
組件式系統(tǒng)的基本原理在于組件是構(gòu)建應(yīng)用程序的獨(dú)立重用單元。然而, 目前,不經(jīng)改進(jìn)而可重復(fù)使用的組件不多。引起該問(wèn)題的原因舉例如下不完 整的組件規(guī)范、組件和包括應(yīng)用軟件架構(gòu)的重用上下文之間的錯(cuò)配、功能性需 求、軟硬件環(huán)境、質(zhì)量屬性以及其他相關(guān)的協(xié)作組件。為解決該問(wèn)題,有必要提供一種自動(dòng)化深度組件改進(jìn)技術(shù)。"深度"改迸意味著組件結(jié)構(gòu)的改進(jìn),也即 是超出組件基本的輸入輸出轉(zhuǎn)化的一種改進(jìn),依據(jù)改進(jìn)可將組件^L為一個(gè)"黑 匣子",無(wú)需了解組件的功能性知識(shí)。
多種改進(jìn)技術(shù)已被提出來(lái)了。它們中的第一項(xiàng)被稱為"組件定制,,,它適用 于簡(jiǎn)單層面的改進(jìn)。最終用戶可從一套預(yù)包裝在軟件組件包中的固定選項(xiàng)中定 制所需的軟件組件。組件應(yīng)當(dāng)可定制以適應(yīng)在重用過(guò)程中特定真實(shí)環(huán)境的需求。 很顯然,組件定制是整個(gè)組件重用過(guò)程中一項(xiàng)十分有效的工作,但那些組件需
要內(nèi)建一套特定的服務(wù)以實(shí)現(xiàn)定制的需求。
在另一項(xiàng)被稱為"活躍接口,,的改進(jìn)技術(shù)中,組件接口被定義為一系列端 口。該接口在幫助軟件開(kāi)發(fā)者進(jìn)行組件改進(jìn)時(shí)必然發(fā)揮更重要的作用。當(dāng)一個(gè) 方法被調(diào)用時(shí),組件的一個(gè)活躍接口可以通過(guò)編程來(lái)實(shí)現(xiàn)。由于一個(gè)端口與一 系列方法相關(guān)聯(lián),每個(gè)方法的請(qǐng)求也是對(duì)一個(gè)端口的請(qǐng)求。內(nèi)部組件接口由私 有的和受保護(hù)的方法組成。盡管某些內(nèi)部方法對(duì)于組件是私有的,它們?nèi)钥芍?持一個(gè)活躍接口并擁有他們自己的生命周期前后階段。然而,用這種方法展現(xiàn) 的組件內(nèi)部接口并不暴露它的實(shí)現(xiàn)過(guò)程。 '
如前所述,活躍接口機(jī)制被限制在標(biāo)準(zhǔn)接口界限內(nèi)改進(jìn)組件的行為。 一般 而言,組件的設(shè)計(jì)者可以建立特殊的端口,允許組件的策略決定被改進(jìn)。通過(guò) 這種方式,加強(qiáng)了組件接口,如同在眾所周知的開(kāi)放實(shí)現(xiàn)(由施樂(lè)公司的帕洛
阿爾托研究中心(PARC研究中心)提出)中,使得關(guān)鍵決定得以改進(jìn)?;?躍接口的改進(jìn)技術(shù)由組件仲裁器的內(nèi)部改進(jìn)機(jī)制所支持。這樣的仲裁器可以很 輕松地集成到任何組件中。
更常用的組件重用技術(shù)是組件封裝。例如,Microsoft .NET框架提供了一 個(gè)封裝工具(COM Wrapper)為開(kāi)發(fā)人員在.NET環(huán)境中封裝先前Windows組 件所使用。雖然適用于某些情況,但組件封裝在改進(jìn)組件時(shí)無(wú)疑產(chǎn)生了繁重的 代碼冗余,并時(shí)常使改進(jìn)組件和目標(biāo)系統(tǒng)性能下降。此外,組件封裝只能在非 常有限的范圍內(nèi)進(jìn)行組件接口的改進(jìn)。

發(fā)明內(nèi)容
從而,依然需要對(duì)組件式開(kāi)發(fā)領(lǐng)域進(jìn)行改進(jìn)。
本發(fā)明的第 一個(gè)方面提供了 一種軟件組件改進(jìn)的方法,其包括 從第 一組件中提取一個(gè)包含二進(jìn)制碼和元數(shù)據(jù)的組件規(guī)范; 建立一個(gè)上下文引導(dǎo)的改進(jìn)規(guī)范;
依照上下文51導(dǎo)的改進(jìn)規(guī)范及改進(jìn)規(guī)則來(lái)改進(jìn)至少第 一組件的 一部分; 以第一組件中改進(jìn)的和未改進(jìn)的部分為基礎(chǔ)生成改進(jìn)組件。 優(yōu)選地,該方法迸一步包括建立改進(jìn)規(guī)則的步驟。 優(yōu)選地,改進(jìn)規(guī)則從預(yù)定義的改進(jìn)規(guī)則集中篩選。
優(yōu)選地,當(dāng)一個(gè)選定的改進(jìn)被請(qǐng)求時(shí),上述改進(jìn)規(guī)則將被自動(dòng)觸發(fā),同時(shí) 上述改進(jìn)規(guī)則執(zhí)行一個(gè)改進(jìn)算法以產(chǎn)生一個(gè)或多個(gè)合成改進(jìn)。
優(yōu)選地,上述改進(jìn)算法被存儲(chǔ)于庫(kù)中,通過(guò)改進(jìn)規(guī)則調(diào)用。
優(yōu)選地,資格預(yù)審過(guò)程依據(jù)包括系統(tǒng)架構(gòu)、功能性和質(zhì)量屬性的系統(tǒng)需求 來(lái)選^t奪第一組件。
優(yōu)選地,改進(jìn)規(guī)則從庫(kù)中選才奪。
優(yōu)選地,庫(kù)擁有一個(gè)開(kāi)放的結(jié)構(gòu)。
優(yōu)選地,改進(jìn)失見(jiàn)則以組件式系統(tǒng)和組件的程序域知識(shí)或以應(yīng)用域知識(shí)為基 礎(chǔ)建立。
優(yōu)選地,組件改進(jìn)規(guī)則被綁定入組件改進(jìn)規(guī)則對(duì)象的二進(jìn)制類中。 優(yōu)選地,根據(jù)健康性條件檢查組件改進(jìn)的步驟,使其符合正確的操作。 優(yōu)選地,當(dāng)擬定改進(jìn)破壞了健康條件時(shí),系統(tǒng)向軟件開(kāi)發(fā)人員或用戶提出警告。
優(yōu)選地,健康性條件以組件式系統(tǒng)和組件的程序域知識(shí)或以應(yīng)用域知識(shí)為 基礎(chǔ)建立。
優(yōu)選地,生成一個(gè)依賴關(guān)系圖以描述改進(jìn)對(duì)于其它組件或同 一組件中其它
7部分的影響。
優(yōu)選地,在最終通過(guò)審核并使用前,根據(jù)提出的上下文引導(dǎo)的改進(jìn)規(guī)范檢 查突變式改進(jìn)的組件的適用性。
優(yōu)選地,該方法適用于.NET平臺(tái)中。
優(yōu)選地,組件規(guī)范包括組件的結(jié)構(gòu)和由功能性及服務(wù)質(zhì)量組成的語(yǔ)義。
優(yōu)選地,第一組件的骨架由第一組件的類型,類,方法特征符創(chuàng)建,骨架 中不包含方法體。
優(yōu)選地,改進(jìn)規(guī)則對(duì)象被應(yīng)用于改進(jìn)相關(guān)改進(jìn)組件的方法體。
優(yōu)選地, 一個(gè)改進(jìn)組件的骨架由改進(jìn)的或插入的方法體或方法體的部分所 構(gòu)成,用于建立改進(jìn)組件。
優(yōu)選地,該方法適用于JAVA平臺(tái)。
優(yōu)選地,組件改進(jìn)在源^a碼層執(zhí)行。
優(yōu)選地,^是取和改進(jìn)的組件規(guī)范采用XML4各式。
優(yōu)選地,組件改進(jìn)在二進(jìn)制碼層扭J亍。
優(yōu)選地,組件少見(jiàn)范包括組件的JVM 二進(jìn)制碼和Java元數(shù)據(jù)。
優(yōu)選地,組件規(guī)范包括組件的結(jié)構(gòu)和接口的簡(jiǎn)要規(guī)范。
優(yōu)選地,Java的字節(jié)碼引擎類庫(kù)據(jù)上下文改進(jìn)規(guī)則定義的改進(jìn)規(guī)則實(shí)例改 進(jìn)組件的二進(jìn)制碼。
本發(fā)明的第二方面提供了 一種生成改進(jìn)組件的工具,其包括
從一個(gè)第 一組件中提取組件規(guī)范的裝置;
建立和/或編輯上下文引導(dǎo)的改進(jìn)M^范的裝置;
依照上下文引導(dǎo)的改進(jìn)規(guī)范及改進(jìn)規(guī)則來(lái)改進(jìn)至少第 一組件的一部分的裝
置;
以第一組件的改進(jìn)的和非改進(jìn)的部分為基礎(chǔ)生成改進(jìn)組件的裝置。 優(yōu)選地,該工具進(jìn)一步包括一個(gè)改進(jìn)規(guī)則提取器,用以創(chuàng)建和編輯改進(jìn)規(guī)則。 優(yōu)選地,該工具進(jìn)一步包括一個(gè)開(kāi)放結(jié)構(gòu)的改進(jìn)規(guī)則庫(kù)。優(yōu)選地,該工具進(jìn)一步包括一個(gè)類庫(kù)生成器,用以自動(dòng)生成改進(jìn)規(guī)則庫(kù)的類庫(kù)。
優(yōu)選地,該工具進(jìn)一步包括一個(gè)組件規(guī)范(cs)瀏覽器工具,用以對(duì)組件
的結(jié)構(gòu)進(jìn)行導(dǎo)航。
優(yōu)選地,組件規(guī)范瀏覽器中的依賴關(guān)系圖顯示了組件和/或改進(jìn)規(guī)則實(shí)例之 間的依賴關(guān)系。 優(yōu)選地,該工具纟皮改進(jìn)用以第一方面的方法的實(shí)現(xiàn)。 根據(jù)進(jìn)一 步的方面,提供了 一個(gè)包括第二方面的工具的計(jì)算機(jī)程序產(chǎn)品。


在此,將以實(shí)例的方法介紹本發(fā)明,并附以下參考圖進(jìn)行說(shuō)明 圖1根據(jù)本發(fā)明的一方面,描迷上下文引導(dǎo)的規(guī)則驅(qū)動(dòng)的突變式組件改進(jìn) 的過(guò)程;
圖2根據(jù)本發(fā)明的一方面,描述自動(dòng)實(shí)現(xiàn)改進(jìn)機(jī)制的組件改進(jìn)工具的系統(tǒng)架
構(gòu);
圖3根據(jù)本發(fā)明的一方面,描述在.NET框架中實(shí)際突變式組件的改進(jìn)實(shí)現(xiàn) 過(guò)程;
圖4根據(jù)本發(fā)明的一方面,描述在Java環(huán)境下實(shí)際突變式組件的改進(jìn)實(shí)現(xiàn) 過(guò)程;以及
圖5根據(jù)本發(fā)明的一方面,描述了改進(jìn)規(guī)則庫(kù)、自動(dòng)綁定和改進(jìn)規(guī)則應(yīng)用程序。
具體實(shí)施例方式
下面將闡述本發(fā)明的方法和裝置。 一種新的不附加額外代碼冗余、并對(duì)基于 組件的目標(biāo)系統(tǒng)不產(chǎn)生性能退化的生成組件改進(jìn)方法。
在此提出了三項(xiàng)關(guān)鍵技術(shù)上下文引導(dǎo)的改進(jìn)規(guī)范(COAS),自動(dòng)改進(jìn)規(guī)則及相應(yīng)的開(kāi)放結(jié)構(gòu)庫(kù),以及規(guī)則驅(qū)動(dòng)的組件改進(jìn)和生成引擎。
組件改進(jìn)和生成可包含一個(gè)獨(dú)立的組件改進(jìn)《I擎及組件生成引擎。組件改進(jìn) 引擎及組件生成引擎可被統(tǒng)一到同一工具中,同時(shí)分別執(zhí)行不同的邏輯功能。 他們通常會(huì)被視為獨(dú)立的組件,由于本應(yīng)用程序使用的圖表目的是作為邏輯圖, 而不是表述任何特定系統(tǒng)的物理結(jié)構(gòu)。因此,提到"組件改進(jìn)和生成引擎"一 般意味著改進(jìn)或生成功能的其一或全部,除非上下文另有描述說(shuō)明。
"規(guī)則"管理自動(dòng)化過(guò)程;它們協(xié)助組成上下文引導(dǎo)的改進(jìn)規(guī)范(COAS )。 規(guī)則存儲(chǔ)于一個(gè)開(kāi)放的結(jié)構(gòu)庫(kù)中,使得開(kāi)發(fā)者可對(duì)其進(jìn)行完善及添加。規(guī)則包 括一個(gè)推論,即它的一^:結(jié)構(gòu)是"A意味著B "。然而,在這里,規(guī)則不同于 推理規(guī)則在其他軟件工程領(lǐng)域(如商業(yè)規(guī)則引擎)中的應(yīng)用,因?yàn)樵谶@種場(chǎng)合 下, 一條規(guī)則也可能會(huì)要求用戶確認(rèn)輸出結(jié)果。
規(guī)則可基于組件式系統(tǒng)一^:性的程序域知識(shí)或來(lái)源于開(kāi)發(fā)者所在應(yīng)用域知 識(shí)。基于一般程序域知識(shí)的規(guī)則可應(yīng)用于交叉領(lǐng)域,但依然需要由特定開(kāi)發(fā)者 來(lái)進(jìn)行改進(jìn)或添加。
改進(jìn)規(guī)則包括三個(gè)主要方面。首先, 一個(gè)特定的改進(jìn)被定義為觸發(fā)規(guī)則的應(yīng) 用程序。當(dāng)這種改進(jìn)作為需求改進(jìn)輸入時(shí),規(guī)則將自動(dòng)被觸發(fā)。其次,改進(jìn)算 法描述了所要求的改進(jìn)可能會(huì)在組件上產(chǎn)生的結(jié)果。第三,改進(jìn)規(guī)則介紹了一 套由規(guī)則的應(yīng)用程序所實(shí)現(xiàn)的改進(jìn)結(jié)果。
所需的和所產(chǎn)生的改進(jìn)被描述為使用相同的XML語(yǔ)義,用于儲(chǔ)存建立自身 的上下文引導(dǎo)的改進(jìn)規(guī)范(COAS)的清單。
在一個(gè)具體實(shí)施例中,使用的改進(jìn)算法并不完全定義為改進(jìn)規(guī)則的一部分, 而是存儲(chǔ)于庫(kù)中。該規(guī)則包括了從庫(kù)中調(diào)用的改進(jìn)算法的名稱和任何需要的參 數(shù),以及是否應(yīng)該提示用戶確認(rèn)每個(gè)觸發(fā)的改進(jìn)。增加了新的算法需要手動(dòng)編 程,但系統(tǒng)可以被設(shè)計(jì)為幫助減輕這一工作,總體目的是將同樣的算法使用在 多個(gè)不同的MJ'j中。
當(dāng)開(kāi)發(fā)者開(kāi)始^f吏用該工具時(shí),它已經(jīng)包括了一套常用的算法(和一套以程序域知識(shí)為基礎(chǔ)的規(guī)則)。許多算法將利用組件(或多個(gè)組件)的依賴關(guān)系圖作為 組件開(kāi)發(fā)的基礎(chǔ),這是一個(gè)由工具建立的組件結(jié)構(gòu)模型(見(jiàn)下文)。
以下是一則實(shí)例,在這一實(shí)例中,描述了一則程序域知識(shí)如何來(lái)定義規(guī)則。
實(shí)例
該工具可能會(huì)允許在組件內(nèi)修改方法的訪問(wèn)性/可見(jiàn)性。程序員可能希望在 再工程化組件的過(guò)程中限制某個(gè)方法的可見(jiàn)性。我們知道,如果通過(guò)使其變?yōu)?"私有"屬性來(lái)限制訪問(wèn),那么該方法的所有外部調(diào)用都將被移除。這是眾所 周知的。MJ'j的第一個(gè)方面如下 <RequiredEvolution> <ModifyMemberAccess> 〈TypeName〉 * </TypeName> <MemberName> * </MemberName> <MemberAccess>Private</MemberAccess> </ModifyMemberAccess> </RequiredEvolution>
匹配'RequiredEvolution '標(biāo)簽內(nèi)容的修改將觸發(fā)規(guī)則的應(yīng)用程序(星號(hào)在匹 配時(shí)代表通配符,而且還表示這些空格中的值需要被輸入進(jìn)算法使用)。下面介 紹了該算法的使用和規(guī)則觸發(fā)改進(jìn)的設(shè)置
<Algorithm prompt="true">
<ForEachMethodInBackwardSlice scope="externar> <RemoveMember>
<TypeName>TYPENAME</TypeName>
<MemberName>METHODNAME</MemberName>
</HemoveMember>
</ForEachMethodInBackwardSlice>
</Algorithm>
'ForEachMethodlnBackwardsSlice'是算法的名稱,該算法還有一個(gè)叫"范圍" 的參數(shù)。它是基于依賴關(guān)系圖使用的算法之一。多個(gè)"類別名稱,,和"方法名稱"對(duì)是算法的輸出,這些是用來(lái)生成改進(jìn)結(jié)果的。因此,在形成上下文引導(dǎo)
的改進(jìn)規(guī)范(COAS)的同時(shí),如果方法的訪問(wèn)受限,那么該工具將知道外部 方法的調(diào)用應(yīng)該被移除。如果算法的提示屬性被設(shè)為True,那么用戶將被提示 確i人這些變4匕。 實(shí)例結(jié)束
以下有兩種類型的改進(jìn)規(guī)則原子改迸規(guī)則和復(fù)合改進(jìn)規(guī)則。 一套原子改進(jìn) 規(guī)則是基于被提取組件和組件式系統(tǒng)上的程序域知識(shí)而制定的。復(fù)合改進(jìn)規(guī)則 是一個(gè)原子改進(jìn)規(guī)則支持特定域改進(jìn)的組合。復(fù)合改進(jìn)規(guī)則適用于應(yīng)用域知識(shí), 并生成用戶可擴(kuò)展的改進(jìn)規(guī)則庫(kù),支持在特定的商業(yè)領(lǐng)域改進(jìn)的重用。
原子改進(jìn)規(guī)則
<formula>formula see original document page 12</formula><Specific healthiness conditions>
</Specific healthiness conditions> </Algorithm > 復(fù)合改進(jìn)規(guī)則 XML實(shí)現(xiàn)
<Applicable evolution context〉
</ Applicable evolution context〉 < Evolution rules to apply〉
<Atomic evolution rule 1〉
</Atomic evolution rule 1>
< Atomic evolution rule 2>
</Atomic evolution rule 2>
<Atomic evolution rule n>
</Atomic evolution rule n> </ Evolution rules to apply>
涵蓋了其系統(tǒng)架構(gòu)和特點(diǎn),組件和組件式系統(tǒng)中的軟件程序域知識(shí)被提取和 應(yīng)用在新的基于組件的開(kāi)發(fā)(CBD)工具中,作為改進(jìn)算法或改進(jìn)規(guī)則來(lái)自動(dòng) 執(zhí)行生成組件改進(jìn)過(guò)程。這樣,組件改進(jìn)知識(shí)可像它本身一樣被重復(fù)使用。改 進(jìn)知識(shí)與改進(jìn)規(guī)則和改進(jìn)算法一同被獲取。改進(jìn)算法控制整個(gè)改進(jìn)過(guò)程,并被 內(nèi)建在組件改進(jìn)和生成引擎中。改進(jìn)規(guī)則是特定改進(jìn)知識(shí)的提煉。在一個(gè)特定 改進(jìn)上下文中的實(shí)例, 一個(gè)改進(jìn)規(guī)則可以創(chuàng)造出一系列的改進(jìn)規(guī)則實(shí)例,其中 每個(gè)實(shí)例都是改進(jìn)規(guī)則重用的例子。高層的程序域知識(shí)整體控制生成改進(jìn)過(guò)程,它^皮模式化成為改進(jìn)算法并通過(guò) 一個(gè)組件改進(jìn)和生成引擎使用,同時(shí),低層更具體的知識(shí)被提取到改進(jìn)規(guī)則中。
一個(gè)可擴(kuò)展的改進(jìn)規(guī)則庫(kù)被設(shè)置為可存儲(chǔ)重用改進(jìn)規(guī)則。應(yīng)用域知識(shí)也可被 模式化為改進(jìn)規(guī)則模型并存儲(chǔ)在改進(jìn)規(guī)則庫(kù)中。庫(kù)作為 一種支持典型的現(xiàn)有改 進(jìn)知識(shí)重用的方法,它擁有一個(gè)開(kāi)放的架構(gòu)并可存儲(chǔ)新開(kāi)發(fā)的改進(jìn)規(guī)則。自動(dòng)
件改進(jìn)和生成引擎中。任何組件改進(jìn)庫(kù)的更新都將觸發(fā)改進(jìn)規(guī)則庫(kù)的重新綁定, 以保持一致性。
一系列健康性條件是保證改進(jìn)組件有效性的必要工具,例如,保持組件在功 能和非功能性方面的連貫性。一系列健康性條件是保證改進(jìn)有效性的必要工具。 在改進(jìn)過(guò)程中, 一個(gè)健康性條件是決不能被違反的。組件元素間的依賴關(guān)系圖 被生成,包括其類型,方法和子組件。根據(jù)依賴和健康性條件,機(jī)制決定是否 該改進(jìn)規(guī)則實(shí)例能夠有效執(zhí)行,以及是否改進(jìn)規(guī)則將被觸發(fā),以保證維持受到 影響的組件部分和相關(guān)組件的 一致性。
一個(gè)步驟用以生成改進(jìn)預(yù)審資格的組件來(lái)消除找到的組件與特定重用上下 文之間的錯(cuò)配,首先包括一個(gè)根據(jù)改進(jìn)需求和提取的改進(jìn)規(guī)范組成的上下文引
導(dǎo)的改進(jìn)規(guī)范(COAS)。上下文引導(dǎo)的改進(jìn)規(guī)范包括了環(huán)境、需求功能和質(zhì)量
屬性以及方法在內(nèi)的改進(jìn)上下文作為 一套相關(guān)聯(lián)的改進(jìn)規(guī)則實(shí)例。組件改進(jìn)虧1
擎將上下文引導(dǎo)的改進(jìn)規(guī)范(COAS)作為它的輸入。上下文引導(dǎo)的改進(jìn)規(guī)范
是貫穿整個(gè)組件改進(jìn)和生成工作過(guò)程中最基本的控制文件,它可在XML架構(gòu)
中^l行,例如
<COAS> <Aimed context>
Context definition in text or ontological language </Aimed context> < Evolution rules to be applied>
<Instance of evolution rule 1></Instance of evolution rule 1> < Instance of evolution rule 2>
</Instance of evolution rule 2>
< Instance of evolution rule n>
</Instance of evolution rule n> </COAS>
一個(gè)改進(jìn)規(guī)則實(shí)例通過(guò)集成目標(biāo)改進(jìn)的上下文內(nèi)容,從改進(jìn)MJ'j庫(kù)的改進(jìn)步見(jiàn) 則得到。該方法還可通過(guò)改進(jìn)引擎來(lái)改進(jìn)組件代碼,將上下文引導(dǎo)的改進(jìn)規(guī)范 作為指定的輸入。最終的方法通過(guò)集成已改進(jìn)部分和組件代碼中原始的未變化 部分生成目標(biāo)組件。
圖1描述了一個(gè)方法的實(shí)體及組件改進(jìn)系統(tǒng)的實(shí)例。組件庫(kù)10存儲(chǔ)了可重 用的組件及它們的組件規(guī)范(CS)、缺省的改進(jìn)上下文及原始的組件代碼。改 進(jìn)需求和重用上下文12^皮輸入至一個(gè)組件識(shí)別組件14,它詢問(wèn)組件庫(kù)10并乂人 庫(kù)中選擇一個(gè)符合改進(jìn)要求及重用上下文的組件。這一組件是被識(shí)別組件16。 從庫(kù)10中選擇^R識(shí)別組件16是基于系統(tǒng)架構(gòu)、功能性及^^務(wù)質(zhì)量而獲得的。 被識(shí)別組件16由原始代碼組成。
然后,為實(shí)現(xiàn)新系統(tǒng)的需求或完美匹配重用上下文,被識(shí)別組件16需要進(jìn) 行改進(jìn)。第一步,定義一個(gè)上下文引導(dǎo)的改進(jìn)規(guī)范(COAS)。這一規(guī)范的合成 工具18由程序設(shè)計(jì)者定義為交互式改進(jìn)任務(wù)集合。它們與重用上下文一起被記 錄在上下文引導(dǎo)的改進(jìn)規(guī)范的對(duì)象20中。換言之,上下文引導(dǎo)的改進(jìn)規(guī)范包 含重用上下文的描述,它包括了需求功能、環(huán)境,例如軟件平臺(tái)和硬件平臺(tái)、 以及質(zhì)量屬性和一系列相關(guān)適用的改進(jìn)規(guī)則的實(shí)例22 (下文將進(jìn)行史詳細(xì)的討 論)。從應(yīng)用域知識(shí)和組件及組件式系統(tǒng)的程序域知識(shí)中提取的改進(jìn)算法和健康 性條件應(yīng)用于上下文引導(dǎo)的改進(jìn)規(guī)范生成的整個(gè)過(guò)程,以保證改進(jìn)的正確性和 改進(jìn)組件的連續(xù)性。組件的開(kāi)發(fā)者可定義一 系列默認(rèn)的改迸上下文以涵蓋典型 改進(jìn)過(guò)程。這些默認(rèn)的改進(jìn)上下文可作為模板來(lái)建立新的上下文引導(dǎo)的改進(jìn)規(guī)范。
改進(jìn)MJ'J實(shí)例22與當(dāng)前的目標(biāo)改進(jìn)上下文集成,選自改進(jìn)MJ'J庫(kù)24。由改 進(jìn)引擎(稍后描述)提供的組件改進(jìn)過(guò)程26/人^l識(shí)別組件16和適用的上下文 引導(dǎo)的改進(jìn)規(guī)范20中接收原始代碼作為輸入,并用于生成改進(jìn)代碼28。
為了保證改進(jìn)組件的有效性(對(duì)于確保一致性十分重要),健康性條件從程 序域知識(shí)32和應(yīng)用域知識(shí)34中生成。健康性條件的有效性必須在組件被;現(xiàn)為 有效改進(jìn)前得到確認(rèn)。執(zhí)行改進(jìn)過(guò)程的改進(jìn)引擎26被設(shè)計(jì)為保證健康性條件在 改進(jìn)過(guò)程中決不被違反。
一個(gè)描述組件各元素,包括它的類別、方法和子組件之間關(guān)系的依賴關(guān)系圖 由執(zhí)行改進(jìn)過(guò)程的組件改進(jìn)引擎26生成。
依賴關(guān)系圖模式化了軟件中各個(gè)部分的調(diào)用關(guān)系。依賴關(guān)系圖的使用可追溯 至1984年(K. Ottenstein和L. Ottenstein在ACM IGSOFT/SIGPLAN軟件工程 研討會(huì)公報(bào)中關(guān)于實(shí)用軟件開(kāi)發(fā)環(huán)境的"軟件開(kāi)發(fā)環(huán)境中的程序依賴關(guān)系圖" 177-184頁(yè),1984 。)在當(dāng)時(shí),過(guò)程性開(kāi)發(fā)是軟件開(kāi)發(fā)的主導(dǎo)方式。由于過(guò) 程式開(kāi)發(fā)只由子程序組成,完整的過(guò)程開(kāi)發(fā)依賴關(guān)系圖也就是子程序的調(diào)用關(guān) 系圖。
然而,對(duì)于使用面向?qū)ο缶幊痰默F(xiàn)代軟件,情況則更為復(fù)雜。例如,見(jiàn)文章 "Java系統(tǒng)依賴關(guān)系圖,,(Walkinshaw, N. Roper, M. Wood, M.第三次 IEEE國(guó)際源碼分析和操作專題討論會(huì)公報(bào),2003.)。正如在此文中所說(shuō),Java 程序完整的依賴關(guān)系圖由四個(gè)相關(guān)交迭的關(guān)系圖組成方法依賴關(guān)系圖(等同 于調(diào)用關(guān)系圖),類依賴關(guān)系圖,接口依賴關(guān)系圖和包依賴關(guān)系圖。
可視化的依賴關(guān)系圖是幫助理解代碼的一個(gè)有效手段,有時(shí)甚至在軟件再工程化任務(wù)中起到相當(dāng)重要的作用。本發(fā)明的工具幫助用戶分別查看依賴關(guān)系圖 不同部分的細(xì)節(jié)(例如類依賴關(guān)系圖或方法依賴關(guān)系圖),而非一次性提供用戶 過(guò)多的信息。 '
在數(shù)學(xué)方面,依賴關(guān)系圖是一個(gè)有向圖。此外,類依賴關(guān)系圖是一個(gè)無(wú)環(huán)有
向圖。普通的用戶界面組件已經(jīng)包括查看和瀏覽一個(gè)無(wú)環(huán)圖、樹(如在Windows 資源管理器左邊的"文件夾"面板)。如果有任何軟件遞歸調(diào)用(幾乎可以肯定 會(huì)有一些),那么該依賴關(guān)系圖的方法將包含一個(gè)調(diào)用周期,而且并不太適合顯 示在樹中。然而,其他可視化技術(shù)可使用在無(wú)環(huán)圖中,如節(jié)點(diǎn)鏈接圖表。
依賴關(guān)系的可視化表現(xiàn)形式同樣包含了依賴種類的其它信息,和/或是否對(duì) 該部分實(shí)施任何的修改。通過(guò)與依賴關(guān)系圖的可視化直接交互,將可能使用戶 實(shí)現(xiàn)一些改進(jìn)。
如上所述,已經(jīng)有兩個(gè)領(lǐng)域的知識(shí)被識(shí)別, 一個(gè)程序域知識(shí),另一個(gè)是基于 開(kāi)發(fā)者工作領(lǐng)域的應(yīng)用域知識(shí)(例如,電子商務(wù))。依賴關(guān)系圖是一種程序域知 識(shí),但他們應(yīng)用了基于改進(jìn)的更抽象的規(guī)則。例如,在改進(jìn)規(guī)則上下文中,我 們可以考慮一個(gè)"當(dāng)通過(guò)使其私有化的方法限制公共訪問(wèn),那么所有該方法的 外部調(diào)用將被移除"的規(guī)則。依賴關(guān)系圖使我們能夠識(shí)別這些外部調(diào)用所處的 位置。此外,移除這些外部調(diào)用本身將對(duì)使用他們的部分代碼產(chǎn)生影響。這僅 僅是一則應(yīng)用依賴關(guān)系圖類型的實(shí)例。
因此,依賴關(guān)系圖可以被用來(lái)提醒用戶,如果他們要破壞組件的完整性,例 如,移除被另一部分所使用的一部分。依賴關(guān)系圖的顯示改進(jìn)了開(kāi)發(fā)者對(duì)"代 碼的理解"——任何在軟件再工程過(guò)程中重要和費(fèi)時(shí)的部分(包括組件改進(jìn))。 在用戶界面顯示依賴關(guān)系圖提高了用戶對(duì)于組件的理解。
根據(jù)依賴和健康性條件,改進(jìn)過(guò)程26決定改進(jìn)規(guī)則實(shí)例22是否有效被執(zhí)行, 以及進(jìn)一步判斷改進(jìn)規(guī)則22是否被觸發(fā),以保證受影響的組件部分及其它相關(guān) 組件的一致性。
下一個(gè)階^a是組件生成38,由下述一個(gè)適當(dāng)?shù)纳梢嫠せ?。改進(jìn)組件的目標(biāo)組件代碼40基于改進(jìn)代碼28和從組件庫(kù)10中提取的原始組件代碼42 的集合生成。此后,目標(biāo)組件代碼40通過(guò)一個(gè)校驗(yàn)過(guò)程44以檢驗(yàn)其在當(dāng)前重 用上下文中的適用性。.如果目標(biāo)組件代碼40不符合,則上下文引導(dǎo)的改進(jìn)規(guī) 范(COAS)將進(jìn)一步完善使更適合的組件被改進(jìn)和生成以達(dá)到開(kāi)發(fā)者滿意的 效果。在這一階段校驗(yàn)組件可被集成到一個(gè)應(yīng)用程序或一個(gè)更大的組件46中, 它會(huì)在發(fā)布至最終用戶前進(jìn)行一次最終的測(cè)試。
改進(jìn)規(guī)則庫(kù)24和組件改進(jìn)及生成引擎都擁有開(kāi)放式架構(gòu)。更多的改進(jìn)規(guī)則 可從應(yīng)用域知識(shí)34或與組件和組件式系統(tǒng)相關(guān)的程序域知識(shí)32中提取,然后 通過(guò)改進(jìn)規(guī)則提取器30裝配到改進(jìn)規(guī)則庫(kù)24中。這就提供了通過(guò)將新的改進(jìn) 算法知識(shí)模式化并插入組件改進(jìn)和生成引擎中將高層次新發(fā)現(xiàn)的程序域知識(shí) 32或應(yīng)用域知識(shí)34應(yīng)用于系統(tǒng)中的可能性。盡管一個(gè)開(kāi)發(fā)式架式由組件改進(jìn) 和生成引擎提供,改進(jìn)算法的提取和插入仍需要大量的來(lái)自軟件開(kāi)發(fā)者的介入。
圖1的過(guò)程由一個(gè)合適的改進(jìn)工具激活。這一合適工具的實(shí)體顯示于圖2 中。這一規(guī)則驅(qū)動(dòng)的智能系統(tǒng)目的旨在減少組件改進(jìn)的復(fù)雜性和難度,以便在 進(jìn)程和組件間進(jìn)行區(qū)分。
本工具的架構(gòu)由三部分組成組件分析,組件改進(jìn)和組件生成。
在本工具中,上下文引導(dǎo)的改進(jìn)規(guī)范(COAS)被定義在一個(gè)基于XML的 規(guī)范語(yǔ)言中。整個(gè)生成組件改進(jìn)過(guò)程由改進(jìn)和生成引擎中內(nèi)建的改進(jìn)算法控制, 由上下文引導(dǎo)的改進(jìn)規(guī)范指揮,作為輸入提供。組件規(guī)范(CS)是XML中組 件的接口和架構(gòu)的規(guī)范,它由組件規(guī)范提取器50自動(dòng)提取并顯示在組件規(guī)范瀏
覽器52中。
一個(gè)組件規(guī)范提取器50從組件的元數(shù)據(jù)中生成一個(gè)組件規(guī)范,同時(shí)組件規(guī) 范瀏覽器52可令組件開(kāi)發(fā)者54或軟件開(kāi)發(fā)者56查看組件規(guī)范,給開(kāi)發(fā)者提供 關(guān)于接口架構(gòu)和組件邏輯過(guò)程的知識(shí)。組件改進(jìn)MJ'J存^f諸在改進(jìn)MJ'J庫(kù)60中。 改進(jìn)規(guī)則是組件改進(jìn)已知規(guī)則的正式定義,它由提取器組件62從組件和組件式 系統(tǒng)的程序域知識(shí)64及應(yīng)用域知識(shí)66中才是取。改進(jìn)4壬務(wù)由一組改進(jìn)MJJ'j實(shí)例標(biāo)改進(jìn)上下文中特定的改進(jìn)規(guī)則的實(shí)例。改進(jìn)規(guī)范定義
了目標(biāo)改進(jìn)上下文以及被識(shí)別組件68是什么、在哪里以及如何被改進(jìn)的信息。 被識(shí)別組件68擁有它自己的由組件規(guī)范提取器50提取的組件規(guī)范58。組件改 進(jìn)引擎70通知組件生成引擎72如何通過(guò)向其提供改進(jìn)代碼74來(lái)重組組件。改 進(jìn)組件74和76的變化部分將與識(shí)別組件68的未變化部分(即組件68的源^ 碼)集成。
本工具支持動(dòng)態(tài)和擴(kuò)展的組件改進(jìn)規(guī)則。改進(jìn)規(guī)則庫(kù)生成器78映射了一張 從改進(jìn)規(guī)則庫(kù)60提取的改進(jìn)規(guī)則圖到二進(jìn)制類80中,這個(gè)映射關(guān)系可通過(guò)組 件改進(jìn)引擎70訪問(wèn)。軟件開(kāi)發(fā)者66可從他們的專業(yè)領(lǐng)域的應(yīng)用域知識(shí)或他們 的組件或組件式系統(tǒng)中的程序域知識(shí)中提取更多的改進(jìn)規(guī)則。這些新的規(guī)則通 過(guò)改進(jìn)規(guī)則提取器62存放于庫(kù)60中。
將新發(fā)現(xiàn)的高級(jí)程序域知識(shí)64或應(yīng)用域知識(shí)66作為新的改進(jìn)算法建模并將 其插入組件改進(jìn)引擎70中可能會(huì)更加合適。這一過(guò)程由改進(jìn)算法提取器82支 持。不過(guò),它常常是通過(guò)手動(dòng)來(lái)處理。
軟件開(kāi)發(fā)者56和工具間的接口包括一個(gè)上下文引導(dǎo)的改進(jìn)規(guī)范生成器84 和一個(gè)組件規(guī)范瀏覽器52。上下文引導(dǎo)的改進(jìn)規(guī)范生成器接受改進(jìn)算法和健康 性條件,在建立正確的上下文引導(dǎo)的改進(jìn)規(guī)范時(shí)使用。對(duì)于軟件開(kāi)發(fā)者而言, 改進(jìn)一個(gè)組件等同于完成一個(gè)改進(jìn)規(guī)范文檔。這樣,改進(jìn)組件可在無(wú)需更多用 戶干預(yù)的情況下被自動(dòng)地生成。
由于不同的組件模型都擁有他們各自的執(zhí)行結(jié)構(gòu),本工具可在.NET和Java 平臺(tái)中執(zhí)行。在任一環(huán)境中,本工具由以下部分組成l)一個(gè)組件規(guī)范提取器, 用以從被識(shí)別組件中提取組件規(guī)范,也就是它們的二進(jìn)制代碼和元數(shù)據(jù);2)— 個(gè)組件規(guī)范瀏覽器,用于軟件開(kāi)發(fā)者獲取對(duì)于組件交互結(jié)構(gòu)和行為的認(rèn)識(shí);3) 一個(gè)上下文引導(dǎo)的改進(jìn)規(guī)范生成器,用于軟件開(kāi)發(fā)者建立和編輯改進(jìn)規(guī)范;4) 一個(gè)改進(jìn)規(guī)則提取器,用于軟件開(kāi)發(fā)者建立和修改改進(jìn)規(guī)則;5)—個(gè)改進(jìn)規(guī)則 庫(kù),用于存儲(chǔ)、提取和維護(hù)改進(jìn)規(guī)則;6)—個(gè)類庫(kù)生成器,用于自動(dòng)生成改進(jìn)規(guī)則庫(kù)的類庫(kù);7)—個(gè)組件改進(jìn)引擎,用于根據(jù)上下文引導(dǎo)的改進(jìn)規(guī)范來(lái)建立 被改進(jìn)組件的變化部分;8)—個(gè)組件生成引擎以二進(jìn)制代碼為基礎(chǔ)自動(dòng)地生成 改進(jìn)組件。
組件可進(jìn)行改進(jìn)得益于現(xiàn)代編程語(yǔ)言的框架性結(jié)構(gòu),例如Java和.NET。以 現(xiàn)代語(yǔ)言編寫的組件可同時(shí)在運(yùn)行和編譯時(shí)期進(jìn)行改進(jìn)。 一個(gè)被識(shí)別組件的改 進(jìn)通過(guò)將組件的變化部分替換為組件改進(jìn)引擎生成的中間代碼來(lái)實(shí)現(xiàn)。組件生 成? 1擎通過(guò)從它的原始代碼和被改變的代碼來(lái)重組組件產(chǎn)生二進(jìn)制改進(jìn)組件。
圖3描述了生成組件在.NET框架中改進(jìn)過(guò)程的實(shí)現(xiàn)。在圖3中的參考編號(hào) 的作用與圖2相同。在逸一實(shí)現(xiàn)中, 一個(gè)在.NET中的原始組件100,由可扭J亍 檔格式標(biāo)題(PE)、元數(shù)據(jù)和中間語(yǔ)言(IL)代碼三部分組成,根據(jù)特定的重 用上下文改進(jìn),改進(jìn)組件生成為三個(gè)部分,也即是可執(zhí)行檔格式標(biāo)題(PE)、 元數(shù)據(jù)和中間語(yǔ)言(IL)代碼。被改進(jìn)的組件將被集成進(jìn)目標(biāo)程序中。
過(guò)程的實(shí)現(xiàn)包括三個(gè)方面組件規(guī)范提取器102,用戶環(huán)境104和改進(jìn)及生 成引擎106。
組件規(guī)范提取器102從組件的中間語(yǔ)言代碼和元數(shù)據(jù)中提取結(jié)構(gòu)和接口的 概略規(guī)范,并顯示在組件規(guī)范瀏覽器52中,作為用戶環(huán)境104的一部分。
用戶環(huán)境104提供給軟件開(kāi)發(fā)者一個(gè)交互的窗口用以檢查組件100的結(jié)構(gòu)和 行為,并根據(jù)遵循的改進(jìn)需求從改進(jìn)規(guī)則庫(kù)112中選擇適當(dāng)?shù)母倪M(jìn)規(guī)則110, 組成上下文引導(dǎo)的改進(jìn)規(guī)范108。改進(jìn)算法和健康性條件被應(yīng)用在在創(chuàng)造基于 上下文的改進(jìn)^L范時(shí)。
在圖1和圖2的描述中,改進(jìn)和生成引擎106遵循一般改進(jìn)改進(jìn)過(guò)程,但 在.NET環(huán)境下卻需要遵循許多.NET下的規(guī)則。組件種類和成員的結(jié)構(gòu)首先從 原始組件100中被提取(102)并復(fù)制生成一個(gè)原始組件的骨架(114),它由組件的 類型、類和方法簽名組成,但方法實(shí)體為空。定義在上下文引導(dǎo)的改進(jìn)規(guī)范108 中的改進(jìn)規(guī)則實(shí)例被綁定和實(shí)例化到相應(yīng)的二進(jìn)制對(duì)象,它被稱作改進(jìn)規(guī)則對(duì) 象116。改進(jìn)規(guī)則對(duì)象116在二進(jìn)制代碼的級(jí)別上直接適用于原始組件100。改進(jìn)規(guī)則對(duì)象116的一部分適用于改進(jìn)原始組件的骨架,生成一個(gè)新的方法實(shí)體
為空的改進(jìn)組件骨架118。其它改進(jìn)規(guī)則對(duì)象可適用于改進(jìn)原始組件相關(guān)方法 的實(shí)體120。方法體的被改進(jìn)中間語(yǔ)言代碼122被保存在方法緩存122中。如 果一個(gè)演動(dòng)作包括了在原始方法體前或后插入一個(gè)新的方法或新代碼的一部 分,新的方法體或部分將通過(guò)上下文引導(dǎo)的改進(jìn)M^范108以任何.NET支持的源 代碼形式獲得。新的方法體或部分于是凈皮保存在方法緩存122中。在下一步中, 方法緩存中的源代碼被編譯進(jìn)中間語(yǔ)言代碼120并驗(yàn)證其正確性。
在生成改進(jìn)的上一步,引擎106將改進(jìn)組件骨架118視為原始組件代碼的突 變,并將其與改進(jìn)或插入的方法體或主體的部分122進(jìn)行集成。也即是,如果 方法緩存中的中間語(yǔ)言代碼是新方法體,那么將其插入相應(yīng)骨架的方法中;如 果方法緩存中的中間語(yǔ)言代碼是新方法體的一部分新代碼,那么將其插入相關(guān) 方法中方法體的開(kāi)頭或結(jié)尾部分。對(duì)于其它組件中未變化的部分,引擎只是簡(jiǎn) 單地將其從原始中間語(yǔ)言代碼拷貝至新的組件中。 一個(gè)新的元數(shù)據(jù)將從組件的 改進(jìn)中間語(yǔ)言代碼中產(chǎn)生。
總之,只有原始組件的變化部分會(huì)被它的改進(jìn)版本所替代。組件生成的最后 步驟是產(chǎn)生新的二進(jìn)制格式的.NET組件。
圖4描述了生成組件改進(jìn)過(guò)程在Java平臺(tái)上的實(shí)現(xiàn)。生成組件改進(jìn)的實(shí)現(xiàn) 在不同的平臺(tái)中有所不同,正如現(xiàn)有的組件模型也不盡相同。
在Java平臺(tái)中,組件的改進(jìn)可以在源代碼或二進(jìn)制碼層中發(fā)生。
在源代碼層,組件改進(jìn)引擎支持基于XML組件規(guī)范的修改并發(fā)布一個(gè)新的 改進(jìn)組件的組件規(guī)范,也即是,被改進(jìn)組件規(guī)范130。在第一步中, 一個(gè)上下 文引導(dǎo)的改進(jìn)規(guī)范132被描述并綁定在組件改進(jìn)引擎134中。接著,組件改進(jìn) 引擎134根據(jù)在上下文引導(dǎo)的改進(jìn)規(guī)范132中的改進(jìn)規(guī)則實(shí)例140修改原始組 件138的組件規(guī)范136。最后,被改進(jìn)組件規(guī)范130作為一個(gè)新的XivlL格式的 組件規(guī)范;波生成。
對(duì)于源代碼層的改進(jìn),組件138的組件規(guī)范136需要非常詳細(xì)地被稱作全面組件規(guī)范的代碼詳述。組件生成引擎142首先將組件改變部分的改進(jìn)綜合組件
規(guī)范130轉(zhuǎn)換為Java的源代碼,接著,它集成了原始代碼的改變部分與其它未 改變部分的代碼。組件生成引擎最終發(fā)布為Java源代碼中的改進(jìn)組件144。
對(duì)于二進(jìn)制代碼層的改進(jìn),與.NET中間語(yǔ)言代碼和元參:據(jù)不同,在Java組 件模型中Java虛擬才凡二進(jìn)制碼和Java元數(shù)據(jù)被作為等價(jià)的技術(shù)被使用,例如來(lái) 源于Sun Microsystems的Java元數(shù)據(jù)接口和Java EE 5平臺(tái)的注解。其它的二 進(jìn)制代碼層重構(gòu)技術(shù)也可能被用于支持生成組件改進(jìn)過(guò)程的執(zhí)行,例如,Java 字節(jié)碼引擎類庫(kù)。
在二進(jìn)制代碼層的改進(jìn),組件的組件規(guī)范136是組件結(jié)構(gòu)和接口的概要規(guī) 范,它不包括代碼細(xì)節(jié)。組件改進(jìn)引擎使用例如Java字節(jié)碼引擎類庫(kù)的技術(shù),
改進(jìn)引擎通過(guò)集成二進(jìn)制代碼中改變和未改變部分,重組生成最終由Java虛擬 機(jī)二進(jìn)制代碼和Java元數(shù)據(jù)組成的組件。
注釋是一種新的特征,最初在Java2平臺(tái)中被引入至標(biāo)準(zhǔn)版本(J2SE) 5.0。 他們是包括了非常簡(jiǎn)單句法的元數(shù)據(jù),由于以@開(kāi)頭可被識(shí)別。注釋常用于嵌 入程序數(shù)據(jù)中,也可作為單獨(dú)的文件存在。
圖5描迷了自動(dòng)綁定和改進(jìn)規(guī)則的過(guò)程。
改進(jìn)規(guī)則庫(kù)支持改進(jìn)知識(shí)在較低級(jí)別控制層次的重用,即,改進(jìn)規(guī)則和他們 的實(shí)例,以及上下文引導(dǎo)的改進(jìn)規(guī)范的全部或部分。改進(jìn)規(guī)則庫(kù)是一個(gè)資產(chǎn)存 儲(chǔ)庫(kù),它跟蹤和管理改進(jìn)規(guī)則,并能在未來(lái)的組件改進(jìn)過(guò)程中被使用。
改進(jìn)規(guī)則庫(kù)操作的生命周期包括四個(gè)階段l)使用改進(jìn)規(guī)則提取器62建立 組件改迸規(guī)則;2)組件改進(jìn)規(guī)則存儲(chǔ)于庫(kù)系統(tǒng)60中;3)組件改進(jìn)系統(tǒng)綁定至二 進(jìn)級(jí)類80; 4)通過(guò)引入它們的類,參考在組件改進(jìn)和生成引擎70, 72的組件 改進(jìn)規(guī)則。
伴隨著XML數(shù)據(jù)綁定技術(shù),生成了一系列的類以反映定義在改進(jìn)規(guī)則中的 數(shù)據(jù)模型。改進(jìn)規(guī)則的實(shí)例可像來(lái)源于改進(jìn)規(guī)則類中的對(duì)象一樣被綁定在自動(dòng)
22化工具中。接著,組件改進(jìn)引擎將直接使用這些對(duì)象實(shí)現(xiàn)組件改進(jìn)。 一個(gè)新的 改進(jìn)規(guī)則將從應(yīng)用域知識(shí)中提取并添加到庫(kù)中。
隨著自動(dòng)綁定, 一個(gè)組件改進(jìn)規(guī)則150被映射在組件改進(jìn)規(guī)則對(duì)象的類152 中,組件改進(jìn)規(guī)則實(shí)例154被動(dòng)態(tài)地映射在面向?qū)ο蟮木幊虒?duì)象156。組件改 進(jìn)規(guī)則實(shí)例的程序通過(guò)將信息傳遞至活躍方法并在對(duì)象中觸發(fā)方法來(lái)存檔。隨 著自動(dòng)綁定,組件改進(jìn)和生成引擎獨(dú)立地改變改進(jìn)規(guī)則。改進(jìn)規(guī)則的改變將觸 發(fā)對(duì)組件改迸和生成引擎MJ'J的重新綁定。
自動(dòng)綁定機(jī)制包括一個(gè)規(guī)劃編輯器,它將組件改進(jìn)規(guī)則譯為一系列特定的規(guī) 劃類,包含適當(dāng)?shù)恼_訪問(wèn)和突變方法,數(shù)據(jù)編組框架支持在XML格式改進(jìn) 規(guī)范和現(xiàn)有及概要驅(qū)動(dòng)的類的相關(guān)聯(lián)實(shí)例圖表間進(jìn)行編組和解組。
在改進(jìn)類型的編譯中,XML格式的組件改進(jìn)規(guī)則被編譯為Java或C弁的類。 由XML格式改進(jìn)規(guī)則編譯的Java或C弁的類可直接被組件改進(jìn)和生成引擎所使 用。
改進(jìn)規(guī)則的編組/解組在注釋類和改進(jìn)規(guī)則間建立轉(zhuǎn)換。XML概要為改進(jìn)行 為和一個(gè)注釋類的實(shí)例之間定義解釋。它用于將改進(jìn)規(guī)則實(shí)例關(guān)聯(lián)至組件改進(jìn)
和生成引擎中的特定對(duì)象
總之,可見(jiàn)本發(fā)明的方法和工具與現(xiàn)有基于組件的開(kāi)發(fā)和組件改進(jìn)方法及工 具相比,具有較大優(yōu)勢(shì)。
本發(fā)明為組件改進(jìn)和重用技術(shù)作出了杰出的貢獻(xiàn)。本方法和相關(guān)設(shè)備通過(guò)無(wú) 縫地重用現(xiàn)有的相關(guān)組件,減少了開(kāi)發(fā)成本和時(shí)間,以及組件式系統(tǒng)投放市場(chǎng) 的周期,同時(shí)由于消除了組件間接口和行為的不匹配性,提高了組建式系統(tǒng)的 質(zhì)量和效率。本發(fā)明同樣可用于組建式系統(tǒng)的系統(tǒng)改進(jìn)。也即是,通過(guò)組件改 進(jìn)改變組件,從而向組建式系統(tǒng)51入新的功能或服務(wù)質(zhì)量。
與現(xiàn)有的其它技術(shù)相比,本方法和裝置獨(dú)特的竟?fàn)巸?yōu)勢(shì)在于它有助于改進(jìn)組 件和目標(biāo)系統(tǒng)在深層次上附帶零或較少的冗余而實(shí)現(xiàn)組件改進(jìn)。另 一個(gè)竟?fàn)巸?yōu) 勢(shì)在于它在改進(jìn)和突變過(guò)程中的高自動(dòng)化程度。改進(jìn)規(guī)則是動(dòng)態(tài)且以過(guò)程為引導(dǎo)的,提供了上下文引導(dǎo)的改進(jìn)規(guī)范的基礎(chǔ), 它由一個(gè)上下文描述而非僅僅是用戶用例場(chǎng)景組成。這一方法實(shí)現(xiàn)了一種低代 碼冗余的突變改進(jìn), 一種全新的深層改進(jìn)以及高質(zhì)量和正確性的改進(jìn)組件。
在不脫離本發(fā)明范圍之外,可進(jìn)行各種改進(jìn)和修正。尤其是,可以預(yù)見(jiàn)本發(fā)
明將在除.NET和Java平臺(tái)之外的其它軟件平臺(tái)使用。
權(quán)利要求
1.一種改進(jìn)軟件組件的方法,包括從第一組件中提取一個(gè)包含二進(jìn)制碼和元數(shù)據(jù)的組件規(guī)范;建立一個(gè)上下文引導(dǎo)的改進(jìn)規(guī)范;依照上下文引導(dǎo)的改進(jìn)規(guī)范及改進(jìn)規(guī)則來(lái)改進(jìn)至少第一組件的一部分;以第一組件中改進(jìn)的和未改進(jìn)的部分為基礎(chǔ)生成一個(gè)改進(jìn)組件。
2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括建立一個(gè)改進(jìn)規(guī)則的步驟。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述改進(jìn)規(guī)則選自預(yù)定改進(jìn)規(guī)則集。
4. 根據(jù)權(quán)利要求2或3所述的方法,其特征在于,當(dāng)一個(gè)選定的改進(jìn)被請(qǐng) 求時(shí),所述改進(jìn)規(guī)則將被自動(dòng)觸發(fā),同時(shí)所述改進(jìn)規(guī)則執(zhí)行一個(gè)改進(jìn)算法以產(chǎn) 生一個(gè)或多個(gè)合成改進(jìn)。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述改進(jìn)算法被存儲(chǔ)于庫(kù)中, 并由改進(jìn)規(guī)則調(diào)用。
6. 根據(jù)任一前述的權(quán)利要求所述的方法,其特征在于,資格預(yù)審過(guò)程依據(jù) 包括系統(tǒng)架構(gòu)、功能性和質(zhì)量屬性的系統(tǒng)需求來(lái)選擇第一組件。
7. 根據(jù)任一前述的權(quán)利要求所述的方法,其特征在于,所述改進(jìn)規(guī)則由庫(kù) 中選擇。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述庫(kù)擁有一個(gè)開(kāi)放的架構(gòu)。
9. 才艮據(jù)任一前述的權(quán)利要求所述的方法,其特征在于,改進(jìn)規(guī)則以組件式 系統(tǒng)和組件的程序3或知識(shí)或應(yīng)用^戈知識(shí)為基礎(chǔ)建立。
10. 根據(jù)權(quán)利要求7至9中任一權(quán)利要求所述的方法,其特征在于,組件 改進(jìn)規(guī)則被綁定入組件改進(jìn)規(guī)則對(duì)象的二進(jìn)制類中。
11. 根據(jù)任一前迷的權(quán)利要求所述的方法,其特征在于,根據(jù)健康條件檢 查組件改進(jìn)的步驟,使其符合正確的操作。
12. 根據(jù)權(quán)利要求11所述的方法,其特征在于,當(dāng)擬定改進(jìn)破壞了健康條件時(shí),系統(tǒng)向軟件開(kāi)發(fā)人員或用戶提出警告。
13. 根據(jù)任一前述權(quán)利要求所述的方法,其特征在于,健康性條件以組件 式系統(tǒng)和組件的程序域知識(shí)或應(yīng)用域知識(shí)為基礎(chǔ)建立。
14. 根據(jù)任一前述權(quán)利要求所述的方法,其特征在于,生成一個(gè)依賴關(guān)系圖以描述改進(jìn)對(duì)于其它組件或同一組件中其它部分的影響。
15. 根據(jù)任一前述權(quán)利要求所述的方法,其特征在于,在最終通過(guò)審核并 使用前,根據(jù)提出的上下文引導(dǎo)的改進(jìn)規(guī)范檢查生成的改進(jìn)組件的適用性。
16. 根據(jù)任一前述權(quán)利要求所述的方法,適用于一個(gè).NET的平臺(tái)。
17. 根據(jù)權(quán)利要求16所述的方法,其特征在于,組件規(guī)范包括組件的架構(gòu) 和由功能性及服務(wù)質(zhì)量組成的語(yǔ)義。
18. 根據(jù)權(quán)利要求16或17所述的方法,其特征在于,第一組件的骨架由 類型,類,方法標(biāo)識(shí)符組成,骨架中不包含方法體。
19. 根據(jù)權(quán)利要求18所述的方法,其特征在于,改進(jìn)規(guī)則對(duì)象可適用于改 進(jìn)相關(guān)改進(jìn)組件的方法體。
20. 根據(jù)權(quán)利要求16至19中任一權(quán)利要求所述的方法,其特征在于,改 進(jìn)組件的骨架由改進(jìn)的或插入的方法體或方法體的部分所構(gòu)成,用于建立改進(jìn) 組件。
21. 根據(jù)權(quán)利要求1至權(quán)利要求15中任一權(quán)利要求所述的方法,適用于一 個(gè)JAVA平臺(tái)。
22. 根據(jù)權(quán)利要求21所迷的方法,其特征在于,組件改進(jìn)在原代碼層執(zhí)行。
23. 根據(jù)權(quán)利要求22所述的方法,其特征在于,提取和改進(jìn)的組件規(guī)范采 用XML格式
24. 根據(jù)權(quán)利要求23所述的方法,其特征在于,組件改進(jìn)在二進(jìn)制代碼層 執(zhí)行。
25. 根據(jù)權(quán)利要求24所述的方法,其特征在于,組件規(guī)范包括組件的JVM 二進(jìn)制碼和Java元ifet據(jù)。
26. 根據(jù)權(quán)利要求25所述的方法,其特征在于,組件規(guī)范包括組件的結(jié)構(gòu) 和接口的簡(jiǎn)要規(guī)范。
27. 根據(jù)權(quán)利要求24至26所述的方法,其特征在于,Java的字節(jié)碼引擎 類庫(kù)據(jù)上下文改進(jìn)規(guī)則定義的改進(jìn)規(guī)則實(shí)例改進(jìn)組件的二進(jìn)制碼。
28. —種生成改進(jìn)組件的工具,包括 從一個(gè)第 一組件中提取組件規(guī)范的裝置; 建立和/或編輯上下文引導(dǎo)的改進(jìn)規(guī)范的裝置;根據(jù)上下文引導(dǎo)改進(jìn)規(guī)范和一則改進(jìn)規(guī)則,改進(jìn)至少第一組件的一部分的 裝置;以第 一組件中改進(jìn)的和未改進(jìn)的部分為基礎(chǔ)生成一個(gè)改進(jìn)組件的裝置。
29. 根據(jù)權(quán)利要求28所述的工具,進(jìn)一步包括一個(gè)改進(jìn)規(guī)則提取器以建立 和編輯改進(jìn)^見(jiàn)則。
30. 根據(jù)權(quán)利要求28或29所述的工具,進(jìn)一步包括一個(gè)開(kāi)放結(jié)構(gòu)的改進(jìn) 規(guī)則庫(kù)。
31. 根據(jù)權(quán)利要求28至權(quán)利要求230間任一權(quán)利要求所述的工具,進(jìn)一步 包括一個(gè)類庫(kù)生成器,以自動(dòng)成生改進(jìn)MJ'j庫(kù)的類庫(kù)。
32. 根據(jù)權(quán)利要求28至權(quán)利要求331間的任一權(quán)利要求所述的工具,進(jìn)一 步包括一個(gè)組件規(guī)范(CS)瀏覽器工具,用以對(duì)組件的結(jié)構(gòu)進(jìn)行導(dǎo)航。
33. 根據(jù)權(quán)利要求32所述的工具,其特征在于,組件規(guī)范瀏覽器中的依賴 關(guān)系圖顯示了組件和/或改進(jìn)規(guī)則實(shí)例之間的依賴關(guān)系。
34. 權(quán)利要求28至33間的任一權(quán)利要求所述的工具,被改進(jìn)用于權(quán)利要求 1至27之間的任一權(quán)利要求的方法的實(shí)現(xiàn)。
35. —個(gè)計(jì)算機(jī)程序產(chǎn)品包括了權(quán)利要求28至34之間的任一權(quán)利要求的 工具。
全文摘要
本發(fā)明披露了一種改進(jìn)軟件組件的方法和工具,該方法利用上下文引導(dǎo)的改進(jìn)規(guī)范和改進(jìn)規(guī)則通過(guò)執(zhí)行深度組件改進(jìn)來(lái)大大的增加組件在不同上下文的可重用性。
文檔編號(hào)G06F9/44GK101617294SQ200880004835
公開(kāi)日2009年12月30日 申請(qǐng)日期2008年2月13日 優(yōu)先權(quán)日2007年2月13日
發(fā)明者劉曉東, 王北虎, 科林·糠比 申請(qǐng)人:龍比亞大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
墨竹工卡县| 台前县| 平利县| 家居| 西贡区| 休宁县| 错那县| 岳阳市| 天祝| 榆林市| 台中市| 佛山市| 武冈市| 客服| 安义县| 台北县| 玉溪市| 荣成市| 北海市| 泗水县| 鹤壁市| 綦江县| 分宜县| 万年县| 鄂温| 通城县| 长岛县| 黄冈市| 苍南县| 嘉禾县| 乐东| 英德市| 沙湾县| 醴陵市| 阿克| 平武县| 西充县| 绥芬河市| 襄垣县| 开封市| 永善县|