一、 调研企业的状况以及项目开发的必要性
1.1 调研企业简介
本系统所面向的是广大的高校,特别是拥有计算机相关专业的院校。我就读于仲恺农业工程学院,计算机科学与技术专业。仲恺农业工程学院是一所以农、工学科为优势,农、工、理、经、管、文、艺协调发展的多科性省属本科大学。学校坐落在历史文化名城——广州,校园集云山之神秀,汇珠水之灵气,是读书治学的理想园地。
学校的建设和发展备受各级领导和社会各界的高度重视与关心。党和国家领导人叶剑英、邓小平、杨尚昆、王震先后为校园内的廖仲恺何香凝纪念馆、廖仲恺铜像、何香凝汉白玉塑像和廖仲恺纪念碑题字。国家主席杨尚昆,全国人大常委会副委员长廖承志、何鲁丽、周铁农,全国政协副主席廖晖、霍英东、马万祺等多次亲临学校视察指导工作。广东省省委、省政府及省教育厅一贯关心、支持学校建设,有力地推动着学校健康快速发展。海内外各界人士深怀对廖仲恺、何香凝及其开创事业的崇敬和景仰,不断给予精神和物质上的大力支持,霍英东、马万祺、何厚铧、曾宪梓、何鸿燊、杨钊、刘宇新等一批港澳社会名流为学校捐款兴建实验楼、图书馆、体育馆、教学楼等,添置教学科研和医疗卫生设备,设立奖教奖学金,为学校办出特色、办出水平不遗余力。八十多年来,学校为经济社会发展培养了一批批优秀人才,其中包括基层农业技术干部、专家、学者以及省部级领导干部,他们中的杰出代表有中国工程院院士曾溢滔、原农业部部长陈耀邦等。
我就读于计算机科学与工程学院,计算机科学与技术专业,本学院基础学科中包含C/C++程序设计,数据结构,操作系统,计算机组成原理,计算机网络,数据库原理等多门理论和实践课程。然而,传统的授课方式难以满足教学的需求,老师通常不能及时把握学生的学习状况,对教学环节难以做出动态适应性调整。而设计并开发一个在线测评系统,不仅能够提高学生的兴趣,增加学生和学生,学生和教师等之间的交流,更能通过系统本身的统计功能,让老师,学生及其他用户及时有效把握自身的不足,进而采取相应的措施,提高学习质量。
1.2 项目开发必要性
本课题所面向的用户是广大的学生、教师和普通用户,为学生提供良好的学习平台,为老师提供一个功能完备的练习、测试及相关统计信息。
本项目是对可扩展的程序在线评测系统(EPOJS)的研究和设计,EPOJS为计算机相关专业的学生提供一个很好的学习和交流平台。其根本需求是提高学生学习程序设计的兴趣和学习的质量,提高教师的管理效能。对于传统的在线测评系统,并没有结合到教学中去,也没有相应的交流平台,不利于技术之间的交流。同时,所提供的统计信息不够丰富,针对性不强。
本系统旨在解决部分的需求,研究并设计一个可扩展的框架,对多种程序设计语言进行可扩展支持。而本次毕业设计将重点实现C语言的在线测评。
设计一个论坛系统,以供学生,教师以及其他使用本系统的用户进行技术交流,另一方面,作为技术交流的一个辅助,将开发一个邮件子系统,以便实现文件之间的相互传递。
学生自定义学习流程,利用JBPM动态定义各种学习流程,辅助学生进行学习,提高学生的学习兴趣和学习能力。
另外,在此系统的基础,再进一步扩展成教学平台,扩展至各种学科的在线学习,并充分运用动态工作流设计各种学习流程和工作流程以及日常的活动等。
二、 项目研究意义,国内外现状分析
2.研究意义与目的
1.1 研究目的
程序设计类课程,具有实践性强的特点。它不但要求学生掌握基础的理论知识,更重要的是要求学生不断提高自身的编程实践能力。因此,在这类课程中,老师务必会布置大量的程序设计作业,传统通过电子邮件或手写提交作业的方式让老师感到批改作业的任务繁重,让学生感到费时费力,难以提高编程的实践能力。为方便教学,提高学生动手编程的实践能力,开发一个自动化,智能化的评测系统成为需要。随着现代信息化的发展,软硬件的不断升级,使得开发这样一个评测系统成为可能。
仲恺农业工程学院是我的母校,在线测评系统仍在探索当中,为了开发一个可适应强,扩展性好的在线测评系统,我将毕业设计课题方向定在可扩展程序在线测评的研究和设计上面。意在开发一个易用的,实用的在线测评系统,用以提高学生的学习兴趣和学习效率,增进学生、教师之间的知识交流,提高教学质量等。
1.2 研究意义
EPOJS(Extensible Program Online Judge System)是一个学习的好帮手,开发这样一个系统是非常有意义的,下面分点阐述。
(1)学者在线学习程序设计语言
无论是什么样的用户,只要想学习C程序设计语言,就可以在本系统上面实现在线编辑程序,执行程序并查看执行结果,通过测试的情况反馈使用者的学习情况。
(2)提供教学辅助
教师可以利用本系统给学生进行在线测试,并获得测试反馈结果,从而对结果进行分析,以便有针对性的对学生进行授课,提高教学质量。另一方面教师还可以在上面布置作业,审批作业完成情况,评定成绩等。
(3)学员之间交流平台
现有的OJ系统,没有论坛系统功能,学员之间不利于沟通。本系统提供论坛系统和邮件熊,作为网上的交流平台,学员门可以在上面畅所欲言,发表看法,讨论问题。对于要使用文件,就可以通过邮件的方式。
(4)提供工作流支持
使用单位可以根据单位的具体需求,动态定义不同的流程,使之能够适应大多数的工作流程管理,简化了系统的设计。
(5)基于角色的权限控制模型
使用RBAC来进行权限的管理与控制,使得权限分配更加集中和灵活,再结合Struts2的标签和拦截器,可以实现一个良好的权限控制系统。
2.2 国内外研究状况
在线测评系统发展到现在已经比较常见了,无论是其体系结构还是运行模式都已经相对成熟了。现行的许多大学校园中,都拥有自己的在线测评系统,但大都具有类似的工作模式,主要体现在以下几个方面:
第一方面,由于各大高校越来越重视ACM竞赛,很多高校变进行了各自的程序语言在线测评系统的开发和应用。主要目的就是要提供一个平台供学生们提高程序设计水平。
第二方面,许多的程序语言在线测评系统并没有大胆的和教学结合在一起(当然也有,比如北京大学在线测评系统),应用面不够广。
ACM/ICPC 带动了演算算法程序设计的风气,世界上许多大专院校的咨询系所,仿照 ACM/ICPC 的比赛模式,纷纷自行开发出即时线上比赛系統,能夠自动批改、评分、计时、统计。学生不必齐聚一堂,就可以相互切磋程式设计技巧。比赛结束之后,便将比赛题目列为题库,并开放线上批改程序的功能,供学生赛后练习。这样的系统大家一般称之为「Online Judge System 」,或直接称为「 Online Judge (OJ) 」。
下面就国内和国外的OJ系统进行简介。
国内研究现状:
(1)浙江大学 Online Judge(ZOJ)
国内最早也是最有名气的OJ,有很多高手在上面做题。特点是数据比较刁钻,经常会有想不到的边界数据,很能考验思维的全面性。
(2)北京大学 Online Judge(POJ)
建立较晚,但题目加得很快,现在题数和ZOJ不相上下,特点是举行在线比赛比较多,数据比ZOJ上的要弱,有时候同样的题同样的程序,在ZOJ上WA,在POJ上就能AC。
(3)同济大学 Online Judge (TOJ)
这个OJ题数上不能与上两个相比,推荐这个OJ的原因是它是中文的,这对很多对英文不太感冒的兄弟是个好消息吧。它也因此吸引了众多高中的OIer,毕竟他们的英文还差一些呵呵,上面的题目也更偏向高中的信息学竞赛一些。
国外研究现状:
(1)西班牙Valladolid大学 Online Judge(UVA)
世界上最大最有名的OJ,题目巨多而且巨杂,数据也很刁钻,全世界的顶尖高手都在上面。据说如果你能在UVA上AC一千道题以上,就尽管向IBM、微软什么的发简历吧,绝对不会让你失望的。
(2)俄罗斯Ural立大学 Online Judge(URAL)
也是一个老牌的OJ,题目不多,但题题经典。
(3)俄罗斯萨拉托夫国立大学(Saratov State University)(SGU)
SGU 是俄罗斯萨拉托夫国立大学(Saratov State University)用于培养ACM选手的训练网站。这个网站的建成时期较晚,但随着比赛的举行以及新题目的加入,这个题库的题目也日渐丰富。这个题库 的一大特点就是Online Judge功能强大,它不仅使你避开了多数据处理的繁琐操作,还能告诉你程序错在了第几个数据。这一点虽然与ACM的Judge有些出入,但是却方便了调 试程序。与UVA相比,这里的题目 在时间空间上要求都比较严格,而且更多的考察选手对算法的掌握情况,所以特别推荐冲击NOI的选手也来做一做。
(4)UsacoGate Online Judge(USACO)
全美计算机奥林匹克竞赛(USACO)的训练网站,特点是做完一关才能继续往下做,与前面的OJ不同的是测试数据可以看到,并且做对后可以看标准解答。
三、研究内容及技术路线
3.1研究具体内容
本课题意在实现一个完备的,可扩展的程序在线评测系统(EPOJS, Extensible Program Online Judge System),并发布最初版本。拟定要完成的内容如下:
(1)EPOJS的总体功能分析,并书写概要设计文档。
(2)EPOJS的领域模型设计,确定开发框架,确定系统总体架构,书写开发文档。
(3)为可扩展而设计规范架构,实现多语言的切换,实现扩展,书写开发文档。
(4)EPOJS Core设计,拟采用JNI技术,发挥Java和C/C++各自的优势。
(5)基于RBAC权限模型建立与实现,并应用在EPOJS系统中,书写开发文档。
(6)JBPM的动态工作流程控制应用在EPOJS中,书写开发文档。
(7)EPOJS之论坛子系统的设计与实现,书写相关开发文档。
(8)EPOJS之邮件子系统的设计与实现,书写相关开发文档。
(9)集成测试,功能,性能与稳定测试,书写测试相关文档。
(10)发布EPOJS。
3.2 技术路线与研究方法
本课题不仅对理论进行研究,而且还付诸于实践,不仅仅只是使用现成的框架,当然,这里也会用到一些开源框架,诸如Struts2、Spring、Hibernate、JBPM等。因此实验的过程还是相当有挑战的。先介绍本次毕业设计的软硬件平台:
项目
工具
操作系统
Windows7 / Linux
开发语言
Java、C/C++、JavaScript
WEB应用服务器
Tomcat6
数据库应用服务器
MySQL5.5/Oracle
运行平台
JVM / Linux
开发工具
Eclipse4.2,Microsoft Visual Studio 2010,C-Free 5
客户端软件
主流浏览器【IE, Firefox, Chrome】
辅组技术【开源框架】
Struts2,Spring,Hibernate,JBPM,jQuery等
主要实验方法与步骤有:
(1)查阅相关文献以学习相关的框架(SSH,JBPM等)。
(2)设计核心的可扩展架构规范。
(3)实现核心的可扩展架构。
(4)实现附加的论坛系统,邮件系统。
(5)系统集成测试与发布。
四、拟解决主要问题、项目创新之处
4.1 拟定主要解决的问题
本课题开发出一款功能完备的EPOJ系统,系统复杂性较大,也会遇到很多问题,下面将重点的科学问题陈述如下:
(1)可扩展架构设计问题,架构设计所需要的知识面要广,需要定义各种适应性强的规范,难度大。
(2)在线评测系统的内核设计问题,由于涉及到了源代码的编译和执行,使得问题变得复杂了,需要同时精通C/C++ 和JavaEE相关技术。
(3)程序编译与执行的实现问题,不同程序设计语言,编译器和执行都不同,如何屏蔽彼此之间的差异,设计一个怎么样的规范成为了关键。
(4)RBAC的设计,RBAC虽然发展得很成熟了,但是要将它移植到EPOJS中还是需要一定时间,解决一些问题。
(5)动态工作流支持,本系统将使用开源的JBPM,问题在于如何将JBPM应用在EPOJS中。
以上四个问题是本课题的难点,也是本课题的特色所在。解决以上问题,那么一定能够开发出一套优秀的系统。
4.2 项目创新之处
(1)系统可扩展性
本系统不仅仅局限在某们编程语言上面的评测,而且只要实现了所定义的扩展方面的相关规范,就能实现大多数编程语言的在线评测,具有较好的动态适应性。另一方面,可以支持动态添加教学任务,诸如添加作业系统,毕业设计管理系统,课程设计管理系统等。
(2)支持RBAC
提供多种角色的访问,系统可以面向普通注册用户,普通游客,学生,教师,系统管理员。
(3)教学管理支持
增加了教学项目管理环节,将系统与教学结合起来,并提供统计数据,教师可以通过统计信息来动态获得学生对知识的掌握情况,以便提供针对性的教学,提高教学质量。而对于学生,或者是普通注册用户,可以查看自己的评测统计信息,及时发现自己的不足之处,及时进行增强学习。
(4)动态工作流支持
系统使用单位可以灵活的建立工作流程,系统自动管理。如请假流程,毕业设计流程,课程设计流程,作业审批流程等等。
(5)论坛系统
为这个评测系统添加论坛系统,无疑能够促进多种用户之间的交流,用户可以在论坛中讨论各种问题。同时,为了内容的健康性,添加内容审核机制。
(6)邮件支持
论坛系统能够在很大程度上帮助人们进行问题的讨论,但是不便于大文件之间的传递,因此提供邮件的支持,将使得用户之间可以通过邮件进行讨论,这又是一个交流的手段。
(7)用户自定义学习流程
本系统强大的功能特性之一就是,使用系统进行学习的用户,可以根据自己的喜好来定制学习流程,这样既可以提高学习的兴趣,同时又能够提高学习的质量。这得益于动态工作流程的管理,将使用JBPM进行扩展。
五、目前研究基础
本课题所涉及的技术和原理具有丰富的资源,并且本课题的负责人也对相关的技术和原理认识较为深刻,如已经能够掌握SSH、JBOM及其核心原理和应用,负责人对项目的需求明确,具有一定的实际编程经验,完全有能力完成此项课题,因此项目的可行性强。
现在课题的负责人也在着手进行相关的理论学习和相关开源框架的源代码阅读,已经具备一定的理论基础和技术能力。例如,已经对Struts2,Spring,Hibernate,JBPM,RBAC有较为深刻的认识,并且有一定的应用经验。
本系统将涉及JNI,C/C++,而本课题的负责人拥有一年的C/C++的学习,具备相关的能力。
六、预期研究成果
(1)EPOJS一套,基于C语言的评测
(2)开发文档
(3)JBPM工作流支持
(4)RBAC权限控制模块(必做)及其模块化(可选)
(5)论坛子系统模块(必做)及其模块化(可选)
(6)邮件系统模块(必做)及其模块化(可选)
七、计划项目研究时间安排(分为可行性分析、设计、开发、及成果整理四个阶段)
工作进度时间安排表
时间
任务
20XX-9-17~20XX-12-1
进一步了解需求,分析系统功能,编写概要设计文档,建立系统的原型。
20XX-12-1~20XX-2-1
领域模型分析,系统架构设计,系统规范定义,编写开发文档,一切为了扩展性而设计。
20XX-2-1~20XX-3-1
EPOJS核心(Core)设计,采用JNI方式实现C语言的编译与执行。
20XX-3-1~20XX-3-15
基于角色的权限控制(RBAC)系统设计和实现,并将其模块化。
20XX-3-15~20XX-4-1
基于JBPM的动态工作流设计与应用。
20XX-4-1~20XX-4-15
EPOJS之论坛子系统的设计和实现,并模块化,实现可插拔。
20XX-4-15~20XX-5-1
EPOJS之邮件子系统的设计和实现。
20XX-5-1~20XX-5-30
系统测试,毕业论文编写。