在线考试系统毕业设计_第1页
在线考试系统毕业设计_第2页
在线考试系统毕业设计_第3页
在线考试系统毕业设计_第4页
在线考试系统毕业设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程硕士学位论文第1章 考试系统概述1.1 计算机考试系统的研究意义传统的基于纸和笔的考试老师要花费大量的时间和精力出题、改卷、统计分数等,存在诸多弊端:工作量大、周期长、反馈能力弱、人为的因素影响考试成绩。随着高校扩招和各类考试自动化出卷批改的要求,迫切需要一种高效、快捷、科学的考试方式。随着计算机技术与网络技术的不断发展,利用计算机网络技术实现的计算机网上考试取代传统的手工考试成为一种趋势。利用计算机对数据库的并发存取功能和网络传输特性,实现高效、准确和科学的网上考试将成为现代教育方式中的一种重要手段。它的优点主要体现在以下几个方面:1.出卷方便快捷。通过现成的题库系统,只要输入考卷的

2、难度级别、试卷的题型题量等约束条件,软件会自动生成符合要求的试卷,简便、快捷、公平;2.阅卷准确快速。通过计算机阅卷,可以大大减轻教师阅卷的工作量,提高教师的工作效率,同时提高阅卷的准确性;3.成绩分析统计科学直观。成绩分析统计由计算机自动完成,可以方便地统计及格率、优秀率和每题的得分情况等。计算机考试方式的优越性较之传统方式,既灵活方便,又高效可靠,还能及时反馈教学情况,减少诸多中间环节,提高教学效率1。我校有一万多学生,每个学期都要组织大规模的考试,耗费老师大量的时间和精力,如果能够把本课题的考试系统应用到教学实践,一定能够节省很多的时间和精力,提高阅卷效率和正确率。1.2 计算机考试系统

3、国内外研究现状计算机考试系统指的是由计算机软件来辅助测试,计算机辅助测试简称CAT。60年代初CAT起源于美国,经过40多年的发展,已经在国内外得到了广泛应用。1.2.1 国内外在用的考试系统国外有许多专门的考试机构采用计算机辅助测试对考试对象进行考核,比较著名的有美国Sylvan Learning System Inc,它在全世界一百多个国家和地区有数千个考试中心,提供近百个不同类型,一千多种考试。国内也有许多考试采用了计算机考试系统。1.2000年开始TOEFL考试在中国采用计算机考试模式1;2.人事部组织的专业人员计算机应用能力考试;3.微软认证、Cisco认证等;4.全国范围内的“全国

4、计算机等级考试”,“NIT考试”都采用计算机考试模式;5.浙江省大学生计算机一级等级考试全部采用计算机考试,二级等级考试的部分内容采用了计算机考试;6.还有很多大学和科研机构采用了自主研发的考试系统,例如浙江大学、浙江师范大学等院校;7.交通管理部门组织的驾驶员理论考试。以上的考试系统大多比较完善,但是一些计算机基础考试系统还有一些不足,比如试题的实用性程度不高;为了方便计算机批改,操作题比较死板;批卷的智能化有待提高。1.2.2 考试系统分类以题库构成为标准可以把计算机考试系统分为三种:1.不以题库为基础的考试,试卷以单份为主,多用于心理测验和调查研究;2.题库由试卷库构成,试卷库指多份试卷

5、,随机抽取一份给学生考试;3.题库由试题库构成,试题库指海量试题,海量试题按照一定组卷策略组卷2。对计算机辅助测试系统的分类还有很多方法。按试卷是否基于题库可分为基于题库的考试系统和非基于题库的考试系统;按题量是否定长可分为定长和不定长的考试系统;按采用的测试理论可分为基于经典测试理论和基于项目反应理论的考试系统;按是否是自适应考试可分为传统的和自适应的考试系统,自适应组卷指依靠大型题库,自行适应被测试人员水平,灵活实施测试难度。1.2.3 组卷算法分类和进展34组卷算法的好坏直接关系到试卷的成卷质量,是考试系统的一个研究重点。试题库组卷的计算机考试系统根据组卷算法的不同可以分为以下几种:1.

6、随机组卷,这是最低级的组卷算法,随机地从试题库中抽取一定数量的试题组成试卷,对抽取的题目没有任何约束条件5。2.多重目标约束组卷,试题设置题号、难度、分值、重要性、知识点等属性值,然后根据多种属性值的约束条件组卷。可以使用深度优先或者广度优先算法搜索试题。该组卷算法较之于随机组卷算法有很大进步,生成试卷的质量比较高。3.基于遗传算法的组卷算法,遗传算法是一种模拟大自然生物进化过程的计算模型。遗传算法的群体搜索策略为多目标优化提供了非常合适的解决方案6。4.遗传算法的改进,例如判断优化目标个体优劣的基于偏好的多目标调和遗传算法7。5.多种人工智能算法的组合,例如遗传算法与模拟退火算法的结合8,遗

