湖南科技大学Online Judge系统开发.doc_第1页
湖南科技大学Online Judge系统开发.doc_第2页
湖南科技大学Online Judge系统开发.doc_第3页
湖南科技大学Online Judge系统开发.doc_第4页
湖南科技大学Online Judge系统开发.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

湖南科技大学 Online JudgeIT项目管理IT项目软件管理报告LAMP环境下Online Judge系统开发学号:0855010206 班级:计算机002 姓名: 李 坚 时间:2011-11-29 目 录一、项目定义二、可行性分析1、需求上分析2、技术上分析3、经济上分析三、功能需求分析四、模块概要设计五、详细设计分工1、前台组2、后台组3、数据库组4、判题模块组5、运维组六、设计说明一、 项目定义本网站是为了湖南科技大学ACM竞赛爱好者练习竞赛而设计开发的网站系统,提供了题目浏览,在线判题,在线竞赛等功能。除了非正式的ACM程序设计学习交流,本网站还可以用作课程设计作业和举办ACM程序设计竞赛。二、 可行性分析1、 从需求上分析:ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。与ACM息息相关的必然就是Online Judge网上判题系统了,随着ACM的流行,各大高校都建立了自己的Online Judge系统以便同学们的学习交流以及各种程序设计的比赛。我们学校对ACM程序设计竞赛越来越重视,设计一个属于我们学校自己的Online Judge可以更好的学习交流程序设计技术。2、 技术可行性分析:开发这个Online Judge系统需要很多方面的技术,包括网页前台html div+css、后台php、数据库mysql、以及linux下的cc+和一部分网络通信。由于目前开发人员仅仅只有我一人,所以难度系数比较大,但是以上的技术我基本具备,开发出来也只是时间问题。初步预计开发周期,前台5天、后台5天、数据库3天、judge模块20天、通信3天、模块衔接2天、调试试用10天,目前预算48天时间可以初步完成、由于计划的误差会有10天左右的弹性时间。3、 经济可行性分析:目前拥有良好的网速和一台自用台式电脑提供开发,时间上也足够设计开发、试用以及正式投入运行。另外在设备方面拥有一台性能稳定的服务器,由于本系统暂时定义为校内使用,所以安全性以及一些设备要求比较低,基本符合开发使用要求。三、 功能需求分析本网站和其他高校Online Judge系统类似,可以提供程序设计爱好者一个学习交流的平台。用户能在系统内查看题目和运行状态,登录后可以拥有提交代码、查看本人已经提交的代码、发表留言等功能。系统需要对用户提交的代码入库并测试运行、并将结果保存以统计数据。四、 模块概要设计:功能简要说明用户登录登出在数据库存储用户账户信息,登录时比对,并用session记录用户登录情况题目列表查看从数据库获取题目信息并经php加工最终显示在web页面上,用户可以用proid查看具体题目代码提交用户在登录后可以提交某个题目的解决代码,后台将代码存入数据库并给判题模块发出信号代码编译并测试运行判题模块接收到后台信号之后取出代码进行编译并尝试运行,并将运行的结构输出到数据库结果查看后台在存入代码并给出判题信号之后将判题队列里面的代码运行结果显示在状态页面用户排名系统会根据用户的做题状况以某种形式排名比赛功能系统可以将一部分题目划分成一次比赛并限定可提交时间,同时应用更严格的排名系统简单论坛功能本系统可提供一个类似留言板的微型论坛,可用于技术交流以及这个系统本身的改进意见FAQ对系统的功能以及一些限制条件进行说明系统结构图数据库Web前端显示题目用户代码Php后台控制判题模块编译模块测试运行模块图1、系统结构体系五、 详细设计分工首先假设设计是一个团队,将所有设计部分分成小组开发,这样将我在同一设计过程要处理的问题大大简化以及要面对的技术减少,有利于开发过程的计划与管理、同时消减各种不同语言代码差异造成编码困难。根据需要的技术以及系统的结构,我将系统开发组一共分成了五个小组(web前台、php后台、数据库、判题模块、运维),其中每个小组的工作以及技术比较专一,负责内容和编辑环境根据设计需要有部分差异。组与组之间的交互具体设计由开发过程中视情况而定。1、Web前台组:要求:熟悉html标签、css样式表、js脚本语言。根据页面内容编写php表示页面,在不同页面尽量使用统一风格,尽量使用分离的css样式表,使用简单的js实现表单的验证。任务:编写静态页面,包括题目列表页面、题目展示页面、题目提交页面(与题目展示页面合并)、代码转台页面、代码展示页面、排名页面、综合主页、比赛页面、FAQ页面。资源:5天时间(不包括维护以及其他组设计过程中修改)、设计环境Windows XP Sp3、Adobe Dreamweaver CS5、测试服务器2、Php后台组:要求:熟悉php代码基础以及常用函数以及工作原理(SESSION、POST、GET等)、熟悉Mysql常用语句。根据各个页面的功能要求嵌入相应的处理代码、实现页面功能,同时要探索php与linux C交互问题(socket)实现后台和判题模块的通信。任务:根据已有的静态页面和功能需求完善各种页面,包括题目列表页面、题目展示页面、题目提交页面(与题目展示页面合并)、代码转台页面、代码展示页面、排名页面、综合主页、比赛页面,同时要编写纯后台处理程序,包括登录登出处理、代码接收以及处理、比赛数据处理。资源:5天时间(不包括维护以及更新功能)、设计环境Windows XP Sp3、Adobe Dreamweaver CS5、CoreAMP集成环境。3、数据库设计组:要求:熟悉Mysql数据库和基本操作语言、会使用phpmyadmin工具。根据网站功能及对使用数据分析建造数据库并编写一些相应的处理语句。任务:在系统需求分析之后立即构造数据库并在设计过程中根据设计要求进行修改,同时配合后台组和判题模块组的要求编写处理语句。资源:3天时间、设计环境WindowsXP Sp3、CoreAMP、phpmyadmin。4、判题模块组:要求:熟悉linux操作系统及其常用shell和基本api函数、熟悉CC+语言(线程、进程、数据库、socket通信)。编写linux下的judge程序,要求与后台和数据库进行特定的交互。任务:在后台发出信号之后将信号打入判题队列,分别进行编译和测试运行操作、并将结果存入数据库。其中过程包括取出代码并写入缓存、危险代码判断、编译代码、权限以及资源限定、重定向输入输出、测试运行代码、监控程序运行、回收结束信息,比对运行结果、代码运行结果入库。资源:20天时间、操作系统Fedora Core 10、编辑器gedit、编译器g+。5、运维组:要求:熟悉linux操作系统、理解各个模块的功能以及工作原理、理解用户的需求。任务:搭建LAMP环境并将各个模块布置到位、初始化系统并监视其运行、体验用户感受、测试各个功能、将遇到的bug调试并将有问题的模块回炉。资源:5天(搭建环境并部署系统)、操作系统linux(详细版本待定)、Apache Tomcat、Mysql、PHP、G+/GCC。各组任务的依赖关系前台组后台组数据库组判题模块组运维组图2、任务小组依赖关系根据依赖关系,前台组、数据库组和判题模块组可以同时开始设计开发、而后台组需要得到前台组的产品才能开始、运维组在所有其他组开发完成时才能开始。由于本次开发比较特殊(只有我一个人,单线程),所以开发线路很单调,基本不会出现两个组同时开发的情形。在实际分组开发中,我更注重的是各个分组之间的效率以及工作的质量,避免短板效应的发生。适当的调整工作的分配问题,在有问题的环节注意加强。六、设计说明本系统纯手工编写,不借鉴抄袭其他系统源代码,开发周期较长,难度系数比较大。此系统在功能上初步实现Online Judge在线判题,并将在之后的修改更新中实现更多功能以及强化稳定性的安全性。作为一个“项目经理”,我感觉在计划设计过程中头脑比较清晰,即便在实际开发中遇到的问题与计划中不同甚至部分相悖。实际操作证明了有实际需求分析以及设计分组能使开发过程更容易理解,更方便维护和管理。目前我具备了一些软件开发的基础技术,有一定的结构分析能力,能简单的将项目划分;不足之处在于部分技术不是很了解导致某些模块的开发周期与计划相差很大,另外还有技术安排和分工可能有不平均的现象,这个

温馨提示

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

评论

0/150

提交评论