專利名稱:用于接口的協(xié)作衍生的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及才妄口的協(xié)作衍生(collaborative derivation);并且,具體 地,本發(fā)明涉及接口的協(xié)作衍生和編程代碼的部分實(shí)現(xiàn)(imp 1 emen ta t i on)。
背景技術(shù):
經(jīng)常作為商業(yè)分析師(analyst)和開發(fā)人員之間的協(xié)作工作而創(chuàng)造商業(yè) 應(yīng)用。商業(yè)分析師一般精通于定義商業(yè)規(guī)則,以描述允許并支持商業(yè)決定的 信息,而開發(fā)人員一般熟悉以編程語言實(shí)現(xiàn)計(jì)算的有效方法,這多少有些獨(dú) 立于使用這樣的計(jì)算的商業(yè)環(huán)境。這種協(xié)作經(jīng)常是困難的,并且容易發(fā)生錯(cuò) 誤,這是因?yàn)椋瑓f(xié)作者具有不同的技能集合,并且他們從不同的觀點(diǎn)來解決 問題、并使用不同的工具。商業(yè)分析師可能使用通過利用字處理器而產(chǎn)生的 電子數(shù)據(jù)表(spreadsheet)或文檔來定義商業(yè)規(guī)則。商業(yè)分析師通常以例如英 語之類的自然語言來表達(dá)那些商業(yè)規(guī)則。開發(fā)人員可能使用例如Eclipse的 集成開發(fā)環(huán)境(IDE)、或幫助程序編制的工具(如IBM⑧(國(guó)際商業(yè)機(jī)器公司的 注冊(cè)商標(biāo))WebSphere (國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo))DataStage⑧(國(guó)際商 業(yè)機(jī)器公司的注冊(cè)商標(biāo)))來編寫計(jì)算機(jī)程序,并且以諸如Java (Sun Microsystems有限公司的注冊(cè)商標(biāo))之類的編程語言來定義他的邏輯。
作性的,并且一般大多是人工過程。例如,假設(shè)商業(yè)分析師記錄以下商業(yè)規(guī) 則"采用每個(gè)客戶在全部時(shí)段和全部賬戶上的平均信用風(fēng)險(xiǎn)評(píng)級(jí)"。開發(fā)人 員將商業(yè)規(guī)則的此高級(jí)描述變換為實(shí)現(xiàn)該商業(yè)規(guī)則和計(jì)算期望值的軟件組件 的接口,并以適當(dāng)?shù)母袷椒祷卦撝?。此接口包括一組輸入(例如,客戶id、 客戶賬戶、時(shí)段、每時(shí)段的風(fēng)險(xiǎn)評(píng)級(jí))、以及一組輸出(例如,平均風(fēng)險(xiǎn)評(píng)級(jí))。 開發(fā)人員一般通過使用編程語言編寫代碼來實(shí)現(xiàn)此接口 ,該代碼基于該組輸 入的值來計(jì)算該組輸出的值。典型地,為了創(chuàng)建此接口,開發(fā)人員閱讀并與 商業(yè)開發(fā)人員討論商業(yè)規(guī)則的含義,搜索提供輸入值的源,定義輸出值,并 定義組成實(shí)現(xiàn)的邏輯步驟。
由于協(xié)作者使用的技能、語言和工具的差異、以及使他們的理解同步可 能所需的口頭交流,而減慢了此過程。經(jīng)常,當(dāng)由商業(yè)分析師以一種語言和
一種工具(例如,分別是英語和電子數(shù)據(jù)表(spreadsheet))表達(dá)的信息被人工 轉(zhuǎn)換為開發(fā)人員的語言和工具(例如,分別是Java和Eclipse)時(shí),這些差異 帶來許多曲解的可能并且開始發(fā)生錯(cuò)誤。
另 一種挑戰(zhàn)是商業(yè)分析師的商業(yè)經(jīng)驗(yàn)和技能隨著不同組織而改變,這取 決于商業(yè)分析師的經(jīng)驗(yàn)來自該組織的商業(yè)端還是技術(shù)端。商業(yè)分析師的知識(shí) 和理解在特定應(yīng)用中甚至也可能改變。商業(yè)分析師可能能夠指定用來計(jì)算某 些信息的確切的實(shí)現(xiàn)細(xì)節(jié),并且,可能僅能夠以語言描述如何計(jì)算其他實(shí)現(xiàn) 信息。例如,特定需求的實(shí)現(xiàn)細(xì)節(jié)對(duì)于商業(yè)分析師而言可能是公知的,這是 因?yàn)?,?zhí)行計(jì)算的功能可能已經(jīng)存在于之前的使用,如諸如round ()(四舍五 入)或abs ()(取絕對(duì)值)的算術(shù)函數(shù),或者計(jì)算距客戶家庭地址最近的位置的 現(xiàn)有的客戶功能。然而,對(duì)于新的需求,商業(yè)分析師可能僅能夠提供需求的 高級(jí)文字描述,如"采用每個(gè)客戶在全部時(shí)段和全部賬戶上的平均信用風(fēng)險(xiǎn) 評(píng)級(jí)"。
各種傳統(tǒng)的技術(shù)提供了對(duì)技術(shù)規(guī)范(specif icat ion)的一定水平的變換, 但傾向于關(guān)注技術(shù)用戶(例如開發(fā)人員)以及根據(jù)技術(shù)規(guī)范的工作。例如,某 些計(jì)算機(jī)輔助軟件工程(CASE)工具和某些軟件建模工具允許開發(fā)人員在協(xié)作 環(huán)境下對(duì)他們的應(yīng)用建模、并生成接口。模型驅(qū)動(dòng)體系(MDA)允許開發(fā)人員在 特定平臺(tái)上根據(jù)實(shí)現(xiàn)而單獨(dú)地對(duì)規(guī)范進(jìn)行建模。這樣的CASE工具、軟件建模 工具和它們的體系針對(duì)于軟件架構(gòu)師和開發(fā)人員,并且針對(duì)于軟件應(yīng)用的詳 細(xì)技術(shù)規(guī)范。結(jié)果,典型地,使用這樣的工具需要一定水平的技能,例如, 一體化建模語言(UML)模式、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)類型的知識(shí)。其他工具,如 用于查詢構(gòu)造的某些圖形編輯器和某些開發(fā)工具,或揭_取、變換和加載(ETL) 軟件開發(fā),針對(duì)于技術(shù)熟練的用戶, 一般也針對(duì)于單個(gè)用戶。
因而,存在對(duì)用于使得商業(yè)分析師和開發(fā)人員之間的協(xié)作自動(dòng)化的改進(jìn) 技術(shù)的需要。
發(fā)明內(nèi)容
為了克服上述的現(xiàn)有技術(shù)中的限制,并且為了克服在閱讀和理解本說明 書時(shí)變得清楚的其他限制,方法、數(shù)據(jù)處理系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的各種實(shí)
施例提供了軟件的實(shí)現(xiàn)?;谝?guī)范模型來構(gòu)建軟件組件的控制流。在各種實(shí) 施例中,規(guī)范模型包括至少一個(gè)輸入、以及引用該至少一個(gè)輸入的至少一個(gè) 需求?;诳刂屏饕约耙?guī)范模型的至少一個(gè)輸入和至少一個(gè)需求來生成軟件 組件的至少一部分實(shí)現(xiàn)。在某些實(shí)施例中,規(guī)范模型還包括至少一個(gè)輸出, 并且軟件組件的至少 一部分實(shí)現(xiàn)也基于該至少 一個(gè)輸出。
在各種實(shí)施例中,基于規(guī)范模型來構(gòu)建軟件組件的控制流。在各種實(shí)施 例中,規(guī)范模型包括至少一個(gè)輸入和至少一個(gè)輸出。基于控制流、以及規(guī)范 模型的至少一個(gè)輸入和至少一個(gè)輸出,來生成軟件組件的至少一部分實(shí)現(xiàn)。 在某些實(shí)施例中,規(guī)范模型還包括至少一個(gè)需求,并且,軟件組件的至少一 部分實(shí)現(xiàn)也基于該至少一個(gè)需求。
以此方式,提供了用于使得商業(yè)分析師和開發(fā)人員之間的協(xié)作自動(dòng)化的 改進(jìn)技術(shù)。
通過考慮結(jié)合了附圖的以下說明,可容易地理解本發(fā)明的教導(dǎo),附圖中 圖1圖解了商業(yè)分析師和開發(fā)人員之間的自動(dòng)協(xié)作的實(shí)施例;
圖2圖解了在用戶界面上顯示的、由商業(yè)分析師創(chuàng)建的示例M^范; 圖3繪出了被填有圖2的示例規(guī)范的內(nèi)容的說明性規(guī)范模型; 圖4繪出了允許用戶指定具體使用情況的用戶界面的實(shí)施例; 圖5繪出了生成模塊的處理的實(shí)施例的流程圖; 圖6繪出了構(gòu)建圖5的初始控制流的步驟的實(shí)施例的流程圖; 圖7繪出了創(chuàng)建圖6的控制流的實(shí)施例的更詳細(xì)的流程圖; 圖8繪出了具有基于圖3的規(guī)范模型而生成的接口的說明性控制流; 圖9繪出了具有基于圖2的示例規(guī)范的條件需求的說明性規(guī)范; 圖IO繪出了由基于規(guī)范模型的生成模塊基于圖9的說明性規(guī)范而生成的 巟;
圖ll繪出了為了與圖2的規(guī)范的行2相關(guān)聯(lián)的、圖3的規(guī)范模型的需求 而生成的編程例程的實(shí)施例;
圖12繪出了為了與圖2的規(guī)范的行3相關(guān)聯(lián)的、圖3的規(guī)范模型的需求 而生成的編程例程的實(shí)施例;
圖13繪出了由生成模塊基于圖3的規(guī)范模型而生成的示例軟件組件的實(shí)
示例控制w
7 施例;
圖14繪出了用來描述與ETL —起使用的本發(fā)明的實(shí)施例的另一示例規(guī)
范;
圖15包括圖15A和圖15B,它們一起繪出了被填有圖14的示例規(guī)范的
內(nèi)容的示例規(guī)范模型;
圖16繪出了處理規(guī)范模型以衍生出模板結(jié)構(gòu)的實(shí)施例的流程圖17繪出了構(gòu)建圖16的軟件子組件的模板的步驟的實(shí)施例的流程圖18繪出了正在顯示在基于圖15的規(guī)范模型執(zhí)行了圖17的流程圖之后
構(gòu)建的示例ETL任務(wù)的圖形用戶界面的畫布(canvas);
圖19繪出了生成圖16的控制流的至少一部分實(shí)現(xiàn)的至少一部分步驟的
實(shí)施例的流程圖20繪出了在按照?qǐng)D16的流程圖的其他處理之后在圖18的圖形用戶界 面的畫布上顯示的示例ETL任務(wù);
圖21繪出了在按照?qǐng)D16的流程圖處理了圖14的規(guī)范的行5和9的規(guī)范 模型的需求之后、在圖20的圖形用戶界面的畫布上顯示的示例ETL任務(wù);
圖22繪出了在按照?qǐng)D16和圖17的流程圖處理了圖14的規(guī)范的行6和 10的規(guī)范模型的需求之后、在圖21的圖形用戶界面的畫布上顯示的示例ETL 任務(wù);
圖23圖解了顯示商業(yè)規(guī)則運(yùn)營(yíng)商的細(xì)節(jié)的圖形用戶界面;以及 圖24繪出了使用本發(fā)明的各種實(shí)施例的說明性數(shù)據(jù)處理系統(tǒng)。 為利于理解,當(dāng)有可能時(shí),使用了相同的附圖標(biāo)記來指示某些附圖中共 有的相同元素。
具體實(shí)施例方式
在考慮了以下描述之后,本領(lǐng)域技術(shù)人員將清楚地意識(shí)到,本發(fā)明的各 種實(shí)施例的教導(dǎo)可被用于使得商業(yè)分析師和開發(fā)人員之間的協(xié)作自動(dòng)化。計(jì) 算機(jī)實(shí)現(xiàn)的方法、數(shù)據(jù)處理系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品提供了軟件的實(shí)現(xiàn)。基于 規(guī)范模型來構(gòu)建軟件組件的控制流。在各種實(shí)施例中,規(guī)范模型包括至少一 個(gè)輸入、以及引用該至少一個(gè)輸入的至少一個(gè)需求。基于控制流以及規(guī)范模 型的至少一個(gè)輸入和至少一個(gè)需求來生成軟件組件的至少一部分實(shí)現(xiàn)。在某 些實(shí)施例中,規(guī)范模型還包括至少一個(gè)輸出,并且軟件組件的至少一部分實(shí)
現(xiàn)也基于該至少一個(gè)輸出。
在各種實(shí)施例中,基于規(guī)范模型來構(gòu)建軟件組件的控制流。在各種實(shí)施 例中,規(guī)范模型包括至少一個(gè)輸入和至少一個(gè)輸出?;诳刂屏饕约耙?guī)范模 型的至少 一個(gè)輸入和至少 一個(gè)輸出來生成軟件組件的至少 一部分實(shí)現(xiàn)。在某 些實(shí)施例中,規(guī)范模型還包括至少一個(gè)需求,并且軟件組件的至少一部分實(shí) 現(xiàn)也基于該至少一個(gè)需求。
在各種實(shí)施例中, 一種機(jī)制程序性地解釋以商業(yè)分析師熟悉的語言和工 具表達(dá)的商業(yè)邏輯,以衍生出以開發(fā)人員熟悉的語言和工具的商業(yè)邏輯的接 口和部分實(shí)現(xiàn)。
圖1圖解了商業(yè)分析師32和開發(fā)人員34之間的自動(dòng)協(xié)作的實(shí)施例。用 戶界面36允許商業(yè)分析師32提供規(guī)范38,以選擇一組輸入(輸入)4Q和一組 輸出(輸出)42,并且定義根據(jù)該組輸入產(chǎn)生該組輸出的商業(yè)規(guī)則和商業(yè)邏輯。 一組輸入包括至少一個(gè)輸入。 一組輸出包括至少一個(gè)輸出。在各種實(shí)施例中, 可以存在不同類型的規(guī)則。 一些規(guī)則可引用 一個(gè)和多個(gè)現(xiàn)有的編程例程或現(xiàn) 有軟件組件,并且,被稱為商業(yè)規(guī)則的其他規(guī)則是文本描述。也可參照可被 用來實(shí)現(xiàn)商業(yè)規(guī)則的現(xiàn)有編程例程或現(xiàn)有軟件組件來注釋商業(yè)規(guī)則。將此規(guī) 范38的內(nèi)容轉(zhuǎn)換為規(guī)范模型44。基于規(guī)范模型44生成接口。在各種實(shí)施例 中,由該組輸入和該組輸出來定義該接口。該接口包括至少一部分實(shí)現(xiàn),該 實(shí)現(xiàn)包括在包含相應(yīng)商業(yè)規(guī)則的規(guī)則和接口軟件子組件中引用的現(xiàn)有編程例 程或現(xiàn)有軟件組件。開發(fā)人員34可在由用戶界面46指示的開發(fā)人員的優(yōu)選 開發(fā)工具中檢查此接口和實(shí)現(xiàn),并且,用新設(shè)計(jì)的、用來實(shí)現(xiàn)與接口軟件子
代所述接口軟件子組件。
本發(fā)明的各種實(shí)施例使得能夠協(xié)作工作,以在具有不同經(jīng)驗(yàn)水平的不同 用戶之間建立商業(yè)應(yīng)用。其允許具有較少或沒有技術(shù)經(jīng)驗(yàn)的商業(yè)分析師使用 他們熟悉的工具和術(shù)語來描述信息。例如,這樣的用戶將會(huì)輸入對(duì)商業(yè)應(yīng)用 的需求,作為一組松散定義的商業(yè)規(guī)則,其描述可用信息和要產(chǎn)生的信息之 間的關(guān)系。
數(shù)據(jù)資源(data asset)包含數(shù)據(jù)。在各種實(shí)施例中,數(shù)據(jù)資源是數(shù)據(jù)容 器(container)。在一些實(shí)施例中,數(shù)據(jù)資源是結(jié)構(gòu)化的數(shù)據(jù),如關(guān)系型數(shù)據(jù) 庫的表、或表的模式(schema)。在各種實(shí)施例中,結(jié)構(gòu)化的數(shù)據(jù)可以是電子
數(shù)據(jù)表或平面文件(flat file),或者,在一些實(shí)施例中,是組織了數(shù)據(jù)的字 處理文檔,或WebService(網(wǎng)絡(luò)服務(wù))的模式。在一些實(shí)施例中,數(shù)據(jù)資源是 程序變量。在一些實(shí)施例中,數(shù)據(jù)資源是非結(jié)構(gòu)化的數(shù)據(jù),如,在字處理文 本文檔中,例如,信件或報(bào)告。在一些實(shí)施例中,非結(jié)構(gòu)化的數(shù)據(jù)可以是電 子郵件、網(wǎng)頁、圖像數(shù)據(jù)、或者音頻或視頻數(shù)據(jù)。數(shù)據(jù)資源可被用作輸入, 并被轉(zhuǎn)換以產(chǎn)生輸出。例如,輸入可包括作為關(guān)系型數(shù)據(jù)源(如數(shù)據(jù)庫表)的 數(shù)據(jù)資源,而輸出可以是另一數(shù)據(jù)資源,如數(shù)據(jù)庫表。
在一些實(shí)施例中,本發(fā)明追蹤需求、數(shù)據(jù)資源以及它們相應(yīng)的實(shí)現(xiàn)之間
的信息。結(jié)果,管理在協(xié)作工作中可以是自動(dòng)的,這對(duì)于符合新管理規(guī)則來 說越來越重要。
圖2圖解了由商業(yè)分析師創(chuàng)建的、并被顯示在用戶界面上的示例規(guī)范50。 在各種實(shí)施例中,在數(shù)據(jù)處理系統(tǒng)的顯示器上呈現(xiàn)的圖形用戶界面上顯示該 規(guī)范50。在各種實(shí)施例中,用戶從在圖形用戶界面中呈現(xiàn)的列表中選擇輸入 和輸出。瓶范50具有至少一行52和至少一列54、 56、 58和60。列包括行 數(shù)列54、源(Source)列56、目標(biāo)(Target)列58、以及需求(Requirement)列 60。在源列54中列出了用于需求的至少一個(gè)輸入,在目標(biāo)列58中列出了至 少一個(gè)輸出。在各種實(shí)施例中,用戶從在圖形用戶界面上呈現(xiàn)的多個(gè)預(yù)定義 的需求中選擇作為預(yù)定義函數(shù)或編程邏輯的需求。用戶可手動(dòng)輸入需求,作 為商業(yè)規(guī)則。在需求列60中列出了如何根據(jù)源列中的輸入值來計(jì)算目標(biāo)列中 的輸出值的描述。.
在各種實(shí)施例中,作為一個(gè)需求的一行需求列為空,并且生成模塊解釋 該空需求。在一些實(shí)施例中,如果需求為空,并且如果指定了輸入和輸出, 則將輸入復(fù)制到輸出。在各種實(shí)施例中,如果需求為空,并且如果指定了多 個(gè)輸入或多個(gè)輸出,或者如果指定了多個(gè)輸入和多個(gè)輸出,則將創(chuàng)建接口。
在一些實(shí)施例中, 一行目標(biāo)列可以為空,即,未指定輸出;并且,生成 模塊根據(jù)所指定的該行的需求,處理所指定的該行的源輸入。
商業(yè)分析師在技能水平上有不同,從具有一些編程技能到?jīng)]有編程技能。 一些商業(yè)分析師可能有時(shí)能夠經(jīng)由實(shí)際編程邏輯來表達(dá)各種需求,而其他商 業(yè)分析師可能僅僅能夠提供期望行為的文本描述。
圖2的示例需求圖解了不同水平的細(xì)節(jié)。例如,第一行52的需求指定了 被稱為"F0"的預(yù)定義函數(shù)。第二行62的需求指定了要用于計(jì)算輸出值的實(shí) 際編程表達(dá)式,并且此類需求被稱為編程邏輯。第三行64的需求指定了具有 高級(jí)文本描述的商業(yè)規(guī)則。
圖3繪出了被填有圖2的示例規(guī)范50的內(nèi)容的說明性規(guī)范模型70。在 各種實(shí)施例中,在圖形用戶界面上顯示規(guī)范模型70。在一些實(shí)施例中,軟件 模塊捕捉由商業(yè)分析師在規(guī)范模型70中輸入的信息。規(guī)范模型70是存儲(chǔ)需 求模型71中的各種實(shí)施例中的需求92、 94和96、并且將需求92、 94和96 與輸入72、 74、 76、 78和80以及輸出82、 84、 86和88相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。 規(guī)范模型70的需求92、 94和96分別基于規(guī)范的行1、 2和3的需求。
在各種實(shí)施例中,規(guī)范提供規(guī)范模型的內(nèi)容的視圖。例如,圖2的規(guī)范 50提供圖3的規(guī)范模型70的內(nèi)容的視圖。
在各種實(shí)施例中,當(dāng)用戶輸入每一行時(shí)創(chuàng)建和更新規(guī)范模型??商鎿Q地, 在用戶完成規(guī)范之后創(chuàng)建規(guī)范模型。在一些實(shí)施例中,商業(yè)分析師使用電子 數(shù)據(jù)表來創(chuàng)建規(guī)范,并將其導(dǎo)入規(guī)范模型的數(shù)據(jù)結(jié)構(gòu)。
在各種實(shí)施例中,生成模塊解釋規(guī)范模型,并逐漸創(chuàng)建軟件組件的對(duì)應(yīng) 的軟件子組件,其包括規(guī)范中每個(gè)需求的一部分(并且在一些實(shí)施例中是全部) 實(shí)現(xiàn)。創(chuàng)建全部還是部分實(shí)現(xiàn)取決于在需求中提供的細(xì)節(jié)的水平。
在各種實(shí)施例中,生成模塊具有多個(gè)用途,換言之,生成模塊可針對(duì)具 體的使用情況來生成一個(gè)或多個(gè)軟件組件。例如,在一個(gè)使用情況下,使用 生成模塊來創(chuàng)建軟件組件,其提供網(wǎng)絡(luò)服務(wù)(WebService)之間的鏈接。在此 例子中,將網(wǎng)絡(luò)服務(wù)A的輸出模式映射到網(wǎng)絡(luò)服務(wù)B的輸入模式。在規(guī)范中 定義從網(wǎng)絡(luò)服務(wù)A到網(wǎng)絡(luò)服務(wù)B的映射。在規(guī)范中,作為源(也就是輸入)來 輸入網(wǎng)絡(luò)服務(wù)A的輸出模式。在規(guī)范中,作為目標(biāo)(也就是輸出)來輸入網(wǎng)絡(luò) 服務(wù)B的輸入模式。使用該規(guī)范,可衍生出映射的一部分(在一些實(shí)施例中是 全部)實(shí)現(xiàn)。
在使用情況的另 一示例中,使用生成模塊來以指定的編程語言創(chuàng)建一個(gè) 或多個(gè)軟件組件。例如,使用生成模塊來創(chuàng)建Java類,其提供輸入到輸出的 特定映射的實(shí)現(xiàn)。在此例子中,軟件組件是Java類。在其他實(shí)施例中,可使 用除了 Java之外的編程語言。
在使用情況的再一示例中,使用生成模塊來創(chuàng)建ETL任務(wù)(Job),以將源 數(shù)據(jù)字段變換為目標(biāo)數(shù)據(jù)字段。ETL任務(wù)的一個(gè)例子是IBM WebSphere DataStage任務(wù)。然而,在其他實(shí)施例中,可生成其他類型的ETL任務(wù)。在 此使用情況(use case)下,軟件組件是ETL任務(wù)。
此外,使用情況不意味著對(duì)編程語言、網(wǎng)絡(luò)服務(wù)和ETL任務(wù)的限制,可 為了其他使用情況來使用本發(fā)明的各種實(shí)施例。
圖4繪出了允許用戶指定具體使用情況的用戶界面100的實(shí)施例。圖4 的用戶界面100具有讓用戶輸入規(guī)范模型102的區(qū)域,并還具有按鈕104、 106和108,其響應(yīng)于被激活而使生成模塊分別使用Java、 WSDL或ETL任務(wù) 來生成軟件組件。激活具體按鈕導(dǎo)致為了相關(guān)的使用情況來解釋規(guī)范模型。
圖5繪出了生成模塊的處理的實(shí)施例的流程圖。生成模塊處理規(guī)范模型, 以衍生出控制流和實(shí)現(xiàn)這兩者。在步驟122中,生成模塊接收規(guī)范模型。
在步驟124中,生成模塊基于規(guī)范模型,構(gòu)建軟件組件的控制流。生成 模塊根據(jù)控制流、以及將構(gòu)成軟件組件的一個(gè)或多個(gè)軟件子組件的集合,來 確定軟件組件的"形式(shape)"。在一些實(shí)施例中,軟件組件是程序,并且 軟件子組件是構(gòu)成該程序的編程例程。例如,該程序是具有主程序的Java程 序,主程序包括對(duì)激活函數(shù)(invoke function)的調(diào)用,而編程例程是函數(shù)自身。
在步驟126中,生成模塊基于規(guī)范模型生成控制流的至少一部分實(shí)現(xiàn)。 具體需求的實(shí)現(xiàn)是全部的還是部分的取決于規(guī)范模型的具體需求。在一些實(shí) 施例中,生成模塊基于規(guī)范模型和特定使用情況而衍生出該需求的至少一部 分實(shí)現(xiàn)。例如,如果需求指定編程邏輯,則添加實(shí)現(xiàn)該編程邏輯的例程。在 另一例子中,如果需求指定商業(yè)規(guī)則,則添加作為該商業(yè)規(guī)則的接口的例程。
圖6繪出了構(gòu)建圖5的控制流的步驟122的實(shí)施例的流程圖。在步驟132 中,生成模塊確定軟件組件的控制流的軟件子組件的邏輯順序。例如,生成 模塊創(chuàng)建"主(Main)"程序。在各種實(shí)施例中,由編程例程來實(shí)現(xiàn)軟件子組 件。在缺少依賴關(guān)系的情況下,生成模塊根據(jù)用戶在規(guī)范中引入的次序(如行 數(shù)次序)來對(duì)激活編程例程的調(diào)用進(jìn)行排序。此外,規(guī)范模型捕捉需求之間的 明顯的依賴關(guān)系,并且,生成模塊將所生成的每個(gè)需求的實(shí)現(xiàn)鏈接為反映那 些依賴關(guān)系的順序。如果一個(gè)需求的輸出匹配另一需求的輸入,則生成模塊 對(duì)軟件子組件排序,使得在第二需求的實(shí)現(xiàn)之前激活第一需求的實(shí)現(xiàn)。例如, 用來激活與第一需求相關(guān)聯(lián)的編程例程的調(diào)用被排序?yàn)樵谟脕砑せ钆c第二需 求相關(guān)聯(lián)的編程例程的調(diào)用之前出現(xiàn)。
在各種實(shí)施例中,更一般地,術(shù)語"調(diào)用"是指軟件子組件的激活。軟 件子組件可以是編程例程,如函數(shù)、方法、子例程、例程或過程。
在各種實(shí)施例中,在步驟134中,生成;f莫塊根據(jù)軟件子組件的邏輯順序 來創(chuàng)建控制流。在各種實(shí)施例中,為創(chuàng)建控制流,生成模塊根據(jù)該邏輯順序, 將對(duì)編程例程的調(diào)用插入到規(guī)范中的每個(gè)需求的軟件組件中。在各種實(shí)施例 中,按照步驟132所確定的次序,將對(duì)編程例程的調(diào)用插入到控制流中。
圖7繪出了圖6的步驟134的創(chuàng)建控制流的實(shí)施例的更詳細(xì)的流程圖。 在步驟142中,生成模塊確定需求是否為預(yù)定義的函數(shù)。響應(yīng)于步驟142確 定該需求是預(yù)定義的函數(shù),在步驟144中,生成模塊插入對(duì)特定函數(shù)的調(diào)用, 作為編程例程。
響應(yīng)于步驟142確定該需求不是預(yù)定義的函數(shù),在步驟146中,生成模 塊確定該需求是否為編程邏輯。在各種實(shí)施例中,在步驟146中,如果空需 求與恰好一個(gè)輸入以及恰好一個(gè)輸出相關(guān)聯(lián),則將空需求看作是編程邏輯。 響應(yīng)于步驟146確定該需求是編程邏輯,在步驟148中,生成模塊插入對(duì)編 程例程的調(diào)用,該編程例程將被生成以實(shí)現(xiàn)編程邏輯。在步驟15Q中,生成 模塊創(chuàng)建到編程例程的、從輸入和輸出(如果有的話)衍生出的接口 ,使得輸 入代表對(duì)編程例程的參數(shù),而輸出代表來自編程例程的返回值。
響應(yīng)于步驟146確定該需求不是編程邏輯,在步驟152中,生成;f莫塊確 定該需求是否為商業(yè)規(guī)則。在各種實(shí)施例中,在步驟152中,如果空需求與 多個(gè)輸入和/或多個(gè)輸出相關(guān)聯(lián),則將空需求看作商業(yè)MJ'j。響應(yīng)于步驟152 確定該需求是商業(yè)規(guī)則,在步驟154中,生成模塊插入對(duì)充當(dāng)商業(yè)規(guī)則的代 碼的接口的編程例程的調(diào)用。步驟154前進(jìn)到步驟150,以創(chuàng)建接口。
響應(yīng)于步驟152確定該需求不是商業(yè)規(guī)則,在步驟156中,退出流程圖。
圖8繪出了利用基于圖3的規(guī)范模型而生成的接口的說明性控制流160。 在各種實(shí)施例中,在顯示器上的用戶界面中向用戶呈現(xiàn)控制流。指定需求的 順序參照行次序,即,需求的行編號(hào)。例如,對(duì)行1的需求的預(yù)定義函數(shù)的 調(diào)用164是第一個(gè),之后是對(duì)與行2的需求相關(guān)聯(lián)的編程例程的調(diào)用166, 之后是對(duì)與行3的需求相關(guān)聯(lián)的編程例程的調(diào)用168。因?yàn)樵趫D3的規(guī)范模 型中不存在明顯的依賴關(guān)系,所以,調(diào)用的序列次序與在規(guī)范中指定需求的 次序(即,行編號(hào)次序)相符。
在圖8中,第一排(line)162聲明了 "主"程序,并且列出了返回的輸
出。響應(yīng)于規(guī)范模型的需求92(圖3)以及因此的規(guī)范的行1而生成排164。 排164調(diào)用以"輸入l(i叩ut l)"作為自變量的預(yù)定義函數(shù)"FO",并返回 "輸出a (input a)"和"輸出b (input b)"。
響應(yīng)于規(guī)范模型的需求94 (圖3)以及因此的規(guī)范的行2而生成排166。 因?yàn)樾枨?4是編程邏輯,所以,生成模塊創(chuàng)建有所區(qū)別的函數(shù)名,在此例子 中是"GeneratedCode",并將對(duì)該函數(shù)的調(diào)用添加到"主,,程序。生成模塊 還包括該調(diào)用的自變量和返回值。例如,排166調(diào)用以"輸入2"和"輸入3" 作為自變量的函數(shù)"GeneratedCode,,,并返回"輸出c、…"。
響應(yīng)于規(guī)范模型的需求96 (圖3)以及因此的規(guī)范的行3而生成排168。 行3的需求是商業(yè)規(guī)則。生成模塊創(chuàng)建有所區(qū)別的函數(shù)名,在此例子中是 "I叩ut4NToOutputM",并將對(duì)該函數(shù)的調(diào)用添加到"主"程序。生成模塊還 包括該調(diào)用的自變量和返回值。在此例子中,排168調(diào)用以"輸入4"到"輸 入n"作為自變量的函數(shù)"I叩ut4NTo0utputM",并返回"輸出m"。所生成的 函數(shù)調(diào)用作用為編程例程的接口 ,以實(shí)現(xiàn)如需求的文本所描述的商業(yè)規(guī)則。
在一些實(shí)施例中,用戶還具有用來人工地將多個(gè)需求關(guān)聯(lián)到規(guī)范模型中 的期望序列的選項(xiàng)。
在各種實(shí)施例中,用戶可創(chuàng)建條件需求。例如,假設(shè)用戶想要在圖2的 示例規(guī)范中插入條件,使得如果該條件為真,則執(zhí)行行2,并且如果該條件 為假,則執(zhí)行行3。通過使用用戶界面,用戶可定義在規(guī)范模型中捕捉的條 件需求,并且在一些實(shí)施例中,生成用于該條件需求的代碼。
圖9繪出了基于圖2的示例規(guī)范的、具有上述條件需求的說明性規(guī)范 180。在規(guī)范的新行1(182)中插入條件需求。在行1 182中,除了指定行2 和行3的條件需求之外,還指定行2和行3的輸入和輸出。行l(wèi) 182的條件 需求是"如果條件成立,則行2,否則,行3(If condition Row 2 Else Row 3),,。
圖IO繪出了由生成模塊基于圖9的說明性規(guī)范、基于規(guī)范模型而生成的 示例控制流?!赡K生成被稱為 "Part ia 1 Imp 1 ementat ionFromSpecif icat ion"的壽欠4牛纟且4牛的4空制5充。響應(yīng) 于與圖9的行1相關(guān)聯(lián)的規(guī)范模型的條件需求,生成模塊生成圖10的代碼 202,并且如下所示
"if (condition)
(input a, input b)=call FO(i叩ut 4,input n);
6lS6
(input c, ...)=call GeneratedCode (input 2, input 3);',
返回參照?qǐng)D5的步驟126,現(xiàn)在將描述基于規(guī)范模型生成控制流的至少 一部分實(shí)現(xiàn)的更詳細(xì)的實(shí)施例。例如,還是參照?qǐng)D2和圖3,因?yàn)榕c行l(wèi)相 關(guān)聯(lián)的規(guī)范模型的需求指定了預(yù)定義函數(shù),所以,生成模塊不執(zhí)行與行1相關(guān) 聯(lián)的需求的進(jìn)一步的實(shí)現(xiàn)。對(duì)于行l(wèi)的需求,編程例程是預(yù)定義函數(shù)。
圖ll繪出了對(duì)于與圖2的規(guī)范的行2相關(guān)聯(lián)的圖3的規(guī)范模型的需求而 生成的編程例程210的實(shí)施例。生成模塊已經(jīng)生成了對(duì)與此需求相關(guān)聯(lián)的編 程例程的調(diào)用,在此例子中,是"GeneratedCode"。在與圖2的規(guī)范的行2 相關(guān)聯(lián)的圖3的規(guī)范模型的需求中,該需求包含代碼段的完整實(shí)現(xiàn)。以編程 語言來表達(dá)代碼段。生成模塊生成被稱為"GeneratedCode"的編程例程,其 使用與需求相關(guān)聯(lián)的源列作為輸入,使用與需求相關(guān)聯(lián)的目標(biāo)列作為輸出, 并且將代碼段嵌入到該編程例程的主體中。在此例子中,編程例程是函數(shù)。
圖12繪出了為了與圖2的規(guī)范的行3相關(guān)聯(lián)的規(guī)范模型的需求而生成的 編程例程220的實(shí)施例。此需求是商業(yè)規(guī)則。生成模塊預(yù)先生成了對(duì)與此需 求相關(guān)聯(lián)的編程例程220的調(diào)用,在此例子中,是"I叩ut4NTo0utputM"。在 此例子中,生成模塊可僅僅提供與圖2的規(guī)范的第三行相關(guān)聯(lián)的規(guī)范模型的 需求的編程例程的部分實(shí)現(xiàn)。在圖12中示出了編程例程的此部分實(shí)現(xiàn)。編程 例程220包括接口和函數(shù)主體,其中嵌入了捕捉相關(guān)聯(lián)的商業(yè)規(guī)則的文本的 注釋。通過為軟件子組件定義輸入和輸出、并描述要被實(shí)現(xiàn)來滿足需求的邏 輯,此部分實(shí)現(xiàn)向開發(fā)人員提供了指導(dǎo)。因?yàn)槎x了輸入和輸出,所以,編 程例程220也被稱為接口軟件子組件。
在各種實(shí)施例中,如果空需求與恰好一個(gè)輸入以及恰好一個(gè)輸出相關(guān)聯(lián), 則在圖5的步驟126中,生成模塊生成執(zhí)行分配操作以在編程例程中將輸出 設(shè)置為等于輸入的代碼。例如,對(duì)于作為源數(shù)據(jù)資源的一列的輸入以及作為 目標(biāo)數(shù)據(jù)資源的一列的輸出,分配操作可將目標(biāo)數(shù)據(jù)資源的目標(biāo)列的值設(shè)置 為等于源數(shù)據(jù)資源的列的值。
在一些實(shí)施例中,如果空需求與多個(gè)輸入和/或多個(gè)輸出相關(guān)聯(lián),則在圖 5的步驟126中,生成模塊將空需求視為商業(yè)規(guī)則。
圖13繪出了由生成模塊基于圖3的規(guī)范模型生成的示例軟件組件230
的實(shí)施例。在此例子中,軟件組件230是包括代碼的程序。分別示出了與為
行2和行3生成的編程例程相關(guān)聯(lián)的代碼232和234,以及定義圖3的完整 規(guī)范模型的控制流序列的"主"例程的代碼236。
圖14繪出了將被用于描述與ETL —起使用的本發(fā)明的實(shí)施例的另 一示例 去見范240。例如,IBM WebSphere DataStage是一種ETL工具,其是IBM WebSphere Data Integration Suite (凄t據(jù)集成套件)的 一 部分。IBM WebSphere DataStage使得用戶能夠集成企業(yè)信息,而不考慮源、目標(biāo)和時(shí) 間幀。將參照IBM WebSphere DataStage任務(wù)來描述各種實(shí)施例。然而,本 發(fā)明不意味著限于IBM WebSphere DataStage,并且可通過圖形開發(fā)工具來 使用本發(fā)明。
在各種實(shí)施例中,"程序,,被稱為任務(wù), 一般在圖形用戶界面的"畫布', 上圖形化地構(gòu)建任務(wù)。該畫布可包含基于組且基于列的操作的組合,其將數(shù) 據(jù)從一組源移動(dòng)和轉(zhuǎn)換到一組目標(biāo)?;诮M的操作被稱為操作符(operator), 并且代表諸如聯(lián)接(join)、過濾以及合計(jì)(aggregation)的操作。經(jīng)由指示從 一個(gè)操作符到另 一操作符的數(shù)據(jù)流的多個(gè)排來將操作符鏈接在一起?;诮M 的操作也可以被稱為基于數(shù)據(jù)資源的操作?;诹械牟僮魇呛瘮?shù),并且包括 預(yù)定義的和用戶定義的函數(shù),如StringToDateO 、或CurrentMonth ()。在各 種實(shí)施例中,基于列的4乘作也與搡作符相關(guān)聯(lián)。
此示例場(chǎng)景涉及代表交易和賬戶數(shù)據(jù)的兩個(gè)源。Account-Xact數(shù)據(jù)資源 包含一個(gè)賬戶的每日交易。Account數(shù)據(jù)資源包含賬戶信息,其包括賬戶Id 和該賬戶被持有為個(gè)人賬戶還是聯(lián)合賬戶。查找數(shù)據(jù)資源可用于返回附加的 賬戶4爭(zhēng)有者信息,如姓名和地址。Account和Account-Xact數(shù)據(jù)資源將^皮合 計(jì)為兩個(gè)目標(biāo)數(shù)據(jù)資源GroupAccount —Xacts,其包含聯(lián)合賬戶當(dāng)前月份的 每個(gè)賬戶的交易的合計(jì);以及IndividualAccount—Xacts,其包含個(gè)人賬戶 當(dāng)前月份的每個(gè)賬戶的交易的合計(jì)。使用Account_Xact. Timestamp列來表示 月份交易,.并使用Account. Type列來表示賬戶是聯(lián)合持有還是由個(gè)人持有。
在圖14的規(guī)范中,行1 242具有包括條件的需求244,通過該條件,將 數(shù)據(jù)移動(dòng)到Gro叩A(chǔ)ccoimt一Xacts數(shù)據(jù)資源、或IndividualAccoimt—Xacts數(shù) 據(jù)資源。行1 242的需求244條件性地測(cè)試Account. Type。如果Account. Type 的值是"聯(lián)合(joint)",則規(guī)范指示行3 - 6是有效的。如果Account. Type 的值不是"聯(lián)合",則規(guī)范指示行7-IO是有效的。 行2 246定義了用來僅僅從源數(shù)據(jù)資源Accoimt-Xact提取當(dāng)前月份的數(shù) 據(jù)的條件。被稱為 "CurrentMonth " 的預(yù)定義函數(shù)采用 "Account—Xact. Timestamp"作為自變量,并在該時(shí)間戳是當(dāng)前月份的情況 下返回"真,,,否則返回"假"。
行3、 4、 5和6 248、 250、 252和254分別描迷了將源數(shù)據(jù)移動(dòng)到 Gro叩A(chǔ)ccount —Xacts數(shù)據(jù)資源的需求。行3 248描述將"Account"數(shù)據(jù)資 源的歹'J " Id "的值移動(dòng)(在多個(gè)實(shí)施例中是存儲(chǔ))到列 GroupAccoimt_Xacts. Account — Id中。需求字段是空白,其指示將Account 數(shù)據(jù)資源的"Id "列的值從源移動(dòng)(在多個(gè)實(shí)施例中是存儲(chǔ))到 GroupAccount—Xacts數(shù)據(jù)資源的目標(biāo)Account-Id列中、而無任何附加的轉(zhuǎn) 換。
行4 250描述通過調(diào)用 String2Date函數(shù),將字符串值從 Account—Xact. Times tamp專爭(zhēng)4奐到目才示歹寸GroupAccount一Xacts. Tiniestamp的 數(shù)據(jù)值。這使用被嵌入到表達(dá)式中的預(yù)定義函數(shù)(StringToDate)來表達(dá)。
行5 252描述查找搡作。在各種實(shí)施例中,查找函數(shù)被看作編程邏輯需 求。查找數(shù)據(jù)資源(Account —Info)代表查找操作的源,并且包含詳細(xì)的賬戶 信息。為從查找數(shù)據(jù)資源Account-Info中獲得主要和次要賬戶持有者的姓 名,將其與Account數(shù)據(jù)資源聯(lián)接在一起。由查找函數(shù)中的關(guān)鍵字元素定義 該 聯(lián) 接 (Account —Info. Account_Id= Account. Id) 。 將 歹'J Account —Info. Primary—Cust—Name和 Account-Info. Secondary一Cust-Name 分另ll映射到 GroupAccount-Xacts凄t據(jù)資源歹'J Primary一Cust-Name和 Secondary—Cust-Name。
行6 254定義了用來計(jì)算由Account. Id給出的每個(gè)賬戶Id的列 Account—Xact. Value上的運(yùn)行總和的需求。此需求是包括文本描述的商業(yè)規(guī) 則,而不是編程邏輯或預(yù)定義函數(shù)。
行7、 8、 9和10 256 、 258 、 260和262分別具有將源數(shù)據(jù)移動(dòng)到 IndividualAccoimt—Xacts凄史才居資源的需求。IndividualAccount_Xacts凄t據(jù) 資源與GroupAccount—Xacts數(shù)據(jù)資源的不同之處在于,其具有單列 CustJame, 而不是Pr imary—Cust—Name和Secondary—Cust』ame。 結(jié)果,除 了查找數(shù)據(jù)資源被調(diào)用來返回主要客戶的姓名之外,行7、 8、 9和10的需求 類似于上述描述的那些。
圖15包括一起繪出被填有圖14的示例規(guī)范240的內(nèi)容的示例規(guī)范模型 270的圖15A和圖15B。示例規(guī)范模型270包括輸入和輸出(即,源和目標(biāo)) 的描述,在此例子中分別是源和目標(biāo)數(shù)據(jù)庫模式模型;以及需求模型,其使 用引用源和目標(biāo)數(shù)據(jù)庫模式模型的規(guī)范的需求來將源和目標(biāo)數(shù)據(jù)庫模式模型 相關(guān)聯(lián)。
在規(guī)范模型270中,將圖14的行2 246的需求映射到元素272。圖14 的行2 246不具有目標(biāo),因?yàn)槠浯磉^濾器,并且被應(yīng)用于源列中已定義的 輸入上。例如,當(dāng)在規(guī)范的其他行中、Account-Xact被指定為輸入時(shí),圖14 的4亍2 246的需求"CurrentMonth(Account_Xact. Timestamp),,產(chǎn)生來自要 被提供為輸入的當(dāng)前月份的數(shù)據(jù)。因而,元素272包含條件需求。將不提供 來自前 一 月份的數(shù)據(jù)。在 一 些實(shí)施例中,使用元素272的 "CurrentMonth (Account-Xact. Timestamp),,來生成對(duì)包含Account—Xact數(shù)
據(jù)資料的數(shù)據(jù)庫的隊(duì)列的預(yù)測(cè)。
行1 242的條件需求244被映射到規(guī)范模型的元素274。如果如箭頭276 所示、元素274的條件估計(jì)為真,則元素274前進(jìn)到元素278。元素278實(shí) 現(xiàn)圖14的規(guī)范的行3-6。如果如箭頭280所示、元素274的條件估計(jì)為々支, 則元素274經(jīng)由繼續(xù)符(Continuator)A而前進(jìn)到圖UB的元素"2。
元素.278包括需求模型284。要被映射的每個(gè)輸入和輸出被其相關(guān)需求 引用。例如,需求"String2Date"引用Account-Xact. Timestamp。被稱為 為 Account—Xact. Timestamp 292 的輸入被需求 294 映射到名為 GroupAccount-Xacts. Timestamp 296的車lT出。
在圖14的示例規(guī)范中,多個(gè)需求304、 306和308引用被稱為Account. Id 302的輸入(即,列)。因而,示出了從Account. Id 302到需求304、 306和 308的多個(gè)引用,即箭頭。
需求304將數(shù)據(jù)從Account. Id 302移動(dòng)到GroupAccount—Xacts數(shù)據(jù)資 源310。
需求 306 接收作為輸入的 Account. Id 302 、 Account-Info. Primary_Cust —Name 312、 以及Account-Info. Secondary_Cust』anie 314, 基于查找關(guān)鍵字來執(zhí)行查找,并將數(shù)據(jù)移動(dòng)到輸出 GroupAccciunt —Xacts. Primary—Cust-Name 316、 以 及
GroupAccount —Xacts. Secondary—Cust—Name 318。在it匕例子中,需求306指
定查找關(guān)4建字"Account_Info. Account-Id-Account. Id",其使得基于指定的 Account. Id 302來向Account —Info數(shù)據(jù)資源搜索數(shù)據(jù)。
需求308接收Account. Id 302和Account-Xact. Value 320,根據(jù)具有 此 Id 的貝長(zhǎng)戶的 Account—Xact. Value 的運(yùn)4亍總和(running sum)來計(jì)算 GroupAccount—Xacts. Sum—Acc—Xact 322。
在圖15B中,元素282包括需求模型330,需求模型330包括需求332、 334 、 336 和 338 。 需求 332 將 "String2Date ,, 應(yīng)用于輸入 Account-Xact. Times tamp 340, 并在 IndividualAccount-Xacts. Timestamp 342中存儲(chǔ)結(jié)果。
需求 334 將 Account. Id 344 中的值復(fù)制到 IndividualAccount_Xacts. AccounUd 346。
輸入Account. Id 342和Account —Info. Priraary-Cust一Narae 348被提供 給需求336,其執(zhí)行查找,并輸出IndividualAccount—Xacts. Cust一Name 352。
輸入Account. Id 342和Account—Xact. Value 354 ^i是供給需求338。 需求338根據(jù)每個(gè)賬戶 id的Account-Xact. Value的運(yùn)行總和來計(jì)算 GroupAccount —Xacts. Sum—Acc—Xact 356。
圖16繪出了處理規(guī)范模型以衍生出模板的結(jié)構(gòu)的實(shí)施例的流程圖。模板 代表軟件組件。在各種實(shí)施例中,生成模塊處理規(guī)范模型以衍生出能夠滿足 需求的模板的結(jié)構(gòu)。
在步驟362中,生成模塊接收規(guī)范模板。
在步驟364中,生成模塊利用基于規(guī)范模型的模板來構(gòu)建控制流。模板 包括能在畫布上顯示的軟件子組件。生成模塊通過識(shí)別所有的數(shù)據(jù)源和目標(biāo)、 它們的相互關(guān)系(如聯(lián)接和合并條件)、以及所設(shè)置的級(jí)別操作(如被應(yīng)用于數(shù) 據(jù)資源級(jí)別的條件元素)來確定模板的整體"形式"。生成模塊向模板中插入 代表數(shù)據(jù)源、目標(biāo)、它們的關(guān)系、以及所設(shè)置的級(jí)別操作的軟件子組件。例 如,在各種實(shí)施例中,軟件子組件是操作符。生成模塊還通過鏈接軟件子組 件來指示軟件子組件之間的流。在各種實(shí)施例中,如上面參照?qǐng)D6所述,生 成模塊還確定控制流的軟件子組件的邏輯順序。
在步驟366中,生成模塊通過將一個(gè)或多個(gè)軟件子組件插入與規(guī)范模型 的需求相關(guān)聯(lián)的模板中,來生成控制流的至少一部分實(shí)現(xiàn)。
圖17繪出了圖16的步驟364的構(gòu)建軟件子組件的模板的實(shí)施例的流程
圖。在各種實(shí)施例中,在畫布上顯示軟件子組件的模板。在步驟372中,生 成模塊遍歷(traverse)規(guī)范模型以識(shí)別出源數(shù)據(jù)資源,并將代表源數(shù)據(jù)資源 的軟件子組件添加到模板。
在步驟374中,生成模塊確定源數(shù)據(jù)資源是否相關(guān),并且如果是這樣, 則確定源數(shù)據(jù)資源如何相關(guān),并且基于該關(guān)系而將軟件子組件引入4莫玲反。
在步驟376中,生成模塊識(shí)別出目標(biāo)數(shù)據(jù)資源,并將代表目標(biāo)數(shù)據(jù)資源 的軟件子組件添加到模板。
在步驟378中,生成模塊從規(guī)范中識(shí)別出數(shù)據(jù)資源級(jí)別需求,并且分別 將相關(guān)聯(lián)的軟件子組件添加到模板。
圖18繪出了顯示出在執(zhí)行圖17的流程圖之后、基于圖15的規(guī)范模型而 構(gòu)建的示例ETL任務(wù)392的圖形用戶界面的畫布390。在此實(shí)施例中,才莫板 是ETL任務(wù),并且軟件子組件包括ETL操作符。在其他實(shí)施例中,模板是除 了 ETL任務(wù)之外的軟件組件。例如,在圖17的步驟372中,遍歷圖15的規(guī) 范模型,以識(shí)別出源數(shù)據(jù)資源Account和Account-Xact。生成模塊遍歷模式, 以找到這兩個(gè)數(shù)據(jù)資源,并發(fā)現(xiàn)它們駐留在不同的數(shù)據(jù)庫中。結(jié)果,生成模 塊將分別代表Account和Account-Xact的模式的兩個(gè)對(duì)象數(shù)據(jù)庫連接性 (ODBC)數(shù)據(jù)源ETL操作符394和396添加到ETL任務(wù)。
繼續(xù)該示例,在圖17的步驟374中,生成模塊確定源數(shù)據(jù)資源Account 和AccounUXact是否相關(guān),并且如果是這樣,則確定源數(shù)據(jù)資源如何相關(guān), 并且基于該關(guān)系而將ETL操作符引入ETL任務(wù)。因?yàn)樵趫D15的規(guī)范模型中不 存在合并條件(如聯(lián)接),所以,生成模塊遍歷模式以找到兩個(gè)數(shù)據(jù)資源,并 發(fā)現(xiàn)它們共享公共列Id上的主關(guān)鍵字/外來關(guān)鍵字關(guān)系。在各種實(shí)施例中, 生成模塊調(diào)用發(fā)現(xiàn)模塊來確定數(shù)據(jù)資源是否共享任何關(guān)系。基于此關(guān)系,生 成模塊利用條件Account. Id=Account—Xact. Id,將聯(lián)接ETL操作符398引入 ETL任務(wù)。
更一般地,聯(lián)接ETL操作符代表多個(gè)源(即"n"個(gè)源)到一個(gè)目標(biāo)的關(guān)系。 例如,在圖17的步驟376中,生成模塊識(shí)別圖15的規(guī)范模型的目標(biāo)數(shù) 據(jù)資源GroupAccount—Xacts和 IndividualAccount—Xacts, 并將分另ll代表 GroupAccount—Xacts牙口 IndividualAccount—Xacts目才示凄史才居資源的ODBC 據(jù)源ETL纟喿作符400和402添加到ETL任務(wù)。
在圖17的步驟3 7 8中,生成模塊從規(guī)范模型中識(shí)別出數(shù)據(jù)資源級(jí)別需求,
并且分別將相關(guān)聯(lián)的ETL操作符添加到ETL任務(wù)。在此例子中,圖14的規(guī)范 的行1和2是數(shù)據(jù)資源級(jí)別需求;圖14的行3-10是列級(jí)別需求。行1借助 于"切換(switch)"條件(即,"If"語句)來將兩個(gè)目標(biāo)數(shù)據(jù)資源 Gro叩A(chǔ)ccount—Xacts和IndividualAccount —Xacts相關(guān)。因而,規(guī)范模型包 括需求中的切換條件。響應(yīng)于該切換條件,生成模塊將切換ETL操作符404 添加到ETL任務(wù),其中如圖18所示,每個(gè)目標(biāo)數(shù)據(jù)資源作為ETL操作符的輸 出。更一般地,切換ETL操作符表示單個(gè)源到多個(gè)目標(biāo)(即,"n"個(gè)目標(biāo))的 關(guān)系。在規(guī)范模型的需求中包含了規(guī)范的行2的明確的條件元素。響應(yīng)于過 濾條件,生成模塊將過濾ETL操作符406添加到ETL任務(wù)。因?yàn)檫^濾條件涉 及源目標(biāo)數(shù)據(jù)資源Account-Xact,所以,生成模塊將過濾ETL操作符406放 在Account _Xact源396之后,以^又僅允許來自'當(dāng)前月份的記錄流到ETL任務(wù) 的剩余部分。
鏈接包括在ETL操作符之間移動(dòng)的列。鏈接包括作為對(duì)需求的輸入的、 規(guī)范模型定義的列。需求定義了在ETL操作符上執(zhí)行的操作。ETL操作符的 輸出是在傳出鏈接上提供給下一 ETL操作符的一個(gè)或多個(gè)列的新組。因而, 鏈接顯示出操作符之間的流。在圖18中,顯示出從Account源數(shù)據(jù)資源394 到聯(lián)接ETL操作符398的鏈接,其被稱為DSLink3 408。當(dāng)例如在步驟372 中構(gòu)建了 ETL任務(wù)時(shí),也在Account-Xact源數(shù)據(jù)資源和聯(lián)接ETL操作符3兆 之間設(shè)置鏈接,例如DSLink2。響應(yīng)于在步驟378中添加了過濾ETL操作符 406,將鏈接DSLink2 410更新為指示從Account-Xact 396源數(shù)據(jù)資源到過 濾ETL操作符406的流,并且將DSLinkl9 412從過濾ETL操作符4G6添加到 聯(lián)接ETL操作符398。同樣在步驟378中,將DSLink7 414從聯(lián)接ETL操作 符398添加到切換ETL操作符404。將DSLink8 416和DSLink9 418從切換 ETL 操作符 404分別放置到GroupAccount—Xacts400 和 IndividualAccountXacts 402。在各種實(shí)施例中,所述鏈接是DataStage鏈 接;然而,.本發(fā)明不意味著限于DataStage鏈接,也可以使用其他鏈接。
現(xiàn)在將更詳細(xì)地描述圖16的步驟366中生成控制流的至少 一部分實(shí)現(xiàn)的 處理。在各種實(shí)施例中,在步驟364中,生成模塊配置在圖16的步驟362中 創(chuàng)建的ETL任務(wù)。在各種實(shí)施例中,需求的類型包括預(yù)定義函數(shù)、編程邏輯、 以及商業(yè)規(guī)則。在圖16的步驟364中,生成模塊有區(qū)別地處理每類需求。
圖19繪出了圖16的步驟366的為ETL任務(wù)生成控制流的至少一部分實(shí)
現(xiàn)的至少一部分的實(shí)施例的流程圖。在步驟422中,生成模塊確定需求是否
為預(yù)定義函數(shù)。如果是這樣,則在步驟424中,生成模塊將變換器ETL操作 符添加到表示需求的輸入和輸出的ETL操作符之間的ETL任務(wù)。變換器ETL 操作符是ETL任務(wù)的軟件子組件。
如果在步驟422中、生成模塊確定需求不是預(yù)定義函數(shù),則在步驟426 中,生成模塊確定需求是否為編程邏輯。在各種實(shí)施例中,在步驟426中, 如果需求與恰好一個(gè)輸入以及恰好一個(gè)輸出相關(guān)聯(lián),則空需求被看作是編程 邏輯。如果這樣,則在步驟428中,生成模塊將編程邏輯ETL操作符添加到 表示需求的輸入和輸出的ETL操作符之間的ETL任務(wù)。編程邏輯ETL操作符 是任務(wù)的子組件。
如果在步驟426中、生成模塊確定需求不是編程邏輯,則在步驟430中, 生成模塊確定需求是否為商業(yè)規(guī)則。在各種實(shí)施例中,在步驟430中,如果 需求與多個(gè)輸入和/或多個(gè)輸出相關(guān)聯(lián),則空需求被看作是商業(yè)規(guī)則。如果是 這樣,則在步驟432中,生成模塊將商業(yè)規(guī)則ETL操作符添加到表示需求的 輸入和輸出的ETL操作符之間的ETL任務(wù)。商業(yè)規(guī)則ETL操作符是接口軟件 子組件,這是因?yàn)?,其輸入和輸出是已被定義的。商業(yè)規(guī)則ETL操作符充當(dāng) 商業(yè)規(guī)則的接口 ETL操作符。如果在步驟430中,生成模塊確定需求不是商 業(yè)規(guī)則,則在步驟434中,退出流程圖。
在一些實(shí)施例中,預(yù)定義函數(shù)可以是對(duì)列進(jìn)行操作的標(biāo)量函數(shù)(scalar function),或者是對(duì)行的集合進(jìn)行操作的操作符。圖14的規(guī)范的行4和8 具有作為標(biāo)量函數(shù)的需求。編程邏輯被表達(dá)為一組更復(fù)雜的表達(dá)式,該表達(dá) 式可被直接變換為ETL操作符和函數(shù)。圖14的規(guī)范的行5和9具有示例編程 邏輯需求,如可被直接變換為查找操作符的查找函數(shù)。圖14的規(guī)范的行6具 有被表達(dá)為文本商業(yè)規(guī)則的需求。
圖14的行3和7將數(shù)據(jù)從源復(fù)制到目標(biāo),并且由ETL操作符之間的數(shù)據(jù) 的流利用所連接的鏈接來隱式地處理。
圖20繪出了在圖16的步驟366的進(jìn)一步處理之后、圖18的圖形用戶界 面的畫布390上顯示的示例ETL任務(wù)392。圖14的規(guī)范的行4和8指示相同 的預(yù)定義標(biāo)量函數(shù)(String2Date),并且,在它們的輸出(即,目標(biāo)列)上有所 不同。響應(yīng)于圖15的規(guī)模模型的行4和8的需求,根據(jù)圖19的步驟424, 生成模塊將變換器ETL操作符340添加到ETL任務(wù)392中,ETL任務(wù)392將
SUngToDate函數(shù)應(yīng)用于來自過濾ETL操作符406的行。DSLinkl9 412從過 濾ETL操作符406流到變換器ETL操作符440。 DSLinkl 412從變換器ETL操 作符440流到聯(lián)接ETL操作符398。
圖21繪出了在圖16的步驟366中處理了圖14的規(guī)范的行5和9的規(guī)模 模型的需求之后、在圖20的圖形用戶界面的畫布390上顯示的示例ETL任務(wù) 392。在圖21中,省略了畫布的背景網(wǎng)格線。這些需求指示查找函數(shù)。盡管 行5和9的需求映射到目標(biāo)上的不同的列,但這些需求共享相同的查找函數(shù)。 因而,將需求分組為一個(gè)查找操作,其直接映射到所添加的、被插入ETL任 務(wù) 392 的查找 ETL 操作符 450 , 其中關(guān)鍵條件是 Account — Info. Account_Id=Account. Id , 其將 AccounUnfo 數(shù)據(jù)資源與 Account數(shù)據(jù)資源相關(guān)。將ODBC數(shù)據(jù)源ETL操作符352添加到模板,以表示 Account —Info源數(shù)據(jù)資源。DSLink3 408從用于Account 394的ODBC數(shù)據(jù)源 ETL操作符流到查找ETL操作符450。 DSLinkl5 454從用于Account — Info 452 的ODBC數(shù)據(jù)源ETL流到查找操作符450。 DSLinkl4 456從查找ETL ^乘作符 450流到聯(lián)接ETL操作符398。
圖22繪出了在圖16的步驟366和圖17的步驟432中處理了用于圖14 的規(guī)范的行6和10的、圖15的規(guī)范模型的需求之后在圖21的圖形用戶界面 的畫布390上顯示的示例ETL任務(wù)392。行6和10的需求是具有文本描述的 商業(yè)規(guī)則。因?yàn)樾枨髢H僅包括文本描述,所以,所述兩個(gè)需求均被解析為商 業(yè)規(guī)則ETL操作符462和464,即定義輸入和輸出數(shù)據(jù)的接口 ETL操作符, 但是,給開發(fā)人員留下通過遵循在商業(yè)規(guī)則ETL操作符中嵌入的文本描迷所 提供的指導(dǎo)的實(shí)現(xiàn)。生成模塊基于其輸入和輸出依賴關(guān)系而將每個(gè)商業(yè)規(guī)則 ETL操作符插入到模板中。例如,盡管在需求中引用的源列來自相同的數(shù)據(jù) 資源(Account—Xact),但它們被應(yīng)用于兩個(gè)不同的目標(biāo)。盡管商業(yè)規(guī)則的文 本相同,但不知道開發(fā)人員將編寫的程序的邏輯是否會(huì)相同。因而,行6的 規(guī)范模型的需求映射到在切換操作符404之后且在目標(biāo)數(shù)據(jù)資源 Gro叩A(chǔ)ccoimt—Xacts楊之前插入的"BusinessRulel,, ET1操作符462。行 10的規(guī)范模型的需求被解析為在切換操作符404之后且在目標(biāo)數(shù)據(jù)資源 Individual-Accts 402之前插入的"BusinessRule2"ETL操作符464。 DSLink8 416從切換ETL操作符404流到BusinessRulel ETL操作符462。 DSLink9 418 從切換ETL操作符404流到BusinessRule2 ETL搡作符464。 DSLink28 466從BusinessRulel ETL操作符462流到代表Gro叩A(chǔ)ccount-Xacts數(shù)據(jù)資源的 ETL操作符400。 DSLink29 468從BusinessRule2 ETL操作符464流到代表 IndividualAccount-Xacts數(shù)據(jù)資源的ETL操作符402。
圖23圖解了顯示商業(yè)規(guī)則ETL操作符的細(xì)節(jié)的圖形用戶界面470。被嵌 套在商業(yè)規(guī)則ETL操作符內(nèi)的普通ETL操作符472被鏈接到從規(guī)范模型衍生 出的輸入474和輸出476,并且利用來自規(guī)范的商業(yè)規(guī)則來注釋。開發(fā)人員 可將普通ETL操作符472替換為合適的ETL操作符和函數(shù),以實(shí)現(xiàn)商業(yè)規(guī)則。 在此例子中,商業(yè)MJ'j描述了總計(jì),即,總和。DSLinkl 478從輸入474流 到普通ETL操作符472。 DSL ink2 480從普通ETL操作符472流到輸出476。 圖23還提供了源列482、目標(biāo)列484和商業(yè)規(guī)則的文本486。由此,可4吏用 指定的商業(yè)規(guī)則,作為用來將信息從商業(yè)分析師直接傳遞給開發(fā)人員的協(xié)作 效果的一部分。
本發(fā)明的各種實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或者包 含硬件和軟件元素這兩者的實(shí)施例的形式。在優(yōu)選實(shí)施例中,以軟件來實(shí)現(xiàn) 本發(fā)明,包括但不限于固件、駐留軟件、微碼等。
另外,本發(fā)明的各種實(shí)施例可采用可從計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介質(zhì) 獲得的計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)提供通過或結(jié)合計(jì)算機(jī)或任何指令執(zhí) 行系統(tǒng)使用的程序代碼。為了此說明的目的,計(jì)算機(jī)可用或者計(jì)算機(jī)可讀介 質(zhì)可以是能夠包含、存儲(chǔ)、容納、傳播或傳輸程序以通過或結(jié)合指令執(zhí)行系 統(tǒng)、設(shè)備或裝置來使用的任何設(shè)備。
介質(zhì)可以是電、磁、光、電磁、紅外線、或半導(dǎo)體系統(tǒng)(或設(shè)備或裝置) 或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可拆 卸計(jì)算機(jī)盤、隨即存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、硬磁盤或光盤。光 盤的目前的例子包括緊致盤-只讀存儲(chǔ)器(CD-ROM)、緊致盤-讀/寫(CD-R/W) 和數(shù)字視頻盤(DVD)。
圖24繪出了使用本發(fā)明的各種實(shí)施例的說明性數(shù)據(jù)處理系統(tǒng)500。適合 于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)500將包括直接或間接通過系統(tǒng) 總線506耦連到存儲(chǔ)器元件504的至少一個(gè)處理器502。存儲(chǔ)器元件504可 包括在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲(chǔ)器、大容量存儲(chǔ)裝置、以及 提供至少一些程序代碼以降低在執(zhí)行期間從大容量存儲(chǔ)裝置檢索代碼所必需 的次數(shù)的臨時(shí)存儲(chǔ)的高速緩沖存儲(chǔ)器。
輸入/輸出或1/0裝置508 (包括但不限于,例如,鍵盤510、例如鼠標(biāo)的 定點(diǎn)裝置512、顯示器514、打印機(jī)516等)可被直接或通過中間1/0控制器 而耦連到系統(tǒng)總線506。
諸如網(wǎng)絡(luò)接口 (NI) 520之類的網(wǎng)絡(luò)適配器也可以耦連到系統(tǒng)總線506,以 使得數(shù)據(jù)處理系統(tǒng)能夠通過中間的私有或公共網(wǎng)絡(luò)522而耦連到其他數(shù)據(jù)處 理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)裝置。調(diào)制解調(diào)器、有線電視調(diào)制解調(diào)器和以太 網(wǎng)卡正好是一些當(dāng)前可用的網(wǎng)絡(luò)適配器的類型。網(wǎng)絡(luò)適配器可經(jīng)由網(wǎng)絡(luò)傳輸 線(例如,.雙絞線、同軸線或光纖纜線)或使用無線傳輸介質(zhì)的無線接口而耦 連到網(wǎng)絡(luò)。此外,可實(shí)現(xiàn)各種實(shí)施例的軟件可以通過傳輸介質(zhì)而獲得,例如, 從網(wǎng)絡(luò)上的服務(wù)器。
存儲(chǔ)元件504存儲(chǔ)操作系統(tǒng)530、生成(Generation)組件532 、規(guī)范 (Specification) 534、規(guī)范模型536、開發(fā)工具538、數(shù)據(jù)庫540、軟件組件 542以及數(shù)據(jù)資源544。
在各種實(shí)施例中,開發(fā)工具538是由開發(fā)人員使用的圖形化開發(fā)工具。 在一些實(shí)施例中,開發(fā)工具538是IBM WebSphere DataStage。
在各種實(shí)施例中,數(shù)據(jù)庫540可以是關(guān)系型、分級(jí)或網(wǎng)絡(luò)數(shù)據(jù)庫管理系 統(tǒng)、以及數(shù)據(jù)庫的關(guān)聯(lián)數(shù)據(jù)。例如,數(shù)據(jù)庫540是具有一個(gè)或多個(gè)表的關(guān)系 型數(shù)據(jù)庫管理系統(tǒng)。
可通過傳統(tǒng)的操作系統(tǒng)來實(shí)現(xiàn)操作系統(tǒng)530,如2/03@(國(guó)際商業(yè)機(jī)器公 司的注冊(cè)商標(biāo))、MVS⑧(國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo))、OS/39(f(國(guó)際商業(yè)機(jī) 器公司的注冊(cè)商標(biāo))、AIX (國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo))、UNIX (UNIX是 美國(guó)和其他國(guó)家的開放集團(tuán)的注冊(cè)商標(biāo))、\¥^00\¥3@(微軟公司的注冊(cè)商 標(biāo))、LINUX (Linus Torvalds的注冊(cè)商標(biāo))、Solaris (Sun Microsystems, Inc.的 注冊(cè)商標(biāo))、以及HP-UX (Hewlett-Packard Development Company, L.P.的注冊(cè) 商標(biāo))。
在圖24中所示的示例數(shù)據(jù)處理系統(tǒng)500不意圖限制本發(fā)明??墒褂闷渌?替代的硬件環(huán)境,而不會(huì)脫離本發(fā)明的范圍。
已為了例示和說明的目的而提供了本發(fā)明的各種實(shí)施例的前述詳細(xì)描 述。不意圖是窮盡的或?qū)⒈景l(fā)明限于所公開的精確形式。根據(jù)上述教導(dǎo),許 多修改和變型是可能的。希望本發(fā)明不限于此詳細(xì)描述,而是限于所附的權(quán) 利要求。
權(quán)利要求
1、一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括基于規(guī)范模型來構(gòu)建軟件組件的控制流,所述規(guī)范模型包括至少一個(gè)輸入和引用所述至少一個(gè)輸入的至少一個(gè)需求;以及基于所述控制流、以及所述規(guī)范模型的所述至少一個(gè)輸入和所述至少一個(gè)需求,生成所述軟件組件的至少部分實(shí)現(xiàn)。
2、 如權(quán)利要求l所述的方法,其中所述規(guī)范模型還包括至少一個(gè)輸出, 并且,其中所述生成所述軟件組件的所述至少部分實(shí)現(xiàn)還基于所述至少一個(gè) 輸出。
3、 如權(quán)利要求l所述的方法,還包括 基于規(guī)范來創(chuàng)建所述規(guī)范模型。
4、 如權(quán)利要求1所述的方法,其中所述規(guī)范與商業(yè)分析師相關(guān)聯(lián),并且, 所述至少部分實(shí)現(xiàn)與開發(fā)人員相關(guān)聯(lián),以在所述商業(yè)分析師和所述開發(fā)人員 之間提供協(xié)作環(huán)境。
5、 如權(quán)利要求l所述的方法,其中所述至少一個(gè)需求包括多個(gè)需求,并 且所述構(gòu)建所述控制流包括將所述多個(gè)需求排序成邏輯順序。
6、 如權(quán)利要求5所述的方法,還包括確定在所述需求中的至少兩個(gè)之間是否存在隱式的依賴關(guān)系,其中基于 所述隱式的依賴關(guān)系來對(duì)所述多個(gè)需求進(jìn)行排序。
7、 如權(quán)利要求l所述的方法,其中所述構(gòu)建所述控制流包括將對(duì)編程 例程的調(diào)用插入到用于所述規(guī)范模型的每個(gè)所述需求的控制流中。
8、 如權(quán)利要求6所述的方法,其中,響應(yīng)于所述至少一個(gè)需求之一包括 具有文本扭述的商業(yè)規(guī)則,所述調(diào)用指向編程例程;其中所述生成所述至少 部分實(shí)現(xiàn)包括將所述文本描述包括在所述編程例程中。
9、 如權(quán)利要求6所述的方法,其中,響應(yīng)于所述至少一個(gè)需求之一包括 編程邏輯,所述調(diào)用指向編程例程;其中所述生成所述至少部分實(shí)現(xiàn)包括 將所述編程邏輯包括在所述編程例程中。
10、 如權(quán)利要求l所述的方法,其中所述構(gòu)建所述控制流產(chǎn)生表示所述 控制流的模板,其中所述模板包括分別表示所述至少一個(gè)輸入的至少一個(gè)軟 件子組件,并且所述至少一個(gè)軟件子組件分別表示所述至少一個(gè)輸出。
11、 如權(quán)利要求10所述的方法,其中所述至少一個(gè)需求包括多個(gè)需求, 其中所述生成所述至少部分實(shí)現(xiàn)包括對(duì)于所述多個(gè)需求中的至少一個(gè),將 表示所述需求的軟件子組件插入到所述模板中。
12、 如權(quán)利要求10所述的方法,還包括 在圖形界面上顯示所述模板。
13、 如權(quán)利要求IO所述的方法,其中所述至少一個(gè)需求包括多個(gè)需求, 其中所述生成所述至少部分實(shí)現(xiàn)包括響應(yīng)于所述多個(gè)需求中的一個(gè)需求是 商業(yè)規(guī)則,將接口軟件子組件插入到所述模板中。
14、 如權(quán)利要求IO所述的方法,其中所述至少一個(gè)需求包括多個(gè)需求, 其中響應(yīng)于所述多個(gè)需求之一具有多個(gè)輸入和一個(gè)輸出,所述構(gòu)建將第 一軟 件子組件插入到所述模板中。
15、 如權(quán)利要求14所述的方法,其中響應(yīng)于所述多個(gè)需求中的另一個(gè)具 有單個(gè)輸入和多個(gè)輸出,所述構(gòu)建將第二軟件子組件插入到所述模板中。
16、 如權(quán)利要求IO所述的方法,其中所述至少一個(gè)需求包括多個(gè)需求, 其中所述至少一個(gè)輸入包括多個(gè)源數(shù)據(jù)資源,并且所述至少一個(gè)輸出包括多 個(gè)目標(biāo)數(shù)據(jù)資源,所述構(gòu)建包括遍歷所述規(guī)范模型,以識(shí)別出所述源數(shù)據(jù)資源,并且將分別表示所述源 數(shù)據(jù)資源的軟件子組件添加到所述才莫板; 確定所述源數(shù)據(jù)資源是否相關(guān);響應(yīng)于確定所述源數(shù)據(jù)資源具有關(guān)系,將表示所述關(guān)系的第 一軟件子組 件插入到所述模板中;以及識(shí)別出任何數(shù)據(jù)資源級(jí)別需求,并且分別將相關(guān)聯(lián)的軟件子組件添加到 該模板。
17、 如權(quán)利要求l所述的方法,其中所述軟件組件是提取、轉(zhuǎn)換和加載 任務(wù)。
18、 如權(quán)利要求l所述的方法,其中所述軟件組件是Java類。
19、 如權(quán)利要求2所述的方法,其中所述軟件組件包括網(wǎng)絡(luò)服務(wù)之間的 鏈接。
20、 一種數(shù)據(jù)處理系統(tǒng),包括 處理器;以及存儲(chǔ)器,存儲(chǔ)要由所述處理器執(zhí)行的指令,所述存儲(chǔ)器存儲(chǔ)用于以下的 指令基于規(guī)范模型來構(gòu)建軟件組件的控制流,所述規(guī)范模型包括至少一個(gè)輸 入和至少一個(gè)輸出;以及基于所述控制流、所述規(guī)范模型的所述至少一個(gè)輸入和所述至少一個(gè)輸 出,生成所述軟件組件的至少部分實(shí)現(xiàn)。
21、 如權(quán)利要求20所述的數(shù)據(jù)處理系統(tǒng),其中所述規(guī)范模型包括引用所 述至少一個(gè)輸入中的至少一個(gè)、以及所述至少一個(gè)輸出中的至少一個(gè)的至少 一個(gè)需求,并且,其中所述生成所述軟件組件的所述至少部分實(shí)現(xiàn)還基于所 述至少一個(gè)需求。
22、 如權(quán)利要求?0所述的數(shù)據(jù)處理系統(tǒng),其中構(gòu)建所述控制流的所述指 令產(chǎn)生表示所述控制流的模板,其中所述模板包括分別表示所述至少一個(gè)輸 入的至少一個(gè)軟件子組件,并且所述至少一個(gè)軟件子組件分別表示所述至少 一個(gè)輸出。
23、 如權(quán)利要求21所述的數(shù)據(jù)處理系統(tǒng),其中所述至少一個(gè)需求包括多 個(gè)需求,并且,其中生成所述至少部分實(shí)現(xiàn)的所述指令響應(yīng)于所述多個(gè)需求 中的一個(gè)需求是商業(yè)規(guī)則,將接口軟件子組件插入到所述模板中。
全文摘要
提供了用于接口的協(xié)作衍生的方法和系統(tǒng)?;谝?guī)范模型來構(gòu)建軟件組件的控制流。在各種實(shí)施例中,規(guī)范模型包括至少一個(gè)輸入、以及引用該至少一個(gè)輸入的至少一個(gè)需求?;诳刂屏饕约耙?guī)范模型的至少一個(gè)輸入和至少一個(gè)需求來生成軟件組件的至少一部分實(shí)現(xiàn)。在某些實(shí)施例中,規(guī)范模型還包括至少一個(gè)輸出,并且軟件組件的至少一部分實(shí)現(xiàn)也基于該至少一個(gè)輸出。
文檔編號(hào)G06F9/44GK101174212SQ200710152478
公開日2008年5月7日 申請(qǐng)日期2007年10月15日 優(yōu)先權(quán)日2006年10月13日
發(fā)明者瑪麗·A·羅思, 雅克·J·拉布里, 馬丁·克隆普 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司