7、传算法与蚂蚁算法的结合9。6.各类算法的扩展,例如基于学生BOSM模型的智能组卷算法10;分段随机抽选法对随机组卷的改进11;增加信息反馈提高试题属性质量,将学生答题的情况反馈给试题,修正试题的难度等12。组卷算法的发展方向是在海量试题库的基础上运用人工智能生成试卷。1.2.4 考试系统的实现模式分类从逻辑上来说,一个典型网络应用由三部分组成:表示逻辑层、业务逻辑层和数据逻辑层。其中表示逻辑层直接面向用户,主要完成应用的前端界面处理,即人机界面处理;业务逻辑层实现应用的业务规则处理,决定程序的流程;数据逻辑层是应用中对数据进行管理的部分,主要完成应用对数据的存取、更新、管理等工作以及访问数据的

8、安全性、完整性、一致性。计算机考试系统有两种主要模式:客户机/服务器模式(Client/Server)和浏览器/服务器(Browser/Server)模式。C/S模式于1989年由麻省剑桥的ForesterResearch首先提出13,是客户进程从服务进程中请求服务的一种计算方式,属于协同处理的范畴。根据表示层、应用层、数据层分布在几层,C/S模式可以分成两层C/S模式和三层C/S模式。两层模式将一个考试系统的三个逻辑层分布在Client端和Server端,Client和Server通过网络联结起来。通常Client端和Server端分别运行在不同的计算机中,Client端一般安装于普通计算机

9、,Server端一般安装在功能更强的服务器。将业务逻辑独立出来,就产生了三层C/S模式。在三层C/S模式中,表示逻辑位置不变,仍放在Client端,业务逻辑则放在一个独立的中间服务器上,数据逻辑在另一个服务器上14。随着网络的发展,出现了B/S模式。B/S模式在本质上也是一种C/S结构,它由传统的C/S结构发展而来,是一种在Web上的应用。与传统C/S结构不同的是,B/S的表示层为Web浏览器,功能层为Web服务器,使用ASP、JSP或PHP等技术。相对C/S结构而言,B/S结构的优点有:简化客户端;易于维护;易于升级;用户操作简便易学;便于网上发布消息。但是B/S结构也有一些缺点:1.交互性

10、弱。C/S模式的客户端是完整的应用程序,在出错提示、帮助等方面都有强大的功能并且可以在子程序间自由切换。B/S模式虽然由JavaScript、VBScript提供了一定的交互能力,但和C/S相比功能就少多了;2.安全性低。由于采用开放的TCP/IP协议和解释型的脚本语言编程,数据的流向不固定,容易被截取破译,其安全性有限;3.数据处理能力弱。B/S模式的数据处理多用解释脚本语言实现,无法开发出利用可视化工具开发的功能强大的编译型应用程序。C/S和B/S模式各有优缺点,适合不同的场合。一般而言,B/S模式的缺点就是C/S模式的优点,而B/S模式的优点就是C/S模式的缺点。C/S模式相比而言有以下

11、优点:1.保密性好。可以设置专门的加密函数,针对不同的数据设置不同的加密方式和加密等级。而B/S模式采用开放的TCP/IP协议和解释型的脚本语言编程,安全性较低;2.数据处理能力强。可以连接多种关系数据库;3.交互性强。相对浏览器而言可以生成更加复杂的图形界面和允许更多的用户交互方式15;4.可控性好。服务端可以控制连接的时间、连接的IP、连接用户等信息,适合安全性要求高的应用;5.数据分析统计功能强。可以批改多种题型的试题,并且进行复杂的数据分析和统计。本课题的网上考试系统是使用Java语言实现的二层C/S模式系统。根据使用对象和实现功能的不同,客户端分为三种类型:学生使用的客户端,教师使用

12、的客户端和管理员使用的客户端。1.2.6 考试系统的开发平台分类考试系统由应用程序和数据库组成,开发程序主要有微软的Visual Basic、Visual C+、Visual FoxPro(VFP)和PowerBuilder、Delphi、JBuilder等,数据库主要有本地数据库Access和网络数据库SQL Server、MYSQL、ORACLE等。从理论上说开发平台可以由任何一种开发程序和数据库组成,也就是任意两两组合,但是综合考虑系统需求、软件的兼容性等方面,往往有比较合适的组合。对于数据库的选择,可以考虑数据存取速度、容量和网络存取等要求。如果考试系统是单机版的,那么可以选择Acce

13、ss数据库;如果数据库数据的容量在几十万行之内,并且要求网络存取,那么可以选择SQL Server;如果数据库中的数据非常大,那么从安全性和速度等方面考虑采用ORACLE是最好的选择。如果数据库采用SQL Server,有很多开发程序支持它,分别使用不同的技术连接和管理数据库。1.VB+SQL Server,DAOs方法、ODBC API或VBSQL方法管理数据库;2.VC+SQL Server,开放数据库连接Open Database Connectivity(ODBC)实现数据库访问;3.Delphi+SQL Server,数据库引擎BorlandDatabaseEngine实现连接;4.

