張珠庭
( 寧德職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系 福建福安 355000)
MDA 系統(tǒng)是基于IBM Websphere 和Oracle的軟件重用機(jī)制系統(tǒng),本系統(tǒng)軟件重用機(jī)制構(gòu)架使用了Struts 作為表示層實(shí)現(xiàn)框架,Hibernate 作為持久層實(shí)現(xiàn)框架,遵循J2EE 1.4 標(biāo)準(zhǔn)。系統(tǒng)采取J2EE 框架編程,按照MVC 結(jié)構(gòu)進(jìn)行設(shè)計(jì),系統(tǒng)運(yùn)行需要PC 性能為:內(nèi)存2G,CPU 主頻1.3,硬盤(pán)40G。
MDA 總體系統(tǒng)結(jié)構(gòu)如圖1 所示。
圖1 -1 MDA 總體系統(tǒng)結(jié)構(gòu)
1.1.1 架構(gòu)目標(biāo)和約束 MDA 架構(gòu)的目標(biāo)是滿(mǎn)足SOW 中的所有非功能性需求與功能性需求,且能確保系統(tǒng)的安全性、可擴(kuò)展性、各項(xiàng)性能等要求。
啟用MDA的限制要求如下:
①實(shí)現(xiàn)MDA的系統(tǒng)須使用Websphere 應(yīng)用服務(wù)器且要符合J2EE的安全規(guī)范;②須通過(guò)SSO 服務(wù)器進(jìn)行統(tǒng)一驗(yàn)證,并遵循SSO 系統(tǒng)的規(guī)范要求;③數(shù)據(jù)庫(kù)服務(wù)器為Oracle9i;④要求提供優(yōu)化的求解結(jié)果和出色的求解效率;⑤軟件重用機(jī)制架構(gòu)及所采用技術(shù)需符合CMO 技術(shù)規(guī)范。
1.1.2 系統(tǒng)假設(shè)條件 ①Web UI 所部署的Application Server 上已經(jīng)正確部署SSO;②Web UI 與Engine Server 之間無(wú)防火墻。
根據(jù)以上的要求,MDA 系統(tǒng)按CMO 開(kāi)發(fā)規(guī)范而采用以J2EE 為主的多層架構(gòu),采用JAVA 為主要程序語(yǔ)言。為了對(duì)數(shù)據(jù)流進(jìn)行統(tǒng)一控制,方便用戶(hù)的配置和管理,筆者引入了安全策略這一概念。通過(guò)配置安全策略,可以將用戶(hù)需要的安全屬性、要求反應(yīng)出來(lái),再將安全策略應(yīng)用于系統(tǒng)中,系統(tǒng)便可理解用戶(hù)的安全需求。通過(guò)使用安全策略,防火墻可按照用戶(hù)的要求,對(duì)流經(jīng)的數(shù)據(jù)進(jìn)行控制和管理。當(dāng)防火墻收到報(bào)文時(shí),其將報(bào)文的源地址、目的地址、協(xié)議、端口號(hào)等信息與用戶(hù)配置的信息進(jìn)行比對(duì),決定是否建立此數(shù)據(jù)流[1]。若是建立了數(shù)據(jù)流,則將此數(shù)據(jù)流與策略相關(guān)聯(lián),則后續(xù)的數(shù)據(jù)包按照此方式處理。通過(guò)實(shí)現(xiàn)允許、丟棄、加密、認(rèn)證、排序優(yōu)先級(jí)、過(guò)濾、監(jiān)控?cái)?shù)據(jù)流等方法,決定哪些用戶(hù)的數(shù)據(jù)可以進(jìn)出,以及這些數(shù)據(jù)何時(shí)、何地可以進(jìn)出。防火墻的配置流程。
首先通過(guò)指定某個(gè)端口配置數(shù)據(jù)流流入的方向,也可以根據(jù)事先定義好的域,把源設(shè)置成域。若是選擇any,則表示所有接口[2]。針對(duì)通過(guò)這個(gè)端口的數(shù)據(jù)流,還可以進(jìn)一步的配置數(shù)據(jù)的源地址,進(jìn)而進(jìn)一步細(xì)化數(shù)據(jù)流的管控。此處地址可以是一個(gè)地址也可以是一組地址,使用組地址需要預(yù)先定義,any 表示所有地址。目的信息和源信息相同,只是目的配置是數(shù)據(jù)流的流出方向。只控制源和目的還不能提供很好的安全策略,通過(guò)進(jìn)一步的細(xì)化服務(wù)類(lèi)別,如通過(guò)服務(wù)的協(xié)議、源端口和目的端口等信息,進(jìn)一步細(xì)化安全側(cè)率,使得所定義的安全策略只針對(duì)設(shè)定的服務(wù)。時(shí)間表顯示此策略生效的時(shí)間,動(dòng)作表示符合策略時(shí),系統(tǒng)采取的動(dòng)作。
定義好策略后,此策略還不能立即生效。若想策略生效,則需要在策略管理模塊中啟用此策略。在策略管理模塊中,可以查詢(xún)到所有已定義的策略,并針對(duì)已定義的策略進(jìn)行刪除、啟用、停用等操作。
MDA 軟件重用機(jī)制系統(tǒng)架構(gòu)如圖2 所示。
圖2 軟件重用機(jī)制系統(tǒng)架構(gòu)
圖2 中,在系統(tǒng)最低層運(yùn)行的是Window 2003/AIX 服務(wù)器作業(yè)系統(tǒng),ASP 雖然是一種腳本語(yǔ)言,但是它也具有面向?qū)ο笳Z(yǔ)言的特點(diǎn)和可伸縮性。ASP 程序具有6 種對(duì)象,按照不同的作用,進(jìn)行以下內(nèi)置對(duì)象和腳本對(duì)象種類(lèi)型的分類(lèi)。
內(nèi)置對(duì)象的功能是由ASP 動(dòng)態(tài)鏈接庫(kù)的加載來(lái)完成,開(kāi)發(fā)Web 動(dòng)態(tài)網(wǎng)頁(yè)時(shí)必須使用這些對(duì)象。6個(gè)內(nèi)置對(duì)象的主要功能如下所示:
(1)Request 對(duì)象 asp 編程時(shí)可通過(guò)Request對(duì)象獲得來(lái)自客戶(hù)端的各種數(shù)據(jù)。
(2)Response 對(duì)象 與之配對(duì)的是Response對(duì)象,這個(gè)對(duì)象將服務(wù)器的數(shù)據(jù)返回給客戶(hù)端。
(3)Application 對(duì)象 簡(jiǎn)單的說(shuō),該對(duì)象是用來(lái)處理來(lái)自瀏覽器客戶(hù)端的請(qǐng)求的對(duì)象,該對(duì)象對(duì)客戶(hù)端的各種請(qǐng)求作出反饋[3]。
(4)Session 對(duì)象 Session 對(duì)象有點(diǎn)類(lèi)似一個(gè)程序的公共變量一樣,用來(lái)保存一個(gè)應(yīng)用程序的多個(gè)會(huì)話間的消息。
(5)Objectcontext 對(duì)象 該對(duì)象負(fù)責(zé)與MTS進(jìn)行溝通,進(jìn)行各種事務(wù)的處理[9]。
(6)ASPError 對(duì)象 程序通過(guò)該對(duì)象來(lái)判斷程序出現(xiàn)的錯(cuò)誤。
Asp 程序需要運(yùn)行腳本程序時(shí),需要通過(guò)調(diào)用scrrun. dll 這個(gè)動(dòng)態(tài)鏈接庫(kù)來(lái)實(shí)現(xiàn)腳本運(yùn)行,本身不提供另外的解釋引擎。
系統(tǒng)采用符合EJB2. x 規(guī)范的Session Bean 作為Service 層的封裝。
業(yè)務(wù)邏輯在Java Service 中實(shí)現(xiàn),然后由Session Bean 繼承相應(yīng)的Java Service 以獲得業(yè)務(wù)方法。該設(shè)計(jì)的優(yōu)點(diǎn)在于保留Java Service 易測(cè)試性以及可擴(kuò)展性的同時(shí)可以獲得EJB 帶來(lái)的分散式部署和容器管理事務(wù)等優(yōu)點(diǎn)。
系統(tǒng)環(huán)境被設(shè)計(jì)成4個(gè)部分:Development、Pre-Production Testing、Production、Simulation。
負(fù)責(zé)UI 與Engine 通訊元件稱(chēng)為“Adapter”,UI Server 端和Engine Server 端有各自的Adapter。UI Adapter 和Engine Adapter 可以根據(jù)事先定義的通訊協(xié)定交流,并分別負(fù)責(zé)于上層的UI/Engine 交互。為減少對(duì)系統(tǒng)平臺(tái)的依賴(lài),同時(shí)也為了靈活和高效,Adapter 將通過(guò)Socket 套接字調(diào)用低層的TCP/IP 實(shí)現(xiàn)數(shù)據(jù)交換。Windows,Unix 和Linux 環(huán)境都提供了類(lèi)似的Socket 接口,Adapter 只需要較少的修改就可在這些環(huán)境間移植。
UI Adapter 可以管理多臺(tái)Engine Server。其中每臺(tái)Engine Server 又可以并發(fā)運(yùn)行多個(gè)LP Engine,UI Adapter 根據(jù)各Engine Server的負(fù)荷情況自動(dòng)將Engine 運(yùn)行任務(wù)分配給空閑的Server 運(yùn)行,以達(dá)到最大程度利用硬件資源的目的。
對(duì)于暫時(shí)無(wú)法安排運(yùn)行的任務(wù),UI Adapter 會(huì)將其存儲(chǔ)在Queue 中,直到某臺(tái)Server 有Engine運(yùn)行結(jié)束再?gòu)腝ueue 中取出最早到達(dá)的任務(wù)安排運(yùn)行。
UI Adapter 需要維護(hù)可用Engine Server 列表,每隔一定的時(shí)間間隔向列表中的Server 發(fā)出監(jiān)控信號(hào)來(lái)獲取狀態(tài),只有可用的Server 才參與載入平衡。
多臺(tái)Server 之間形成Cluster,當(dāng)任何一臺(tái)Server 出現(xiàn)故障(網(wǎng)路故障、系統(tǒng)崩潰等)導(dǎo)致無(wú)法響應(yīng)時(shí),UI Adapter 會(huì)避免使用故障Server,直到該Server 重新恢復(fù)響應(yīng)才會(huì)將任務(wù)分配給它。容錯(cuò)功能僅針對(duì)尚未發(fā)送到故障Server的任務(wù)有效,已經(jīng)進(jìn)入運(yùn)行狀態(tài)的任務(wù)不能重新切換到其他Server 執(zhí)行。
MDA的Table 可劃分為4個(gè)部分,分別是:Interface Table、Basic Data Table、UI Table、SCPO Table,其用途分別說(shuō)明如下。
(1)Interface Table:MDA 與外部系統(tǒng)接口表,所有與外部系統(tǒng)的數(shù)據(jù)交換都通過(guò)該組表來(lái)進(jìn)行。
(2)Basic Data Table:存放諸如產(chǎn)品、物料、區(qū)域、機(jī)構(gòu)、計(jì)劃等基礎(chǔ)資料,基礎(chǔ)資料通過(guò)接口表來(lái)進(jìn)行更新,某些資料也可以通過(guò)Web UI 臨時(shí)添加。
(3)UI Table:存放通過(guò)UI 維護(hù)的資料關(guān)系以及MDA的各種報(bào)表。
(4)SCPO Table:SCPO 產(chǎn)品所屬表。由Engine 輸入表、Engine 輸出表、參數(shù)配置表以及對(duì)應(yīng)的備份表組成。
為了了解和記錄程序內(nèi)部執(zhí)行細(xì)節(jié)以及便于除錯(cuò),MDA 系統(tǒng)加入了日志機(jī)制。
開(kāi)發(fā)中使用的日志組件為第三方的類(lèi)庫(kù)Log4j。它提供了可擴(kuò)展的以及多種不同方式的記錄日志,包括命令行、文檔、記憶體、syslog 服務(wù)器、Win 事件日志等。提供9個(gè)不同的日志輸出,例如NOTSET,DEBUG,INFO,NOTICE,WARN,ERROR,CRIT,ALERT 與FATAL/EMERG 。使用者可以動(dòng)態(tài)控制不同的日志記錄,然后有效率地進(jìn)行編碼的調(diào)整。
本系統(tǒng)中Exception 按業(yè)務(wù)邏輯層次可劃分為DAO、Service、Adapter 和Action 四個(gè)層次。其中Adapter 層獲取前后臺(tái)Socket 通訊產(chǎn)生的異常,這類(lèi)問(wèn)題通常是網(wǎng)路故障或者Engine 非正常狀態(tài)導(dǎo)致的。這類(lèi)異常在被捕獲后會(huì)統(tǒng)一的拋出Adapter-Exception。除了以上情況外,如果異常是不可補(bǔ)救的,則會(huì)一直拋到struts -config. xml 配置檔里指定的ExceptionHandler 處理。
在MDA 系統(tǒng)中,所有的應(yīng)用程序異常都繼承自RuntimeException 類(lèi),這類(lèi)異常無(wú)需顯式地聲明俘獲。每一個(gè)子模塊在捕獲到一個(gè)不可修復(fù)的應(yīng)用異常后,都會(huì)創(chuàng)建一個(gè)表示此子模塊的異常,并且用它封裝被捕獲到的應(yīng)用異常,然后拋出。MDA 系統(tǒng)的安全保密設(shè)計(jì)將遵循CMO MIS 部門(mén)所制定的基于J2EE的Security 規(guī)范。
為了提高網(wǎng)頁(yè)制作的水平,加快軟件開(kāi)發(fā)的效率,許多軟件廠商多開(kāi)發(fā)了各種的網(wǎng)頁(yè)制作工具,網(wǎng)頁(yè)從靜態(tài)網(wǎng)頁(yè)到動(dòng)態(tài)網(wǎng)頁(yè),涌現(xiàn)了許多好的開(kāi)發(fā)工具和腳本語(yǔ)言。微軟公司也推出了解決方案,這就是MDA 技術(shù),它為廣大的網(wǎng)頁(yè)設(shè)計(jì)人員提供了制作動(dòng)態(tài)交互的高性能Web 網(wǎng)站。MDA中內(nèi)置開(kāi)發(fā)對(duì)象,這些對(duì)象使MDA 具有更好的開(kāi)發(fā)效率,可以充分的使用其他高級(jí)語(yǔ)言開(kāi)發(fā)的免費(fèi)的控件或者商業(yè)控件,減少了開(kāi)發(fā)時(shí)間,大大的提供了軟件開(kāi)發(fā)的效率,減少了重復(fù)勞動(dòng)。
軟件開(kāi)發(fā)人員認(rèn)為MDA 程序具有以下幾個(gè)優(yōu)點(diǎn):①M(fèi)DA 程序以業(yè)務(wù)層為核心,提供了很多工具。②MDA 采用的是后臺(tái)管理模式,所有的服務(wù)軟件安裝在遠(yuǎn)程的web 服務(wù)器上,容易統(tǒng)一集中管理。③MDA 能提供一種通用的網(wǎng)絡(luò)服務(wù),許多企業(yè)不需要另外定制軟件。
[1]肖文輝,劉洪星. 一種支持MDA的基于EDM的軟件開(kāi)發(fā)方式[J]. 武漢理工大學(xué)學(xué)報(bào)( 信息與管理工程版) ,2012,34 (2) : 156.
[2]緱斌麗,袁成榮,楊濤. MDA 在新產(chǎn)品開(kāi)發(fā)過(guò)程中的應(yīng)用研究[J]. 機(jī)械研究與應(yīng)用,2000,13 (1) : 50.
[3]杜浩,蔣波. 對(duì)象約束語(yǔ)言在MDA 模型轉(zhuǎn)換中的應(yīng)用[J]. 交通與計(jì)算機(jī),2006,24(1) : 73.
[4]張向波,黃俊領(lǐng). 軍事仿真概念模型及其開(kāi)發(fā)過(guò)程研究[J]. 情報(bào)指揮控制系統(tǒng)與仿真技術(shù),2004,26 (2) : 29.
[5]宋昌才. 由三菱電火花線切割機(jī)( WEDM) 看電加工機(jī)床的發(fā)展[J]. 新技術(shù)新工藝,2002,22 (5) : 6.