李福榮,吳海濤
(黃淮學院河南駐馬店463000)
?
基于A0P的科研申報系統的設計與實現
李福榮,吳海濤
(黃淮學院河南駐馬店463000)
摘要:在一個典型的Web系統中,系統的日志、安全性等軟件非功能屬性是保證系統質量的關鍵因素。但是,面向對象編程在解決非功能屬性問題時容易引起代碼混亂和代碼分散問題,不利于整個系統的模塊化開發,給后期的維護也帶來困難。針對上述問題,本論文使用面向方面編程(AOP)的思想來解決,利用AOP中的方面(Aspect)來對非功能屬性進行建模,并采用UML中的類圖進行描述,并給出其在科研申報系統中權限控制模塊的實現,驗證了面向方面編程在解決非功能屬性方面的優越性。
關鍵詞:面向方面編程;科研申報系統;權限控制;非功能屬性
隨著網絡信息化的發展,電子政務的出現,很多事務的管理也發生了根本的變化,例如科研申報的管理,傳統的管理方式是一種分散到集中的過程,通過簡單的人工方式進行傳送,這樣勢必造成工作效率的降低。另外,由于人工方式的滯后,各個分散機構在辦理項目申報后的數據也不能及時地集中到中央數據中心,給管理層的信息統計與做出決策帶來困難。因此,采用先進的信息化管理系統來解決這些問題勢在必行。這樣不僅方便了管理層的統一管理和決策,同時也提高了各個部門的工作效率。
一個典型的Web系統是由多個模塊構成的,大都使用面向對象編程語言(object-orjented programmjng,簡稱OOP),OOP可以很好地解決功能關注點的模塊化問題。但是,對于系統中的各個模塊,一般都要求實現記錄日志、權限檢查、事務處理、異常監視等附加功能。這些附加功能無法用傳統的技術封裝,它們散布在程序的多個模塊中,這就造成代碼混亂和代碼分散等問題的出現,從而導致程序可讀性差、編碼效率低、代碼重用率低、代碼質量差和難以擴展等缺陷的產生。為了彌補OOP的不足,本系統引入AOP的編程思想,用來解決橫切關注點的模塊化問題。AOP技術的出現很好地解決了功能需求和非功能需求分離的問題它可以提高軟件的設計水平及可復用性,實現關注點的分離。這將有助于更好地對系統進行分析和理解,增強軟件系統的自適應性、可維護性和高度的可復用性。
本文將AOP技術用于基于Web的科研申報系統中,以方便靈活地對該系統的權限控制進行設計和實現,并顯示了AOP技術的優越性。
面向方面編程(Aspect-orjented Programmjng,AOP)[1]是1997年由施樂公司帕洛阿爾托研究中心(Xerox PARC)開發的一種新的編程范型,它提出方面(aspect)的概念,即橫切關注點分離出的實體,這個實體被稱為方面,并提出模塊化該實體的方法,有效地解決了代碼分散和代碼混亂等問題。
在AOP中允許程序員模塊化橫切關注點,將影響多個類行為的非功能屬性封裝到一個可重用模塊中,從而解決了代碼混亂和分散的問題,提高了Web系統的可維護性和復用性[2]。類似于Java編程語言中的類,方面定義了切入點(pojntcut)、連接點(Jojnpojnt)和通知(advjce),并通過AspectJ中的方面編譯器來編譯,以便將方面織入到現有的對象中[3]。也就是說,AOP采用一種松散耦合的方式獨立實現各個關注點,然后再通過編織、組合關注點實現最終的系統[4],方面框架的概念域模型如圖1所示[5]。