14、VFP+SQL Server,SQL Pass Through(SPT)技术直接访问ODBC函数,并把SQL语句发送给服务器执行;5.Java+SQL Server,JDBC实现数据库访问。1.2.7 计算机考试系统的发展趋势16计算机考试系统朝着智能化的方向发展,例如组卷的智能化,批卷的智能化等。另外考试系统对学生答题情况的统计和成绩分析的要求也越来越高,据此掌握教学质量。出于考试的严肃性,网上考试系统对安全性、容错性和保密性的要求也越来越高。1.3 J2SE实现网上考试系统现在已经有了多种实用的考试系统,应用于各种类型的考试,那么为什么要开发本网上考试系统呢,主要出于以下几点考虑:1.虽然

15、各种类型考试系统研究很多,但是和操作系统无关或者支持多操作系统的考试系统的研究还比较少。Java语言和平台无关,可以使用JBuilder开发多平台下的J2SE程序。2.商品化软件一般只能获得考试系统的学生端,出于系统保密的原因,有时甚至不能批改试卷,例如省计算机一级考试下发到学校的是考试客户端,考试结束后学生答题数据包统一上交批改。但是教师希望批改后统计和分析学生成绩,并且以直观的方式显示,从而发现问题改进教学。3.自主控制考试题目,可以用于单元学习后的单元测试。4.自主扩充修改题库,随时增加修改题目。现有的考试系统不能完全符合我校定制的需求。我校的老师对考试系统有特定的要求,例如可以在,多种

16、方式分析成绩等。结合教学和研究的需要,本人开发了基于J2SE的网上考试系统。本考试系统采用C/S模式的软件体系结构,客户端使用Java集成开发环境JBuilder开发调试生成,数据库使用Microsoft SQL Server2000技术,使用JDBC技术连接数据库。1.3.1 J2SE概念本课题中的考试系统是基于J2SE的C/S模式考试系统,具体使用Java的开发平台JBuilder实现。JBuilder的集成开发环境IDE广受业界赞誉,其可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。JBuilder集成了软件开发、调试、部署、管理、版本控制等工具,提高了项目开发速度

17、17。Java的开发平台称之为JDK,运行平台称之为JRE。为了对Java技术的使用方向和范围进行区分,避免开发中关注不必要的技术特性,Sun公司将Java平台划分成3个版本:1.J2SE(Java2 Platform Standard Edition):核心用于桌面系统的Java2平台标准版,主要用于桌面应用软件的编程。2.J2EE(Java2 Platform Enterprise Edition):针对企业级软件开发和应用的Java2平台企业版。用于创建服务器应用程序和服务,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。3.J2ME(Java2 Platform Micro

18、 Edition):适用于嵌入式系统开发的Java2平台微型版,如手机和PDA的编程。开发环境主要包括:Java Virtual Machine(JVM)、核心API、集成API、用户界面工具、部署技术、部署工具及API18。1.3.2 J2SE特点J2SE主要用于实现桌面应用软件开发,其实现的系统有以下特点:1.支持多平台:Java是一种与系统平台无关的语言。在J2SE的开发模式下,使用JBuilder的Native Executable Builder工具可以生成在不同的系统和处理器平台下执行的程序,目前支持的平台有Dos、Windows、Linux、Solaris和Mac OS。2.分布

19、性:Java带有强大有关网络协议族的库,使Java网络编程高效易用。3.面向对象:设计重点放在对象及对象的接口上。4.简单性:Java的语法比C+简单,只能在一个类中定义公用和静态的变量来实现一个全局变量,不支持goto语句,自动管理内存并且进行垃圾收集。5.可靠性和安全性:Java可以用来构建一定程度防病毒和防攻击的系统。6.其余特性:多线程、动态性、解释、结构中立性、可移植性、鲁棒性。第2章 需求分析和软件估计2.1 软件开发概述本课题“基于J2SE的网上考试系统的设计与实现”在软件工程思想指导下开发。软件工程Software Engineering指应用计算机科学理论和技术以及工程管理原

20、则和方法,按照预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护。在软件开发过程中遵循模块化、信息隐藏、局部化、一致性、构造性和集成组装性等原则。开发过程中实施有效的工程管理,例如配置管理、质量保证等。2.1.1 软件开发方法软件开发方法指使用定义好的技术和表示符号来组织软件生产过程的方法。经过多年的软件工程实践,有多种软件开发方法获得了推广。1.结构化方法:由E.Yourdon 和 L.L.Constantine 提出,认为软件系统均以一定的结构形式存在,由若干子系统构成,子系统本身又是一个系统,软件实现过程有结构化分析SA、结构化设计SD和结构化编程SP。实现结构化方法的技术有

21、面向数据流图的方法、Jackson方法、LCP方法等19。2.原型化方法:迅速开发出一个可以让用户看得见、摸得着的精简系统,适用于需求反复修改的情况。原型化开发的优点有2021:有助于确定系统的可行性;原型法修改比最终软件修改快且代价小;容易定义需求不确定的22。由于用户在实际软件方面的介入,开发组和用户有更高层次的交流和沟通。3.净室方法:测试之前程序设计开发组就开发出几乎无错的系统。4.形式化Formal Methods方法:以严密的数学证明为基础,包括形式化分析Formal Analysis、形式化设计Formal Design和翻译Translation。5.面向对象方法:认为客观世界

