專利名稱:一種軟件復(fù)用方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及可組裝軟件的系統(tǒng)框架。
背景技術(shù):
隨著軟件系統(tǒng)的日益增多,很多企業(yè)在軟件的可復(fù)用性上做了很多的研究。 一般 都采用源代碼級別的重用方式,來復(fù)用業(yè)務(wù)系統(tǒng)中與具體業(yè)務(wù)無關(guān)的部分。比如對數(shù)據(jù)訪 問的處理、系統(tǒng)日志、系統(tǒng)異常、系統(tǒng)主界面及登錄、權(quán)限等,即當(dāng)有新的項(xiàng)目開發(fā)時(shí),將原 有類似的項(xiàng)目源碼復(fù)制到新的項(xiàng)目中再基于此代碼進(jìn)行新項(xiàng)目的開發(fā)。 現(xiàn)有方案在可復(fù)用的方式上,采用源代碼級別的復(fù)用,模塊與模塊之間關(guān)系都是 緊耦合,即當(dāng)一個(gè)模塊需要調(diào)用另一個(gè)模塊的功能方法時(shí),必須將其引用到自身所在的工 程中。 在項(xiàng)目研發(fā)過程中,業(yè)務(wù)需求的變化會(huì)導(dǎo)致程序的修改,采用現(xiàn)有的復(fù)用方式,當(dāng) 另一個(gè)模塊有變化時(shí),勢必導(dǎo)致此模塊需要重新編譯,往往容易出現(xiàn)"觸一發(fā)而動(dòng)全身"的 狀況。 且軟件在發(fā)布后,在運(yùn)行維護(hù)階段時(shí),如果改動(dòng)了某個(gè)文件,勢必要將其他關(guān)聯(lián)了 此文件的文件同時(shí)更新發(fā)布,給正式系統(tǒng)帶來較高的風(fēng)險(xiǎn)。導(dǎo)致發(fā)布的可復(fù)用版本比較難 管理,且隨著項(xiàng)目開發(fā)的增多,每個(gè)項(xiàng)目所使用的框架版本可能都不一致,后期維護(hù)比較麻 煩。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述缺陷,提供一種可組裝軟件 的系統(tǒng)框架,使得實(shí)現(xiàn)不同項(xiàng)目開發(fā)時(shí),與具體業(yè)務(wù)無關(guān)的部分能進(jìn)行文件級別的重用,并 能支持系統(tǒng)分部開發(fā)。 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是
構(gòu)造一種軟件復(fù)用方法,其包括以下步驟 A、采用.net反射技術(shù)將項(xiàng)目文件分解為文件信息、窗體信息及需要進(jìn)行權(quán)限控 制的控件信息; B、將分解得到的文件信息、窗體信息及控件信息通過文件服務(wù)程序和數(shù)據(jù)訪問組 件存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫中; C、根據(jù)所述文件信息、窗體信息及控件信息定義系統(tǒng)的功能菜單,并將菜單與相 應(yīng)的文件和窗體關(guān)聯(lián); D、在所述菜單被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名稱,從項(xiàng)目文 件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成功能調(diào)用。
本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟A包括
Al、讀取項(xiàng)目文件; A2、判斷所讀取的項(xiàng)目文件是否為.net程序集文件;
A3、在所述項(xiàng)目文件為.net程序集文件時(shí),判斷所述項(xiàng)目文件是否擁有窗體類, 若有,則循環(huán)所有窗體類,反射構(gòu)造窗體類,記錄控件信息、窗體信息和文件信息。
本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟A3包括 A31、反射構(gòu)造窗體類時(shí),判斷所依賴文件是否完善,若是,則循環(huán)窗體類的控件, 判斷是否為容器控件,若是,則遞歸查找容器控件的子控件,再判斷是否有權(quán)限控件,若是, 則記錄控件信息。 本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟A3還包括 A32、記錄控件信息后,判斷窗體控件循環(huán)是否完成,若是,則再判斷窗體循環(huán)是否 完成,若完成,則記錄文件信息、窗體信息及控件信息的關(guān)聯(lián)信息,若沒有完成,繼續(xù)循環(huán)所 有窗體類。 本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟A3中,在所述項(xiàng)目文件不是.net程 序集文件時(shí),提示返回信息。 本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟A31中,在所述依賴文件不完善時(shí), 提示返回信息。 本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟A31中,若所循環(huán)的窗體類的控件不 是容器控件,則直接判斷是否為有權(quán)限控件,若是,則記錄控件信息。
本發(fā)明所述的軟件復(fù)用方法,其中,所述步驟D包括 Dl、在所述菜單被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名稱,查找文 件,如果所查找的文件存在,則從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中, 完成功能調(diào)用,若查找的文件不存在,則提示返回信息。 本發(fā)明還提供了一種軟件復(fù)用系統(tǒng),其包括項(xiàng)目文件分解模塊、信息存儲(chǔ)模塊、功 能菜單生成模塊;其中, 所述項(xiàng)目文件分解模塊,用于采用.net反射技術(shù)將項(xiàng)目文件分解為文件信息、窗 體信息及需要進(jìn)行權(quán)限控制的控件信息; 所述信息存儲(chǔ)模塊,用于將分解得到的文件信息、窗體信息及控件信息通過文件 服務(wù)程序和數(shù)據(jù)訪問組件存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫中; 所述功能菜單生成模塊,用于根據(jù)所述文件信息、窗體信息及控件信息定義系統(tǒng) 的功能菜單,并將菜單與相應(yīng)的文件和窗體關(guān)聯(lián),使所述菜單在被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的 菜單對應(yīng)的文件及窗體名稱,從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完 成功能調(diào)用。 本發(fā)明的軟件復(fù)用方法和系統(tǒng)將功能模塊與模塊之間耦合降低,使得實(shí)現(xiàn)不同項(xiàng) 目開發(fā)時(shí),與具體業(yè)務(wù)無關(guān)的部分能進(jìn)行文件級別的重用,并能支持系統(tǒng)分部開發(fā),最后一 起進(jìn)行組裝功能,便于在不同的業(yè)務(wù)系統(tǒng)中進(jìn)行復(fù)用,并使業(yè)務(wù)系統(tǒng)的實(shí)現(xiàn)更具備擴(kuò)展性 和可維護(hù)性。
下面將結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中 圖1是本發(fā)明實(shí)施例的軟件復(fù)用方法中文件分解部分大致流程圖; 圖2是本發(fā)明實(shí)施例的軟件復(fù)用方法中文件分解部分詳細(xì)流程 圖3是本發(fā)明實(shí)施例的軟件復(fù)用方法中功能調(diào)用部分大致流程圖;
圖4是本發(fā)明實(shí)施例的軟件復(fù)用方法中功能調(diào)用部分詳細(xì)流程圖。
具體實(shí)施例方式
下面結(jié)合圖示,對本發(fā)明的優(yōu)選實(shí)施例作詳細(xì)介紹。 本發(fā)明較佳實(shí)施例的軟件復(fù)用方法流程圖如圖1-4所示,其包括以下步驟
S100、采用.net反射技術(shù)將項(xiàng)目文件分解為文件信息、窗體信息及需要進(jìn)行權(quán)限 控制的控件信息,如圖1和圖3所示,具體包括
S110、讀取項(xiàng)目文件; S120、判斷所讀取的項(xiàng)目文件是否為.net程序集文件; S130、在項(xiàng)目文件為.net程序集文件時(shí),判斷項(xiàng)目文件是否擁有窗體類,若有,則 循環(huán)所有窗體類,反射構(gòu)造窗體類,記錄控件信息、窗體信息和文件信息;并在項(xiàng)目文件不 是.net程序集文件時(shí),提示返回信息。
步驟SI30具體包括 S131、反射構(gòu)造窗體類時(shí),判斷所依賴文件是否完善,若是,則循環(huán)窗體類的控件,
判斷是否為容器控件,若是,則遞歸查找容器控件的子控件;
再判斷是否有權(quán)限控件,若是,則記錄控件信息;
在所依賴文件不完善時(shí),提示返回信息; 若所循環(huán)的窗體類的控件不是容器控件,則直接判斷是否為有權(quán)限控件,若是,則 記錄控件信息。 S132、記錄控件信息后,判斷窗體控件循環(huán)是否完成,若是,則再判斷窗體循環(huán)是 否完成,若完成,則記錄文件信息、窗體信息及控件信息的關(guān)聯(lián)信息,若沒有完成,繼續(xù)循環(huán) 所有窗體類。 S200、將分解得到的文件信息、窗體信息及控件信息通過文件服務(wù)程序和數(shù)據(jù)訪 問組件存儲(chǔ)到系統(tǒng)的數(shù)據(jù)庫中; S300、根據(jù)文件信息、窗體信息及控件信息定義系統(tǒng)的功能菜單,并將菜單與相應(yīng) 的文件和窗體關(guān)聯(lián),如圖2所示;如在功能菜單中可包括功能名稱銷售管理、生產(chǎn)管理、采
購管理等等。 S400、在菜單被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名稱,查找文件, 如果所查找的文件存在,則從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成 功能調(diào)用,若查找的文件不存在,則提示返回信息。 具體是,如圖4所示,根據(jù)控件信息、窗體信息定義功能,保存功能與窗體、控件的 關(guān)聯(lián)關(guān)系。系統(tǒng)功能框架定義好后,使用時(shí),系統(tǒng)進(jìn)行初始化,取出已授權(quán)功能菜單信息,并 加載顯示??筛鶕?jù)需要點(diǎn)擊菜單,選擇要復(fù)用的功能。系統(tǒng)獲取當(dāng)前被點(diǎn)擊的菜單信息,獲 取菜單關(guān)聯(lián)的文件窗體信息,查找文件。如果所需要查找的文件不存在,則提示返回信息, 如果存在,則從文件中反射窗體類,并顯示窗體。 本發(fā)明還提供了一種軟件復(fù)用系統(tǒng),其包括項(xiàng)目文件分解模塊、信息存儲(chǔ)模塊、功 能菜單生成模塊。其中,項(xiàng)目文件分解模塊用于采用.net反射技術(shù)將項(xiàng)目文件分解為文件 信息、窗體信息及需要進(jìn)行權(quán)限控制的控件信息;信息存儲(chǔ)模塊用于將分解得到的文件信息、窗體信息及控件信息通過文件服務(wù)程序和數(shù)據(jù)訪問組件存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫中;功能菜 單生成模塊用于根據(jù)文件信息、窗體信息及控件信息定義系統(tǒng)的功能菜單,并將菜單與相 應(yīng)的文件和窗體關(guān)聯(lián),使所述菜單在被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名 稱,從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成功能調(diào)用。
本發(fā)明的軟件復(fù)用方法和系統(tǒng)具有以下優(yōu)點(diǎn) (1)可在不同的軟件系統(tǒng)中實(shí)現(xiàn)文件級復(fù)用,項(xiàng)目可將精力集中在業(yè)務(wù)功能的實(shí) 現(xiàn)上,與業(yè)務(wù)無關(guān)的系統(tǒng)功能皆可由可復(fù)用的框架提供。 (2)軟件系統(tǒng)可由本專利提供的技術(shù)來進(jìn)行松耦合組裝,能分塊進(jìn)行開發(fā),對系統(tǒng) 整體維護(hù)性及開發(fā)便利性有較大提升。 應(yīng)當(dāng)理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換, 而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
一種軟件復(fù)用方法,其特征在于,包括以下步驟A、采用.net反射技術(shù)將項(xiàng)目文件分解為文件信息、窗體信息及需要進(jìn)行權(quán)限控制的控件信息;B、將分解得到的文件信息、窗體信息及控件信息通過文件服務(wù)程序和數(shù)據(jù)訪問組件存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫中;C、根據(jù)所述文件信息、窗體信息及控件信息定義系統(tǒng)的功能菜單,并將菜單與相應(yīng)的文件和窗體關(guān)聯(lián);D、在所述菜單被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名稱,從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成功能調(diào)用。
2. 根據(jù)權(quán)利要求1所述的軟件復(fù)用方法,其特征在于,所述步驟A包括 Al、讀取項(xiàng)目文件;A2、判斷所讀取的項(xiàng)目文件是否為.net程序集文件;A3、在所述項(xiàng)目文件為.net程序集文件時(shí),判斷所述項(xiàng)目文件是否擁有窗體類,若有,則循環(huán)所有窗體類,反射構(gòu)造窗體類,記錄控件信息、窗體信息和文件信息。
3. 根據(jù)權(quán)利要求2所述的軟件復(fù)用方法,其特征在于,所述步驟A3包括A31、反射構(gòu)造窗體類時(shí),判斷所依賴文件是否完善,若是,則循環(huán)窗體類的控件,判斷 是否為容器控件,若是,則遞歸查找容器控件的子控件,再判斷是否有權(quán)限控件,若是,則記 錄控件信息。
4. 根據(jù)權(quán)利要求3所述的軟件復(fù)用方法,其特征在于,所述步驟A3還包括 A32、記錄控件信息后,判斷窗體控件循環(huán)是否完成,若是,則再判斷窗體循環(huán)是否完成,若完成,則記錄文件信息、窗體信息及控件信息的關(guān)聯(lián)信息,若沒有完成,繼續(xù)循環(huán)所有 窗體類。
5. 根據(jù)權(quán)利要求2所述的軟件復(fù)用方法,其特征在于,所述步驟A3中,在所述項(xiàng)目文件 不是.net程序集文件時(shí),提示返回信息。
6. 根據(jù)權(quán)利要求3所述的軟件復(fù)用方法,其特征在于,所述步驟A31中,在所述依賴文 件不完善時(shí),提示返回信息。
7. 根據(jù)權(quán)利要求3所述的軟件復(fù)用方法,其特征在于,所述步驟A31中,若所循環(huán)的窗 體類的控件不是容器控件,則直接判斷是否為有權(quán)限控件,若是,則記錄控件信息。
8. 根據(jù)權(quán)利要求1所述的軟件復(fù)用方法,其特征在于,所述步驟D包括 Dl、在所述菜單被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名稱,查找文件,如果所查找的文件存在,則從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成功 能調(diào)用,若查找的文件不存在,則提示返回信息。
9. 一種軟件復(fù)用系統(tǒng),其特征在于,包括項(xiàng)目文件分解模塊、信息存儲(chǔ)模塊、功能菜單 生成模塊;其中,所述項(xiàng)目文件分解模塊,用于采用.net反射技術(shù)將項(xiàng)目文件分解為文件信息、窗體信 息及需要進(jìn)行權(quán)限控制的控件信息;所述信息存儲(chǔ)模塊,用于將分解得到的文件信息、窗體信息及控件信息通過文件服務(wù) 程序和數(shù)據(jù)訪問組件存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫中;所述功能菜單生成模塊,用于根據(jù)所述文件信息、窗體信息及控件信息定義系統(tǒng)的功能菜單,并將菜單與相應(yīng)的文件和窗體關(guān)聯(lián),使所述菜單在被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單 對應(yīng)的文件及窗體名稱,從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成功 能調(diào)用。
全文摘要
本發(fā)明涉及一種軟件復(fù)用方法及系統(tǒng),所述方法包括以下步驟A、采用.net反射技術(shù)將項(xiàng)目文件分解為文件信息、窗體信息及需要進(jìn)行權(quán)限控制的控件信息;B、將分解得到的文件信息、窗體信息及控件信息通過文件服務(wù)程序和數(shù)據(jù)訪問組件存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫中;C、根據(jù)文件信息、窗體信息及控件信息定義系統(tǒng)的功能菜單,并將菜單與相應(yīng)的文件和窗體關(guān)聯(lián);D、在菜單被點(diǎn)擊時(shí),根據(jù)與被點(diǎn)擊的菜單對應(yīng)的文件及窗體名稱,從項(xiàng)目文件中反射構(gòu)造出項(xiàng)目功能窗體,顯示在子窗體中,完成功能調(diào)用。本發(fā)明的軟件復(fù)用方法和系統(tǒng)使得實(shí)現(xiàn)不同項(xiàng)目開發(fā)時(shí),便于在不同的業(yè)務(wù)系統(tǒng)中進(jìn)行復(fù)用,并使業(yè)務(wù)系統(tǒng)的實(shí)現(xiàn)更具備擴(kuò)展性和可維護(hù)性。
文檔編號G06F9/44GK101763258SQ20091023953
公開日2010年6月30日 申請日期2009年12月31日 優(yōu)先權(quán)日2009年12月31日
發(fā)明者印軍 申請人:深圳聯(lián)友科技有限公司