專利名稱:一種基于領(lǐng)域模型的軟件生成方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù),特別是指一種基于領(lǐng)域模型的軟件生成方法及裝置。
背景技術(shù):
在現(xiàn)代軟件開發(fā)過程當(dāng)中,通過軟件復(fù)用將各種已有軟件成分用于新項目 的建立,已成為提高軟件開發(fā)生產(chǎn)力和質(zhì)量的有效方式,完全重新構(gòu)建一個新 項目的情況幾乎是不存在。因此,如何提高軟件復(fù)用在軟件開發(fā)過程中所占的 比例,以進一步降低開發(fā)成本和提高開發(fā)效率成為關(guān)鍵。
從目前來看,能夠產(chǎn)生顯著效果的軟件復(fù)用主要是對軟件開發(fā)過程中各階 段開發(fā)成果的復(fù)用。主要包括代碼的復(fù)用、構(gòu)件的復(fù)用和設(shè)計的復(fù)用,等等。 但在實際應(yīng)用中,這些實現(xiàn)方式都存在很多缺陷,復(fù)用能力仍然較低。
于是,目前提出了領(lǐng)域驅(qū)動設(shè)計(DDD, Domain Driven Design )的方法,
以實現(xiàn)更高一層的軟件復(fù)用。領(lǐng)域是指一組具有相似或相近軟件需求的應(yīng)用系 統(tǒng)所覆蓋的功能區(qū)域。這一方法的實現(xiàn)基礎(chǔ)是領(lǐng)域模型。領(lǐng)域模型是用于收集、 組織和表示與領(lǐng)域相關(guān)的信息,包括了相應(yīng)領(lǐng)域中系統(tǒng)的變化性和共性的知識。 但是,在具體實現(xiàn)時,當(dāng)不同用戶具有相同領(lǐng)域的業(yè)務(wù)需求時,如何獲得 與具體系統(tǒng)實現(xiàn)無關(guān)的領(lǐng)域模型復(fù)用的能力;如何有效地將領(lǐng)域模型快速轉(zhuǎn)化 為能夠?qū)崿F(xiàn)的具體系統(tǒng);進一步地,如何有效的對項目過程中不斷豐富的領(lǐng)域 模型進行組織和管理等問題均未得到很好的解決,仍然無法提高軟件的開發(fā)效 率和開發(fā)質(zhì)量。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種基于領(lǐng)域模型的軟件生成方法
5及裝置,有效提高軟件的開發(fā)效率和開發(fā)質(zhì)量。
為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的 一種基于領(lǐng)域模型的軟件生成方法,該方法包含以下步驟
A、 將與領(lǐng)域相關(guān)的業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、以及業(yè)務(wù)基礎(chǔ) 語法描述的領(lǐng)域模型;
B、 通過模型解析引擎將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的源碼和構(gòu)件。
所述步驟A包括
Al、根據(jù)業(yè)務(wù)需求和領(lǐng)域在業(yè)務(wù)基礎(chǔ)語法資料庫中檢索到對應(yīng)的業(yè)務(wù)基礎(chǔ) 語法;
A2、根據(jù)所述業(yè)務(wù)需求和所述業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中檢索到對 應(yīng)的領(lǐng)域模型。
所述步驟A1進一步包括未檢索到對應(yīng)的業(yè)務(wù)基礎(chǔ)語法時,根據(jù)業(yè)務(wù)需 求和領(lǐng)域創(chuàng)建對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,并將所述業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域 與所述業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系存儲于業(yè)務(wù)基礎(chǔ)語法資料庫。
所述步驟A2進一步包括未檢索到對應(yīng)的領(lǐng)域模型時,根據(jù)業(yè)務(wù)需求和 業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中創(chuàng)建領(lǐng)域模型,并將所述領(lǐng)域模型及業(yè)務(wù)需 求、業(yè)務(wù)基礎(chǔ)語法與所述領(lǐng)域模型三者之間的對應(yīng)關(guān)系存儲于領(lǐng)域模型資料庫。
所述步驟B包括
Bl、根據(jù)業(yè)務(wù)需求和領(lǐng)域模型在模型解析引擎資料庫中檢索到對應(yīng)的模型 解析引擎;
B2、通過所述模型解析引擎對相應(yīng)的領(lǐng)域模型進行轉(zhuǎn)化,生成組裝系統(tǒng)所 需要的源代碼和構(gòu)件。
所述步驟B1進一步包括未檢索到對應(yīng)的模型解析引擎時,根據(jù)業(yè)務(wù)需 求和領(lǐng)域模型創(chuàng)建對應(yīng)的模型解析引擎,并將所述模型解析引擎及業(yè)務(wù)需求、 領(lǐng)域模型與所述模型解析引擎三者之間的對應(yīng)關(guān)系存儲于模型解析引擎資料 庫。一種基于領(lǐng)域模型的軟件生成裝置,該裝置包括生成單元和存儲單元, 其中,所述生成單元用于將與領(lǐng)域相關(guān)的業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、 以及業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng)域模型,并通過模型解析引擎將所述領(lǐng)域模型轉(zhuǎn)化 為組裝系統(tǒng)所需的源碼和構(gòu)件;所述存儲單元用于存儲業(yè)務(wù)基礎(chǔ)語法、領(lǐng)域模 型及模型解析引擎。
所述存儲單元包括業(yè)務(wù)基礎(chǔ)語法資料庫、領(lǐng)域模型資料庫和模型解析引 擎資料庫,其中,所述業(yè)務(wù)基礎(chǔ)語法資料庫用于存儲業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、
領(lǐng)域與所述業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系;所述領(lǐng)域模型資料庫用于存儲 領(lǐng)域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與所述領(lǐng)域模型三者之間的對應(yīng)關(guān)系;所 述模型解析引擎資料庫用于存儲模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與所述模 型解析引擎三者之間的對應(yīng)關(guān)系。
所述生成單元包括業(yè)務(wù)基礎(chǔ)語法確定單元、領(lǐng)域模型確定單元和模型解 析引擎單元,其中,所述業(yè)務(wù)基礎(chǔ)語法確定單元用于根據(jù)業(yè)務(wù)需求和領(lǐng)域在業(yè) 務(wù)基礎(chǔ)語法資料庫中檢索對應(yīng)的業(yè)務(wù)基礎(chǔ)語法;并且在未檢索到業(yè)務(wù)基礎(chǔ)語法 時,進一步用于根據(jù)業(yè)務(wù)需求和領(lǐng)域創(chuàng)建對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,并將所述業(yè)務(wù) 基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域與所述業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系存儲于業(yè) 務(wù)基礎(chǔ)語法資料庫;所述領(lǐng)域模型確定單元用于根據(jù)所述業(yè)務(wù)需求和所述業(yè)務(wù) 基礎(chǔ)語法在領(lǐng)域模型資料庫中檢索對應(yīng)的領(lǐng)域模型,向模型解析引擎單元提供 檢索到的領(lǐng)域模型;并且在未檢索到領(lǐng)域模型時,進一步用于根據(jù)所述業(yè)務(wù)需 求和所述業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中創(chuàng)建對應(yīng)的領(lǐng)域模型,并將所述領(lǐng) 域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與所述領(lǐng)域模型三者之間的對應(yīng)關(guān)系存儲于 領(lǐng)域模型資料庫;所述模型解析引擎單元用于根據(jù)所述業(yè)務(wù)需求和所述領(lǐng)域模 型在模型解析引擎資料庫中檢索對應(yīng)的模型解析引擎,通過相應(yīng)的模型解析引 擎對相應(yīng)的領(lǐng)域模型進行轉(zhuǎn)化,生成組裝系統(tǒng)所需要的源代碼和構(gòu)件;并且在 為檢索到模型解析引擎時,進一步用于根據(jù)所述業(yè)務(wù)需求和所述領(lǐng)域模型創(chuàng)建 對應(yīng)的模型解析引擎,并將所述模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與所述模 型解析引擎三者之間的對應(yīng)關(guān)系存儲于模型解析引擎資料庫。本發(fā)明方案中,將需求分析過程中產(chǎn)生的用戶對于領(lǐng)域的相關(guān)業(yè)務(wù)需求轉(zhuǎn) 化為存儲的業(yè)務(wù)基礎(chǔ)語法、以及業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng)域模型,業(yè)務(wù)基礎(chǔ)語法 和領(lǐng)域模型分別存儲在業(yè)務(wù)基礎(chǔ)語法資料庫和領(lǐng)域模型資料庫中;然后通過模 型解析引擎將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的源碼和構(gòu)件。這樣,不同 用戶具有相同領(lǐng)域的業(yè)務(wù)需求時,只需在領(lǐng)域模型資料庫中檢索對應(yīng)的領(lǐng)域模 型后再交由模型解析引擎處理即可,以此獲得了與具體系統(tǒng)實現(xiàn)無關(guān)的領(lǐng)域模 型的復(fù)用能力。通過領(lǐng)域模型資料庫的方式,可以有效的對項目實現(xiàn)過程中不 斷豐富的領(lǐng)域模型進行組織和管理,可以對領(lǐng)域模型資料庫進行添加、刪除或 修改。通過與編程語言對應(yīng)的模型解析引擎,獲得從領(lǐng)域模型到具體系統(tǒng)實現(xiàn) 的快速轉(zhuǎn)化能力。根據(jù)本發(fā)明提供的方案,有效提高了軟件的開發(fā)效率和開發(fā) 質(zhì)量,大大降低了開發(fā)成本。
圖l為本發(fā)明中基于領(lǐng)域模型的軟件生成流程圖2為本發(fā)明實施例中軟件開發(fā)過程示意圖3為本發(fā)明中基于領(lǐng)域模型的軟件生成裝置結(jié)構(gòu)示意圖。
具體實施例方式
本發(fā)明提供的方案采用DDD的方法,將需求分析過程中產(chǎn)生的用戶對于 領(lǐng)域的相關(guān)業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、以及業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng) 域模型,業(yè)務(wù)基礎(chǔ)語法和領(lǐng)域模型分別存儲在業(yè)務(wù)基礎(chǔ)語法資料庫和領(lǐng)域模型 資料庫中;然后通過模型解析引擎將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的源 碼和構(gòu)件。
圖1為本發(fā)明中基于領(lǐng)域模型的軟件生成流程圖,如圖1所示,基于領(lǐng)域 模型的軟件生成的處理過程包括以下步驟
步驟101:判斷是否根據(jù)業(yè)務(wù)需求和領(lǐng)域在業(yè)務(wù)基礎(chǔ)語法資料庫中檢索到 對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,如果檢索到,則直接執(zhí)行步驟103;如果未檢索到,則繼續(xù)執(zhí)行步驟102。
雖然不同領(lǐng)域的業(yè)務(wù)需求可能相同,但描述卻不盡相同,因此就要求不同 的業(yè)務(wù)基礎(chǔ)語法與不同的業(yè)務(wù)需求及領(lǐng)域相對應(yīng)。業(yè)務(wù)基礎(chǔ)語法資料庫中存儲 有業(yè)務(wù)基礎(chǔ)語法的內(nèi)容及業(yè)務(wù)需求、領(lǐng)域與業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系, 因此,在業(yè)務(wù)基礎(chǔ)語法資料庫中,可以根據(jù)業(yè)務(wù)需求和領(lǐng)域?qū)I(yè)務(wù)基礎(chǔ)語法進 行檢索,這樣,就得到最終所需要的業(yè)務(wù)基礎(chǔ)語法。
業(yè)務(wù)基礎(chǔ)語法包括的主要內(nèi)容可以為統(tǒng)一的業(yè)務(wù)對象定位體系;業(yè)務(wù)對 象間引用關(guān)系的表述;業(yè)務(wù)與業(yè)務(wù)對象間組成關(guān)系的表述;滿足業(yè)務(wù)對象間通 信的消息傳遞機制;滿足業(yè)務(wù)對象間通信的業(yè)務(wù)環(huán)境;業(yè)務(wù)對象管理機制;業(yè) 務(wù)數(shù)據(jù)豐富展現(xiàn)的視圖組件;以及能夠表達與或非的邏輯表達式。業(yè)務(wù)基礎(chǔ)語 法可以采用領(lǐng)域特定語言(Domain Specific Language, DSL)來描述。
步驟102:根據(jù)業(yè)務(wù)需求和領(lǐng)域創(chuàng)建對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,并將相應(yīng)的業(yè) 務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域與業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系存儲于業(yè)務(wù) 基礎(chǔ)語法資料庫。
步驟103:判斷是否根據(jù)業(yè)務(wù)需求和業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中檢 索到對應(yīng)的領(lǐng)域模型,如果檢索到,則直接執(zhí)行步驟105;否則,繼續(xù)執(zhí)行步 驟104。
每個業(yè)務(wù)基礎(chǔ)語法都有多個領(lǐng)域模型與之相對應(yīng),通過業(yè)務(wù)需求可以確定 出唯一與業(yè)務(wù)基礎(chǔ)語法相對應(yīng)的領(lǐng)域模型。領(lǐng)域模型資料庫中存儲有領(lǐng)域模型 的內(nèi)容及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與領(lǐng)域模型三者之間的對應(yīng)關(guān)系,因此,在 領(lǐng)域模型資料庫中,可以根據(jù)業(yè)務(wù)需求和業(yè)務(wù)基礎(chǔ)語法對領(lǐng)域模型進行檢索, 這樣,就得到最終所需要的領(lǐng)域模型。
步驟104:根據(jù)業(yè)務(wù)需求和業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中創(chuàng)建對應(yīng)的 領(lǐng)域模型,并將相應(yīng)的領(lǐng)域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與領(lǐng)域模型三者之 間的對應(yīng)關(guān)系存儲于領(lǐng)域模型資料庫,以此實現(xiàn)對領(lǐng)域模型資料庫的添加、刪 除或修改。
領(lǐng)域模型的具體實現(xiàn)可以包括系統(tǒng)架構(gòu)模型和業(yè)務(wù)架構(gòu)模型,但領(lǐng)域模型并不僅限于這種實現(xiàn)方式。創(chuàng)建領(lǐng)域模型時,可以首先根據(jù)業(yè)務(wù)需求將業(yè)務(wù)進 行模塊化分層,并根據(jù)該模塊化分層在業(yè)務(wù)基礎(chǔ)語法的基礎(chǔ)上構(gòu)建層次化的系
統(tǒng)架構(gòu)模型;然后在該層次化的系統(tǒng)架構(gòu)模型的基礎(chǔ)上構(gòu)造滿足所述業(yè)務(wù)需求 的業(yè)務(wù)架構(gòu)模型;最后,在業(yè)務(wù)架構(gòu)模型的基礎(chǔ)上構(gòu)建每層模型的基礎(chǔ)語義, 并細化模型對象的屬性和行為。
步驟105:判斷是否根據(jù)業(yè)務(wù)需求和領(lǐng)域模型在模型解析引擎資料庫中檢 索到對應(yīng)的模型解析引擎,如果檢索到,則直接執(zhí)行步驟107;否則,繼續(xù)執(zhí) 行步驟106。
模型解析引擎可以包括一個代碼自動生成系統(tǒng),但模型解析引擎并不僅限 于這種實現(xiàn)方式。代碼自動生成系統(tǒng)主要包括五層結(jié)構(gòu)的代碼自動生成裝置、 代碼模板和代碼生成引擎。
根據(jù)領(lǐng)域模型的劃分層次,每一個代碼自動生成系統(tǒng)至少對應(yīng)于一個系統(tǒng) 架構(gòu)模型。模型解析引擎資料庫中存儲有模型解析引擎的內(nèi)容及業(yè)務(wù)需求、領(lǐng) 域模型與模型解析引擎三者之間的對應(yīng)關(guān)系,因此,在模型解析引擎資料庫中, 可以根據(jù)業(yè)務(wù)需求和領(lǐng)域模型對模型解析引擎進行檢索,這樣,就得到最終所 需要的模型解析引擎。
步驟106:根據(jù)業(yè)務(wù)需求和領(lǐng)域模型創(chuàng)建對應(yīng)的模型解析引擎,并將相應(yīng) 的模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與模型解析引擎三者之間的對應(yīng)關(guān)系存 儲于模型解析引擎資料庫。
步驟107:通過相應(yīng)的模型解析引擎對相應(yīng)的領(lǐng)域模型進行轉(zhuǎn)化,生成組 裝系統(tǒng)所需要的源代碼和構(gòu)件。
模型解析引擎中的代碼自動生成系統(tǒng)的生成過程可以包括分別創(chuàng)建數(shù)據(jù) 模型、組件模型、流程模型、控制模型和頁面模型,并根據(jù)生成規(guī)則生成代碼 模板;配置代碼生成的運行環(huán)境;讀入所創(chuàng)建的各模型和生成的代碼模板;驗
證所創(chuàng)建的模型是否與對應(yīng)層的元數(shù)據(jù)格式匹配,并判斷代碼模板中業(yè)務(wù)對象 是否均已采用特殊標(biāo)記語言進行標(biāo)記,如果不匹配或未進行標(biāo)記,則結(jié)束當(dāng)前
處理流程;對照代碼模板中特殊標(biāo)記語言標(biāo)記的名稱,在所創(chuàng)建的模型中查找相應(yīng)名稱的值進行替換,自動生成所需要的源代碼和構(gòu)件。
每一個代碼模板都存在一個具體的編程語言與之相對應(yīng)。根據(jù)該對應(yīng)關(guān)系, 由代碼生成引擎生成組裝系統(tǒng)所需要的源代碼和構(gòu)件。
這里,只是對模型解析引擎中的生成方法給出示例性的描述,實際應(yīng)用中, 并不僅限于上面所描述的實現(xiàn)方式。
實際軟件系統(tǒng)的開發(fā), 一般包括對領(lǐng)域內(nèi)容、即業(yè)務(wù)類的開發(fā)和對非領(lǐng)域 內(nèi)容、即技術(shù)類的開發(fā)。代表業(yè)務(wù)類的領(lǐng)域內(nèi)容即滿足用戶的具體業(yè)務(wù)需求, 如電子商務(wù)領(lǐng)域中的產(chǎn)品管理、訂單管理和物流管理等。代表技術(shù)類的非領(lǐng)域 內(nèi)容即除用于滿足用戶的具體業(yè)務(wù)需求之外,其他需要開發(fā)的項目,如用戶界 面、軟件架構(gòu)、各種構(gòu)件和系統(tǒng)集成(遺留系統(tǒng)或第三方系統(tǒng))等。
因此,從實際的軟件系統(tǒng)的開發(fā)過程來看,對于本發(fā)明或者任何一個軟件 生成系統(tǒng)來說,完全將一個系統(tǒng)照搬到另一個系統(tǒng)的情況是不存在的,還需要 進一步的手工修改或定制。
下面以 一個網(wǎng)上書店系統(tǒng)開發(fā)過程中的應(yīng)用為例,對本發(fā)明的具體實現(xiàn)作 進一步詳細說明,如圖2所示。
傳統(tǒng)需求分析階段,主要是對用戶的業(yè)務(wù)活動進行分析,即明確在用戶的 業(yè)務(wù)環(huán)境中網(wǎng)上書店系統(tǒng)應(yīng)該完成什么,并形成需求分析文檔、即業(yè)務(wù)需求。
領(lǐng)域模型分析階段,如圖1中所述的步驟101 步驟102,主要根據(jù)需求分 析文檔、即業(yè)務(wù)需求在業(yè)務(wù)基礎(chǔ)語法資料庫中檢索已有的相關(guān)業(yè)務(wù)基礎(chǔ)語法; 或者將需求分析文檔、即相應(yīng)領(lǐng)域的業(yè)務(wù)需求轉(zhuǎn)化為通過領(lǐng)域特定語言描述的 業(yè)務(wù)基礎(chǔ)語法,并存儲在業(yè)務(wù)基礎(chǔ)語法資料庫中。
根據(jù)該網(wǎng)上書店系統(tǒng)的需求分析文檔,其功能包括庫存管理、圖書發(fā)布
管理、物流管理、系統(tǒng)管理、搜索服務(wù)、購物車服務(wù)和客戶服務(wù)等,并且網(wǎng)上 書店系統(tǒng)是電子商務(wù)領(lǐng)域中的一個典型應(yīng)用。以"電子商務(wù)" 一詞作為領(lǐng)域的 關(guān)鍵字,根據(jù)該關(guān)鍵字及業(yè)務(wù)需求在業(yè)務(wù)基礎(chǔ)語法資料庫中檢索相關(guān)的業(yè)務(wù)基 礎(chǔ)語法。如果相應(yīng)業(yè)務(wù)基礎(chǔ)語法不存在,則將需求分析文檔中有關(guān)領(lǐng)域的內(nèi)容 轉(zhuǎn)化為業(yè)務(wù)基礎(chǔ)語法。然后,以"電子商務(wù)" 一詞作為領(lǐng)域的關(guān)鍵字,將該業(yè)務(wù)基礎(chǔ)語法存儲在業(yè)務(wù)基礎(chǔ)語法資料庫中。
傳統(tǒng)系統(tǒng)設(shè)計階段,主要是設(shè)計網(wǎng)上書店系統(tǒng)的模塊層次結(jié)構(gòu)、數(shù)據(jù)庫的 結(jié)構(gòu)以及模塊之間的控制流程,即明確網(wǎng)上書店系統(tǒng)應(yīng)該做什么、也就是處理 過程,并形成系統(tǒng)設(shè)計文檔。在該階段過程中,除了重新編寫一個文檔之外, 系統(tǒng)設(shè)計人員可以根據(jù)需求分析文檔的結(jié)果在系統(tǒng)設(shè)計文檔資料庫中檢索已有 的相關(guān)系統(tǒng)設(shè)計文檔,以實現(xiàn)設(shè)計復(fù)用。
領(lǐng)域模型設(shè)計階段,如圖1中所述的步驟103 步驟104,主要是根據(jù)需求 分析文檔和系統(tǒng)設(shè)計文檔在領(lǐng)域模型資料庫中檢索已有的相關(guān)領(lǐng)域模型;或者 將需求分析文檔和系統(tǒng)設(shè)計文檔轉(zhuǎn)化為通過業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng)域模型,并
存儲在領(lǐng)域模型資料庫中。此處的系統(tǒng)設(shè)計文檔即為步驟103~步驟104中所述
的業(yè)務(wù)需求。
以網(wǎng)上書店系統(tǒng)的庫存管理的領(lǐng)域模型設(shè)計為例,根據(jù)系統(tǒng)設(shè)計文檔確定 庫存管理的模塊化分層包括數(shù)據(jù)層、信息層、功能層、流程層和組織層等。 以這五個層次的業(yè)務(wù)需求和電子商務(wù)的業(yè)務(wù)基礎(chǔ)語法作為關(guān)鍵字,在領(lǐng)域模型 資料庫中檢索已有的相關(guān)系統(tǒng)架構(gòu)的領(lǐng)域模型。如果相應(yīng)領(lǐng)域模型不存在,則
在五層系統(tǒng)架構(gòu)模型基礎(chǔ)上,通過電子商務(wù)的業(yè)務(wù)基礎(chǔ)語法,將需求分析文檔 中有關(guān)領(lǐng)域的內(nèi)容轉(zhuǎn)化為領(lǐng)域模型;然后,以五層系統(tǒng)架構(gòu)模型的業(yè)務(wù)需求和 電子商務(wù)的業(yè)務(wù)基礎(chǔ)語法作為關(guān)鍵字,將相應(yīng)領(lǐng)域模型存儲在領(lǐng)域模型資料庫 中。
傳統(tǒng)系統(tǒng)實現(xiàn)階段,主要是將傳統(tǒng)系統(tǒng)設(shè)計階段得到的描述處理過程的相 關(guān)系統(tǒng)設(shè)計文檔轉(zhuǎn)換為基于具體計算機語言實現(xiàn)的用于構(gòu)建網(wǎng)上書店系統(tǒng)的源 代碼和構(gòu)件。在傳統(tǒng)系統(tǒng)實現(xiàn)階段中,除了重新實現(xiàn)一個功能之外,系統(tǒng)實現(xiàn) 人員可以根據(jù)系統(tǒng)設(shè)計文檔在源代碼和構(gòu)件資料庫中檢索已有的相關(guān)源代碼或 構(gòu)件,以實現(xiàn)代碼復(fù)用和/或構(gòu)件復(fù)用。此處生成的源代碼和構(gòu)件,是網(wǎng)上書店 系統(tǒng)最終所需要的全部源代碼和構(gòu)件的 一 部分。
領(lǐng)域模型實現(xiàn)階段,如圖1中所述的步驟105 步驟107,主要是通過模型 解析引擎將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的源碼和構(gòu)件。由圖2可知,網(wǎng)上書店系統(tǒng)的最終所有源代碼和構(gòu)件,是由傳統(tǒng)系統(tǒng)實現(xiàn)階段和本發(fā)明方案 得到的源代碼和構(gòu)件共同組成的。
以網(wǎng)上書店系統(tǒng)的庫存管理的領(lǐng)域模型實現(xiàn)為例,根據(jù)系統(tǒng)設(shè)計文檔得到
庫存管理的系統(tǒng)實現(xiàn)模型包括數(shù)據(jù)層、組件層、流程層、控制層和界面層等。 此處的系統(tǒng)設(shè)計文檔即為步驟105 步驟106中所述的業(yè)務(wù)需求。領(lǐng)域模型的具 體實現(xiàn)可以包括系統(tǒng)架構(gòu)模型和業(yè)務(wù)架構(gòu)模型,這樣,以五層系統(tǒng)架構(gòu)模型和 五層業(yè)務(wù)架構(gòu)模型作為關(guān)鍵字在模型解析引擎資料庫中檢索已有的相關(guān)模型解 析引擎。如果相應(yīng)模型解析引擎不存在,則可以創(chuàng)建包括五層結(jié)構(gòu)的代碼自動 生成裝置、代碼模板和代碼生成引擎。然后,以五層系統(tǒng)架構(gòu)模型和五層業(yè)務(wù) 架構(gòu)模型作為關(guān)鍵字將相應(yīng)模型解析引擎存儲在模型解析引擎資料庫中。
傳統(tǒng)測試實施階段,主要是將正確的、完整的和可靠的網(wǎng)上書店系統(tǒng)交付 給最終用戶使用,并保障系統(tǒng)持久運行。
圖3為本發(fā)明中基于領(lǐng)域模型的軟件生成裝置結(jié)構(gòu)示意圖,如圖3所示, 基于領(lǐng)域模型的軟件生成裝置包括生成單元和存儲單元,其中,生成單元用 于將與領(lǐng)域相關(guān)的業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、以及業(yè)務(wù)基礎(chǔ)語法描 述的領(lǐng)域模型,并通過模型解析引擎將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的 源碼和構(gòu)件;存儲單元用于存儲業(yè)務(wù)基礎(chǔ)語法、領(lǐng)域模型及模型解析引擎。
存儲單元包括業(yè)務(wù)基礎(chǔ)語法資料庫、領(lǐng)域模型資料庫和模型解析引擎資 料庫,其中,業(yè)務(wù)基礎(chǔ)語法資料庫用于存儲業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域與 業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系;領(lǐng)域模型資料庫用于存儲領(lǐng)域模型及業(yè)務(wù) 需求、業(yè)務(wù)基礎(chǔ)語法與領(lǐng)域模型三者之間的對應(yīng)關(guān)系;模型解析引擎資料庫用 于存儲模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與模型解析引擎三者之間的對應(yīng)關(guān) 系。
生成單元包括業(yè)務(wù)基礎(chǔ)語法確定單元、領(lǐng)域模型確定單元和模型解析引 擎單元。
其中,業(yè)務(wù)基礎(chǔ)語法確定單元用于根據(jù)業(yè)務(wù)需求和領(lǐng)域在業(yè)務(wù)基礎(chǔ)語法資 料庫中檢索對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,向領(lǐng)域模型確定單元提供檢索到的業(yè)務(wù)基礎(chǔ)語法;并且在未檢索到業(yè)務(wù)基礎(chǔ)語法時,進一步用于根據(jù)業(yè)務(wù)需求和領(lǐng)域創(chuàng)建 對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,并將相應(yīng)的業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域與業(yè)務(wù)基礎(chǔ) 語法三者之間的對應(yīng)關(guān)系存儲于業(yè)務(wù)基礎(chǔ)語法資料庫。
領(lǐng)域模型確定單元用于根據(jù)業(yè)務(wù)需求和業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中
檢索對應(yīng)的領(lǐng)域模型,向模型解析引擎單元提供檢索到的領(lǐng)域模型;并且在未 檢索到領(lǐng)域模型時,進一步用于根據(jù)業(yè)務(wù)需求和業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料 庫中創(chuàng)建對應(yīng)的領(lǐng)域模型,并將相應(yīng)的領(lǐng)域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與 領(lǐng)域模型三者之間的對應(yīng)關(guān)系存儲于領(lǐng)域模型資料庫。
模型解析引擎單元用于根據(jù)業(yè)務(wù)需求和領(lǐng)域模型在模型解析引擎資料庫中 檢索對應(yīng)的模型解析引擎,通過相應(yīng)的模型解析引擎對相應(yīng)的領(lǐng)域模型進行轉(zhuǎn) 化,生成組裝系統(tǒng)所需要的源代碼和構(gòu)件;并且在為檢索到模型解析引擎時, 進一步用于根據(jù)業(yè)務(wù)需求和領(lǐng)域模型創(chuàng)建對應(yīng)的模型解析引擎,并將相應(yīng)的模 型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與模型解析引擎三者之間的對應(yīng)關(guān)系存儲于 模型解析引擎資料庫。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1、一種基于領(lǐng)域模型的軟件生成方法,其特征在于,該方法包含以下步驟A、將與領(lǐng)域相關(guān)的業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、以及業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng)域模型;B、通過模型解析引擎將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的源碼和構(gòu)件。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述步驟A包括Al、根據(jù)業(yè)務(wù)需求和領(lǐng)域在業(yè)務(wù)基礎(chǔ)語法資料庫中檢索到對應(yīng)的業(yè)務(wù)基礎(chǔ)語法;A2、根據(jù)所述業(yè)務(wù)需求和所述業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中檢索到對應(yīng)的領(lǐng)域模型。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟A1進一步包括未檢索到對應(yīng)的業(yè)務(wù)基礎(chǔ)語法時,根據(jù)業(yè)務(wù)需求和領(lǐng)域創(chuàng)建對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,并將所述業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域與所述業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系存儲于業(yè)務(wù)基礎(chǔ)語法資料庫。
4、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟A2進一步包括未檢索到對應(yīng)的領(lǐng)域模型時,根據(jù)業(yè)務(wù)需求和業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中創(chuàng)建領(lǐng)域模型,并將所述領(lǐng)域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與所述領(lǐng)域模型三者之間的對應(yīng)關(guān)系存儲于領(lǐng)域模型資料庫。
5、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述步驟B包括Bl、根據(jù)業(yè)務(wù)需求和領(lǐng)域模型在模型解析引擎資料庫中檢索到對應(yīng)的模型解析引擎;B2、通過所述模型解析引擎對相應(yīng)的領(lǐng)域模型進行轉(zhuǎn)化,生成組裝系統(tǒng)所需要的源代碼和構(gòu)件。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟B1進一步包括未檢索到對應(yīng)的模型解析引擎時,根據(jù)業(yè)務(wù)需求和領(lǐng)域模型創(chuàng)建對應(yīng)的模型解析引擎,并將所述模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與所述模型解析引擎三 者之間的對應(yīng)關(guān)系存儲于模型解析引擎資料庫。
7、 一種基于領(lǐng)域模型的軟件生成裝置,其特征在于,該裝置包括生成單 元和存儲單元,其中,所述生成單元用于將與領(lǐng)域相關(guān)的業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、 以及業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng)域模型,并通過模型解析引擎將所述領(lǐng)域模型轉(zhuǎn)化 為組裝系統(tǒng)所需的源碼和構(gòu)件;所述存儲單元用于存儲業(yè)務(wù)基礎(chǔ)語法、領(lǐng)域模型及模型解析引擎。
8、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述存儲單元包括業(yè)務(wù)基 礎(chǔ)語法資料庫、領(lǐng)域模型資料庫和模型解析引擎資料庫,其中,所述業(yè)務(wù)基礎(chǔ)語法資料庫用于存儲業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù)需求、領(lǐng)域與所述 業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系;所述領(lǐng)域模型資料庫用于存儲領(lǐng)域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與所述領(lǐng)域模型三者之間的對應(yīng)關(guān)系;所述模型解析引擎資料庫用于存儲模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與 所述模型解析引擎三者之間的對應(yīng)關(guān)系。
9、 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述生成單元包括業(yè)務(wù)基 礎(chǔ)語法確定單元、領(lǐng)域模型確定單元和模型解析引擎單元,其中,所述業(yè)務(wù)基礎(chǔ)語法確定單元用于根據(jù)業(yè)務(wù)需求和領(lǐng)域在業(yè)務(wù)基礎(chǔ)語法資料 庫中檢索對應(yīng)的業(yè)務(wù)基礎(chǔ)語法;并且在未檢索到業(yè)務(wù)基礎(chǔ)語法時,進一步用于根據(jù)業(yè)務(wù)需求和領(lǐng)域創(chuàng)建對應(yīng)的業(yè)務(wù)基礎(chǔ)語法,并將所述業(yè)務(wù)基礎(chǔ)語法及業(yè)務(wù) 需求、領(lǐng)域與所述業(yè)務(wù)基礎(chǔ)語法三者之間的對應(yīng)關(guān)系存儲于業(yè)務(wù)基礎(chǔ)語法資料庫;所述領(lǐng)域模型確定單元用于根據(jù)所述業(yè)務(wù)需求和所述業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域 模型資料庫中檢索對應(yīng)的領(lǐng)域模型,向模型解析引擎單元提供檢索到的領(lǐng)域模 型;并且在未檢索到領(lǐng)域模型時,進一步用于根據(jù)所述業(yè)務(wù)需求和所述業(yè)務(wù)基礎(chǔ)語法在領(lǐng)域模型資料庫中創(chuàng)建對應(yīng)的領(lǐng)域模型,并將所述領(lǐng)域模型及業(yè)務(wù)需求、業(yè)務(wù)基礎(chǔ)語法與所述領(lǐng)域模型三者之間的對應(yīng)關(guān)系存儲于領(lǐng)域模型資料庫;所述模型解析引擎單元用于根據(jù)所述業(yè)務(wù)需求和所述領(lǐng)域模型在模型解析引擎資料庫中檢索對應(yīng)的模型解析引擎,通過相應(yīng)的模型解析引擎對相應(yīng)的領(lǐng)域模型進行轉(zhuǎn)化,生成組裝系統(tǒng)所需要的源代碼和構(gòu)件;并且在為檢索到模型解析引擎時,進一步用于根據(jù)所述業(yè)務(wù)需求和所述領(lǐng)域模型創(chuàng)建對應(yīng)的模型解析引擎,并將所述模型解析引擎及業(yè)務(wù)需求、領(lǐng)域模型與所述模型解析引擎三者之間的對應(yīng)關(guān)系存儲于模型解析引擎資料庫。
全文摘要
本發(fā)明公開了一種基于領(lǐng)域模型的軟件生成方法及裝置,將需求分析過程中產(chǎn)生的與領(lǐng)域相關(guān)的業(yè)務(wù)需求轉(zhuǎn)化為存儲的業(yè)務(wù)基礎(chǔ)語法、以及業(yè)務(wù)基礎(chǔ)語法描述的領(lǐng)域模型;然后通過模型解析引擎,將相應(yīng)的領(lǐng)域模型轉(zhuǎn)化為組裝系統(tǒng)所需的源碼和構(gòu)件。這樣,不同用戶具有相同領(lǐng)域的業(yè)務(wù)需求時,只需在領(lǐng)域模型資料庫中檢索對應(yīng)的領(lǐng)域模型后再交由模型解析引擎處理即可,以此獲得了與具體系統(tǒng)實現(xiàn)無關(guān)的領(lǐng)域模型的復(fù)用能力。通過領(lǐng)域模型資料庫的方式,可以有效的對項目實現(xiàn)過程中不斷豐富的領(lǐng)域模型進行組織和管理。最終通過模型解析引擎,獲得從領(lǐng)域模型到具體系統(tǒng)實現(xiàn)的快速轉(zhuǎn)化能力。根據(jù)本發(fā)明,能夠有效提高軟件的開發(fā)效率和開發(fā)質(zhì)量,大大降低開發(fā)成本。
文檔編號G06F9/44GK101488086SQ20081024076
公開日2009年7月22日 申請日期2008年12月23日 優(yōu)先權(quán)日2008年12月23日
發(fā)明者任允培, 張克鵬, 王洪偉 申請人:北京中企開源信息技術(shù)有限公司