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

一種編程友好型的敏捷代碼自動生成系統(tǒng)的制作方法

文檔序號:11774062閱讀:434來源:國知局
本發(fā)明涉及敏捷計算機(jī)編程開發(fā)
技術(shù)領(lǐng)域
:,尤其涉及一種編程友好型的敏捷代碼自動生成系統(tǒng)。
背景技術(shù)
::隨著it行業(yè)的不斷發(fā)展,軟件開發(fā)的復(fù)雜度也隨著不斷提高。與此同時,軟件的開發(fā)團(tuán)隊(duì)也越來越龐大,而如何更好地協(xié)同整個團(tuán)隊(duì)進(jìn)行高效準(zhǔn)確的工作,從而確保軟件開發(fā)的質(zhì)量已經(jīng)慢慢成為了開發(fā)過程中不可回避的問題。在軟件開發(fā)中,不同的功能模塊一般由不同的開發(fā)成員負(fù)責(zé),同一功能模塊的各層代碼也可能是不同的開發(fā)成員編寫,經(jīng)驗(yàn)告訴我們,模塊之間的問題是最難解決的,也是最耗費(fèi)時間的。它需要多個開發(fā)人員相互協(xié)作找出問題,而協(xié)作過程中的溝通所消耗的時間成本是相當(dāng)高的,而且還可能因?yàn)闇贤ǖ牟蛔銓?dǎo)致模塊返工。在這個過程中,當(dāng)一個模型中涉及到多個表結(jié)構(gòu)時,即使其涉及到字段的新增、修改和刪除,也需要重新進(jìn)行代碼的制作,從而使得在代碼生成過程中,需要過多的人工參與以及需要大量的時間和人力進(jìn)行重復(fù)性的代碼制作工作?,F(xiàn)有技術(shù)中雖然也有一些代碼生成器,但其都是針對某一種特定的系統(tǒng)進(jìn)行開發(fā)的,不具有通用性,也不可避免代碼制作過程中的重復(fù)性工作??梢姡F(xiàn)有的代碼生成器一般是按照的一種特定的格式,生成一種特定框架定義好的目錄結(jié)構(gòu)以及該特定框架事先定義的命名規(guī)則的文件,而在實(shí)際的項(xiàng)目中框架及目錄各方面應(yīng)當(dāng)由項(xiàng)目本身所定制,在使用過程中無法記錄歷史每一次腳本變更記錄,也不具備在同一次變更中的腳本自動合并的能力,局限性大,擴(kuò)展性差。技術(shù)實(shí)現(xiàn)要素:為解決上述的技術(shù)問題,本發(fā)明提供了一種編程友好型的敏捷代碼自動生成系統(tǒng),本發(fā)明提出的方法解決了現(xiàn)有技術(shù)下代碼生成器局限性大,擴(kuò)展性差的問題。本發(fā)明實(shí)現(xiàn)上述技術(shù)效果所采用的技術(shù)方案是:一種編程友好型的敏捷代碼自動生成系統(tǒng),所述系統(tǒng)包括:數(shù)據(jù)描述文本,用于建立待生成的代碼的數(shù)據(jù)描述;代碼模板,用于接受填入至數(shù)據(jù)描述文本解析出的參數(shù);代碼生成器,包括描述解析器和代碼生成引擎,所述描述解析器用于將數(shù)據(jù)描述文本中的數(shù)據(jù)描述進(jìn)行解析;所述代碼生成引擎通過掃描相應(yīng)的代碼模板的占位符,找到所述描述解析器解析出的相應(yīng)的數(shù)據(jù)進(jìn)行填充,組裝出對應(yīng)功能模塊的初始代碼;合并組裝模塊,由代碼驗(yàn)證器對生成的初始代碼進(jìn)行驗(yàn)證,驗(yàn)證通過后將每個功能模塊對應(yīng)的初始代碼按照邏輯結(jié)構(gòu)進(jìn)行合并組裝,同時單獨(dú)存儲每個功能模塊對應(yīng)的初始代碼;分發(fā)模塊,將單個功能模塊與合并組裝后的初始代碼進(jìn)行一對一關(guān)聯(lián)映射,并賦予每個功能模塊指向該對應(yīng)功能模塊開發(fā)組的代碼接收容器的指針,用于在相應(yīng)的功能模塊的初始代碼生成后被分發(fā)至對應(yīng)的模塊開發(fā)組的代碼接收容器。上述的編程友好型的敏捷代碼自動生成系統(tǒng),所述數(shù)據(jù)描述文本為xml文本。上述的編程友好型的敏捷代碼自動生成系統(tǒng),所述描述解析器對所述xml文檔進(jìn)行解析的過程包括:獲取根節(jié)點(diǎn),通過庫函數(shù)elementdocument.getrootelement()獲取所述xml文檔的根節(jié)點(diǎn);獲取子節(jié)點(diǎn)元素,在獲得根節(jié)點(diǎn)之后,利用遞歸下降法從根節(jié)點(diǎn)尋找其子節(jié)點(diǎn),構(gòu)造語法樹;獲得命令參數(shù),通過遍歷整個xml文檔結(jié)構(gòu),提取出所有的屬性,再按照非參數(shù)屬性識別規(guī)則排除整個xml文檔結(jié)構(gòu)中的非參數(shù),生成命令文本模板,成對所述xml文檔的解析。上述的編程友好型的敏捷代碼自動生成系統(tǒng),從根節(jié)點(diǎn)尋找其子節(jié)點(diǎn)以構(gòu)造語法樹的過程通過函數(shù)elementelement.getchild(stringname)和函數(shù)listelement.getchildren(stringname)完成,包括步驟:函數(shù)elementelement.getchild(stringname)從父節(jié)點(diǎn)得到名稱為name的單一子節(jié)點(diǎn),函數(shù)返回值為空表示有0個元素;函數(shù)element.getchildren(stringname)用于獲取多個子元素,對于list中的每一個元素,通過list的迭代器獲取,list中的元素個數(shù)通過list的size()方法確定。上述的編程友好型的敏捷代碼自動生成系統(tǒng),對應(yīng)功能模塊的初始代碼的組裝過程包括:檢查所述描述解析器解析出的描述文件的文檔語法、組織結(jié)構(gòu)是否無誤,驗(yàn)證錄入的解析數(shù)據(jù)類型是否正確,如查出描述文檔的內(nèi)容不符合文檔規(guī)定,則拋出異常信息;讀取所述描述解析器解析出的描述文件,并抽取其中的解析數(shù)據(jù)并加載到內(nèi)存中以待訪問;將解析數(shù)據(jù)填入相應(yīng)的初始代碼中。上述的編程友好型的敏捷代碼自動生成系統(tǒng),所述xml描述文件包括rml元素、system元素、actor元素、connect元素、editable元素、param元素、port元素、src_port元素、dest_port元素、src_actor元素和dest_actor元素中的部分或全部。上述的編程友好型的敏捷代碼自動生成系統(tǒng),讀取所述描述解析器解析出的描述文件的具體過程為:以命令行為單位,每讀入一行進(jìn)行分析,當(dāng)遇到一個標(biāo)題行時表示一個命令說明的開始,循環(huán)匹配直到出現(xiàn)另一個標(biāo)題行時,表示結(jié)束對這個命令的說明;將分析出的所有命令的結(jié)構(gòu)化數(shù)據(jù)作為解析結(jié)果存放在列表容器中,供代碼模板對參數(shù)的提取以及代碼的生成。上述的編程友好型的敏捷代碼自動生成系統(tǒng),對命令行的分析采用表驅(qū)動的方式進(jìn)行分析,該表為一個三維表,其中,第一維表示當(dāng)前的分析狀態(tài),第二維表示當(dāng)前輸入行,第三維的值為“0”或“1”,其中“0”元素表示動作,“1”元素表示下一個狀態(tài),通過執(zhí)行指定的動作并轉(zhuǎn)到下一個狀態(tài),循環(huán)對每一行進(jìn)行分析。上述的編程友好型的敏捷代碼自動生成系統(tǒng),對應(yīng)每個功能模塊的初始代碼均有序存儲在初始代碼容器中,每個功能模塊的初始代碼分別與合并組裝后的初始代碼進(jìn)行一對一關(guān)聯(lián)映射,每個功能模塊具有指向與對應(yīng)功能模塊開發(fā)組的代碼接收容器的指針,用于在相應(yīng)的功能模塊的初始代碼在生成后分發(fā)至對應(yīng)的模塊開發(fā)組的代碼接收容器。上述的編程友好型的敏捷代碼自動生成系統(tǒng),所述的非參數(shù)識別規(guī)則包括兩個規(guī)則項(xiàng):屬性名識別規(guī)則和屬性值識別;判斷某屬性為非參數(shù)屬性的判斷規(guī)則為:當(dāng)某個屬性同時滿足兩個規(guī)則項(xiàng)時,則該屬性被視為非參數(shù)屬性,若一個規(guī)則項(xiàng)為空則只要滿足另一個規(guī)則項(xiàng),該屬性被視為非參屬性。本發(fā)明的有益效果是:本發(fā)明解決了現(xiàn)有技術(shù)下代碼生成器局限性大,擴(kuò)展性差的問題,其基于多代碼模板的代碼生成與具體代碼的解耦,降低了代碼耦合度,提高了擴(kuò)展性,可以很好地滿足定制化需求。針對每個功能模塊單獨(dú)生成對應(yīng)的初始代碼,以及將各功能模塊按照邏輯結(jié)構(gòu)進(jìn)行合并組裝,使得軟件開發(fā)人員有一個全局的框架結(jié)構(gòu)。通過將各獨(dú)立的功能模塊的對應(yīng)初始代碼和合并組裝后的全局的初始代碼打包分發(fā)給相應(yīng)的開發(fā)組,使得該相應(yīng)功能模塊開發(fā)組的開發(fā)人員在獨(dú)立進(jìn)行單功能模塊的開發(fā)過程中有一個較好的指導(dǎo)性框架,便于后期的調(diào)試和維護(hù)。附圖說明圖1為本發(fā)明實(shí)施例的結(jié)構(gòu)框圖;圖2為本發(fā)明實(shí)施例的架構(gòu)圖;圖3為本發(fā)明實(shí)施例的流程圖。具體實(shí)施方式為了對本發(fā)明作出更加清楚完整地說明,下面結(jié)合附圖和本發(fā)明的具體實(shí)施例對本發(fā)明的技術(shù)方案作出進(jìn)一步說明。如圖1至圖3所示,本發(fā)明提出的一種編程友好型的敏捷代碼自動生成系統(tǒng),該系統(tǒng)包括:數(shù)據(jù)描述文本,用于建立待生成的代碼的數(shù)據(jù)描述;代碼模板,用于接受填入至數(shù)據(jù)描述文本解析出的參數(shù);代碼生成器,包括描述解析器和代碼生成引擎,所述描述解析器用于將數(shù)據(jù)描述文本中的數(shù)據(jù)描述進(jìn)行解析;所述代碼生成引擎通過掃描相應(yīng)的代碼模板的占位符,找到所述描述解析器解析出的相應(yīng)的數(shù)據(jù)進(jìn)行填充,組裝出對應(yīng)功能模塊的初始代碼;合并組裝模塊,由代碼驗(yàn)證器對生成的初始代碼進(jìn)行驗(yàn)證,驗(yàn)證通過后將每個功能模塊對應(yīng)的初始代碼按照邏輯結(jié)構(gòu)進(jìn)行合并組裝,同時單獨(dú)存儲每個功能模塊對應(yīng)的初始代碼;分發(fā)模塊,將單個功能模塊與合并組裝后的初始代碼進(jìn)行一對一關(guān)聯(lián)映射,并賦予每個功能模塊指向該對應(yīng)功能模塊開發(fā)組的代碼接收容器的指針,用于在相應(yīng)的功能模塊的初始代碼生成后被分發(fā)至對應(yīng)的模塊開發(fā)組的代碼接收容器。每個功能模塊對應(yīng)的初始代碼由代碼驗(yàn)證器對其進(jìn)行驗(yàn)證,驗(yàn)證通過后將每個功能模塊對應(yīng)的初始代碼按照邏輯結(jié)構(gòu)進(jìn)行合并組裝,同時單獨(dú)存儲每個功能模塊對應(yīng)的初始代碼,最后將單個功能模塊對應(yīng)的初始代碼以及合并組裝后的初始代碼分發(fā)給對應(yīng)功能模塊的開發(fā)組。數(shù)據(jù)描述可以通過輸入界面,如用戶接口ui界面,生成數(shù)據(jù)描述。由于數(shù)據(jù)描述語句是對用戶比較友好的,也可以由用戶手動輸入建立數(shù)據(jù)。數(shù)據(jù)描述包括按照預(yù)設(shè)規(guī)則語法進(jìn)行定義的關(guān)鍵字和業(yè)務(wù)邏輯,由于xml文件能夠更好的體現(xiàn)結(jié)構(gòu)層級關(guān)系、更容易被程序語言識別,同時也可以檢驗(yàn)需求文檔是否符合語法邏輯。另外,xml文件是一種中間語言的角色,可以起到承上啟下的作用,每一個關(guān)鍵字都將成為xml中的一個元素,可以是一個node,也可以是一個屬性。在它轉(zhuǎn)化成xml后,會有節(jié)點(diǎn)名稱表示(如,節(jié)點(diǎn)里面是用于描述數(shù)據(jù)字典里的內(nèi)容)。xml文檔具有文件格式良好、數(shù)據(jù)表達(dá)完整、驗(yàn)證容易、便于程序訪問等特點(diǎn)。該xml文檔中的結(jié)構(gòu)和組織由xmlscheme來定義,xmlscheme規(guī)定了業(yè)務(wù)模型必須提供的內(nèi)容,具體包括業(yè)務(wù)組件名稱、包名、業(yè)務(wù)對象類名稱、屬性名稱、類型、長度、對應(yīng)的數(shù)據(jù)表段長度。該xml描述文件包括rml元素、system元素、actor元素、connect元素、editable元素、param元素、port元素、src_port元素、dest_port元素、src_actor元素和dest_actor元素中的部分或全部。代碼模板,根據(jù)功能需求,準(zhǔn)備相應(yīng)的代碼模板,如插入數(shù)據(jù)、刪除數(shù)據(jù)、查找數(shù)據(jù)、增加數(shù)據(jù)等等。模板是最終生成代碼的原型,根據(jù)模板可以生成規(guī)范和可用的代碼。良好的模板設(shè)計包含了軟件設(shè)計和開發(fā)人員多年的經(jīng)驗(yàn),確保了生成代碼的品質(zhì),并可以生成大部分的業(yè)務(wù)邏輯。涉及j2ee各層次的模板共五個,包括pojo.vm,pojo業(yè)務(wù)對象模板;dao.vm,業(yè)務(wù)對象的數(shù)據(jù)訪問接口模板;daohibernateimpl.vm,基于hibernate的數(shù)據(jù)訪問層接口實(shí)現(xiàn)模板;service.vm,服務(wù)層接口模板;servicempl.vmi,服務(wù)層接口實(shí)現(xiàn)模板。具體的,在本發(fā)明的優(yōu)選實(shí)施例中,描述解析器對所述xml文檔進(jìn)行解析的過程包括:獲取根節(jié)點(diǎn),通過庫函數(shù)elementdocument.getrootelement()獲取所述xml文檔的根節(jié)點(diǎn);獲取子節(jié)點(diǎn)元素,在獲得根節(jié)點(diǎn)之后,利用遞歸下降法從根節(jié)點(diǎn)尋找其子節(jié)點(diǎn),構(gòu)造語法樹;獲得命令參數(shù),通過遍歷整個xml文檔結(jié)構(gòu),提取出所有的屬性,再按照非參數(shù)屬性識別規(guī)則排除整個xml文檔結(jié)構(gòu)中的非參數(shù),生成命令文本模板,成對所述xml文檔的解析。從根節(jié)點(diǎn)尋找其子節(jié)點(diǎn)以構(gòu)造語法樹的過程通過函數(shù)elementelement.getchild(stringname)和函數(shù)listelement.getchildren(stringname)完成,包括步驟:函數(shù)elementelement.getchild(stringname)從父節(jié)點(diǎn)得到名稱為name的單一子節(jié)點(diǎn),函數(shù)返回值為空表示有0個元素;函數(shù)element.getchildren(stringname)用于獲取多個子元素,對于list中的每一個元素,通過list的迭代器獲取,list中的元素個數(shù)通過list的size()方法確定。所述的非參數(shù)識別規(guī)則包括兩個規(guī)則項(xiàng):屬性名識別規(guī)則和屬性值識別;判斷某屬性為非參數(shù)屬性的判斷規(guī)則為:當(dāng)某個屬性同時滿足兩個規(guī)則項(xiàng)時,則該屬性被視為非參數(shù)屬性,若一個規(guī)則項(xiàng)為空則只要滿足另一個規(guī)則項(xiàng),該屬性被視為非參屬性。通過掃描相應(yīng)的代碼模板的占位符,找到所述描述解析器解析出的相應(yīng)的數(shù)據(jù)進(jìn)行填充,組裝出對應(yīng)功能模塊的初始代碼。對應(yīng)功能模塊的初始代碼的組裝過程包括:檢查所述描述解析器解析出的描述文件的文檔語法、組織結(jié)構(gòu)是否無誤,驗(yàn)證錄入的解析數(shù)據(jù)類型是否正確,如查出描述文檔的內(nèi)容不符合文檔規(guī)定,則拋出異常信息;讀取所述描述解析器解析出的描述文件,并抽取其中的解析數(shù)據(jù)并加載到內(nèi)存中以待訪問;將解析數(shù)據(jù)填入相應(yīng)的初始代碼中。讀取所述描述解析器解析出的描述文件的具體過程為:以命令行為單位,每讀入一行進(jìn)行分析,當(dāng)遇到一個標(biāo)題行時表示一個命令說明的開始,循環(huán)匹配直到出現(xiàn)另一個標(biāo)題行時,表示結(jié)束對這個命令的說明;將分析出的所有命令的結(jié)構(gòu)化數(shù)據(jù)作為解析結(jié)果存放在列表容器中,供代碼模板對參數(shù)的提取以及代碼的生成。對命令行的分析采用表驅(qū)動的方式進(jìn)行分析,該表為一個三維表,其中,第一維表示當(dāng)前的分析狀態(tài),第二維表示當(dāng)前輸入行,第三維的值為“0”或“1”,其中“0”元素表示動作,“1”元素表示下一個狀態(tài),通過執(zhí)行指定的動作并轉(zhuǎn)到下一個狀態(tài),循環(huán)對每一行進(jìn)行分析。對應(yīng)每個功能模塊的初始代碼均有序存儲在初始代碼容器中,每個功能模塊的初始代碼分別與合并組裝后的初始代碼進(jìn)行一對一關(guān)聯(lián)映射,每個功能模塊具有指向與對應(yīng)功能模塊開發(fā)組的代碼接收容器的指針,用于在相應(yīng)的功能模塊的初始代碼在生成后分發(fā)至對應(yīng)的模塊開發(fā)組的代碼接收容器。解析數(shù)據(jù)填入初始代碼的過程是:該解析數(shù)據(jù)按照規(guī)定格式進(jìn)行套取,加載到對應(yīng)的結(jié)點(diǎn)和常量替換,從而生成初步的代碼規(guī)范,并對應(yīng)的生成包含映射類、實(shí)體類、接口類、業(yè)務(wù)邏輯類四個文件。并根據(jù)設(shè)置的屬性,添加包結(jié)構(gòu)和路徑,以及引用、備注、版本信息,生成對應(yīng)的業(yè)務(wù)層代碼。本發(fā)明解決了現(xiàn)有技術(shù)下代碼生成器局限性大,擴(kuò)展性差的問題,其基于多代碼模板的代碼生成與具體代碼的解耦,降低了代碼耦合度,提高了擴(kuò)展性,可以很好地滿足定制化需求。針對每個功能模塊單獨(dú)生成對應(yīng)的初始代碼,以及將各功能模塊按照邏輯結(jié)構(gòu)進(jìn)行合并組裝,使得軟件開發(fā)人員有一個全局的框架結(jié)構(gòu)。通過將各獨(dú)立的功能模塊的對應(yīng)初始代碼和合并組裝后的全局的初始代碼打包分發(fā)給相應(yīng)的開發(fā)組,使得該相應(yīng)功能模塊開發(fā)組的開發(fā)人員在獨(dú)立進(jìn)行單功能模塊的開發(fā)過程中有一個較好的指導(dǎo)性框架,便于后期的調(diào)試和維護(hù)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
奈曼旗| 乌兰县| 开封县| 梅州市| 会东县| 彭泽县| 耒阳市| 乌兰察布市| 台前县| 吉林市| 屯门区| 乃东县| 措美县| 石景山区| 东台市| 彭山县| 朝阳县| 大方县| 华阴市| 天祝| 孟村| 翁牛特旗| 常山县| 白城市| 天津市| 张家港市| 巴彦淖尔市| 仙居县| 南京市| 堆龙德庆县| 富锦市| 宁乡县| 乌拉特后旗| 阳江市| 吉隆县| 清流县| 旬阳县| 永和县| 卓资县| 神木县| 宁河县|