22、是由对象组成的,不同对象间的相互作用和联系构成不同的系统,以对象为中心来构造模型、组织系统。6.基于组件的软件方法:应用逻辑和实现分离,提供标准接口和框架,使软件开发变成组件的组合。模型有Sun公司的EJB、微软公司的COM+/DCOM、OMG的CORBA/ORB20。7.敏捷软件开发:着眼于快速交付高质量软件,并使客户满意,包括极限编程Extreme Programming(XP)、动态系统开发方法Dynamic System Development Method、SCRUM、Crystal和Lean等。敏捷软件开发有四个核心价值:沟通Communication、反馈Feedback、勇气C

23、ourage和简单Simplicity14。选择何种软件开发方法需综合考虑各种因素。首先考虑软件项目的特点;还有支持环境,如若没有相应的快速原型工具,就不可能采用快速原型方法;以及技术支持,如软件工程规范、软件工程管理经验、软件人员的技术基础和经验等。软件的开发可以选用开发方法中的一种,也可以选用几种方法的结合。考虑到本考试系统由JBuilder开发,使用面向对象的开发语言Java语言实现,所以本系统主要采用了面向对象的软件开发方法。在开发的部分阶段,还使用了原型化方法,这两种方法的结合既具有稳定性好、可复用性和可维护性的优点又方便了系统开发者和最终用户的沟通。2.1.2 软件工程活动的阶段软

24、件工程活动的定义是:生产一个达到工程目标并且满足用户需求的软件产品所需要的步骤,主要包括需求分析、设计、实现、确认以及维护等活动。随着软件工程思想的普及,大家认识到软件开发必须以软件工程活动中定义的步骤指导软件开发,采用工程的概念、原理、技术和方法开发和维护软件,提高软件开发的效率,减少软件开发和维护中的问题。系统开发的过程一般包括:1.需求阶段建立系统模型,是软件开发人员和客户之间合同约定的基础,是下一步设计阶段的基本输入;2.设计阶段定义实现需求所需的软件结构;3.实现阶段将软件设计转换为代码;4.验证是一项评估活动,贯穿于整个开发过程;5.维护指软件发布之后所进行的修改,包括对发现错误的

25、修正,环境变化后进行的必要调整等23。软件开发生存周期模型用来描述软件从项目需求定义开始到开发成功投入使用一直到维护,软件生命周期结束。随着软件工程学的发展,相继提出了演化模型、螺旋模型、快速原型化模型、快速应用开发模型、增量模型、喷泉模型等。本考试系统采用面向对象的软件开发方法,开发步骤遵循面向对象软件开发的四个阶段:1.面向对象分析Object-Oriented Analysis(OOA)。系统分析员对将要开发的系统的定义和分析,主要描述工具是用例图,这个阶段的目的是建立系统提出问题领域的模型。这一阶段的模型产品是用例图。2.面向对象设计Object-Oriented Design(OOD

26、)。将OOA的结果转化为适合于程序设计语言的具体描述,主要描述工具是各类静态和动态模型图,这个阶段的目的是设计实现的类和方法,以及类之间的联系,以满足系统的功能要求和质量要求。OOA的重点是做什么,而OOD的重点是如何做。这一阶段的模型产品是静态图和动态图。3.面向对象程序设计Object-Oriented Programming(OOP)。程序设计人员根据OOD得到的模型,采用面向对象程序设计语言实现程序,该网上考试系统使用JBuilder开发。这一阶段的产品是类文件。4.面向对象测试Object-Oriented Testing(OOT)。类的测试和类间测试等,和传统测试的区别是可以从静态

27、和动态模型图获取信息辅助测试。2.2 需求分析的目标和内容需求分析回答系统必须“做什么”的问题,是软件开发的第一个阶段,也是非常重要的阶段,直接关系到软件开发成败。2.2.1 需求分析的目标和实现阶段19在进行需求分析之前我们必须弄清楚需求分析的目标和实现目标的阶段,如表2-1所示。表2-1需求分析的阶段和目标阶段目标可行性研究决定是否建立一个系统需求导出和分析理解用户需要系统解决哪些问题;引出这些问题和系统的一些相关问题;提供解决这些问题和系统的基础;决定系统应该做什么;决定系统不应该做什么;生成文档生成需求规格说明需求有效性验证验证需求有效性2.2.2 可行性研究需求分析的第一件事情就是决

28、定是否建立一个系统,也就是进行系统的可行性分析,可以从操作可行性、技术可行性和经济可行性三个方面着手分析。操作可行性分析系统是否符合总体目标。本考试系统有许多相对于笔试的优点,对学校的大学生计算机文化基础考试有很大的帮助。技术可行性考虑系统是否可能在现有的技术条件、预算和时间限制内完成,能否与已经存在的其它系统集成。经济可行性考虑本考试系统受学校教改项目支持,投入使用后可以产生比较大的经济和社会效益。2.2.3 需求收集和分析可行性研究阶段结束后,如果系统分析员认为系统可行就进入系统开发的需求收集和分析阶段。需求收集的内容包括1.信息需求,开发系统处理的信息的属性、内容等;2.功能需求,开发系

