陸 維
(上海應(yīng)用技術(shù)學(xué)院 計算機科學(xué)與信息工程學(xué)院,上海 201400)
基于數(shù)據(jù)變化自適應(yīng)的應(yīng)用軟件開發(fā)平臺研究
陸 維
(上海應(yīng)用技術(shù)學(xué)院 計算機科學(xué)與信息工程學(xué)院,上海 201400)
由于軟件開發(fā)的對象面向各種應(yīng)用領(lǐng)域,用戶需求中的數(shù)據(jù)需要軟件工程師花費大量精力進行學(xué)習(xí),另外,由于需求變更,這些數(shù)據(jù)經(jīng)常需要修改,而用戶又無法對數(shù)據(jù)進行定義和維護,從而形成軟件開發(fā)和維護的瓶頸。針對以上問題,本文設(shè)計了基于數(shù)據(jù)變化自適應(yīng)的應(yīng)用軟件開發(fā)平臺模型,研究了平臺的運行機理與流程,并通過S2SH框架技術(shù)對平臺進行了開發(fā),實現(xiàn)了數(shù)據(jù)可以從應(yīng)用軟件中分離出來,以簡單的形式定義在平臺中,由平臺進行解析并獲取結(jié)果,反饋給應(yīng)用軟件。實驗表明,通過平臺開發(fā)的應(yīng)用軟件,可以實現(xiàn)數(shù)據(jù)和規(guī)則的用戶自定義,面對需求變化引起的數(shù)據(jù)變化,平臺可以自動進行調(diào)整,應(yīng)用軟件無需進行任何調(diào)整,提高了開發(fā)和維護的效率。
軟件開發(fā)平臺;軟件自動調(diào)整;數(shù)據(jù)變化;需求變更
近年來,軟件產(chǎn)業(yè)快速發(fā)展,人們對軟件的開發(fā)周期和質(zhì)量要求越來越高,傳統(tǒng)的軟件開發(fā)中,由于專業(yè)領(lǐng)域的不同,需求分析需要耗費大量的時間和精力,特別是在用戶業(yè)務(wù)規(guī)則和數(shù)據(jù)定義上,并且需求的變化對軟件質(zhì)量影響較大,成為了開發(fā)的瓶頸。國內(nèi)外眾多學(xué)者與工程師對服務(wù)組裝、軟件自動化等方面進行了研究,形成了部分研究成果與產(chǎn)品,但是未解決以下兩個問題:
(1)需要專門的工程師獲取完整的用戶需求,并轉(zhuǎn)化為系統(tǒng)能夠識別的表示形式。這些表示往往比較復(fù)雜,用戶很難進行直接定義與維護。
(2)當需求出現(xiàn)變更時,生成的應(yīng)用系統(tǒng)需要重新配置、編譯。
針對以上問題,本文研究了基于數(shù)據(jù)變化自適應(yīng)的應(yīng)用軟件開發(fā)平臺,從應(yīng)用軟件中分離出各類數(shù)據(jù)與規(guī)則的定義與維護,軟件工程師可以通過平臺開發(fā)應(yīng)用軟件的框架與界面,用戶可以在平臺上定義、維護數(shù)據(jù)與業(yè)務(wù)規(guī)則,減輕了需求分析的難度,節(jié)省了維護的費用,實現(xiàn)了數(shù)據(jù)與軟件的分離,從而實現(xiàn)數(shù)據(jù)變化,應(yīng)用軟件無需調(diào)整的目的,減少了軟件回歸測試與部署的工作量,提高了軟件的可靠性。同時,在平臺中定義的所有數(shù)據(jù)可以實現(xiàn)共享和復(fù)用。
2.1平臺體系結(jié)構(gòu)
平臺包括知識庫和執(zhí)行單元集。體系結(jié)構(gòu)圖如圖1所示。
其中,知識庫包括:
(1)數(shù)據(jù)字典
它用來存儲用戶數(shù)據(jù)和數(shù)據(jù)來源,同時記錄獲取數(shù)據(jù)的應(yīng)用描述,以便獲取不同來源的數(shù)據(jù),包括數(shù)據(jù)庫、XML、文本、設(shè)備等。
(2)規(guī)則庫
應(yīng)用軟件中的有些數(shù)據(jù)需要通過用戶規(guī)則對多個數(shù)據(jù)運算得出,規(guī)則庫用來存儲這些規(guī)則。
執(zhí)行單元按照一定的流程完成特定功能,包括:
①控制器單元
它是平臺的核心,維護著平臺的運行策略,當應(yīng)用軟件需要獲取數(shù)據(jù)結(jié)果時,對其他單元的工作進行協(xié)調(diào)。
②執(zhí)行器單元
它負責(zé)解析知識庫中數(shù)據(jù)字典中的數(shù)據(jù)描述,解析規(guī)則庫中的數(shù)據(jù)規(guī)則,并獲得數(shù)據(jù)結(jié)果。
③數(shù)據(jù)獲取單元
它負責(zé)執(zhí)行不同數(shù)據(jù)來源的應(yīng)用,實時獲取數(shù)據(jù),并滿足對數(shù)據(jù)來源定義的“開-閉”原則。
2.2 平臺工作原理
在平臺運行模型中,各單元按照既定運行策略完成系統(tǒng)的特定功能,圖2給出了應(yīng)用軟件中需要某一用戶數(shù)據(jù)結(jié)果時,平臺單元執(zhí)行的流程。
圖中,當平臺收到應(yīng)用軟件獲取數(shù)據(jù)結(jié)果的請求信息后,控制器單元調(diào)度執(zhí)行器單元,并把相關(guān)信息傳輸給執(zhí)行器單元。執(zhí)行器單元根據(jù)接收到的信息在知識庫的數(shù)據(jù)字典與規(guī)則庫中進行查找,解析,并把解析后的結(jié)果反饋給控制器單元??刂破鲉卧{(diào)度數(shù)據(jù)獲取單元,同時向其傳輸執(zhí)行器單元的解析信息。數(shù)據(jù)獲取單元根據(jù)信息執(zhí)行獲取數(shù)據(jù)的應(yīng)用,并把獲取的實時數(shù)據(jù)結(jié)果傳輸給控制器單元。
當應(yīng)用軟件獲取的數(shù)據(jù)在數(shù)據(jù)字典中有直接定義時,經(jīng)過上述一次流程即可得出結(jié)果,當在數(shù)據(jù)字典中沒有直接定義,而是在規(guī)則庫中有定義時,需要對上述流程進行遞歸執(zhí)行。獲取數(shù)據(jù)的流程如圖3所示。
圖中,當應(yīng)用軟件所需數(shù)據(jù)在數(shù)據(jù)字典中有定義時,可以通過平臺單元的工作流程直接得出結(jié)果,否則從規(guī)則庫中獲得規(guī)則的定義,該規(guī)則可能包括常數(shù)、規(guī)則和數(shù)據(jù),對于規(guī)則和數(shù)據(jù),遞歸執(zhí)行上述過程,直至獲取所需的各數(shù)據(jù)結(jié)果,最終通過運算得出總結(jié)果。
圖1 平臺體系結(jié)構(gòu)
圖2 平臺單元工作流程
圖3 數(shù)據(jù)獲取流程
圖4 平臺架構(gòu)圖
3.1 平臺應(yīng)用開發(fā)
平臺由S2SH框架整合開發(fā)完成,數(shù)據(jù)庫服務(wù)器使用MySQL,應(yīng)用開發(fā)框架包括五個層次,并配置信息安全管理體系,以保證信息的安全和完整性,平臺的應(yīng)用開發(fā)架構(gòu)設(shè)計如圖4所示。
(1)表現(xiàn)層主要負責(zé)平臺的對外接口,完成平臺與用戶及應(yīng)用軟件的交互,采用ExtJs技術(shù)完成RIA的應(yīng)用,通過與Struts2整合后,以Jsp作為輸出頁面。
(2)控制層主要負責(zé)數(shù)據(jù)的訪問控制,對發(fā)送來的請求進行篩選和處理,將可執(zhí)行的請求轉(zhuǎn)交給業(yè)務(wù)層進行處理,將錯誤請求轉(zhuǎn)交給錯誤處理程序處理。本層采用了Struts2框架的技術(shù),當該層得知業(yè)務(wù)層完成處理請求后,發(fā)送相應(yīng)的頁面給表現(xiàn)層,本層的數(shù)據(jù)交換使用了JSON格式。本層包括用戶信息控制器,它負責(zé)平臺與用戶信息的控制轉(zhuǎn)發(fā)。
(3)業(yè)務(wù)層負責(zé)接收控制層轉(zhuǎn)發(fā)的請求并進行處理,該層使用Spring容器管理業(yè)務(wù)Bean,增強了業(yè)務(wù)間的交互性,也減少了業(yè)務(wù)間的耦合程度。同時啟用了Spring基于注解的模式,有效地減少了配置的代碼量,增強了系統(tǒng)的可控性。該層包括執(zhí)行器單元和數(shù)據(jù)獲取單元。
(4)持久層負責(zé)對數(shù)據(jù)進行持久化管理,運用Hibernate框架技術(shù),對數(shù)據(jù)庫進行管理,整合Spring后,將相關(guān)的配置工作轉(zhuǎn)交給Spring容器負責(zé)管理,減少了配置數(shù)據(jù)庫的代碼量。
(5)核心層包括控制器單元,協(xié)調(diào)平臺各單元的工作,完成平臺功能。
3.2 實驗內(nèi)容
在實驗中,設(shè)計并實現(xiàn)了如下場景:應(yīng)用軟件中需要用到數(shù)據(jù)“score”,第一次需求要求“score”來自于一個Web應(yīng)用程序,然后需求變更,要求“score”來自數(shù)據(jù)庫。
在基于本文平臺開發(fā)的應(yīng)用軟件中定義、使用數(shù)據(jù)“score”,但不描述如何獲得數(shù)據(jù)的值。對于第一次需求,“score”可以直接從Web應(yīng)用程序中獲取,因此用戶可在數(shù)據(jù)字典中定義表1所示內(nèi)容。
數(shù)據(jù)“score”獲取了IP地址為“192.168.1.111”,端口號為“80”,名稱為“StudentSta”傳來的數(shù)據(jù)。
對于第二次需求,數(shù)據(jù)庫中有名為“StuScore”的表,表中有三個屬性“MathScore”、“ChineseScore”和“EnglishScore”,要求score=0.3* mathScore +0.5* chineseScore + 0.2*englishScore。因為“mathScore”、“chineseScore”和“englishScore”可能再用于應(yīng)用軟件的其他數(shù)據(jù),因此把他們定義在數(shù)據(jù)字典中。數(shù)據(jù)“score”的獲取需要用到數(shù)據(jù)字典中三個數(shù)據(jù),因此定義在規(guī)則庫中,見表2。
數(shù)據(jù)來自于連接字符串為“jdbc:mysql://localhost:8088/appdemo”,用戶名為“root”,密碼為“123456”的數(shù)據(jù)庫。
數(shù)據(jù)“score”獲取了數(shù)據(jù)字典表中三個數(shù)據(jù)經(jīng)過計算的結(jié)果。
通過實驗可以看出,通過本文平臺開發(fā)的應(yīng)用軟件的數(shù)據(jù)可以定義在平臺中,無需在應(yīng)用軟件中進行描述。數(shù)據(jù)的定義與維護非常簡單方便,用戶可直接進行操作。當需求變化后,平臺可以進行動態(tài)調(diào)整,應(yīng)用軟件無需進行任何調(diào)整。
表1 數(shù)據(jù)字典主要屬性實例
表2 數(shù)據(jù)規(guī)則主要屬性實例
針對軟件工程中數(shù)據(jù)與規(guī)則靈活化的目的,本文設(shè)計了基于數(shù)據(jù)變化自適應(yīng)的應(yīng)用軟件開發(fā)平臺,對平臺體系結(jié)構(gòu)進行了設(shè)計,確定了平臺各單元的工作原理和流程,并以S2SH框架技術(shù)對平臺進行了實現(xiàn)。實驗表明,通過平臺開發(fā)的應(yīng)用軟件,數(shù)據(jù)的定義和維護方便,提高了開發(fā)和維護的效率。對復(fù)雜數(shù)據(jù)的自適應(yīng)研究是將來的研究工作。
[1]趙亮,黃志球,劉林源.Web服務(wù)組裝中的隱私暴露分析方法[J].計算機科學(xué)與探索,2012,6(04):319-326.
[2] Shalloway A,Trott J R.設(shè)計模式精解.熊節(jié),譯.北京:清華大學(xué)出版社,2005.
TP391
A