圖1 方面框架的概念域模型
科研申報管理系統的設計與開發,主要從嚴格管理用戶和保證數據安全的角度考慮實現以下功能:各管理部門通過有效的用戶名和密碼,登錄系統,通過瀏覽器進行項目的申報與管理;申報人的項目信息經所在的科研管理部門審核通過后,并同時在服務器端和客戶端進行公示,所有人都可以對公示的項目進行查看和舉報,評審合格的項目,決定是否立項。在整個過程中,只要有審核結果出現,項目申報人就會得到即時的短信通知。系統為用戶提供安全、完善的接入方式,友好的客戶端界面,并具有即時短信通知,系統的實施避免了由B/S結構造成的用戶管理混亂、網絡安全和數據安全沒有保證的問題,解決了申報人實時了解項目信息的問題,實現了項目管理的科學化和人性化管理。
使用本系統的共有4種類型的用戶,分別是一級用戶、二級用戶、三級用戶和四級用戶。
一級用戶包括市科技局綜合計劃科操作人員,具有使用整個系統全部功能的權限,能進行系統相關信息管理。如設置系統運行的初始數據,數據庫手動備份等。能操作二級用戶審核通過的全部項目;市財政局相關操作人員,負責操作財務預算書;高新技術科操作人員,負責查看二級用戶審核的工業領域項目;農業技術科操作人員,負責查看二級用戶審核通過的農業領域的項目;社會發展科操作人員,負責查看二級用戶審核的社發領域項目,“151”人才操作人員,負責操作二級用戶審核通過的“151”人才項目。
二級用戶包括十一個單位和市直單位的科研項目管理人員,他們負責本部門內部的科研項目的管理、審核。
三級用戶是指申報單位的管理員,他負責申報單位的注冊,經一級用戶審核后,可以進行申報項目的提交。
四級用戶是指項目申報人,一般是指各單位中從事科研工作的教師或職工,他們對系統的使用頻率較低,一般只進行一些與個人相關的科技信息的錄入、管理和查詢。該用戶群普遍具有高學歷,且能非常熟練地使用計算機和Internet。
使用本系統頻度較高的用戶群體為一級用戶、二級用戶和三級用戶。這些用戶在日常工作中經常使用計算機和Internet,都能夠熟練使用瀏覽器和Mjcrosoft Offjce系列辦公軟件,在該系統投入使用后,該用戶群在日常工作中將頻繁地使用該系統進行信息的錄入、管理、查詢和統計。
根據軟件工程的關注點劃分方法和科研申報系統的用戶群體分析,本系統劃分為多個模塊,包括機構管理、人事管理、項目管理、分析統計和系統管理等模塊,系統流程圖如圖2所示。

圖2 科研申報系統流程圖
用戶通過輸入用戶名和密碼進入本系統。進入系統后,選擇各個功能模塊。在進入各個功能模塊后,模塊中都要首先進行權限的驗證,判斷是否具有該模塊操作的權限,如果有權限,進行操作,否則,提示錯誤,退出該模塊。這樣在每個功能模塊中都要有權限驗證的代碼。本系統引入AOP后,把各個功能模塊中的權限驗證代碼抽取成一個方面(Aspect),在執行功能模塊代碼前會自動進行權限驗證,這樣很好地解決了代碼分散和代碼混亂問題,實現了非功能關注點的模塊化問題。
4.1模型設計
在系統中,具有橫切屬性的模塊一般都是系統中的非功能模塊,它們與系統的功能模塊之間具有橫切關系。對于科研申報系統,主要有安全性、持久性、事務和日志等非功能屬性。對于這些屬性,可以抽象成方面,與類類似,也包括屬性和行為等細節信息。安全驗證Aspect類圖如圖3所示。在圖3中,管理員和用戶進行相應操作之前都要進行權限驗證,因此,權限驗證的代碼抽象為Securjty方面,用戶在訪問功能模塊之前都要先進行權限驗證,即執行Securjty的代碼。
4.2方面AsPect的設計
方面是在AspectJ框架中實現AOP功能的類,它是AspectJ應用開發的核心元素。設計思路是將分離出的獨立于各核心模塊通用加載的部分整合設計成為通用數據加載切面,分離出的方面與其它需求模塊無依賴關系和直接聯系。一個典型的AspectJ方面類的語法形式[6]如下。

