李福榮,吳海濤
(黃淮學(xué)院河南駐馬店463000)
?
基于A0P的科研申報系統(tǒng)的設(shè)計與實現(xiàn)
李福榮,吳海濤
(黃淮學(xué)院河南駐馬店463000)
摘要:在一個典型的Web系統(tǒng)中,系統(tǒng)的日志、安全性等軟件非功能屬性是保證系統(tǒng)質(zhì)量的關(guān)鍵因素。但是,面向?qū)ο缶幊淘诮鉀Q非功能屬性問題時容易引起代碼混亂和代碼分散問題,不利于整個系統(tǒng)的模塊化開發(fā),給后期的維護也帶來困難。針對上述問題,本論文使用面向方面編程(AOP)的思想來解決,利用AOP中的方面(Aspect)來對非功能屬性進行建模,并采用UML中的類圖進行描述,并給出其在科研申報系統(tǒng)中權(quán)限控制模塊的實現(xiàn),驗證了面向方面編程在解決非功能屬性方面的優(yōu)越性。
關(guān)鍵詞:面向方面編程;科研申報系統(tǒng);權(quán)限控制;非功能屬性
隨著網(wǎng)絡(luò)信息化的發(fā)展,電子政務(wù)的出現(xiàn),很多事務(wù)的管理也發(fā)生了根本的變化,例如科研申報的管理,傳統(tǒng)的管理方式是一種分散到集中的過程,通過簡單的人工方式進行傳送,這樣勢必造成工作效率的降低。另外,由于人工方式的滯后,各個分散機構(gòu)在辦理項目申報后的數(shù)據(jù)也不能及時地集中到中央數(shù)據(jù)中心,給管理層的信息統(tǒng)計與做出決策帶來困難。因此,采用先進的信息化管理系統(tǒng)來解決這些問題勢在必行。這樣不僅方便了管理層的統(tǒng)一管理和決策,同時也提高了各個部門的工作效率。
一個典型的Web系統(tǒng)是由多個模塊構(gòu)成的,大都使用面向?qū)ο缶幊陶Z言(object-orjented programmjng,簡稱OOP),OOP可以很好地解決功能關(guān)注點的模塊化問題。但是,對于系統(tǒng)中的各個模塊,一般都要求實現(xiàn)記錄日志、權(quán)限檢查、事務(wù)處理、異常監(jiān)視等附加功能。這些附加功能無法用傳統(tǒng)的技術(shù)封裝,它們散布在程序的多個模塊中,這就造成代碼混亂和代碼分散等問題的出現(xiàn),從而導(dǎo)致程序可讀性差、編碼效率低、代碼重用率低、代碼質(zhì)量差和難以擴展等缺陷的產(chǎn)生。為了彌補OOP的不足,本系統(tǒng)引入AOP的編程思想,用來解決橫切關(guān)注點的模塊化問題。AOP技術(shù)的出現(xiàn)很好地解決了功能需求和非功能需求分離的問題它可以提高軟件的設(shè)計水平及可復(fù)用性,實現(xiàn)關(guān)注點的分離。這將有助于更好地對系統(tǒng)進行分析和理解,增強軟件系統(tǒng)的自適應(yīng)性、可維護性和高度的可復(fù)用性。
本文將AOP技術(shù)用于基于Web的科研申報系統(tǒng)中,以方便靈活地對該系統(tǒng)的權(quán)限控制進行設(shè)計和實現(xiàn),并顯示了AOP技術(shù)的優(yōu)越性。
面向方面編程(Aspect-orjented Programmjng,AOP)[1]是1997年由施樂公司帕洛阿爾托研究中心(Xerox PARC)開發(fā)的一種新的編程范型,它提出方面(aspect)的概念,即橫切關(guān)注點分離出的實體,這個實體被稱為方面,并提出模塊化該實體的方法,有效地解決了代碼分散和代碼混亂等問題。
在AOP中允許程序員模塊化橫切關(guān)注點,將影響多個類行為的非功能屬性封裝到一個可重用模塊中,從而解決了代碼混亂和分散的問題,提高了Web系統(tǒng)的可維護性和復(fù)用性[2]。類似于Java編程語言中的類,方面定義了切入點(pojntcut)、連接點(Jojnpojnt)和通知(advjce),并通過AspectJ中的方面編譯器來編譯,以便將方面織入到現(xiàn)有的對象中[3]。也就是說,AOP采用一種松散耦合的方式獨立實現(xiàn)各個關(guān)注點,然后再通過編織、組合關(guān)注點實現(xiàn)最終的系統(tǒng)[4],方面框架的概念域模型如圖1所示[5]。
圖1 方面框架的概念域模型
科研申報管理系統(tǒng)的設(shè)計與開發(fā),主要從嚴格管理用戶和保證數(shù)據(jù)安全的角度考慮實現(xiàn)以下功能:各管理部門通過有效的用戶名和密碼,登錄系統(tǒng),通過瀏覽器進行項目的申報與管理;申報人的項目信息經(jīng)所在的科研管理部門審核通過后,并同時在服務(wù)器端和客戶端進行公示,所有人都可以對公示的項目進行查看和舉報,評審合格的項目,決定是否立項。在整個過程中,只要有審核結(jié)果出現(xiàn),項目申報人就會得到即時的短信通知。系統(tǒng)為用戶提供安全、完善的接入方式,友好的客戶端界面,并具有即時短信通知,系統(tǒng)的實施避免了由B/S結(jié)構(gòu)造成的用戶管理混亂、網(wǎng)絡(luò)安全和數(shù)據(jù)安全沒有保證的問題,解決了申報人實時了解項目信息的問題,實現(xiàn)了項目管理的科學(xué)化和人性化管理。
使用本系統(tǒng)的共有4種類型的用戶,分別是一級用戶、二級用戶、三級用戶和四級用戶。
一級用戶包括市科技局綜合計劃科操作人員,具有使用整個系統(tǒng)全部功能的權(quán)限,能進行系統(tǒng)相關(guān)信息管理。如設(shè)置系統(tǒng)運行的初始數(shù)據(jù),數(shù)據(jù)庫手動備份等。能操作二級用戶審核通過的全部項目;市財政局相關(guān)操作人員,負責操作財務(wù)預(yù)算書;高新技術(shù)科操作人員,負責查看二級用戶審核的工業(yè)領(lǐng)域項目;農(nóng)業(yè)技術(shù)科操作人員,負責查看二級用戶審核通過的農(nóng)業(yè)領(lǐng)域的項目;社會發(fā)展科操作人員,負責查看二級用戶審核的社發(fā)領(lǐng)域項目,“151”人才操作人員,負責操作二級用戶審核通過的“151”人才項目。
二級用戶包括十一個單位和市直單位的科研項目管理人員,他們負責本部門內(nèi)部的科研項目的管理、審核。
三級用戶是指申報單位的管理員,他負責申報單位的注冊,經(jīng)一級用戶審核后,可以進行申報項目的提交。
四級用戶是指項目申報人,一般是指各單位中從事科研工作的教師或職工,他們對系統(tǒng)的使用頻率較低,一般只進行一些與個人相關(guān)的科技信息的錄入、管理和查詢。該用戶群普遍具有高學(xué)歷,且能非常熟練地使用計算機和Internet。
使用本系統(tǒng)頻度較高的用戶群體為一級用戶、二級用戶和三級用戶。這些用戶在日常工作中經(jīng)常使用計算機和Internet,都能夠熟練使用瀏覽器和Mjcrosoft Offjce系列辦公軟件,在該系統(tǒng)投入使用后,該用戶群在日常工作中將頻繁地使用該系統(tǒng)進行信息的錄入、管理、查詢和統(tǒng)計。
根據(jù)軟件工程的關(guān)注點劃分方法和科研申報系統(tǒng)的用戶群體分析,本系統(tǒng)劃分為多個模塊,包括機構(gòu)管理、人事管理、項目管理、分析統(tǒng)計和系統(tǒng)管理等模塊,系統(tǒng)流程圖如圖2所示。
圖2 科研申報系統(tǒng)流程圖
用戶通過輸入用戶名和密碼進入本系統(tǒng)。進入系統(tǒng)后,選擇各個功能模塊。在進入各個功能模塊后,模塊中都要首先進行權(quán)限的驗證,判斷是否具有該模塊操作的權(quán)限,如果有權(quán)限,進行操作,否則,提示錯誤,退出該模塊。這樣在每個功能模塊中都要有權(quán)限驗證的代碼。本系統(tǒng)引入AOP后,把各個功能模塊中的權(quán)限驗證代碼抽取成一個方面(Aspect),在執(zhí)行功能模塊代碼前會自動進行權(quán)限驗證,這樣很好地解決了代碼分散和代碼混亂問題,實現(xiàn)了非功能關(guān)注點的模塊化問題。
4.1模型設(shè)計
在系統(tǒng)中,具有橫切屬性的模塊一般都是系統(tǒng)中的非功能模塊,它們與系統(tǒng)的功能模塊之間具有橫切關(guān)系。對于科研申報系統(tǒng),主要有安全性、持久性、事務(wù)和日志等非功能屬性。對于這些屬性,可以抽象成方面,與類類似,也包括屬性和行為等細節(jié)信息。安全驗證Aspect類圖如圖3所示。在圖3中,管理員和用戶進行相應(yīng)操作之前都要進行權(quán)限驗證,因此,權(quán)限驗證的代碼抽象為Securjty方面,用戶在訪問功能模塊之前都要先進行權(quán)限驗證,即執(zhí)行Securjty的代碼。
4.2方面AsPect的設(shè)計
方面是在AspectJ框架中實現(xiàn)AOP功能的類,它是AspectJ應(yīng)用開發(fā)的核心元素。設(shè)計思路是將分離出的獨立于各核心模塊通用加載的部分整合設(shè)計成為通用數(shù)據(jù)加載切面,分離出的方面與其它需求模塊無依賴關(guān)系和直接聯(lián)系。一個典型的AspectJ方面類的語法形式[6]如下。
圖3 科研申報系統(tǒng)類圖
pub1jc aspect MyAspect{//(1)定義Aspect方面類
pojntcut methods():executjon(* com.demo.HR.geeet(..);//(2)定義連接點函數(shù)
before():methods(){//定義前置通知函數(shù)
……
}
after():methods(){//定義后置通知函數(shù)
……
}
around():methods(){//定義環(huán)繞通知的函數(shù)
}
}
通過對以上語法的分析,可以得出本系統(tǒng)安全驗證方面的代碼。
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();}
}
}
本文通過一種新的開發(fā)模型來實現(xiàn)科研申報系統(tǒng),利用Ec1jpse開發(fā)工具和SQL Server2008數(shù)據(jù)庫開發(fā),在系統(tǒng)中引入AOP的編程思想對非功能屬性進行實現(xiàn),提高了系統(tǒng)的,
具有一定的理論和應(yīng)用價值,對其他Web系統(tǒng)權(quán)限管理有一定的參考意義。
參考文獻:
[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].李化,李政儀譯.北京:清華大學(xué)出版社,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,等.面向方面的軟件開發(fā)[M].北京:機械工業(yè)出版社,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系統(tǒng)設(shè)計與實現(xiàn)[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
基金項目:河南省自然科學(xué)基金研究項目(142300410288;132400411178)
作者簡介:李福榮(1981—),女,遼寧錦州人,碩士,講師。研究方向:軟件工程,軟件體系結(jié)構(gòu)。