29、统必须具备的功能;3.性能需求,开发系统的技术性能指标,例如响应时间,存储容量等;4.环境需求,运行的软硬件环境。软件工程要求软件的开发非常重视需求过程,如果需求做得比较精确不但可以使开发人员清楚地了解用户的想法,减少开发时间,还可以更容易交付软件获得用户认可。本系统充分运用软件工程学总结的需求收集方法来收集需求,具体需求收集的方法有:1.会谈。开发组成员和用户就开发的系统面对面地交谈,这是收集用户需求的一种重要的方式。会谈结束后,开发小组尽快将会谈的结果整理出来,并且将整理出的会谈资料交给用户。2.问卷调查。事先准备好问卷调查资料,将资料发给用户方。这种方法的好处有两个:一是问题集中和精确,

30、二是用户回答问题的时间可以自由掌握。3.调查用户当前使用系统。如果用户现在的操作方式是手工的,那么收集用户手工操作的工作流程,如果用户现在已经使用软件辅助工作,那么收集现在的软件操作的相关表格和资料。4.用例分析。用例驱动获取需求已经成为面向对象方法的重要组成部分,是OOA阶段的主要方法。5.使用场景获取需求。访问及观察用户的工作情况,得到一系列用户场景,并根据用户意见修改场景。本系统经过分析可以得出考生考试、教师考前准备试题、设置组卷规则、考后批改试卷、分析统计成绩、用户管理等场景。用例和场景是相辅相成的,可以从场景获取系统用例24。6.快速原型。快速建立一个能够展示系统关键功能的模型,使用

31、快速原型作为收集用户需求的一种方法。2.3 面向对象分析面向对象分析方法将客观世界中与应用有关的实体及其属性抽象为问题领域的对象及其属性。分析人员通过对象、对象间消息传递等语言机制直接模拟问题领域的对象及其行为。OOD方法为需求建模提供了直观、自然的语言支持和方法学指导,其核心思想是寻找系统中最稳定的因素对象。在本考试系统的需求获取阶段综合运用了多种方法,比如建立快速原型、会谈、场景分析等方法,主要使用用例分析Use Case Analysis获取用户需求。用例驱动25指以用例为驱动力驱动软件开发。用例驱动的方法基于面向对象技术,即从用例出发,首先将用户需求转换为用例,使用用例描述用户需求,并

32、根据用例的描述和分析,使用静态图描述系统核心类,然后进一步描述系统动态行为等。用例驱动需求分析之后设计、编码、测试等阶段的工作,将用例驱动的思想与UML这种面向对象分析设计语言有机结合。2.3.1 用例分析概述用例是对一组动作序列的描述,用于描述系统的功能,也就是从外部用户的角度观察系统应支持哪些功能,帮助分析人员理解系统的行为,它是对系统功能的宏观描述。在用例模型中系统是实现各种用例的“黑盒子”,我们只关心该系统实现了哪些功能,并不关心内部的具体实现细节。用例建模从组成系统的实际操作入手,站在使用者的角度观察软件,密切贴近实际。主要应用在工程开发的初期需求分析阶段26。引入用例的主要目的是确

33、定清晰地描述系统的功能要求;为系统验证打下基础;提供从功能需求到实际类和操作的跟踪能力。要分析用例,首先要找到用例的执行者Actor,在一个实际的工程项目中可以通过以下方法发现Actor:使用系统主要功能的人;维护、管理和维持系统的日常运行的人;系统需要控制的硬件设备;系统需要交互的其他系统和对系统的结果感兴趣的人。根据以上的方法分析本考试系统,得出三种类型的Actor:学生、教师和管理员。2.3.2 用例分析结果用例分析过程中通过和系统的典型用户交谈等活动,得出本考试系统的Actor实现以下活动:1.学生通过客户端连接上服务器,登陆后可以修改密码,自动随机获取试题,试题以单项选择题、多项选择

34、题和填空题等客观题为主。学生在一定的时间里面完成考试,在考试时间内考生可以手动交卷,如果考试时间到了学生还没有手动交卷,则系统自动结束考试强制交卷。2.教师的活动是学生的所有活动+制定组卷规则,设置考试参数,批改学生试题得出每个学生的分数,查询试题,统计和分析学生成绩。3.管理员的活动是教师的所有活动+用户管理。三类用户的用例的活动是包容关系,教师的活动包括了学生的所有活动,管理员的活动包括了教师的活动。这样考虑的原因是本考试系统目前仅仅在学校小范围使用,这样设置便于系统维护,如果下一步考试系统推向更广泛范围,可以缩减一部分教师和管理员的权限。下图2-1是考试系统的学生的用例图,图2-2是教师

35、的用例图,图2-3是管理员的用例图。图2-1 学生用例图图2-2 教师用例图图2-3 管理员用例图在用例图中,参与者和用例都比较简单,还需要进一步描述。参与者描述包括参与者名称,是否抽象参与,对参与者的简要描述。用例描述说明执行者与系统如何交互,该说明要清晰明了,没有二义性,包括用例的目标、最终任务;用例被启动的方式;Actor和用例之间的消息流。用例描述可以分成文字和图形两种方法。1.使用文字的方法有:(1)简单文字描述;(2)模板描述,套用模板描述用例,说明用例的名称、时间流、特殊需求、前置和后置条件;(3)表格描述,使用表格描述用户动作。例如图2-2中教师设置组卷规则的用例可以进一步用文