圖3 科研申報系統類圖
pub1jc aspect MyAspect{//(1)定義Aspect方面類
pojntcut methods():executjon(* com.demo.HR.geeet(..);//(2)定義連接點函數
before():methods(){//定義前置通知函數
……
}
after():methods(){//定義后置通知函數
……
}
around():methods(){//定義環繞通知的函數
}
}
通過對以上語法的分析,可以得出本系統安全驗證方面的代碼。
pub1jc aspect Sec-aspect{
prjvate statjc Strjng deng1u1. strjng1;
pojntcut unjqueLog(deng1u1 t);/ /切入點
executjon(protected vojd createContents())& & target(t);/ /
deng1u1連接點名稱
after(deng1u1 t):unjqueLog(t){;/ /通知
try{
deng1u1. strjng1 = deng1u1. rs. getStrjng(/ Quanxjan0);jf(deng1u1. st rjng 1. equa1s(/管理員0))
{
xjtong1. new ItemMenuItem. setEnab1ed(true);
x jtong1. new ItemMenuItem-1. setEnab1ed(true);
}
}catch(SQ LEx ceptjon e)
{e. prjntStackT race();}
}
}
本文通過一種新的開發模型來實現科研申報系統,利用Ec1jpse開發工具和SQL Server2008數據庫開發,在系統中引入AOP的編程思想對非功能屬性進行實現,提高了系統的,
具有一定的理論和應用價值,對其他Web系統權限管理有一定的參考意義。
參考文獻:
[1]Kjcza1es G.,Lampjng J.,Mendhekar A.,Maeda C.,Lapes C.,Longtjer J.-M.,Irmjn J. Aspect-orjented Programmjng[S]. Proceedjng of ECOOP’97(sprjnger ver1ag,1997.
[2]BERTH OL D D. Ec1 jpse 3高級編程[M].李化,李政儀譯.北京:清華大學出版社,2006.
[3]Hannemann J,Kjcza1es G. Desjgn Pattern Imp1antatjon Java and Aspect J[M].New York:ACM,2002.
[4]Fj1man R E,E1rad T,C1arke S,等.面向方面的軟件開發[M].北京:機械工業出版社,2006.
[5]Shaukat A1j,Tao Yue,Ljone1 C,Brjand. Does aspect-orjented mode1jng he1p jmprove the readabj1jty of UML state machjnes[J].Software System Mode1(2014)13:1189-1221.
[6]翟高粵.基于AspectJ的AOP系統設計與實現[J].微計算機信息,2010,26(12-3):273-274,235.
Deslgn and lmPlementatlon of sclentlflc research system based on A0P
LI Fu-rong,WU Haj-tao
(Huanghuai University,Zhumadian 463000,China)
Abstract:In a typjca1 Web system,the non functjona1 attrjbutes of the system,such as 1og,securjty,and so on,are the key factors to ensure the qua1jty of the system. However,object orjented programmjng can easj1y 1ead to code confusjon and code djstrjbutjon when so1vjng the prob1em of non-functjona1 propertjes,whjch js not conducjve to the deve1opment of the who1e system. In vjew of the above prob1ems,thjs paper uses AOP(aspect orjented programmjng)to so1ve the prob1em,use AOP to mode1 the non-functjona1 attrjbutes,and use the c1ass djagram of UML to descrjbe the system. Through deve1opjng the access contro1 modu1e jn scjentjfjc research management system,we show that aspect- orjented programmjng js prjor to object-orjented programmjng jn so1vjng the non-functjona1 attrjbutes.
Key words:AOP;scjentjfjc research system;access contro1;non-functjona1 attrjbutes
中圖分類號:TN711
文獻標識碼:A
文章編號:1674-6236(2016)07-0008-03
收稿日期:2015-09-29稿件編號:201509124
基金項目:河南省自然科學基金研究項目(142300410288;132400411178)
作者簡介:李福榮(1981—),女,遼寧錦州人,碩士,講師。研究方向:軟件工程,軟件體系結構。