摘 要:通過在整個軟件生命周期建立開發模型,研究了當前軟件工程與實際需求之間差異。利用基于XML的中間腳本,提出一種事務處理軟件開發模型,實現用戶功能需求到表單流、事件流和數據流的轉換,動態重配置出不同應用的事務處理軟件。建立了企事業信息綜合事務處理系統開發平臺,分析了平臺體系結構和中間腳本,表明可以根據業務變化進行整個系統功能重組而不需要編寫一句程序,驗證了該模型的可行性和有效性。
關鍵詞:軟件工程; 體系結構; 動態重配置
中圖分類號:TP311.52 文獻標志碼:A 文章編號:1001-3695(2008)08-2380-04
Software architecture oriented approach to dynamic reconfiguration
ZHI Yong-feng, ZHANG Jun
(College of Automation, Northwestern Polytechnical University, Xi’an 710072, China)
Abstract:Through setting up the development model in the software lifecycle, this paper studied the difference between nowadays software engineering and practical demands. Used the scripts that based on XML, presented an effective transaction processing software design model. It realized that the users’ functional requirement changed to the demands of form flow, event flow and data flow, which could dynamically configure and reconfigure different transaction processing software. Based on the model, set up information-centered enterprise transaction-integrated processing system (ICETIP) flat. At last, analyzed the flat architecture and middle script. Their feasibility and applicability show that it can be adjusted according to new requirements without any more programming.
Key words:software engineering; software architecture; dynamic reconfiguration
工藝水平的進步和微處理器系統體系結構的發展使得處理器的性能以每年1.6倍的速度增長,而軟件系統的開發過程與軟件危機時的情況相比沒有本質的改變[1]。進入20世紀90年代后,傳統的設計一詞已無法涵蓋軟件工程領域廣泛而豐富的內涵[2],體系結構概念進入軟件工程的研究方向。文獻[2] 定義軟件體系結構為數據要素、處理要素和連接要素特定形態的集合;文獻[3]認為軟件體系結構是構件之間的組織結構、關聯關系及設計的原則;文獻[4]認為軟件體系結構是相對穩定、滿足需求的基本框架;文獻[5~9]基于軟件的動態性和適應性討論了軟件生命周期特定階段的體系結構;文獻[10]建立了通用的適應性軟件體系結構;文獻[11]提出了軟件體系結構貫穿整個軟件生命周期的概念。
D. L. Parnas[12]指出軟件系統是離散執行的,任何位數據的改變都將改變系統的狀態。F. P. Brooks認為軟件復雜的原因是它的可變性 [13] 。正如文獻[14,15]中所指出的,軟件是現實世界的模型,必須跟隨現實世界變化,否則將面臨消亡的結局。因此,軟件系統應當適應環境的變化,軟件重配置技術應運而生。Peyman Oreizy認為軟件重配置技術是指能夠提供確定系統變化要素的方法,以此輔助分析并調整相應的變化需求,監視調整操作以確保系統的完整性[16]。文獻[17,18]提出了基于agent的動態重配置的數學模型。體系結構和重配置技術都減少了系統設計人員的工作量,但是并沒有把程序員從整個系統的設計中解脫出來。
本文結合軟件體系結構與重配置技術,針對事務處理軟件的特點,利用基于XML的一種中間腳本,提出了一種新的事務處理軟件開發模型。該模型獨立于具體的應用環境,具有廣泛的適應性和動態性,完全把程序員從編寫代碼中解脫出來。最后依據此思想建立了企事業信息綜合事務處理系統(information-centered enterprise transaction- integrated processing system, ICETIP)開發平臺,真正做到了設計系統時可見即可得,使用系統時所得即所需,解決了傳統軟件工程無法解決的問題。
1 傳統軟件開發流程
在現代軟件設計中,軟件系統形態是由若干基本單元及其相關語義約束構成。這些基本單元都不具有完備性,需要配置相關語義約束才有意義[17]。
定義1 語義e是指用戶需求d經過分析后所得的對基本單元的相關約束,即e=Φ(d)。Φ表示用戶需求d到相關約束語義e的映射。其中,用戶需求d包括功能、性能、可靠性等不同的需求。
軟件開發過程的反復性和遞歸性,軟件產品的形態需要經過非線性變換才能進入下一階段,因此Φ是一個非線性,不具有惟一性和可加性的函數。
定義2 實例化算子是指基本單元綁定相關語義約束的過程。它滿足關系:如果λ=λ′λ″,則已知λ′與λ″,惟一確定λ;已知λ,惟一確定λ′與λ″。
根據定義2,基本單元通過相關語義約束搭建的軟件系統功能定義如下:
定義3 設C={c1,c2,…,cm}為基本單元集合,軟件功能r的實現可以定義為r=ξ(∑cie)=ξ(∑ciΦ(d))。函數ξ不具有可逆性、惟一性和不變性,實例化算子與函數ξ一起構成軟件的設計階段。
定義3說明了在軟件設計中,軟件功能是由若干基本單元及其相關語義約束經過函數ξ轉換后構成的。當用戶需求變更時,需要重新選擇基本單元和分析相關語義約束Φ(d),通過實例化和函數ξ重新得到軟件的功能。
定義4 運行產品R是指功能r在可執行代碼中的實現,記為Rr=ψ(r)。
函數ψ表示軟件的編碼和測試,它是軟件的功能r到最終二進制可執行代碼產品的映射,是一個非線性、不可逆、不具有惟一性和確定性的函數。因此,利用軟件的運行產品R不可能獲得以源代碼表示的軟件功能r。
根據定義1~4,軟件的最終產品可以描述為
Rr=ψ(ξ(∑ciΦ(d)))
上式反映了軟件產品開發的基本原理,用戶需求變化后,需要重新分析、設計、編碼和測試。揭示出軟件工程設計思想的弱點:軟件產品的實現不具有魯棒性和靈活性。因此,為了提高軟件的動態適應能力,實現系統的動態重配置,采用新的設計思想是必需的。
2 事務處理軟件動態重配置模型
針對事務處理軟件特點,首先定義三個流的概念:
定義5 表單流。指業務邏輯處理的執行界面,一系列的執行界面切換就構成了業務流程。它可以抽象出數據寫入、數據讀出等16種基本控件單元。
定義6 事件流。指用戶在某個執行界面中操作而觸發表單流、數據流和其他事件流的一系列業務數據的傳遞和處理。它可以抽象出9種不同基本觸發事件單元。
定義7 數據流。指伴隨著事件觸發產生的業務數據的存儲、轉移、更新等以及由此引起的一系列活動。通過對現有事務處理軟件工作模式的研究,抽象出了包括生成新的數據變量在內的21種不同類型基本活動事務單元。
如圖1所示,在事務處理軟件中,通過把所有用戶需求的功能業務邏輯抽象成表單流、事件流和數據流的需求,使用戶的功能需求到表單流、事件流、數據流的基本單元和相應基本單元的語義約束的轉換φ′、φ″和φ變成一個具有可加性的函數,φ′、φ″和φ和分別滿足φ′(a+b)=φ′(a)+φ′(b)、φ″(a+b)=φ″(a)+φ″(b)和φ(a+b)=φ(a)+φ(b)。基本單元的集合即被劃分了三個部分:表單流、事件流和數據流的基本單元集合C1、C2和C3,且滿足C=C1+C2+C3。
設d′表示用戶的功能需求;a1、a2和a3分別表示用戶對表單流、事件流和數據流的需求;Φ(d′)表示對所有基本單元約束的相關語義;φ′(a1)、φ″(a2)和φ(a3)分別表示對表單流、事件流和數據流的基本單元約束的相關語義;Δd′表示用戶功能需求的變化;Δa1、Δa2和Δa3分別表示用戶對表單流、事件流和數據流的需求變化;Φ(Δd′)表示對所有基本單元約束的相關語義變化;Φ′(Δa1)、Φ″(Δa2)和Φ(Δa3)分別表示用戶對表單流、事件流和數據流的基本單元約束的相關語義變化。那么,
對于功能以外的需求,如性能、可靠性、安全保密、成本消耗等需求,定義為d″,則用戶需求d=d′+d″。其中,d″需求在建立函數ψ時考慮。
通過引入一種基于XML描述軟件功能r的基本單元和相關約束語義的中間腳本,使函數ξ具有可逆性、惟一性和不變性,函數ψ具有惟一性、解釋性和不變性。函數ξ的可逆性和惟一性,說明如果已知描述軟件功能r的XML腳本,可求得所有基本單元及相關語義約束∑cie=ξ-1(r),根據實例化算子特性,ci與e也就惟一被確定;如果已知ci與e,通過實例化算子,描述軟件功能r的XML腳本也就惟一確定。函數ψ惟一性和解釋性,說明已知描述軟件功能r的XML腳本,可得惟一的最終二進制可執行代碼產品。函數ξ和ψ不變性是指對于不同的用戶需求,函數ξ和ψ轉換是固定不變的。因此,可以把用戶的功能需求抽象成表單流、事件流和數據流的相關語義約束,結合表單流、事件流和數據流的基本單元,通過實例化算子和函數ξ把功能需求編譯成基于XML的中間腳本。其中,以XML腳本描述的軟件功能r可表示為
r=ξ(∑ciΦ(d′))=ξ(∑σiφ′(a1)+
∑τjφ″(a2)+∑vkφ(a3))
對于不同的用戶需求,用戶得到的二進制可執行代碼是固定不變的。例如,對于銀行賬務系統和保險信息管理系統等不同事務處理軟件,它們的二進制可執行代碼(函數ψ)是相同的,不同的只是描述三種流的基本單元和相關語義約束的XML腳本。二進制可執行代碼通過解釋XML中間腳本得到不同事務處理軟件的用戶操作界面和相關用戶操作信息。功能r的最終軟件產品可以描述為
Rr=ψ(ξ(∑ciΦ(d′)))=
ψ(ξ(∑σiφ′(a1)+∑τjφ′(a2)+∑vkφ(a3)))
功能需求變化時,函數ψ是無須變化的,只需利用函數ξ的可逆性和惟一性,求得
∑σiφ′(a1)+∑τjφ″(a2)+∑vkφ(a3)=ξ-1(r)
利用實例化算子特性可求得用戶的新增功能需求
∑(ci+Δci)Φ(d′+Δd′)=
∑σiφ′(a1)+∑τjφ″(a2)+∑vkφ(a3)+
∑Δσiφ′(Δa1)+∑Δτjφ″(Δa2)+∑Δvkφ(Δa3)
實現了事務處理軟件無須編寫程序、軟件功能的快速升級。其中描述軟件新功能需求的XML腳本為
r+Δr=ξ∑ciΦ(d′)+∑Δσiφ′(Δa1)+
∑Δτjφ″(Δa2)+∑Δvkφ(Δa3)
獲得升級后最終軟件產品為
Rr+Δr=ψ(r+Δr)
事務處理軟件的性能、可靠性、成本消耗等需求,在函數ψ中統一考慮。對于性能需求,主要通過把同一特定系統用戶共享的XML腳本在系統啟動時讀入內存,實現XML腳本的快速查找和解析。對于事務處理軟件,只要函數ψ安全,整個系統就是安全的,因此模型的本身就保證了系統的可靠性,并且不需要編寫程序,升級快速,減少了成本消耗。
3 ICETIP體系結構
基于第2章提出的設計事務處理軟件的思想,建立了ICETIP開發平臺,它是信息處理的應用核,具有業務邏輯可配置、系統功能可重組的特性,使該應用核能夠適用于不同行業和不同業務邏輯的事務處理,重要的是在其應用部署過程中,無須任何程序修改和增加新的功能模塊。ICETIP開發平臺使項目從開發模式轉變為技術服務模式,運行一段時間后如果需要擴展新業務,只需在后臺應用服務器中,通過配置新的功能模塊,經過適當的權限控制,在不改變客戶端應用程序的情況下,就可以運作新業務,大大縮減了系統開發時間,提高了經濟效益;同時,在某種程度上促進了軟件的標準化發展。其中,ICETIP基于網絡應用的三層體系架構,主要由三部分組成:應用配置管理系統、客戶程序和應用服務器。
3.1 應用配置管理系統
該模塊主要是把用戶的功能需求編譯成XML腳本。配置事務處理軟件的過程中,首先以可視化方式拖動控件配置完成用戶界面;然后在配置觸發事件的同時,完成對活動事務配置;最后經過系統的編譯,把表單流、事件流和數據流編譯生成可以用XML語言描述的形式,并存入ICETIP系統庫。當用戶需要升級時,只需把XML語言描述的應用讀取并解釋到應用配置管理系統中,在原有的基礎上經過修改、配置和編譯生成新的XML腳本,并將ICETIP系統庫中原有XML腳本替換。
3.2 客戶程序
主要包括表單自動生成、事件流處理、解析器、通信程序和連接管理五部分。為了管理方便,引入角色概念,每一角色與特定的表單流相聯系。用戶登錄時,根據所屬的不同角色,表單自動生成模塊通過通信程序與應用服務器協商得到相應角色的XML腳本,經過解析器的解釋說明形成適用于不同業務邏輯的用戶操作界面。
3.3 應用服務器
主要包括事務處理、解析器、通信程序、安全管理和連接管理五部分。它是整個系統的核心。主要是完成對客戶端連接管理、數據庫操作、XML腳本解釋工作。對數據庫操作采用的是基于XML數據庫中間件,通過在客戶程序定義一個與用戶界面一一對應的ID值,ID值通過配置與XML腳本也是一一對應的,這樣數據庫中間件根據客戶端請求,通過解析器完成對XML腳本解釋,完全實現了對SQL語言和數據庫操作屏蔽。XML腳本解析是應用服務器的核心,主要功能是完成對表單配置數據、活動鏈接配置數據和商務邏輯數據的XML腳本解釋工作。
4 ICETIP腳本
ICETIP開發平臺建立的事務處理軟件是由事件驅動的事務活動鏈接實現操作信息的相互切換,如圖2所示。其中共有三種不同類型的事務活動鏈接:表單流控制活動、數據流控制活動和自定義的簡單腳本。
4.1 表單流控制活動
描述表單流的事務活動鏈接有三類,即OPEN、CLOSE和COMMIT CHANGE。OPEN表示打開表單,并把父表單的數據傳遞到當前打開的表單;CLOSE表示關閉表單;COMMIT CHANGE表示把當前打開的表單數據傳遞到父表單。它們的描述如下:
OPEN Form-name TRANSFER (Pvariable-name1=Ovariable-name1,…,Pvariable-name#n= Ovariable-name#n);
CLOSE (Form-name);
COMMIT CHANGE TRANSFER (Pvariable-name1= Ovariable-name1,… ,Pvariable-name#n=Ovariable-name#n)。
4.2 數據流控制活動
描述數據流的事務活動鏈接有六類,主要是完成對數據庫的操作。它們的描述如下:
select Variable-list FROM Form-list WHERE Logical-Expr ORDER BY Variable-list;
update form-name SET Variable-name1=Eprs1, Variable-name2=Eprs2, …, Variable-name#n =Eprs#n WHERE Logical-Expr;
insert into Form-name (Variable-list) VALUES (Value-Expr-list);
delete from Form-name WHERE Logical-Expr;
set from Form-name-list WHERE Logical-Expr;
put into Form-name FROM Form-name-list SET Variable-name1=Eprs1, Variable-name2=Eprs2,…, Variable-name#n=Eprs#n WHERE Logical-Expr。
4.3 自定義的簡單腳本
自定義的簡單腳本描述有三類,即順序、條件和循環。其中順序事務活動鏈接的描述如下:
bengin active-link-name
action action-name1 TYPE type-name
Entity of Action
end action-name1
……
action action-name#n TYPE type-name
Entity of Action
end action-name#n
end active-link-name
條件事務活動鏈接的描述如下:
bengin active-link-name
if conditional expression THEN
action action-name1 TYPE type-name
Entity of Action
end action-name1
……
action action-name#m TYPE type-name
Entity of Action
end action-name#m
else
action action-name1 TYPE type-name
Entity of Action
end action-name1
……
action action-name#n TYPE type-name
Entity of Action
end action-name#n
end IF
end active-link-name
循環事務活動鏈接的描述如下:
begin active-link-name
while condition-expression; control-expression
do
action action-name1 TYPE type-name
Entity of Action
end action-name1
……
action action-name#n TYPE type-name
Entity of Action
end action-name#n
end while
end active-link-name
為了操作的可變性,中間腳本中含有變量。系統運行時,利用客戶程序傳遞過來的數據完成
對XML腳本解釋,實現對不同業務邏輯的操作。
5 結束語
針對傳統軟件工程設計思想的弱點,通過引入基于XML的中間腳本,提出了一種新的設計
事務處理軟件的方法,解決了程序員編寫事務處理軟件程序的煩惱,減少了傳統軟件工程中的編碼和測試,并且對于用戶需求只需要考慮功能需求,而對于用戶的性能、可靠性和安全等需求統一在函數中做成最優。在軟件設計階段,無須對程序結構等進行分析,而是一個根據用戶需求定義基本單元與相關約束的過程;在維護階段,當用戶的需求變化后,可以利用此模型快速升級,真正做到了設計事務處理軟件時可見即可得,使用事務處理軟件時所得即所需,解決了傳統軟件工程無法解決的問題。最后通過建立ICETIP開發平臺,說明了此方法的可行性和有效性。因此,利用該模型設計事務處理軟件只需兩個步驟:需求分析和系統部署。
參考文獻:
[1]WOOLDRIDGE, JENNINGS R. Pitfalls of agent-oriented development[C]//Proc of the 2th International Conference on Autonomous Agents. New York: ACM Press, 1998:385-391.
[2]PERRY D E, WOLF A L. Foundations for the study of software architecture[J]. ACM SIGSOFT Software Engineering Notes, 1992, 17(4):40-52.
[3]GARLAN, PERRY D E. Introduction to the special issue on software architecture[J]. IEEE Trans on Software Engineering, 1995, 21(4): 269-274.
[4]SHAW M, GARLAN D. Software architecture: perspectives on emerging discipline[M]. Englewood Cliffs: Prentice Hall, 1996.
[5]余雪麗. 軟件體系結構及實例分析[M]. 北京:科學出版社,2004.
[6]孫志勇. 多agent系統體系結構及建模方法研究[D]. 合肥:合肥工業大學,2004.
[7]FOSTER I, KESSELMAN C. The grid: blueprint for a future computing infrastructure[M]. Beijing: China Machine Press, 2005.
[8]李程旭. 基于網構軟件理論的交通綜合平臺研究[D]. 大連:大連理工大學,2005.
[9]HU Chun-ming, HUAI Jin-peng, SUN Hai-long. Web service-based grid architecture and its supporting environment[J]. Journal of Software, 2004,15 (7): 1064-1073.
[10]黃雙喜, 范玉順. 一類通用的適應性軟件體系結構風格研究[J].軟件學報, 2006, 17 (6): 1338-1348.
[11]MEDVIDOVIC N, GRUNBACHER P, EGYED A, et al. Bridging models across the software lifecycle[J]. Journal of Systems and Software, 2003, 68(3): 199-215.
[12]PARNAS D L. Education for computing professionals[J]. IEEE Computer, 1990, 23(1): 17-22.
[13]BROOKS F P. No silver bullet-essence and accidents of software engineering[C]// Proc of Information Processing. Amsterdam: Elsevier Science Publishers, 1986: 1069-1076.
[14]COLE R,SCHLICHTINGR. Editorial: configurable distributed systems[J]. IEE Proceedings Software, 1998, 145(5):129.
[15]PEYMAN O, NENAD M. Architecture-based runtime software evolution[C]// Proc of International Conference on Software Engineering. Kyoto: IEEE Computer Society, 1998:19-25.
[16]OREIZY P, TAYLOR R N. On the role of software architectures in runtime system reconfiguration[C]// Proc of the International Conference on Configurable Distributed Systems. Washington DC: IEEE Computer Society, 1998.
[17]田邊. 基于agent的軟件體系結構與應用[D]. 西安:西北工業大學,2000.
[18]田邊, 戴航, 戴冠中. PDUIMS——基于持久存儲的用戶界面管理系統的設計與應用[J]. 計算機學報, 2000, 23(6):660-666.
[19]賀嵐, 狄玉來. 基于構件的軟件設計模型[J]. 計算機研究與發展,1998,35(5):451-454.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文