36、字描述:设置组卷规则用例的最终任务是设置一次考试的试卷生成规则,得到一个由多条子规则组成组卷规则。该用例由教师或者管理员启动,启动的前置条件是用户正确登陆。参与者通过定义各个约束点来设置规则。2.图形描述方法有用例图、顺序图和活动图等,这一部分在论文的面向对象设计部分有详细说明。2.3.3 面向对象建模对象表示现实世界的概念,它们的协同工作实现某一功能,面向对象的方法是一种思考问题的方式,描述与模仿问题领域发生的事,其基本原则有:一切事物都是对象;任何系统都由对象组成;系统的运行都是由系统的内部对象和外部对象之间或者内部对象和内部对象之间的相互作用完成。面向对象的特征是:客观世界都由对象组成;

37、所有的对象都划分为各种类,每个类有属性和方法;各个类组成一个层次结构的系统;对象之间通过传递消息进行通信。以上四点特征可以用公式(2-1)描述。面向对象= 对象+类+继承+消息通信 式(2-1)Object-Oriented=Objects+ Classes+ Inheritances+ Communication with Messages formula (2-1) 现在,面向对象在很多领域获得了广泛的应用,它相对于面向过程有许多优点。例如组件有利于代码重用;设计模式Design patterns有利于设计方法重用;接口有利于代码的灵活性和健壮性;使用接口合理分配个人和开发组职责,有利于提

38、高开发组的工作效率;低耦合度和模块性提高软件可扩展性、灵活性、可重用性;封装实现信息隐藏;对象的模块性和信息隐藏,使得逻辑的变动被自然地隔离,软件比较容易实现变动,且易于维护;OO中间件提供了平台和语言的透明性;更好地支持原型开发和演化交付;OO技术有利于分布式系统的实现和应用。2.3.4 统一建模语言UML面向对象技术出现以来出现了很多建模技术,统一建模语言Unified Modeling Language (UML)使之标准化和统一化。UML是由Grady Booch、James Rumbaugh和Ivar Jacobson“三位好朋友”起草的用于面向对象开发的统一建模语言27 28。UM

39、L是一种简单而易于使用的、表达能力强的、可视的建模语言,方便用户形象化描述系统,提供了一种独立于过程、独立于编程语言的交流和表达工具。UML的功能非常强大,可以用于描述软件系统,帮助构建精确、无歧义和完整的模型;以预先统一定义的符号可视化地表示软件系统,无歧义地解释由另一个开发者写的模型;构造可与种种不同的编程语言直接通信的软件系统模型,并且直接生成框架代码;在开发和部署阶段,通过表达系统的需求使软件系统的模型文档化。UML提供各种图来描述系统的结构和行为,有用例图use case diagram、类图class diagram、状态图statechart diagram、活动图activit

40、y diagram、顺序图sequence diagram、协作图collaboration diagram、构件图component diagram、配置图deployment diagram29等。面向对象分析的目标是建立一系列的模型用来描述软件。所有系统均可表示为两个方面:静态结构和动态行为。根据模型描述对象的不同,建模可以分为三种30:1.用例建模:使用用例分析获取用例模型。2.静态建模:系统的静态结构说明系统包含什么对象以及对象之间的关系,但它并不解释系统中的各个对象是如何协作来实现系统的功能。使用类图将现实生活中的各种对象以及它们之间的关系抽象成类图等模型。3.动态建模:系统的动态

41、行为指对象是如何进行通信以及通信的结果如何,使用交互时序图、协作图和活动图描述。根据观察系统的不同角度,UML模型可以分成5类,10种模型图。1.用例图,从用户角度描述系统功能并指出各功能的操作者。2.静态图,包括类图、对象图和包图。其中类图描述系统中类的静态结构。对象图是类图的实例,只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。3.行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。活动图描述满足用例要求所进行的活动以及活动间的约束关系。4.交互图

42、(Interactive diagram),描述对象间的交互关系。交互图包括顺序图和合作图。其中顺序图显示对象之间的动态合作关系,强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,与顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。顺序图强调时间和顺序;合作图强调上下级关系。5.实现图(Implementation diagram),其中构件图描述代码部件的物理结构及各部件之间的依赖关系。构件图有助于分析和理解部件之间相互影响的程度。配置图定义系统中软硬件的物理体系结构。各个模型图之间的关系如图2-4所示31,如果把该图当

43、作一棵树的话,则所有的叶子结点为UML定义的模型。图2-4 UML的10种模型图2.4 软件估计1.软件项目计划概述需求分析后,如果项目可行,就进入了项目计划阶段。软件项目计划是软件工程管理的主要任务之一,包括资源、成本、风险、进度和项目组织进行合理的估计分析和调度,其具体内容有:(1)成本估计。估计软件费用,有自顶向下成本估计,自底向上成本估计,基于经验模型成本估计,COCOMO模型成本估计32。(2)风险分析。在开发工作开始之前,找到潜在的风险,评估风险出现的概率和影响,然后建立管理风险计划。(3)进度安排。将工作量分解为特定的软件工程任务,可以用甘特图完成。(4)项目组织。合理地组织开发

