论文部分内容阅读
随着计算机教育的不断发展,程序设计教学作为计算机基础科学教育的核心课程正在受到越来越多的重视。近些年来,国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM/ICPC)的普及激发了学生学习程序设计的极大兴趣,越来越多的高校学生投身于该项比赛中,每年一度的竞赛已经成为国内诸多高校相互学习交流的一场盛会。许多学校已把ACM/ICPC的竞赛模式引入日常教学之中,这种由竞赛推动教学的创新教育模式取得了非常好的效果。程序设计评判系统(Online Judge System,简称OJ)作为一个评判平台在程序设计竞赛和教学中扮演着重要的角色,目前互联网上已有许多评判系统供用户使用。但是随着用户人数的持续增长与需求的不断变化,现有的评判系统面临着诸多问题,具体表现在:(1)系统负载压力大且容错能力不强,难以适应用户规模扩大而产生的压力需求;(2)系统的重复开发导致人力物力资源的极大浪费;(3)网络知识资源缺乏互联;(4)系统难以满足不断变化的需求。这些问题给系统设计开发者提出了艰巨的挑战。本文结合两项国家自然科学基金项目:“面向资源自动发现的网络信息空间结构化模型研究”和“网络知识互联结构自主发育模型研究”,针对上述问题,提出一种面向语义化服务体系结构的程序设计评判系统设计解决方案,并结合本系统成功承担了第34届ACM/ICPC国际大学生程序设计竞赛亚洲区预选赛上海赛区的网络预赛与现场决赛赛的相关经验,验证了本方案的可行性与正确性。本文按如下步骤展开:首先,分析评判系统承受负载压力大和容错能力弱的主要成因,指出目前大多数评判系统由于架构设计上的不合理性导致系统难以承受用户规模增加而带来的负载压力和容错需求,继而提出一种基于SOA(Service Oriented Architecture,面向服务体系结构)的分布式程序设计评判系统架构,其包括服务分布式、评判分布式和服务器分布式等设计思想。并结合承办比赛中的相关经验,阐明该分布式架构相比于目前其他评判系统架构的优势。其次,在分布式服务模型的基础上,结合面向服务架构技术讨论程序设计评判系统的服务组合方案。通过分析面向服务架构的服务灵活性及松耦合性,提出评判系统服务模型之间的相互组合通信的可行方案,从而解决目前在评判系统中普遍存在的系统重复开发与资源浪费的问题。然后,分析评判系统所面临需求的灵活性及多变性,提出一种基于本体论的服务接口描述模型。该模型结合了语义WEB技术和面向服务架构技术的优点,针对服务接口注入语义,使得计算机可以识别分析服务接口,并组合评判系统的服务,从而可以满足不断变化的系统需求。最后,基于以上理论与方法,讨论本课题组开发的评判系统的设计与实现。并针对本文所提出的面向语义化服务的架构模型,对未来的程序设计评判系统的发展作出一些展望,以期望程序设计评判系统平台能够更好地为计算机教学服务。