APP下载

基于A0P的科研申报系统的设计与实现

2016-06-17李福荣吴海涛

电子设计工程 2016年7期

李福荣,吴海涛

(黄淮学院河南驻马店463000)



基于A0P的科研申报系统的设计与实现

李福荣,吴海涛

(黄淮学院河南驻马店463000)

摘要:在一个典型的Web系统中,系统的日志、安全性等软件非功能属性是保证系统质量的关键因素。但是,面向对象编程在解决非功能属性问题时容易引起代码混乱和代码分散问题,不利于整个系统的模块化开发,给后期的维护也带来困难。针对上述问题,本论文使用面向方面编程(AOP)的思想来解决,利用AOP中的方面(Aspect)来对非功能属性进行建模,并采用UML中的类图进行描述,并给出其在科研申报系统中权限控制模块的实现,验证了面向方面编程在解决非功能属性方面的优越性。

关键词:面向方面编程;科研申报系统;权限控制;非功能属性

随着网络信息化的发展,电子政务的出现,很多事务的管理也发生了根本的变化,例如科研申报的管理,传统的管理方式是一种分散到集中的过程,通过简单的人工方式进行传送,这样势必造成工作效率的降低。另外,由于人工方式的滞后,各个分散机构在办理项目申报后的数据也不能及时地集中到中央数据中心,给管理层的信息统计与做出决策带来困难。因此,采用先进的信息化管理系统来解决这些问题势在必行。这样不仅方便了管理层的统一管理和决策,同时也提高了各个部门的工作效率。

一个典型的Web系统是由多个模块构成的,大都使用面向对象编程语言(object-orjented programmjng,简称OOP),OOP可以很好地解决功能关注点的模块化问题。但是,对于系统中的各个模块,一般都要求实现记录日志、权限检查、事务处理、异常监视等附加功能。这些附加功能无法用传统的技术封装,它们散布在程序的多个模块中,这就造成代码混乱和代码分散等问题的出现,从而导致程序可读性差、编码效率低、代码重用率低、代码质量差和难以扩展等缺陷的产生。为了弥补OOP的不足,本系统引入AOP的编程思想,用来解决横切关注点的模块化问题。AOP技术的出现很好地解决了功能需求和非功能需求分离的问题它可以提高软件的设计水平及可复用性,实现关注点的分离。这将有助于更好地对系统进行分析和理解,增强软件系统的自适应性、可维护性和高度的可复用性。

本文将AOP技术用于基于Web的科研申报系统中,以方便灵活地对该系统的权限控制进行设计和实现,并显示了AOP技术的优越性。

1 A0P简介

面向方面编程(Aspect-orjented Programmjng,AOP)[1]是1997年由施乐公司帕洛阿尔托研究中心(Xerox PARC)开发的一种新的编程范型,它提出方面(aspect)的概念,即横切关注点分离出的实体,这个实体被称为方面,并提出模块化该实体的方法,有效地解决了代码分散和代码混乱等问题。

在AOP中允许程序员模块化横切关注点,将影响多个类行为的非功能属性封装到一个可重用模块中,从而解决了代码混乱和分散的问题,提高了Web系统的可维护性和复用性[2]。类似于Java编程语言中的类,方面定义了切入点(pojntcut)、连接点(Jojnpojnt)和通知(advjce),并通过AspectJ中的方面编译器来编译,以便将方面织入到现有的对象中[3]。也就是说,AOP采用一种松散耦合的方式独立实现各个关注点,然后再通过编织、组合关注点实现最终的系统[4],方面框架的概念域模型如图1所示[5]。

图1 方面框架的概念域模型

2 科研申报系统

科研申报管理系统的设计与开发,主要从严格管理用户和保证数据安全的角度考虑实现以下功能:各管理部门通过有效的用户名和密码,登录系统,通过浏览器进行项目的申报与管理;申报人的项目信息经所在的科研管理部门审核通过后,并同时在服务器端和客户端进行公示,所有人都可以对公示的项目进行查看和举报,评审合格的项目,决定是否立项。在整个过程中,只要有审核结果出现,项目申报人就会得到即时的短信通知。系统为用户提供安全、完善的接入方式,友好的客户端界面,并具有即时短信通知,系统的实施避免了由B/S结构造成的用户管理混乱、网络安全和数据安全没有保证的问题,解决了申报人实时了解项目信息的问题,实现了项目管理的科学化和人性化管理。

使用本系统的共有4种类型的用户,分别是一级用户、二级用户、三级用户和四级用户。

一级用户包括市科技局综合计划科操作人员,具有使用整个系统全部功能的权限,能进行系统相关信息管理。如设置系统运行的初始数据,数据库手动备份等。能操作二级用户审核通过的全部项目;市财政局相关操作人员,负责操作财务预算书;高新技术科操作人员,负责查看二级用户审核的工业领域项目;农业技术科操作人员,负责查看二级用户审核通过的农业领域的项目;社会发展科操作人员,负责查看二级用户审核的社发领域项目,“151”人才操作人员,负责操作二级用户审核通过的“151”人才项目。

二级用户包括十一个单位和市直单位的科研项目管理人员,他们负责本部门内部的科研项目的管理、审核。

三级用户是指申报单位的管理员,他负责申报单位的注册,经一级用户审核后,可以进行申报项目的提交。

四级用户是指项目申报人,一般是指各单位中从事科研工作的教师或职工,他们对系统的使用频率较低,一般只进行一些与个人相关的科技信息的录入、管理和查询。该用户群普遍具有高学历,且能非常熟练地使用计算机和Internet。

使用本系统频度较高的用户群体为一级用户、二级用户和三级用户。这些用户在日常工作中经常使用计算机和Internet,都能够熟练使用浏览器和Mjcrosoft Offjce系列办公软件,在该系统投入使用后,该用户群在日常工作中将频繁地使用该系统进行信息的录入、管理、查询和统计。

3 基于A0P的科研申报系统的实现

根据软件工程的关注点划分方法和科研申报系统的用户群体分析,本系统划分为多个模块,包括机构管理、人事管理、项目管理、分析统计和系统管理等模块,系统流程图如图2所示。

图2 科研申报系统流程图

用户通过输入用户名和密码进入本系统。进入系统后,选择各个功能模块。在进入各个功能模块后,模块中都要首先进行权限的验证,判断是否具有该模块操作的权限,如果有权限,进行操作,否则,提示错误,退出该模块。这样在每个功能模块中都要有权限验证的代码。本系统引入AOP后,把各个功能模块中的权限验证代码抽取成一个方面(Aspect),在执行功能模块代码前会自动进行权限验证,这样很好地解决了代码分散和代码混乱问题,实现了非功能关注点的模块化问题。

4 基于AsPectJ的权限验证方面的实现

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();}

5 结论

本文通过一种新的开发模型来实现科研申报系统,利用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—),女,辽宁锦州人,硕士,讲师。研究方向:软件工程,软件体系结构。