44、小组的各类人员,最大限度地发挥每一个人的作用。整个项目组的结构有层次型和矩阵型等。在本网上考试系统具体开发之前,对软件开发进行了成本估计、风险分析、进度安排和项目组织。重点说明对本考试系统的软件开发的成本估计。成本估计的方法有许多种,使用COCOMO模型成本估计软件开发时间是一种比较精确估计的方法。有两个步骤,首先估计系统代码行,然后估计工作量。2代码行估计代码行估计的一种方法是根据项目特征和算法计算功能点,然后通过功能点计算代码行。本系统的代码行估算对此方法进行扩展,把功能点估算法和经验估算法结合,首先分析此前已经完成的系统的功能点个数,并且统计其代码行,然后估算本考试系统的功能点,由这三个

45、值计算本系统的代码行。功能点估算的方法是:首先分析系统的输入、输出、查询、文件、外部接口,由表2-2获得各种功能的权值,再由公式2-2计算总权值,最后根据公式2-3进行复杂度加权因子调整,计算功能点数FP。表2-2功能类型对应权值表功能类型权值输入4输出5查询4控制文件10接口7总权值=4输入点数5输出点数4查询点数10控制文件数7接口数 式(2-2)FP=总权值(0.650.01) 式(2-3)公式(2-3)中Fi指复杂度调整因子,一共有14个调整因子,根据项目不同取值05之间,限于篇幅不一一列出。分析计算得到三个值:前一个项目的功能点记为FP0,前一个项目的千行代码数记为KLOC0,本系统

46、的功能点记为FP1,则本系统千行代码数KLOC1=(KLOC0FPl) / FP0。最后估计得到本系统的代码行数是42KLOC。3.工作量估计COCOMO模型按照估计的详细程度分为三个层次:基本层模型、中间层模型和详细层模型,每个层次的模型按照软件复杂度又可划分为组织型、嵌入型和半独立型33。COCOMO模型的分类如图2-5所示。基本层中间层详细层组织型嵌入型半独立型图2-5 COCOMO模型软件划分图软件开发的基本层模型将软件开发工作量及成本作为程序规模的函数进行计算;中间层模型从产品、硬件、人员和项目等因素考虑15个调节因子;详细层模型考虑调节因子对不同开发阶段的影响。组织型软件要求不高,

47、程序规模不大,在50000行之内;嵌入型系统和硬件设备紧密结合;半独立型介于两者之间。COCOMO模型数学公式为: MM=a(SIZE)b 式(2-4) TDEV=c(PM)d 式(2-5)其中MM为开发工作量,单位人月。SIZE为源代码行数,单位千行。fi为调节因子。TDEV为开发时间,单位月。a、b、c、d为可变系数。本考试系统采用中间层模型的组织型来估计成本,a=3.2,b=1.05,c=2.5,d=0.38。仔细分析软件开发的15个调节因子,得f1f2f15=0.674;考虑本人一直在开发仓库管理系统,有一些类可以直接复用于考试系统,例如数据库连接类、查询类、排序类、登录类,有一些类可

48、以部分复用,例如用户管理类。前面功能点计算得知系统SIZE42,减去复用类加权和,还需要生成22KLOC。使用JBuilder开发,集成开发环境会自动生成许多界面和数据库方面的代码,根据开发经验需要自己手动编写6KLOC。MM=3.2(6)1.050.674=14人月;TDEV=2.5(14)0.38=6.8月。本系统从2月份需求分析开始到8月份测试完成实际开发花费了半年时间,基本符合COCOMO模型估计开发时间。第3章 软件架构和系统设计3.1 软件架构软件架构又称为软件体系结构,指所有的软件部件组合成系统的一个总的结构、接口和通讯机制。软件架构可以进一步划分为企业级和应用级架构34。3.1

49、.1 企业级架构企业级架构反映了企业的长期投资,包括硬件和软件的设施、网络布局等。企业级架构的核心是技术架构,也就是对网络、数据、应用、安全和信息系统的整体集成等制定的实现蓝图,分别称为网络架构、数据架构、应用架构、安全架构和集成架构等。重点说明网上考试系统的网络物理连接图,如图3-1所示。图3-1 网络物理连接图3.1.2 应用级架构35本网上考试系统基于C/S模式,C/S模式的分类和特点在1.2.4小节做了说明。C/S软件体系结构基于资源的不对等,该结构由三部分组成:数据库服务器、客户端应用程序和网络。C/S体系结构需要定义工作站和服务器的连接方式,从而实现数据和应用分布到多个客户机上。在

50、应用架构开发过程中通常要做以下工作:1.层之间进行功能划分;2.领域对象建模;3.各层之间的联系方式;4.分析已有的和需要开发的组件。数据库服务端管理系统数据库资源,其任务是数据库安全性控制,数据库访问并发性控制,数据完整性控制,数据库的备份和恢复。客户端应用程序的任务是提供交互界面,向数据库提交用户请求并且接收数据,利用客户端应用程序处理数据并且在需要的时候传回数据库。3.2 系统设计3.2.1 系统设计概述软件在需求分析结束后的下一个阶段就是系统设计。系统设计的方法有:面向数据流的设计,面向功能的设计和面向对象的设计。本考试系统采用面向对象的设计。面向对象分析和面向对象的设计之间有密切的衔

