陕晋军
1江南大学物联网工程学院 江苏 214122
2山西建筑职业技术学院计算机工程系 山西 030006
如今,Web应用开发变得越来越复杂,传统的单个应用框架往往很难满足日益增长的应用需求,实际的开发过程常常需要综合多个框架的长处才能满足用户的需求。
表现层的开源 Struts2,数据持久层的 Hibernate框架以及中间层的Spring框架,这三者构成了当前主流的开发J2EE应用的轻量级框架组合,即 Struts2+Spring+Hibernate。使用Struts2架构作为了整个系统的基础框架,它负责了MVC模型中各层的分离。利用 Hibernate作为系统持久层的底层结构。中间业务逻辑层由Spring支持。根据需求来提出一个模型,将这些模型采用Java语言实现出基本的Java对象,然后写出基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,然后由Spring来完成业务逻辑。
概要分析要做的工作是描述目标系统的功能和性能,确定软件设计的限制和软件同其他系统元素间的接口细节,定义软件的其他有效性需求。运用统一建模语言(Unified Modeling Language, UML)来找出系统的功能需求、分析,提取所开发系统领域的类以及描述它们之间相互关系,在完成系统的面向对象分析(Object-Oriented Analysis, OOA)的基础上,对系统进行面向对象设计(Object-Oriented Design, OOD)。图1为整个系统的基本框架图。
图1 系统的基本框架图
针对不同的用户群,其功能也各部相同。实现分角色登录,对不同的角色由不同的功能实现。可以实现平时及期末成绩录入、查询、修改、统计分析;学生补考成绩录入、查询、修改、统计分析;数据备份、导入和导出;成绩报表打印、数据报表打印;并且还可以对教师、学生的基本信息录入、查询、导入和导出;并且还可以对教师的授课情况将行统一管理,实现根据授课情况统计教师的工作量。成绩录入提供四种方式:教务人员录入或导入系统;教师录入或导入所教授课程的学生成绩。成绩一般有百分制和学分制(如包括优秀、良好、中等、及格、不及格)。百分制总评成绩由平时成绩、考勤成绩、期末考试成绩结合学校制定的比例计算而来。
我们通过 UML语言来分析高职院校成绩管理系统。UML作为一种图形语言,用于对软件系统建模和开发工作。在软件开发的每个步骤中,从对需求的分析到技术规范,再到结构设计及配置要求,UML都提供了模型化和可视化的支持。
用例是用户和计算机系统进行交互的描述。用例图是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。
1.1.1 使用用例图描述系统需求的步骤
(1)识别用户角色
一般而言,定义用户角色的基本思路是,先从涉众中找到用户,用户是指将与要建设的系统发生关系的那些涉众。再从用户的角度出发,考虑系统建立以后将发挥什么作用,哪些事务与它进行交互。除此之外,系统还有可能跟其他系统相联系,如招生系统、教务管理系统等,它通过数据库进行接口,所以数据库也可能是一个角色,还有与该系统交互的设备,如打印机也是角色。总体来说,该系统主要角色有:系统管理员、学生、教师。
(2)识别系统中的用例
用例是系统的功能描述,从用户角色的角度,分析每个角色的主要任务是什么?如教师角色,他的任务有查看和修改个人信息、成绩录入、成绩查询等。
(3)确定系统中角色与用例间的关系角色和用例的关系反映了角色与系统的互动,即角色的动作,角色向系统输入或从系统输出什么信息。
1.1.2 系统管理员角度的顶层用例图
下面我们分别从系统管理员、教师、学生这三类用户的角度得到顶层用例图。项目用例图如图2所示。
图2 系统顶层角色用例图
系统管理员顶层用例图
用例分析:该用例角色是系统管理员。系统管理员负责学生学籍信息的管理(包括学生注册、学籍异动、学生调班以及学生毕业后的数据处理)、教师基本信息的录入(导入)和查询(设置多种查询方式)、课程管理(开课情况、开课学期、任课教师、以及教材信息等)学生成绩的录入和查询(设置多种查询方式)、生成各种报表(班级名单、班级成绩、补考名单以及教师的课程表等)、身份及角色管理、数据备份(所有师生及学生成绩等数据的导入和导出等)以及打印功能。
教师角度的顶层用例图
用例分析:该用例角色是教师。教师可以进行个人信息维护(查看任课信息、查看个人信息、查看学生信息和修改以及登录用户名和密码的设定)、学生成绩管理(包括导入或录入学生成绩、查询本班学生成绩并且可以对成绩进行简单的统计,生成补考学生名单等)、报表打印(打印本人信息、打印班级名单、打印本班成绩以及打印本班补考成绩名单)。
从学生角度的顶层用例图
用例分析:该用例角色是学生。可以查看和修改个人的信息(登录用户名和密码的设置等)、个人成绩查询、个人选课情况,以及相应选修学分的情况等。
在上述用例图的基础上,进一步对用户需求进行分析。划分业务用例,并针对业务用例,必要时可以结合UML提供的时序图、协作图、活动图描述业务用例。选择业务用例的粒度十分重要,如学生信息修改的功能,是应该把增加学生信息、删除学生信息、修改学生信息、查询学生信息分别作为一个用例,还是整体作为一个用例都是需要考虑的。
1.2.1 确定业务用例
确定业务用例的时候,可以从以下几个方面出发:
(1)用例是针对一个完整的业务。一般不必把增加、删除、修改、查询分别作为一个完整的业务。作为一个管理业务,数据只有先增加,才有可能修改或者删除。增加、删除、修改、查询结合起来才能完成管理目的,单独每一项都不是业务的全部。
(2)考虑实施成本和风险。如果将增加、删除、修改、查询都分别作为一个业务用例,很容易造成这些原本与用户这个实体紧密关联,共同组成用户实体生命周期的业务,被割裂成多个独立的业务,一个用例可以看作一个分析单元,设计单元,开发单元,测试单元甚至部署单元。把紧密关联的业务分成多个独立部分去实施是高成本的,高风险的。
(3)尽量提高可复用性。增加、删除、修改。查询对一个用户来说是不会同时发生的,每次用户只会完成其中的一个行为。分开来有利于详细分析、模拟这一行为的细节而不至于混淆。就Web应用而言,针对数据的增加、删除、修改、查询等,很容易形成“模板”,增加用户用这个模板,增加其它基础数据可能也用同一个模板,只是操作的数据(实体)不同而已。因此,在这种情况下,这些模板是可以复用的。
(4)具体问题具体分析。查询是比较特殊的,查询一般不一定只局限于一类用户,也不一定局限这个用例,一般都是所谓的综合查询,是可能跨用例的。比如管理员可以查询学生学籍信息,学生也可以查询自己的学籍信息。所以根据实际情况,查询可以作为一个业务用例出现。
1.2.2 业务建模举例
由于高职院校教学管理是十分庞大而复杂的,下面针对一小部分需求,进行业务建模。具体需求描述如下:
管理员登录系统后,能够维护(查找、增加、修改、删除)学生信息,同时又能对教师的信息进行查询和修改(查找、增加、修改、删除)等。根据对用户需求的总结和归纳,从管理员的角度以及从每项业务的角度来绘制业务用例图。在上述功能点中,比较重要的操作如下:
(1)查询学生信息;
(2)修改学生信息;
(3)增加学生信息;
(4)删除学生信息;
(5)修改学生成绩;
(6)查询教师信息;
(7)修改教师信息;
(8)增加教师信息;
(9)删除教师信息。
经过分析,用例的粒度以每个用例能够说明一件完整的事情为宜。即一用例可以描述一项完整的业务流程得到的业务用例如下:
(1)学生信息维护(增加、删除、修改);
(2)教师信息维护(增加、删除、修改);
(3)学生信息查询;
(4)教师信息查询。
在具体分析业务用例的时候,可以使用UML提供的时序图、协作图、活动图等来帮助分析系统业务。以用户登录系统为例,其时序图、协作图和活动图分别如图3、图4和图5所示。
图3 用户登录时序图
图4 用户登录协作图
图5 用户登录活动图
成绩管理系统含有大量用户信息,所以数据库的安全就是一个必须要考虑的问题。保证系统安全涉及诸多方面,而对系统用户进行正确验证、实施权限管理则是保证系统安全的一项重要基础工作。
管理员每次登录系统都要输入自己的登录用户名、密码以及该用户名所属的那个用户身份类别,系统可以进行身份验证。通过验证后,才会进入相应的系统界面,进行和该用户身份相关的操作和管理。这样可以避免出现非法用户的数据访问请求,也避免合法用户的越权数据请求。
系统安全机制由两部分组成:首先在用户登录系统时进行身份认证,防止非注册用户的访问,并确定己登录用户的身份角色;然后,当用户通过身份认证调用系统的操作时,对每个操作根据系统的访问策略验证用户是否拥有相应的权限,为系统提供进一步的安全控制。
权限管理的设计原则是,对于拥有本系统使用权的用户,系统根据承担的职务,进行角色和权限分配。系统根据其角色,分配相应的系统操作权限,这样当用户登录本系统后,只能看到属于自己操作权限的系统,避免了操作者越权修改其职责之外的数据。
高职院校成绩管理系统是一个B/S架构系统,采用网络应用标准的多层体系结构,每一层实现不同的系统功能。从系统架构上将整个系统分成表示层、业务逻辑层、数据持久层和域模型层。下面对系统各个层的设计及实现机制进行阐述。架构如图6所示。
图6 系统总体架构
客户层运行在用户的浏览器中提供了客户与应用程序的交互方式,这些交互主要包括向Web层发出请求并接收由Web层发回的响应。
表示层为客户层同业务逻辑层进行通信提供了服务,负责从客户层接受请求和向客户层发送结果及显示内容,只包含显示逻辑。Web层主要采用MVC的技术架构。实现技术包括:Struts、Servlet、JSP、JSTL、ValueList、JavaScript,HTML,DHTML,CSS等。
Struts Action:Action类是业务逻辑的一个封装,真正实现应用程序的业务逻辑。
Struts Form:用以封装HTTP Request或Response中的数据。主要用于存放HTTP form提交的数据,也可用于JSP页面的数据显示。
业务逻辑层是该整合架构的体系核心所在,它体现并处理企业的业务逻辑。处理Web层传递过来的用户响应,实现业务逻辑,并将结果返回给Web层。所有的业务逻辑,都应存放在这一层,由Spring管理该层。
本层在业务逻辑层之后,利用Spring和Hibernate,iBatis开发,主要负责实现与数据库等系统连接,实现数据的管理和持久化。
由于本系统将Web应用划分为了多个层次,就需要一系列的 Java对象来实现不同层之间的数据传递和交互。域模型层包含了真实世界中的业务对象。Hibernate允许将数据库中的信息读取到域模型对象中,以便于可以直接呈现在表示层的用户界面中。这些对象还可以被更新并且传回到持久层,最后更新到数据库中。
本文对高职院校成绩管理系统做了一个简要的概述之后,然后做了需求分析,最后做出了总体设计,鉴于本文的篇幅,系统的分析和设计只是在总体上做了简单的阐述,并没有给出很详细的需求分析和设计文档,需要我们在实践中继续完善。
[1]张春枝等.基于C/S与B/S混合模式的MIS系统设计[J].计算机应用研究.2001.
[2]袁华强,王亚强,朱君.利用J2EE轻量级框架构建Web应用研究[J].计算机工程与设计.2007.
[3]刘艳霞.J2EE项目中的数据持久层设计[J].工程地质计算机应用.2005.
[4]阎宏.Java与模式[M].北京:电子工业出版社.2002.
[5]魏学松,张育平.IoC 框架的研究与设计[J].计算机技术与发展.2006.
[6]夏听.Spring开发指南0.8预览版[M].2004.
[7]罗时飞.精通 Spring开发专家之 Sun One[M].北京:电子工业出版社.2005.