本發(fā)明涉及計算機軟件技術(shù)領(lǐng)域,尤其涉及一種基于功件樹和功件庫的目標(biāo)軟件生成方法及裝置。
背景技術(shù):
從軟件這個概念誕生以來,軟件開發(fā)從二進制、匯編語言,發(fā)展到C、Java、Rust等高級語言,從面向機器、面向過程發(fā)展到面向?qū)ο?、面向命令、面向服?wù),以及虛擬機、容器、微服務(wù)、AI、DevOps、Scrum、JPMS等技術(shù)、方法的出現(xiàn),都是在嘗試提高軟件復(fù)用率和加快軟件產(chǎn)品的開發(fā)、部署速度,簡化軟件產(chǎn)品的運維管理。
但是,上述情況都沒有改變軟件行業(yè)的傳統(tǒng)生產(chǎn)模式:一個軟件需求過來,先要成立一個開發(fā)團隊(可能是一個人),經(jīng)過需求分析、設(shè)計、開發(fā)、測試、編譯打包、部署安裝等階段,一個軟件項目才算開發(fā)完成。而這個軟件項目一旦成型,再對它進行升級或更新,還是需要由軟件開發(fā)人員一行行編寫或改寫代碼來實現(xiàn)。在開發(fā)下一個新的軟件項目時,重復(fù)上述步驟,即使已經(jīng)使用了這樣或那樣的組件技術(shù)、構(gòu)件技術(shù)、框架技術(shù)。
上述傳統(tǒng)開發(fā)軟件的模式,與古代的手工作坊非常相似,一個人或一個團隊包攬產(chǎn)品生產(chǎn)的所有階段的所有工作內(nèi)容。所以,傳統(tǒng)開發(fā)軟件模式,可以稱為軟件作坊模式。
軟件作坊模式開發(fā)軟件的弊端:首先是開發(fā)周期長,即使同一個團隊開發(fā)同一個類型的不同需求的軟件項目,也要經(jīng)過分析、設(shè)計、開發(fā)、測試等諸多流程;其次是勞動力浪費,工作成果無法再利用,不同開發(fā)團隊生產(chǎn)的軟件功能模塊,不能相互利用,一個軟件項目一旦開發(fā)完成,這個軟件所有相關(guān)工作成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等很難直接應(yīng)用到其他軟件項目。
那么如何快速地將已經(jīng)開發(fā)的軟件成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等直接應(yīng)用到新的軟件項目上,并提高軟件行業(yè)的生產(chǎn)能力,是軟件行業(yè)亟待解決的技術(shù)問題,是軟件行業(yè)實現(xiàn)工業(yè)化生產(chǎn)的關(guān)鍵。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是如何快速地將已經(jīng)開發(fā)的軟件成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等直接應(yīng)用到新的軟件項目上,并提高軟件行業(yè)的生產(chǎn)能力。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
第一方面,本發(fā)明實施例提供了一種基于功件樹和功件庫的目標(biāo)軟件生成方法,該方法包括:
接收用戶輸入的目標(biāo)軟件的需求信息;
將所述目標(biāo)軟件的需求信息轉(zhuǎn)化為與所述目標(biāo)軟件需求信息對應(yīng)的檢索信息;
根據(jù)所述檢索信息,在已創(chuàng)建的功件樹集合中檢索與所述目標(biāo)軟件的需求信息相匹配的第一功件樹;
根據(jù)所述第一功件樹,生成所述目標(biāo)軟件;
或者,
根據(jù)所述檢索信息,在已創(chuàng)建的功件庫中檢索與所述目標(biāo)軟件的需求信息對應(yīng)的第一功件,和/或第二功件;
將所述第一功件和/或第二功件進行組合,生成第二功件樹;
根據(jù)所述第二功件樹生成所述目標(biāo)軟件,其中,所述功件樹集合中所有功件樹,以及所述功件庫中所有功件,均遵循預(yù)定的功件規(guī)范。
本發(fā)明的有益效果是:對于有軟件需求的用戶而言,直接輸入目標(biāo)軟件需求信息,系統(tǒng)可以自動將該需求信息轉(zhuǎn)換為可以識別的檢索信息,例如包括與所述目標(biāo)軟件對應(yīng)的功件名稱,和/或,功件和/或功件樹屬性描述信息;又或者是直接將需求信息翻譯為功件樹語言等。
系統(tǒng)可以根據(jù)檢索信息,自動檢索功件樹集合中已有的第一功件樹,或者檢索功件庫中的第一功件和/或第二功件,并將第一功件和/或第二功件進行組合形成第二功件樹。從而使檢索到的第一功件樹或者組合成的第二功件樹滿足目標(biāo)軟件的需求,根據(jù)第一功件樹或者第二功件樹,生成目標(biāo)軟件。在調(diào)用功件或者功件樹時,無需考慮是否出自同一個開發(fā)團隊,因為功件和功件樹均遵循預(yù)定的功件規(guī)范。因此,可以快速的將已經(jīng)開發(fā)的軟件成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等應(yīng)用到新的軟件項目上,以便于提高軟件行業(yè)的生產(chǎn)能力。
進一步,當(dāng)根據(jù)所述檢索信息,在已創(chuàng)建的功件樹集合中未查找到與所述目標(biāo)軟件的需求信息相匹配的功件樹時,所述方法還包括:
根據(jù)所述檢索信息,開發(fā)新的功件樹;
并將所述新的功件樹加入所述功件樹集合中,其中所述新的功件樹遵循所述預(yù)定的功件規(guī)范。
采用上述進一步的方案的有益技術(shù)效果在于,當(dāng)通過上述檢索條件未檢測到用戶所需要的功件樹時,還可以開發(fā)新的功件樹,以滿足用戶的需求。而且,新開發(fā)的功件樹同樣遵循預(yù)定的功件規(guī)范,以便于其他軟件產(chǎn)品還可以再利用新的功件樹。
進一步,根據(jù)所述檢索信息,開發(fā)新的功件樹包括:
將已創(chuàng)建的功件樹為模板創(chuàng)建新的功件樹,其中,所述開發(fā)的新的功件樹遵循所述預(yù)定的功件規(guī)范。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,將已創(chuàng)建的功件樹作為模板,創(chuàng)建新的功件樹,可以在保證原有功件樹所具備的所有功能的前提下,對已有的功件樹的功能進行完善或者拓展,以使新的功件樹能夠滿足用戶的需求。
進一步的,當(dāng)根據(jù)所述檢索信息,在已創(chuàng)建的功件庫中未檢索到與所述目標(biāo)軟件的需求信息對應(yīng)的第一功件,和/或第二功件時,所述方法還包括:
根據(jù)所述檢索信息,開發(fā)與所述目標(biāo)軟件需求信息對應(yīng)的新的功件;
并將所述新的功件加入所述功件庫中,其中所述開發(fā)的新的功件遵循所述預(yù)定的功件規(guī)范。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于:為了滿足用戶需求,不止包括創(chuàng)建新的功件樹這一種可用的實施方式,還可以包括創(chuàng)建新的功件,以滿足用戶的需求,或者,將新的功件和功件庫中已有的其他功件組合,創(chuàng)建新的功件樹,以滿足用戶的需求。
進一步的,開發(fā)與所述目標(biāo)軟件需求信息對應(yīng)的新的功件,包括:
將已有的功件為模板開發(fā)新的功件。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于:將已創(chuàng)建的功件作為模板,創(chuàng)建新的功件,可以在保證原有功件所具備的所有功能的前提下,對已有的功件的功能進行完善或者拓展,以使新的功件能夠滿足用戶的需求。
進一步的,預(yù)定的功件規(guī)范包括:
創(chuàng)建與所述功件樹對應(yīng)的第一根目錄;
以及,創(chuàng)建與同類型的功件對應(yīng)的第二根目錄。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于:遵循同一種規(guī)范的功件或者功件樹中,每一個功件樹對應(yīng)創(chuàng)建一個或多個功件樹根目錄,以及同一類型的功件根據(jù)其所遵循功件規(guī)范對應(yīng)創(chuàng)建一個功件根目錄。將功件所對應(yīng)的文件、文件夾分別放入對應(yīng)的功件根目錄中。可以保證遵循同一種功件規(guī)范的功件之間可以相互調(diào)用和不覆蓋。同時還可以保證不同規(guī)范開發(fā)的功件互相不會覆蓋。
進一步的,任一功件均包括與之對應(yīng)的一個功件主文件和/或一個功件主目錄。
進一步的,所述功件樹包含的同類型的功件對應(yīng)的第二根目錄存儲于所述功件樹對應(yīng)的第一根目錄內(nèi),所述功件主文件和/或功件主目錄存儲于所述同類型功件對應(yīng)第二根目錄內(nèi)。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,將屬于同一功件樹的所有功件的根目錄全部存放于功件樹對應(yīng)的根目錄下,目的是可以方便同一功件樹之間的不同功件之間可以方便調(diào)用,以及編譯、打包、部署和安裝。
進一步的,預(yù)定的功件規(guī)范還包括:
所述任一功件均包含與之對應(yīng)的幫助文檔、問題和開發(fā)協(xié)作信息;
所述功件樹所包含的幫助文檔、問題和開發(fā)協(xié)作信息,為所述功件樹所包含的所有功件分別對應(yīng)的幫助文檔、問題和開發(fā)協(xié)作信息的集合。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,每一個功件都包含有對應(yīng)的幫助文檔、問題和開發(fā)協(xié)作信息,而功件樹所包含的幫助文檔、問題和開發(fā)協(xié)作信息,則是該功件樹中所有功件對應(yīng)的幫助文檔、問題和開發(fā)協(xié)作信息的一個集合。這個技術(shù)效果易于不同功件組合生成新的功件樹后,新功件樹相關(guān)的幫助文檔、問題、開發(fā)協(xié)作信息的生成和使用,即工作成果、業(yè)務(wù)和技術(shù)經(jīng)驗的有效積累和使用。
進一步的,功件樹包括:主功件樹、發(fā)布功件樹和分枝功件樹。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,每一個功件樹均可以包括主功件樹、發(fā)布功件樹和分枝功件樹等不同的功件子樹,每一個功件子樹執(zhí)行的功能不同,使功件樹的管理和使用更加的完善。
進一步的,功件包括:主功件、發(fā)布功件和分枝功件。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,每一個功件都可以獨立的方式進行開發(fā),有利于功件開發(fā)和使用上精益求精,便于更高級功件的開發(fā)和使用。
進一步的,所述功件樹集合中所有的功件樹均具有擴散機制和揚棄機制。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,每一個功件樹均具有擴散機制和揚棄機制,當(dāng)功件樹中產(chǎn)生一個新的功件時,則可以用主動或者被動的方式復(fù)制、擴散到其他功件樹中。從而使得功件樹可以獲得自我生長的能力。
第二方面,本發(fā)明實施例提供了一種基于功件樹和功件庫的目標(biāo)軟件生成裝置,其中,該裝置包括:
接收模塊,用于接收用戶輸入的目標(biāo)軟件的需求信息;
轉(zhuǎn)換模塊,用于將所述目標(biāo)軟件的需求信息,轉(zhuǎn)化為與所述目標(biāo)軟件需求信息對應(yīng)的檢索信息;
檢索模塊,用于根據(jù)所述檢索信息,在已創(chuàng)建的功件樹集合中檢索與所述目標(biāo)軟件的需求信息相匹配的第一功件樹;
處理模塊,用于根據(jù)所述第一功件樹,生成所述目標(biāo)軟件;
或者,
所述檢索模塊用于,根據(jù)所述檢索信息,在已創(chuàng)建的功件庫中檢索與所述目標(biāo)軟件的需求信息對應(yīng)的第一功件,和/或第二功件;
所述處理模塊用于,將所述第一功件和/或第二功件進行組合,生成第二功件樹;
根據(jù)所述第二功件樹生成所述目標(biāo)軟件,其中,所述功件樹集合中所有功件樹,以及所述功件庫中所有功件,均遵循預(yù)定的功件規(guī)范。
上述方案的有益技術(shù)效果在于,對于有軟件需求的用戶而言,直接輸入目標(biāo)軟件需求信息,系統(tǒng)可以自動將該需求信息轉(zhuǎn)換為可以識別的檢索信息,例如包括與所述目標(biāo)軟件對應(yīng)的功件名稱,和/或,功件和/或功件樹屬性描述信息;又或者是直接將需求信息翻譯為功件樹語言等。
系統(tǒng)可以根據(jù)檢索信息,自動檢索功件樹集合中已有的第一功件樹,或者檢索功件庫中的第一功件和/或第二功件,并將第一功件和/或第二功件進行組合形成第二功件樹。從而使檢索到的第一功件樹或者組合成的第二功件樹滿足目標(biāo)軟件的需求,根據(jù)第一功件樹或者第二功件樹,生成目標(biāo)軟件。在調(diào)用功件或者功件樹時,無需考慮是否出自同一個開發(fā)團隊,因為功件和功件樹均遵循預(yù)定的功件規(guī)范。因此,可以快速的將已經(jīng)開發(fā)的軟件成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等應(yīng)用到新的軟件項目上,以便于提高軟件行業(yè)的生產(chǎn)能力。
進一步的,處理模塊還用于:根據(jù)所述檢索信息,開發(fā)新的功件樹;
并將所述新的功件樹加入所述功件樹集合中,其中所述新的功件樹遵循所述預(yù)定的功件規(guī)范。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,當(dāng)通過上述檢索條件未檢測到用戶所需要的功件樹時,還可以開發(fā)新的功件樹,以便于能夠滿足用戶的需求。而且,新開發(fā)的功件樹同樣遵循預(yù)定的功件規(guī)范,以便于其他軟件產(chǎn)品還可以再利用新的功件樹。
進一步的,處理模塊具體用于:
將已創(chuàng)建的功件樹為模板創(chuàng)建新的功件樹,其中,所述開發(fā)的新的功件樹遵循所述預(yù)定的功件規(guī)范。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于,將已創(chuàng)建的功件樹作為模板,創(chuàng)建新的功件樹,可以在保證原有功件樹所具備的所有功能的前提下,對已有的功件樹的功能進行完善或者拓展,以使新的功件樹能夠滿足用戶的需求。
進一步的,所述處理模塊還用于:根據(jù)所述檢索信息,開發(fā)與所述目標(biāo)軟件需求信息對應(yīng)的新的功件;
并將所述新的功件加入所述功件庫中,其中所述開發(fā)的新的功件遵循所述預(yù)定的功件規(guī)范。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于:為了滿足用戶需求,不止包括創(chuàng)建新的功件樹這一種可用的實施方式,還可以包括創(chuàng)建新的功件,以滿足用戶的需求,或者,將新的功件和功件庫中已有的其他功件組合,創(chuàng)建新的功件樹,以滿足用戶的需求。
處理模塊具體用于:
將已有的功件為模板開發(fā)新的功件。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于:將已創(chuàng)建的功件作為模板,創(chuàng)建新的功件,可以在保證原有功件所具備的所有功能的前提下,對已有的功件的功能進行完善或者拓展,以使新的功件能夠滿足用戶的需求。
進一步的,處理模塊還用于目標(biāo)軟件的編譯、打包、下載、安裝部署、升級維護的自動化管理。
采用上述進一步的技術(shù)方案的有益技術(shù)效果在于:自動化地完成了目標(biāo)軟件的編譯、打包、下載、安裝部署、升級維護工作,從而降低了用戶的軟件使用維護成本,提高了軟件生產(chǎn)力。
進一步的,裝置還包括:功件樹管理模塊:用于管理功件樹及其功件子樹、功件樹關(guān)聯(lián)關(guān)系;
功件管理模塊:用于管理功件及其子版本、功件關(guān)聯(lián)關(guān)系。
附圖說明
圖1為本發(fā)明提供的主功件樹、發(fā)布功件樹和分枝功件樹的關(guān)系連接示意圖;
圖2為本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成方法的流程示意圖;
圖3為本發(fā)明實施例提供的另一種基于功件樹和功件庫的目標(biāo)軟件生成方法流程圖;
圖4為本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成裝置的結(jié)構(gòu)示意圖。
具體實施方式
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之類的具體細(xì)節(jié),以便透切理解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實施例中也可以實現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、技術(shù)以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
一個軟件產(chǎn)品,是由用戶界面(User Interface,簡稱UI)(可見)、功能(不可見)和數(shù)據(jù)等部分按照一定的技術(shù)或業(yè)務(wù)流程組合在一起,并可以在某些硬件或軟件環(huán)境中直接運行的程序。軟件產(chǎn)品內(nèi)部所產(chǎn)生、交互的信息,以及與其他軟件產(chǎn)品通訊的信息,就是各種格式的數(shù)據(jù),因為,整個計算機世界都是由二進制數(shù)據(jù)組成的。
一個軟件項目,可以包括一個或多個軟件產(chǎn)品,也可以不對應(yīng)軟件產(chǎn)品,而僅僅是某些文檔或軟件功能模塊的集合。
一個開發(fā)團隊開發(fā)一個軟件產(chǎn)品,這個軟件產(chǎn)品一旦完成,其一定可以分解為一個或多個軟件功能模塊,即多個軟件功能模塊是能夠組合成一個軟件產(chǎn)品的。如果一個團隊開發(fā)的多個軟件功能模塊,可以有效地組合成一個軟件產(chǎn)品,那么,世界上不相干的兩個團隊開發(fā)的軟件功能模塊,理論上也可以有效地組合成一個軟件產(chǎn)品。同一個開發(fā)團隊開發(fā)的軟件功能模塊能夠組合成一個軟件產(chǎn)品,是因為功能模塊間交互的接口、屬性參數(shù)等是匹配的,是其遵循同一個開發(fā)規(guī)范所致;假如世界上不相干的兩個團隊使用同一個規(guī)范開發(fā)的軟件功能模塊,也是完全有可能組合在一起生成一個軟件產(chǎn)品的。因此,世界上所有開發(fā)團隊都遵循的軟件開發(fā)規(guī)范的建立,是實現(xiàn)軟件工業(yè)化的必要條件。
因此,本發(fā)明實施例提供了一種基于功件樹和功件庫的目標(biāo)軟件生成方法。在生成功件和功件樹時,均遵循預(yù)定的功件規(guī)范。
在介紹本發(fā)明提供的方法之前,為了更加方便讀者理解,本文首先介紹在本發(fā)明中,功件、功件庫和功件樹的定義、功件和功件樹的種類,功件與功件、功件樹與功件樹之間的關(guān)聯(lián)關(guān)系,以及功件樹集合、功件樹語言等。
功件:一個軟件產(chǎn)品,其一定可以分解為一個或多個軟件功能模塊,而這個軟件功能模塊就可以理解為是一個功件。功件,可以是軟件項目或產(chǎn)品中的一個基本的邏輯或物理概念,也可以是一個多功能復(fù)合體,但其必須是一個完整而且獨立的功能模塊。單一功能的功件,可以組合成復(fù)雜功能的功件。將不同的功件有效的組織、銜接起來,經(jīng)過編譯打包部署安裝等步驟,使其在特定硬件或軟件環(huán)境下獨立運行,即可成為一個軟件產(chǎn)品。
功件的定義,還可以用自然語言的文字或詞匯來定義,比如中文中的詞匯用戶、角色、權(quán)限(英文則為User、Role、Permission)。
功件樹:一個功件樹,對應(yīng)一個軟件項目(Project)或一個軟件倉庫(Repository),是一個或多個功件的集合,是遵循某種功件規(guī)范,使用一種或多種編程語言、依賴數(shù)據(jù)庫或程序庫開發(fā)的,其一個滿足某種軟件需求的功件樹及其包含的功件子樹或功件子樹的功件集合子集可以直接生成滿足某種業(yè)務(wù)需求的軟件產(chǎn)品。
一個功件樹中的不同功件之間以各種功件關(guān)聯(lián)關(guān)系組合在一起,形成一種類似樹型或者網(wǎng)狀結(jié)構(gòu),所以稱之為功件樹,即一個功件樹,是由一個或多個功件組合而成的。
功件樹的創(chuàng)建,可以由軟件開發(fā)者發(fā)起,也可以由軟件使用者發(fā)起,還可以由軟件設(shè)計者發(fā)起;可以創(chuàng)建滿足某種業(yè)務(wù)需求的功件樹,我們稱之為“獨立功件樹”;也可以創(chuàng)建滿足廣泛業(yè)務(wù)需求的功件樹,可稱之為“全棧功件樹”。
在本發(fā)明中,從零創(chuàng)建一個功件樹或?qū)⒍鄠€已有功件組合生成一個新功件樹,即這個功件樹在沒有父功件樹的情況下,此功件樹稱為主干(Trunk)功件樹或主(Master)功件樹或根(Root)功件樹。在主功件樹的開發(fā)進程中,隨著功件數(shù)量不斷增加、功件功能及流程的不斷變化與完善,可以不斷創(chuàng)建新的發(fā)布版本,即發(fā)布功件樹,以標(biāo)記功件樹開發(fā)進程和功件樹業(yè)務(wù)功能組成,并可生成一個穩(wěn)定的、能夠滿足特定業(yè)務(wù)需求的軟件產(chǎn)品;根據(jù)開發(fā)需要或軟件需求,比如技術(shù)架構(gòu)的變遷或建立復(fù)雜軟件產(chǎn)品的多個子產(chǎn)品,還隨時可以創(chuàng)建新的分枝功件樹,以與主功件樹不同的開發(fā)軌跡進行功件的開發(fā)和管理。主功件樹、發(fā)布功件樹和分枝功件樹,都可以無限創(chuàng)建新的發(fā)布版本或分枝,如此往復(fù),從而形成以該主功件樹為根,具有無數(shù)個發(fā)布功件樹、分枝功件樹的復(fù)雜樹形結(jié)構(gòu);所以一個主功件樹下可以建立無數(shù)層級的無數(shù)個功件子樹,而所有主功件樹、發(fā)布功件樹或分枝功件樹,又隨時可以作為模板創(chuàng)建新的主功件樹,并重復(fù)上述開發(fā)過程。
因此,一個功件樹中可以包括三種基本類型的功件子樹:主功件樹、發(fā)布功件樹、分枝功件樹;主功件樹類似于樹的根和干,分枝功件樹類似于樹的分枝,而發(fā)布功件樹則類似于樹的葉子或果實;發(fā)布功件樹作為可發(fā)布的版本,其功能已經(jīng)固定并且經(jīng)過嚴(yán)格測試和bug修復(fù),所以其可以直接生成一個穩(wěn)定可用的軟件產(chǎn)品,同時其也可以產(chǎn)生新的分枝功件樹。而主功件樹和分枝功件樹,則屬于開發(fā)版本,由開發(fā)者不斷加入新的功能,并可以不斷的產(chǎn)生新的發(fā)布功件樹以適應(yīng)不同的軟件需求。主功件樹、發(fā)布功件樹和分枝功件樹的之間的連接關(guān)系見圖1。
樹這個概念,不僅體現(xiàn)在功件樹內(nèi)部功件的關(guān)聯(lián)關(guān)系上,也體現(xiàn)在主功件樹、發(fā)布功件樹、分枝功件樹等功件子樹之間的關(guān)聯(lián)關(guān)系上,還體現(xiàn)在功件樹和功件樹的關(guān)聯(lián)關(guān)系上。
一個功件樹一旦創(chuàng)建,其具有擴散和揚棄機制:即當(dāng)其主功件樹或分枝功件樹中,產(chǎn)生一個新的功件時,其可以用主動或被動的方式復(fù)制、擴散到其他分枝功件樹或主功件樹中,從而使得該功件樹可以獲得自我生長的能力;而其他分枝功件樹或主功件樹,可自定義是否接受這種擴散機制,或滿足什么條件才接受這種擴散機制;當(dāng)一個功件樹中的某個發(fā)布功件樹或分枝功件樹或其內(nèi)部的某些功件過時或者不適用的時候,其可以被刪除或標(biāo)記為過期,而對于有推廣價值的,則標(biāo)記為可推薦或優(yōu)先開發(fā),從而保證該功件樹以正確的方式成長。
用于同一目的的功件樹,根據(jù)編程語言、開發(fā)運行環(huán)境不同,以及接口調(diào)用方式、數(shù)據(jù)格式、數(shù)據(jù)存儲形式的不同,都可以產(chǎn)生不同的功件樹,其所含功件的實現(xiàn)方式,根據(jù)功件樹所遵循預(yù)定的功件規(guī)范的不同而不同。
一個功件樹可代表一個用于某種目的的軟件產(chǎn)品,如一個操作系統(tǒng)、一個應(yīng)用程序、某種類型的網(wǎng)站,其中的功件也是按照某種流程關(guān)聯(lián)在一起。因此,功件樹既是軟件產(chǎn)品所包含功能的集合,同時它也包含了軟件產(chǎn)品相關(guān)的技術(shù)、業(yè)務(wù)流程,而軟件產(chǎn)品的流程,就體現(xiàn)在功件樹內(nèi)各功件或功件子樹的關(guān)聯(lián)關(guān)系中。
一個功件樹也可能是某種類型功件的集合,以便于該類型功件的管理和使用和升級,便于給設(shè)計者和使用者在需要的時候挑選和使用。
一個功件樹,還可以成為其他功件樹下的一個功件,因為,一個多功能的功件,其下可包含多個單一功能的子功件。
所有功件樹,包括其所有功件子樹,組合在一起即形成了功件樹集合,可命名其為“全球功件樹”或“功件樹森林”。
軟件產(chǎn)品中的軟件功能模塊,是按照一定的關(guān)聯(lián)關(guān)系組合在一起的,這些關(guān)聯(lián)關(guān)系體現(xiàn)了軟件產(chǎn)品的流程,也體現(xiàn)了軟件功能模塊之間的相互作用、相互組合的路徑。同樣,一個對應(yīng)某個軟件產(chǎn)品的功件樹中的功件之間,具備了天然的關(guān)聯(lián)關(guān)系,其包括功件間的接口調(diào)用關(guān)系,因為功件的開發(fā)本身就是在軟件產(chǎn)品需求的指導(dǎo)下進行的,體現(xiàn)了軟件產(chǎn)品的功能和流程,這個關(guān)聯(lián)關(guān)系是功件得以組合為功件樹的基本要素,也是功件樹可以生成軟件產(chǎn)品的必要條件;而不同功件樹中的某些遵循同一功件規(guī)范開發(fā)的功件之間,具備隱式的關(guān)聯(lián)關(guān)系,根據(jù)這種關(guān)聯(lián)關(guān)系,可以把不同功件樹的某些功件組合在一起,生成新的功件樹,進而生成新的軟件產(chǎn)品。
不僅功件與功件之間存在關(guān)聯(lián)關(guān)系,功件子樹和功件子樹之間,功件樹與功件樹之間也存在關(guān)聯(lián)關(guān)系,因為不同軟件產(chǎn)品也可以組合在一起形成一個更加復(fù)制的軟件產(chǎn)品。同樣,功件樹與功件之間也存在關(guān)聯(lián)關(guān)系,最明顯的例子就是一個功件樹包含了一個或多個功件。
上述這些關(guān)聯(lián)關(guān)系具有在時間維度上不斷變化的特征,因為隨著時間的變遷,某些關(guān)聯(lián)關(guān)系可能會不斷發(fā)生變化。
將上述關(guān)聯(lián)關(guān)系展開,其類似于流程圖和電路圖,其中功件或功件樹就是流程圖和電路圖的節(jié)點,關(guān)聯(lián)關(guān)系就是其中的連線或?qū)Ь€。連線表示節(jié)點間的前后或上下方向的承接關(guān)系,是靜態(tài)的,而導(dǎo)線則代表兩個節(jié)點之間存在信息的交換,是動態(tài)的。
所以,關(guān)聯(lián)關(guān)系可分為靜態(tài)和動態(tài)兩種:靜態(tài)關(guān)聯(lián)關(guān)系描述的是兩個功件之間存在一種靜態(tài)或虛擬的關(guān)聯(lián),這種關(guān)聯(lián)不涉及數(shù)據(jù)等信息的交換,靜態(tài)關(guān)聯(lián)關(guān)系在功件樹中表現(xiàn)為功件之間存在連線關(guān)系,其代表一個關(guān)系簇,即一組關(guān)系記錄;動態(tài)關(guān)聯(lián)關(guān)系則說明兩個功件之間會有數(shù)據(jù)等信息的交換,這種動態(tài)的關(guān)聯(lián)關(guān)系,在功件關(guān)聯(lián)關(guān)系中體現(xiàn)在功件對外接口之間的相互作用上。
關(guān)聯(lián)關(guān)系還可以分為技術(shù)和業(yè)務(wù)兩種:技術(shù)關(guān)聯(lián)關(guān)系描述的是功件之間的技術(shù)關(guān)聯(lián)性,如一個功件依賴于另一個功件,而業(yè)務(wù)關(guān)聯(lián)關(guān)系則體現(xiàn)了軟件產(chǎn)品的流程,如在滿足某種業(yè)務(wù)條件下,A功件調(diào)用B功件的某個功能。技術(shù)關(guān)聯(lián)關(guān)系具有確定性、不可更改的特性,業(yè)務(wù)關(guān)聯(lián)關(guān)系則體現(xiàn)在功件的可插拔、可替換性上。關(guān)聯(lián)關(guān)系包括調(diào)用與被調(diào)用、包含與被包含、引用與被引用、依賴與被依賴、開發(fā)與開發(fā)于、運行與運行于,以及具備、指向、連接等,這些關(guān)聯(lián)關(guān)系是功件得以組合成功件樹和功件樹可以生成軟件產(chǎn)品的必要條件。
所有功件樹中的功件以及通過其他任何方式創(chuàng)建的功件,共同組成了功件庫,功件庫中功件之間的關(guān)聯(lián)關(guān)系,可由人工或自動化工具來維護,以便于通過關(guān)聯(lián)關(guān)系檢索相關(guān)聯(lián)功件,使其可以組成新的功件樹,進而生成新的軟件產(chǎn)品。
本發(fā)明定義了一種功件樹語言,其可用于定義、設(shè)計、開發(fā)、描述、檢索功件(一個多功能功件,可以由多個單一功能功件組合而成),也可用于定義、描述、檢索功件樹以及描述功件和功件樹關(guān)聯(lián)關(guān)系,還可用于設(shè)計、開發(fā)和使用基于功件樹和功件的軟件產(chǎn)品。因此,任何可以翻譯為功件樹語言的信息,都可以作為設(shè)計、開發(fā)、使用軟件產(chǎn)品的最原始信息,其可作為信息(語音、文字、圖片/圖像)驅(qū)動進行軟件產(chǎn)品設(shè)計、開發(fā)、使用的基礎(chǔ)。
下面以中文為例(其他種類的自然語言類似),說明功件樹語言如下:
1.標(biāo)識符:冒號(:)用于分隔名稱/值對,每個名稱/值對代表一個功件或功件樹,冒號前為功件名稱,冒號后面為功件或功件樹包含的子功件或功件樹分支或子功件樹;逗號(,)用于分隔不同的功件或功件樹或功件樹分支;方括號([])用于表達數(shù)組的概念,可包含多個功件樹分支;花括號({})用于表達對象的概念,其內(nèi)部可包含多個名稱/值對,代表多個功件的組合或一個功件樹分支;小括號(())內(nèi)包含的是功件或功件樹的屬性參數(shù)信息或判定條件;引入指向符號(->)代表引用或指向到其他功件樹中的功件或功件樹分支;等號(=)則作為控制結(jié)構(gòu)中的判定條件使用;點(.)為功件的屬性定義符號。
2.每種功件可由唯一的名稱來標(biāo)識,其針對不同的自然語言(如中文、英文等),可有不同的本地化名稱,如“用戶”功件,中英文名稱分別為“用戶”、“User”;針對每種功件的不同功能版本,其使用型號來唯一標(biāo)識,如“用戶-1型”、“User-1”;每個功件實例、功件樹實例則使用ID和型號作為其唯一標(biāo)識。
3.順序結(jié)構(gòu):為了完美的表達多個功件樹或功件內(nèi)部的功件組合情況,以代表一個目標(biāo)產(chǎn)品所包含的功件和流程,可用類似JSON格式的自然語言數(shù)據(jù)來定義和描述:以功件名稱標(biāo)識功件,其中間以逗號隔開,根據(jù)功件名稱出現(xiàn)的順序進行排列組合,如“用戶,角色,權(quán)限”,即可表述一個功件樹分支,或者說是一個用戶管理軟件產(chǎn)品的流程:即用戶具備角色,角色擁有權(quán)限。每種功件后面可緊隨一個英文冒號和方括號“[]”或花括號“{}”,代表這種功件內(nèi)部包含的多個或一個流程分支,如“{功件1:[],功件2:[],功件3:[]}”或“{功件1:{},功件2:{},功件3:{}}”;將一個或多個花括號內(nèi)容,組合排列在方括號“[]”內(nèi),即代表的是一個或多個流程分支,如“[{功件1:{},功件2:{},功件3:{}},{功件4:{},功件5:{},功件6:{}}]”;花括號“{}”內(nèi)除了可以包含功件,也可以包含一個流程,其間以逗號隔開,如“{功件1:{功件2,{功件3:{},功件4:{}}}}”,或包含多個流程,如{[功件1,功件2],[功件3,功件4]};同樣,方括號“[]”內(nèi)也可以包含多個方括號“[]”或花括號“{}”,以代表多個流程分支;如此往復(fù)包含,可以表達復(fù)雜的功件樹,直至可以描述“全球功件樹”。每種功件或功件樹后面,可以跟隨小括號“()”,其內(nèi)包含功件或功件樹的屬性參數(shù)描述等,以便更加精準(zhǔn)地定位功件和功件樹,功件樹語言中的屬性參數(shù)描述(內(nèi)容省略,應(yīng)遵循功件規(guī)范)用鍵值對來表示,鍵為屬性參數(shù)的名稱,值為屬性參數(shù)的值,鍵與值的中間以冒號“:”分割,類似JSON數(shù)據(jù)格式中鍵值對的表現(xiàn)方式,如“{用戶(lang:"java")}”代表用Java語言開發(fā)的“用戶”功件。由于有些功件樹過于龐大,因此在功件樹的定義中,可以引入“命名空間”(Namespace)這個概念,以描述某一層級或某一小范圍的功件樹分枝;而對于一個功件樹中的功件或功件樹分枝,引用其他功件樹中的功件或功件樹分枝時,則可以使用“->”這個引用指向符號,如“{功件1,功件2->{功件樹2:{功件3}}}”。
4.控制結(jié)構(gòu):類似編程語言,功件樹語言也包含控制結(jié)構(gòu)語法。通過控制結(jié)構(gòu),根據(jù)不同的判定條件,選擇不同的功件樹分枝??刂平Y(jié)構(gòu)語法類似如下:如果(用戶.lang="java"){}否則{}(對應(yīng)英文為IF(User.lang="java"){}ELSE{}),如果(對應(yīng)IF)后面的小括號()中的內(nèi)容為判定條件,花括號{}中的內(nèi)容則為上述的功件樹分枝的功件和流程的順序結(jié)構(gòu)描述。
介紹上述內(nèi)容之后,下面具體介紹本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成方法。具體如圖2所示,圖2為本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成方法的流程示意圖。其中,本實施例中所述的功件和功件樹均遵循預(yù)定的功件規(guī)范。其中,一個功件樹包含一個或多個功件子樹,每個功件子樹都對應(yīng)一個軟件項目或軟件產(chǎn)品,其為一個或多個包含特定功能的功件的集合,其內(nèi)部功件之間具有天然的關(guān)聯(lián)關(guān)系,功件為組成軟件產(chǎn)品的部件在計算機系統(tǒng)中抽象出來的完整且獨立的功能模塊,且功件和功件樹的開發(fā)均遵循預(yù)定的功件規(guī)范,所有功件樹內(nèi)部的功件以及通過其他任何方式生產(chǎn)的功件,共同組成了功件庫,功件庫內(nèi)部功件之間具有可維護的關(guān)聯(lián)關(guān)系。具體的,該方法包括以下步驟:
步驟210,接收用戶輸入的目標(biāo)軟件的需求信息。
步驟220,將目標(biāo)軟件的需求信息轉(zhuǎn)化為與目標(biāo)軟件需求信息對應(yīng)的檢索信息。
具體的,可以將用戶輸入的自然語言或可翻譯為自然語言的語音、文字、圖片、圖像、肢體語言等信息,轉(zhuǎn)化為檢索信息,其中,檢索信息可以包括功件名稱或功件、功件樹的屬性描述信息,或功件樹語言。
對于用戶而言,直接輸入與目標(biāo)軟件需求或者目標(biāo)軟件功能對應(yīng)的自然語言或可翻譯為自然語言的語音、文字、圖片、圖像、肢體語言等信息更加的簡單、便捷,而具體到輸入目標(biāo)軟件需求或者目標(biāo)軟件功能,搜索出的功件將會更加的精確。而如何將自然語言轉(zhuǎn)換為功件名稱、功件或功件樹屬性描述信息、功件樹語言已經(jīng)是現(xiàn)有的,這里將不再贅述。
步驟230,根據(jù)檢索信息,在已創(chuàng)建的功件樹集合中檢索與目標(biāo)軟件的需求信息相匹配的第一功件樹。
步驟240,根據(jù)第一功件樹,生成目標(biāo)軟件。
與上述方案并列的,本發(fā)明實施例還提供了另一種基于功件樹和功件庫的目標(biāo)軟件生成方法的流程示意圖,具體如圖3所示,該方法除了包括步驟210和步驟220外,還包括:
步驟250,根據(jù)檢索信息,在已創(chuàng)建的功件庫中檢索與目標(biāo)軟件的需求信息對應(yīng)的第一功件,和/或第二功件。
步驟260,將第一功件和/或第二功件進行組合,生成第二功件樹;
步驟270,根據(jù)第二功件樹生成目標(biāo)軟件。
具體的,在功件庫中檢索與目標(biāo)軟件需求或者與目標(biāo)軟件功能對應(yīng)的第一功件,以及與第一功件相關(guān)聯(lián)的第二功件。通過關(guān)聯(lián)關(guān)系提取出來的功件才能組合在一起生成新的功件樹,進而生成軟件產(chǎn)品。具體的功件和功件之間的關(guān)聯(lián)關(guān)系,以及功件樹和功件樹之間的關(guān)聯(lián)關(guān)系已經(jīng)在上文中做了詳細(xì)介紹,這里不再贅述。
不過,讀者應(yīng)理解,根據(jù)用戶的需求信息,可以通過上述兩種方式,獲取第一功件樹或者第二功件樹,然后根據(jù)第一功件樹或者第二功件樹,生成目標(biāo)軟件。這兩種方式可以擇一使用,當(dāng)然也可以同時使用后,獲取與目標(biāo)軟件需求更貼近的目標(biāo)軟件。而且,還需說明的是,上述功件樹集合中所有功件樹,以及所述功件庫中所有功件,均遵循預(yù)定的功件規(guī)范。當(dāng)然,這里包括第一功件樹和第二功件樹,同樣遵循預(yù)定的功件規(guī)范。
基于上述兩種方法,可能會出現(xiàn)下述情況之一,具體包括:
在另一種情況中,當(dāng)未檢索到與目標(biāo)軟件需求或者與目標(biāo)軟件功能對應(yīng)的功件樹時,該方法還包括:根據(jù)檢索信息,開發(fā)新的功件樹。并將新的功件樹加入功件樹集合中,其中新的功件樹遵循預(yù)定的功件規(guī)范。
具體的,可以將已創(chuàng)建的功件樹為模板創(chuàng)建新的功件樹。
在另一種情況中,當(dāng)根據(jù)檢索信息,在已創(chuàng)建的功件庫中未檢索到與目標(biāo)軟件的需求信息對應(yīng)的第一功件,和/或第二功件時,該方法還包括:
根據(jù)檢索信息,開發(fā)與目標(biāo)軟件需求信息對應(yīng)的新的功件;
并將新的功件加入功件庫中,其中開發(fā)的新的功件遵循預(yù)定的功件規(guī)范。
具體的,可以將已有的功件為模板開發(fā)新的功件。
其中,上述所述的預(yù)定的功件規(guī)范包括:創(chuàng)建與所述功件樹對應(yīng)的第一根目錄,以及,創(chuàng)建與同類型的功件對應(yīng)的第二根目錄。而任一功件均包括與之對應(yīng)的一個功件主文件和/或一個功件主目錄。
優(yōu)選的,功件樹包含的同類型的功件對應(yīng)的第二根目錄存儲于功件樹對應(yīng)的第一根目錄內(nèi),功件主文件和/或功件主目錄存儲于同類型功件對應(yīng)第二根目錄內(nèi)。
此外,預(yù)定的功件規(guī)范還包括:任一功件均包含與之對應(yīng)的幫助文檔、問題和開發(fā)協(xié)作信息。而功件樹所包含的幫助文檔、問題和開發(fā)協(xié)作信息,為功件樹所包含的所有功件分別對應(yīng)的幫助文檔、問題和開發(fā)協(xié)作信息的集合。
優(yōu)選的,上述功件樹可以包括:主功件樹、發(fā)布功件樹和分枝功件樹。
上述包括主功件樹、發(fā)布功件樹和分枝功件樹,預(yù)定的功件規(guī)范,預(yù)定的功件規(guī)范中所包括的與功件樹對應(yīng)的第一根目錄,以及,創(chuàng)建與同類型的功件對應(yīng)的第二根目錄等內(nèi)容,將在下文中做詳細(xì)介紹:
具體的,功件樹對應(yīng)一個軟件項目,創(chuàng)建一個功件樹,就是要創(chuàng)建一個能夠滿足某種需求的軟件項目以便生成對應(yīng)的軟件產(chǎn)品,或者某種類型功件的集合。創(chuàng)建功件樹流程包括:首先根據(jù)目標(biāo)軟件的類型、所遵循的功件規(guī)范、編程語言、功件樹名稱、功件樹根目錄名稱等創(chuàng)建功件樹,這個功件樹就是主功件樹,這個主功件樹下有個功件列表顯示其下包含所有的功件,然后根據(jù)這個主功件樹對應(yīng)的軟件產(chǎn)品所要包含的功能模塊,在此主功件樹下創(chuàng)建功件,每個功件包含一個功件主文件和/或一個功件主目錄,功件主文件可以是功件主程序文件或功件程序入口文件,功件主目錄(可以理解文件夾)中包含了該功件下的所有附屬程序文件和資源文件。功件樹根目錄、功件根目錄、功件主文件和功件主目錄的存儲關(guān)系,上文做了詳細(xì)介紹,這里不再贅述。
從已創(chuàng)建的功件樹中開發(fā)包括:在主功件樹開發(fā)過程中,開發(fā)者可以不斷地創(chuàng)建發(fā)布功件樹,標(biāo)識一個成熟的軟件發(fā)布版本,即對應(yīng)一個版本的具有特定功能的軟件產(chǎn)品;開發(fā)者還可以不斷的創(chuàng)建分枝功件樹,每個分枝功件樹都可以不斷地創(chuàng)建發(fā)布功件樹和分枝功件樹,同樣,每個發(fā)布功件樹也可以不斷地創(chuàng)建分枝功件樹;每個分枝功件樹,都對應(yīng)一個軟件產(chǎn)品,雖然這些分枝功件樹來源于主功件樹,但其生成的軟件產(chǎn)品可以和主功件樹完全不同,而且不僅僅是包含的功能不同、界面不同,就是說分枝功件樹與主功件樹、分枝功件樹與分枝功件樹之間完全具有各自獨立的開發(fā)軌跡和目標(biāo)軟件需求,在分枝功件樹中創(chuàng)建功件的流程與主功件樹相同。
從已創(chuàng)建的功件中開發(fā)包括:每個功件樹中的每個功件,可以稱之為主功件,在不改變其接口等外部可見特征的情況下,可以在其基礎(chǔ)創(chuàng)建不同的功件版本分枝,可以稱之為發(fā)布功件、分枝功件,其中發(fā)布功件代表了一個穩(wěn)定的功件發(fā)布版本,分枝功件代表一個正在開發(fā)中的功件。主功件、發(fā)布功件、分枝功件之間的關(guān)系和開發(fā)流程,與主功件樹、發(fā)布功件樹、分枝功件樹類似。
實際上,一個功件樹,是由一個主功件樹和多個層級的多個發(fā)布功件、分枝功件樹所組成的,而每個功件子樹下可以包含了一個或多個主功件;而每個主功件下又可以創(chuàng)建多個發(fā)布功件和分枝功件;而每個功件又包含了一個功件主文件和/或一個功件主目錄,其中包含功件相關(guān)的所有程序文件和資源文件,而這些程序文件或資源文件,又可能是具備多個子功能,或者說是多個子功件組成了這個功件。
所有功件樹中包含的所有類型的功件,其實是在一個統(tǒng)一的功件庫當(dāng)中,這些功件之間默認(rèn)是沒有關(guān)聯(lián)關(guān)系的,那么就需要建立關(guān)聯(lián)關(guān)系。首先,一個功件子樹中的功件之間是具備天然關(guān)聯(lián)關(guān)系的,因為它們之間本來就是互相調(diào)用、互相組合在一起形成了一個功件樹,進而可以生成一個軟件產(chǎn)品的;而主功件、發(fā)布功件、分枝功件是可以互相替換的,從而可以和主功件所在功件樹中的功件建立關(guān)聯(lián)關(guān)系。其次,不同功件樹、不同功件子樹中的功件之間的關(guān)聯(lián)關(guān)系,需要通過人工或自動化工具去發(fā)現(xiàn)、建立和驗證。
在初始創(chuàng)建功件樹和功件的時候,大部分是由開發(fā)者手工創(chuàng)建的,當(dāng)功件樹和功件積累到一定階段的時候,可以這樣創(chuàng)建或生產(chǎn)某個功件樹下的功件:以功件需求為輸入條件,以已有的功件樹和功件為數(shù)據(jù)基礎(chǔ),以人工智能技術(shù)為手段,自動生產(chǎn)出功件及其相關(guān)程序文件和資源文件,這個自動生產(chǎn)出的功件,可以直接和功件樹中的其他功件組合在一起,也可以作為一個模板生成不同的功件。
如此,開發(fā)一個新的功件或者一個新的功件樹,可以包括多種形式,由此可以降低開發(fā)新的功件或者功件樹時所受到的限制性。
這里,需要說明的是,“目錄”對應(yīng)的是計算機系統(tǒng)中的文件夾。功件樹下的功件相關(guān)的程序文件和資源文件,在計算機系統(tǒng)中的存儲形式就是文件和文件夾。一個功件樹下可以包含多個功件樹根目錄,比如lib目錄存放這個功件樹需要的所有的程序庫文件,src目錄存放這個功件樹下所有的邏輯層功件源代碼及其相關(guān)程序文件,web目存放這個功件樹下所有的顯示層功件源代碼及其相關(guān)程序文件,bin目錄是這個功件樹下的源代碼程序文件經(jīng)過編譯后生成的二進制功件及其程序文件,test目錄是存放的是這個功件樹相關(guān)的測試類型功件及其程序文件。
所以每個功件樹下,可以創(chuàng)建多個功件樹根目錄,用于不同的目的;而創(chuàng)建功件的時候,根據(jù)這個功件的類型,要將其存放于不同的功件樹根目錄中。
在功件樹中創(chuàng)建功件的時候,是在某個功件樹下創(chuàng)建的屬于這個功件樹的功件;就是說,正常情況下,是先創(chuàng)建功件樹,然后再進入這個功件樹去創(chuàng)建功件,因為要創(chuàng)建什么樣的功件,功件要滿足什么樣的功能需求,是由功件樹所對應(yīng)產(chǎn)品要滿足什么需求這個大前提所決定的。而通過關(guān)聯(lián)關(guān)系從功件庫中提取已有的功件組合成新的功件樹,是提取功件的復(fù)制體,并將其存放在新功件樹的功件樹根目錄下的。
也即是,上文中所述的同一類型的功件的前提是同一功件樹中,同一類型的功件對應(yīng)一個功件根目錄。而同一功件樹的所有功件的根目錄,將都會存儲在功件樹對應(yīng)的根目錄下。所以二者之間并不矛盾。
當(dāng)然,讀者應(yīng)理解,預(yù)定的功件規(guī)范不止包括上述三種情況,還可以包括其他情況。
在一個具體的例子中,假設(shè)功件規(guī)范為源代碼層級的功件規(guī)范,其命名為FX功件規(guī)范(其他軟件類型和其他代碼層級的功件規(guī)范的制定,可以參照FX功件規(guī)范):
1.在一個功件樹中,所有功件均位于f目錄(包、空間)下,功件樹中有一種特殊功件,名稱為X或以X字母開頭,命名為X型功件,其作為首頁、入口、唯一公共類等給其他功件提供支持,X型功件對應(yīng)的x目錄(包、空間)則作為公共區(qū)域,駐留包含頁、公共文件、公共類等。
2.功件樹的功件數(shù)量、功件功能呈遞增趨勢,如果需要刪除功件或者改變功件樹用途等重大屬性更改時,應(yīng)創(chuàng)建新的功件樹分枝,或者創(chuàng)建新的主干功件樹。
3.功件樹的發(fā)布版本,根據(jù)功件數(shù)量的增加或功件功能的增加,創(chuàng)建遞增的版本號。其中,新版本增加大的功能模塊或者數(shù)據(jù)結(jié)構(gòu)不向下兼容時,遞增主版本號。如v1.0.0至2.0.0,增加功件數(shù)量時,遞增次級版本號,如v1.8.0、至v1.9.0,增加功件功能時,遞增三級版本號,如v1.9.0至v1.9.1,對于bug修復(fù),則遞增四級版本號,如v1.9.0.0至v1.9.0.1。
4.每個功件樹可包含多個根目錄,如:src目錄作為源代碼類型功件文件目錄,web目錄作為網(wǎng)頁類型功件文件目錄,bin目錄作為編譯后的功件文件或可執(zhí)行文件目錄,lib目錄作為依賴庫文件目錄,doc目錄作為文檔目錄,dist作為發(fā)布文件目錄,test作為測試文件目錄。
5.每個功件樹的根目錄下均有一個f目錄(包、空間),作為功件的根目錄,其內(nèi)駐留各種類型的功件,如:src/f目錄中可包含邏輯功件或數(shù)據(jù)功件或顯示功件相關(guān)源代碼程序文件,web/f目錄中可包含網(wǎng)頁功件相關(guān)程序文件;功件樹目錄結(jié)構(gòu)見圖1。
6.功件,即軟件功能件,功件樹內(nèi)部的所有功能點,都可以抽象為功件;功件為功件樹的基本組合單元,每個功件在功件樹內(nèi)部具有唯一性。
7.每個功件可包含一個主文件和/或一個主目錄,并與功件名稱一一對應(yīng),其中主文件名稱為功件名稱+文件后綴,主目錄名稱為全小寫的功件名稱,主目錄下為功件內(nèi)部程序文件。
8.每個功件由主文件和/或主目錄中的程序文件對外提供可訪問的方法(接口)。
9.功件的對外方法(接口)共分為三級:
一級方法(接口)僅有一個,以x命名,參數(shù)唯一,返回值唯一;
二級方法(接口)有四個,以a、b、c、d命名,參數(shù)唯一,返回值唯一;
三級方法(接口)可以有無數(shù)個,但均可以歸屬于a、b、c、d這四大類方法(接口),其方法(接口)名稱、參數(shù)和返回值可按照下述規(guī)范自定義;
功件可實現(xiàn)上述三級方法(接口)中的任一級或幾級。
10.功件樹內(nèi)部的功能點也是分級或者分層次存在的,因此功件內(nèi)部也可以包含子功件,如用戶(User)功件,代表“用戶”相關(guān)的功能集合體,而用戶登錄、用戶注冊則可以作為User功件的子功件存在。
11.目錄名稱、包名、空間名稱、統(tǒng)一資源定位符路徑名稱、數(shù)據(jù)庫名稱等,嚴(yán)格限定采用小寫英文字母、數(shù)字、“.”、“_”、“-”等字符,如f、userpage、v1.8.0。
12.功件樹名稱、功件名稱、類文件名稱、數(shù)據(jù)表名稱等,嚴(yán)格限定首字母大寫,單詞之間首字母大寫,如Functree、FuncPage、FunctreeTeam;功件的主文件名稱為功件名稱+文件后綴,如FuncPage.html、FuncTeam.java、XPage.jsp。
13.功件屬性變量名稱、方法(接口)參數(shù)名稱、數(shù)據(jù)字段名稱,嚴(yán)格限定采用“駱駝法則”,首字母小寫,單詞之間首字母大寫,如userId、userCount、pageLimit。功件常量名稱,嚴(yán)格限定采用全大寫英文字母,單詞之間以“_”分割,如FUNCTREE_NAME、READ_COUNT。
14.功件的一級方法(接口)名稱為x,二級方法(接口)名稱為a、b、c、d,三級方法(接口)名稱,嚴(yán)格限定以“a”、“b”、“c”、“d”四個字母開頭,代表其屬于a、b、c、d四大類方法中的某一類,后面可跟隨需要處理的字段信息或功能信息,字段之間以“_”分割,如b_userInfo、c_password等。
15.功件中的一級和二級方法(接口)輸入?yún)?shù)和返回值均只有一個,為字符串、Map、Dictionary、Struct、Hash、Object、List、Array等復(fù)雜結(jié)構(gòu)類型,可包含類似JSON格式的鍵值對信息對象或數(shù)組,其中的鍵為命令關(guān)鍵字,值為需要處理的信息,可包含List、Array等列表、數(shù)組數(shù)據(jù);功件的三級方法(接口)可有多個,其參數(shù)和返回值根據(jù)編程語言的不同,參數(shù)數(shù)量、數(shù)據(jù)類型和返回值可自定義,以保證方法(接口)的性能,但其中的名稱定義應(yīng)嚴(yán)格遵循上述規(guī)范。
-命令關(guān)鍵字說明($標(biāo)識符可由其他符號替換,如@):
-**f或$f:代表功件或子功件,用于定位某項功能,可以嵌套多層命令,以調(diào)用多級子功件的功能;**
-**x或$x:代表未知、公用、首頁、入口,可作為一級接口名稱、唯一參數(shù)名稱等;**
-**a或$a:代表增加(add)、創(chuàng)建(create)等含義,功件的二級方法(接口)之一,即a方法(接口),對應(yīng)SQL中的insert into;**
-**b或$b:代表瀏覽(browse)、查詢(retrieve)等含義,功件的二級方法(接口)之一,即b方法(接口),對應(yīng)SQL中的select;**
-**c或$c:代表改變(change)、更新(update)等含義,功件的二級方法(接口)之一,即c方法(接口),對應(yīng)SQL中的update;**
-**d或$d:代表刪除(delete)、銷毀(destroy)等含義,功件的二級方法(接口)之一,即d方法(接口),對應(yīng)SQL中的delete;**
-**n或$n**:代表功件名稱(或表名稱),標(biāo)示使用哪個功件(或哪個數(shù)據(jù)表),因為功件的名稱在一個功件樹中具有唯一性;在功件的方法(接口)或參數(shù)中,其對應(yīng)SQL中的from;
-**o或$o**:代表對象、記錄內(nèi)容,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的fields信息;
-**w或$w**:代表什么、那里、哪個的含義,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的where;
-**s或$s**:代表排序的含義,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的order by;
-g或$g:代表分組、組織等含義,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的group by;
-h或$h:代表具有、具備等含義,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的having;
-gt或$gt:代表大于,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的“>”號;
-lt或$lt:代表小于,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的“<”號;
-ne或$ne:代表不等于,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的“<>”號;
-or或$or:代表或的關(guān)系,在功件的方法(接口)或參數(shù)中,對應(yīng)SQL中的“or”;
-mn或$mn:代表最小的含義,對應(yīng)SQL中的min;
-mx或$mx:代表最大的含義,對應(yīng)SQL中的max;
-bc或$bc:代表查詢記錄數(shù)量的含義,對應(yīng)SQL中的select count;
-bd或$bd:代表查詢不重復(fù)記錄的含義,對應(yīng)SQL中的select distinct;
-pn或$pn:代表查詢數(shù)據(jù)頁碼:pageNo;
-pl或$pl:代表查詢記錄返回限制數(shù)量:pageLimit;
-r或$r:代表返回結(jié)果編碼,作為功件的方法(接口)返回值的一部分,標(biāo)示成功或失??;
-m或$m:代表返回或顯示的信息,作為功件的方法(接口)返回值的一部分,說明原因或結(jié)果描述;
-v或$v:代表返回數(shù)據(jù)內(nèi)容,作為功件的方法(接口)返回值的一部分,是具體的返回記錄或?qū)ο蟆?/p>
16.盡可能由功件主文件集中對外提供的可訪問的方法(接口),以提高功件的可維護、可替換、可插拔的特性;盡可能保證功件主目錄中的程序文件中的方法(接口),僅供功件內(nèi)部使用。
17.功件的一級方法(接口)、二級方法(接口)應(yīng)用于不同進程、不同程序、不同服務(wù)之間時,盡可能使用包含JSON格式數(shù)據(jù)的字符串作為參數(shù)和返回值,因為大部分編程語言都支持字符串類型,而JSON支持多層嵌套命令和數(shù)據(jù)格式。
18.功件的三級方法(接口)參數(shù)和返回值類型可以使用復(fù)雜結(jié)構(gòu)類型,以盡可能減少參數(shù)的數(shù)量,以及參數(shù)順序不同而導(dǎo)致的方法(接口)的不確定性,從而盡可能減少三級方法(接口)的數(shù)量。
本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成方法,對于用戶而言,直接輸入與目標(biāo)軟件需求或者目標(biāo)軟件功能對應(yīng)的自然語言或可翻譯為自然語言的語音、文字、圖片、圖像、肢體語言等信息更加的簡單、便捷。在根據(jù)目標(biāo)軟件需求或者目標(biāo)軟件功能對應(yīng)的檢索信息(包括:功件名稱、功件和功件樹屬性描述信息、功件樹語言)搜索時,更加的精確。而且,在調(diào)用功件或者功件樹時,無需考慮是否出自同一個開發(fā)團隊,因為功件和功件樹均遵循預(yù)定的功件規(guī)范。因此,可以快速的將已經(jīng)開發(fā)的軟件成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等應(yīng)用到新的軟件項目上,以便于提高軟件行業(yè)的生產(chǎn)能力。
相應(yīng)地,本發(fā)明實施例還提供了一種基于功件樹和功件庫的目標(biāo)軟件生成裝置。具體如圖4所示,圖4為本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成裝置結(jié)構(gòu)示意圖。如圖4所示,該裝置包括:接收模塊401、轉(zhuǎn)換模塊402、檢索模塊403以及處理模塊404。
接收模塊401,用于接收用戶輸入的目標(biāo)軟件的需求信息。
轉(zhuǎn)換模塊402,用于將目標(biāo)軟件的需求信息,轉(zhuǎn)化為與目標(biāo)軟件需求信息對應(yīng)的檢索信息。
檢索模塊403,用于根據(jù)檢索信息,在已創(chuàng)建的功件樹集合中檢索與目標(biāo)軟件的需求信息相匹配的第一功件樹。
處理模塊404,用于根據(jù)第一功件樹,生成目標(biāo)軟件。
或者,
檢索模塊403,用于根據(jù)檢索信息,在已創(chuàng)建的功件庫中檢索與目標(biāo)軟件的需求信息對應(yīng)的第一功件,和/或第二功件。
處理模塊404用于,將第一功件和/或第二功件進行組合,生成第二功件樹,根據(jù)第二功件樹生成目標(biāo)軟件,其中,功件樹集合中所有功件樹,以及功件庫中所有功件,均遵循預(yù)定的功件規(guī)范。
優(yōu)選的,處理模塊404還用于:根據(jù)所述檢索信息,開發(fā)新的功件樹,并將新的功件樹加入功件樹集合中,其中新的功件樹遵循預(yù)定的功件規(guī)范。
具體的,將已創(chuàng)建的功件樹為模板創(chuàng)建新的功件樹,其中,開發(fā)的新的功件樹遵循預(yù)定的功件規(guī)范。
進一步優(yōu)選的,處理模塊404還用于:根據(jù)檢索信息,開發(fā)與目標(biāo)軟件需求信息對應(yīng)的新的功件,并將新的功件加入所述功件庫中,其中開發(fā)的新的功件遵循預(yù)定的功件規(guī)范。具體的,將已有的功件為模板開發(fā)新的功件。
此外,該裝置還可以包括:功件樹管理模塊405:用于管理功件樹及其功件子樹、功件樹關(guān)聯(lián)關(guān)系。具體包括相關(guān)提交、問題、幫助等信息創(chuàng)建、查找、更新、刪除的協(xié)作開發(fā)機制,功件樹關(guān)聯(lián)關(guān)系維護機制,以及功件樹擴散、揚棄機制。以及,功件管理模塊406:用于管理功件及其子版本、功件關(guān)聯(lián)關(guān)系,包括相關(guān)提交、問題、幫助等信息創(chuàng)建、查找、更新、刪除的協(xié)作開發(fā)機制,功件關(guān)聯(lián)關(guān)系維護機制,以及功件自動化生產(chǎn)和維護、可替換和可插拔機制。
本發(fā)明提供的基于功件樹和功件庫的目標(biāo)軟件生成裝置中各部件所執(zhí)行的功能已經(jīng)在上述實施例一種基于功件樹和功件庫的目標(biāo)軟件生成方法中做了詳細(xì)的介紹,這里不再贅述。
本發(fā)明實施例提供的一種基于功件樹和功件庫的目標(biāo)軟件生成裝置,對于用戶而言,在接收模塊直接輸入與目標(biāo)軟件需求或者目標(biāo)軟件功能對應(yīng)的自然語言或可翻譯為自然語言的語音、文字、圖片、圖像、肢體語言等信息更加的簡單、便捷。而具體到輸入目標(biāo)軟件需求或者目標(biāo)軟件功能,搜索出的功件樹或功件將會更加的精確。檢索模塊則可以根據(jù)檢索信息(包括功件名稱、功件和功件樹屬性描述信息、功件樹語言等),實現(xiàn)在已有功件樹集合中查找匹配功件樹,檢索功件庫中與目標(biāo)軟件需求或目標(biāo)軟件功能對應(yīng)的第一功件,以及與第一功件相關(guān)聯(lián)的第二功件。采用與目標(biāo)軟件需求或者目標(biāo)軟件功能對應(yīng)的功件名稱、功件和功件樹屬性描述信息、功件樹語言,使搜索更加的精確。而在調(diào)用功件或者功件樹時,無需考慮是否出自同一個開發(fā)團隊,因為功件和功件樹均遵循預(yù)定的功件規(guī)范。因此,可以快速的將已經(jīng)開發(fā)的軟件成果、相關(guān)業(yè)務(wù)和技術(shù)經(jīng)驗等應(yīng)用到新的軟件項目上,以便于提高軟件行業(yè)的生產(chǎn)能力。
此外,本發(fā)明還提供了一種基于功件樹和功件庫的目標(biāo)軟件管理系統(tǒng),包括上述實施例所述的基于功件樹和功件庫的目標(biāo)軟件生成裝置,其中從應(yīng)用方的角度理解,上述實施例中所述的裝置是由該管理系統(tǒng)所對應(yīng)的應(yīng)用方中的開發(fā)者開發(fā)并使用的一種裝置。而該管理系統(tǒng)對應(yīng)的應(yīng)用方還可以包括設(shè)計者和使用者。
其中,設(shè)計者對應(yīng)的裝置可以包括:需求管理模塊,用于收集符合市場需要的軟件需求,或接受使用者的軟件需求,其中可以包括對軟件需求的增、查、改、刪等功能,以及設(shè)計軟件需求的問題、討論、回復(fù)等功能。設(shè)計管理模塊:用于設(shè)計文檔的增、查、改、刪,以及設(shè)計相關(guān)的問題、討論、回復(fù)等功能;設(shè)計者根據(jù)需求,給出設(shè)計文檔,包括功件樹和功件相關(guān)的設(shè)計圖或設(shè)計說明文檔;設(shè)計者還可以創(chuàng)建一個新功件樹,然后根據(jù)需求內(nèi)容將需求轉(zhuǎn)化為相應(yīng)的功件需求,并給出功件的相關(guān)功能和設(shè)計參數(shù)要求,其可以從已有功件樹和功件庫中搜索匹配的功件,將這些功件加入到新功件樹中,而對于那些不存在的功件,設(shè)計者可以創(chuàng)建并發(fā)布給開發(fā)者進行開發(fā)。
使用者使用的一套裝置可以包括:軟件產(chǎn)品管理模塊,用于對用戶自己的軟件產(chǎn)品管理。還可以用于對基于功件樹和功件庫的目標(biāo)軟件管理系統(tǒng)中的所有軟件產(chǎn)品的管理。具體的,對用戶的軟件產(chǎn)品管理,可以包括對軟件產(chǎn)品的收藏和購買功能,使得用戶可以收藏或購買其他用戶或功件樹管理系統(tǒng)提供的軟件產(chǎn)品,例如功件樹產(chǎn)品和功件產(chǎn)品。而對該系統(tǒng)中所有的軟件產(chǎn)品進行管理則可以包括:檢索、下載、部署軟件產(chǎn)品;還可以直接將軟件產(chǎn)品下載、部署、安裝到用戶指定的軟件或硬件運行環(huán)境中,同時系統(tǒng)管理員也可對其進行管理和維護操作。
此外,使用者對應(yīng)裝置中的軟件產(chǎn)品管理模塊,同樣具有軟件開發(fā)功能??梢愿鶕?jù)自然語言開發(fā)軟件。具體的,基于功件樹和功件庫的目標(biāo)軟件管理系統(tǒng)首先提供一個UI界面,由用戶輸入或選擇語音、文字、圖片、圖像、肢體語言或其他信息(如軟件類型、編程語言、后臺數(shù)據(jù)庫等信息),以代表其對目標(biāo)產(chǎn)品的需求,系統(tǒng)將這些信息轉(zhuǎn)化為自然語言(使用者的本地語言,涉及語音識別、圖片圖像識別技術(shù)),然后通過自然語言解析轉(zhuǎn)化為功件名稱、屬性、描述和功件樹屬性、描述等檢索條件,查找符合需求的已有軟件產(chǎn)品或功件樹(主要是發(fā)布功件樹,因為其已經(jīng)過測試和bug修復(fù))供用戶選擇和確定,當(dāng)沒有符合需求的軟件產(chǎn)品或功件樹時,通過自然語言解析將用戶需求轉(zhuǎn)化為功件樹語言,通過關(guān)聯(lián)關(guān)系從功件庫中提取所需功件形成功件列表供用戶選擇、更換和確定,并將最終確定的功件組合在一起,生成新的功件樹,進而生成目標(biāo)軟件產(chǎn)品;當(dāng)某些功件不存在或提取的功件不符合需求時,用戶可通過功件發(fā)布功能發(fā)布給開發(fā)者進行開發(fā)或修改。軟件產(chǎn)品管理模塊還用于購買功件、開發(fā)功件任務(wù)發(fā)布、自動化部署軟件產(chǎn)品等。這樣,借助于上述功件樹管理系統(tǒng),就可以將信息(語音、文字、圖片、圖像、肢體語言或其他)轉(zhuǎn)化為功件名稱、功件和功件樹屬性描述信息、功件樹語言,檢索相關(guān)功件和功件樹,進而完成目標(biāo)產(chǎn)品的需求分析、研發(fā)設(shè)計、制造生產(chǎn)、安裝部署、運行使用、維護升級等工作。
優(yōu)選的,該系統(tǒng)還包含用戶管理模塊,用于執(zhí)行包括用戶的注冊、登錄、修改密碼,以及角色、權(quán)限的分配等相關(guān)功能。
進一步優(yōu)選的,還包含用戶授權(quán)模塊,用于根據(jù)已登錄的用戶對應(yīng)的不同角色,給予不同的管理權(quán)限。這里已登錄的用戶可以是開發(fā)者、使用者、設(shè)計者。而根據(jù)不同的角色,授予的權(quán)限不同。可以使三方能夠進行分工、協(xié)作式開發(fā)軟件。
讀者應(yīng)理解,在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必針對的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結(jié)合和組合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。