51、接关系。从分析到设计是一个逐渐扩充的过程,是在同一个对象模型基础上调整改进和扩充的过程。OOA以问题为中心,OOD则解决如何在计算机系统中实现,它遵循抽象、求精和模块独立性的原则。抽象是一种思考和解决问题的方式,它关注于事物的一般特性,不考虑底层细节。求精是一个和抽象相反的过程,它将某个宏观功能不断分解,逐步细化36。模块独立性指模块之间的接口唯一,高内聚低耦合,各个模块相对独立式的软件容易开发,容易维护。3.2.2 系统功能划分37按照本项目需求分析阶段的用例图,可以把用户分成三大类:学生、教师和管理员,分析得出对应的三个子系统:学生考试子系统,教师管理子系统,管理员管理子系统。学生考试子系

52、统实现功能是:修改密码、考试和成绩查询。教师管理子系统实现功能是:学生的所有活动,组卷规则管理、考试控制、批卷、考试情况统计、成绩分析。管理员管理子系统实现功能是:教师的所有活动和用户管理38。修改密码:各种类型的用户都可以自行修改密码;考试:按照组卷规则从服务器的试题表格获取试题组成试卷,上交学生答题情况到服务器;查询成绩:学生查询某一次考试本人的成绩;组卷规则管理:添加、修改、删除组卷规则;考试控制:考试时间、开始考试和终止考试等设置。考试结束前学生可以手动交卷,考试结束时学生没有交卷则系统强制交卷;批卷模块:根据存储在数据库中的考题答案和学生上交信息对比批改成绩,可以进行自动和手动批改;

53、考试情况统计:显示每一张试卷的分数、考生、批改人等信息;成绩分析:以自定义统计分数段的方式统计某一个分数段的人数和百分比,并且以图表的形式显示出来。可以根据自定义分数段统计及格率、良好率、优秀率等;用户管理:增加删除教师、学生类型用户。学生考试子系统以客户端形式安装于多台客户端上。教师管理子系统和管理员管理子系统以客户端形式安装在一台或两台计算机上,考试数据库推荐单独安装在功能比较强大的服务器,这样可以实现更快的运行速度和更好的保密性。3.2.3 面向对象设计概述36 面向对象设计Object-Oriented Design(OOD)是一种软件设计方法,一种工程化规范。具体地说,OOD就是根据

54、需求决定所需的类、类的操作以及类之间关联的过程。OOD的目标是管理程序内部各部分的相互依赖。面向对象设计认为所有的事物都可以用类来表示,其核心概念是类。类具有三个基本特性:封装性、继承性和多态性。1.封装又称信息隐藏,把对象的属性和行为打包起来,仅暴露公共接口,提供做什么,不提供如何做的信息。访问或改变对象属性的唯一方式是通过对象所规定的行为。对象有明确的功能,即作用于其属性的功能或行为。2.继承性是指对象类中的方法、属性可被另一个对象类继承或重用。3.多态性是指同一个操作作用于不同的对象可以有不同的解释,并产生不同的执行结果。即相同操作的消息发送给不同的对象时,每个对象将根据它所属类中定义的

55、操作去执行,因而会产生不同的结果。多态性代表了抽象概念共享特征的能力,通常由动态联编实现。3.2.4 静态建模39面向对象程序的基本构成是类Class,类是对一组具有相同属性、操作、关系和语义的对象的描述,其成分包括名称name、属性attribute和操作operation40。使用JBuilder的UML视图可以清晰地看到类的属性和方法。根据考试系统的用例分析,设计该系统有关主要类的类图如图3-2所示,类图中各个类的中文名字和功能如表3-1所示,类的方法如表3-2所示。图3-2 系统静态类图表3-1 考试系统主要类类名类中文名备注App应用程序主类Diglogin登录FrmMain主界面通

56、过该类的方法调用各个功能类,菜单实现DlgChangePassword修改密码“系统”菜单子菜单调用Frmyhgl用户管理同上Frmzjgz组卷规则“设置”菜单调用,设置组卷规则FrmExamController考试控制“设置”菜单调用,设置考试控制器FrmExam考试“业务”菜单调用,考试和答题数据上交FrmLbDotest批卷“业务”菜单调用,列表显示全部题目功能的和批改功能FrmExamTj考试情况统计“统计和分析”菜单调用,统计考试情况FrmKscjfbtj成绩分布分析“统计和分析”菜单调用,考试成绩分布统计ExamManager答题批卷方法类辅助类,封装批卷方法表3-2 系统主要类的方法类类的方法功能说明FrmMainchangePassword修改密码userManager用户管理zjgz组卷规则examController考试控制exam考试lbDoTest批卷examTj统计kscjfbtj分析ExamManageranswerAqustion每做一题实时上交答题数据到服务器makeExam生成试卷makedotest生成答题情况统计表,答题数据保存到表格do-test_a、do-test_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论