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