0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

计算机组成原理仿真实验系统架构设计师负责架构工作研究

发表时间:2023-10-28 19:02:38

文章来源:炫佑科技

浏览次数:155

菏泽炫佑科技

计算机组成原理仿真实验系统架构设计师负责架构工作研究

概括

2019年3月,我单位与某大学合作开发了“程序在线评价竞赛考试系统”。 系统以在线提交程序代码自动评价功能为核心,分为题库模块、评价机模块、实验作业模块、考试模块、竞赛模块、抄袭判定模块、用户管理模块等,支持与教务平台对接。 在项目中,我担任系统架构师,负责架构设计工作。

本文以该系统为例,主要讨论基于组件的软件开发技术在项目中的具体应用。 系统基于Cloud微服务框架进行组件开发。 在组件获取阶段,通过对接现有系统、利用组件库、集成第三方软件来实现需求。 在组件开发阶段计算机组成原理仿真实验系统架构设计师负责架构工作研究,采用多种设计模式来保证组件的可重用性。 在组件组装阶段,通过同步消息、异步消息和工作流方法,实现不同业务类型下组件的组合。 *终项目成功上线并稳定运行,赢得了用户的一致好评。

文本

笔者工作的单位是专门为高校计算机专业搭建一体化智能教学平台的单位。 以往成果有“计算机组成原理仿真实验系统”等。 2019年3月,我单位与某大学合作开发了“程序在线评测竞赛考试系统”项目(以下简称“OJ系统”),以取代原有的传统计算机编程考试平台。

系统以在线提交程序代码自动评测功能为核心,主要分为题库模块、评测机模块、实验作业模块、考试模块、竞赛模块、抄袭判定模块、用户管理模块等。题库模块主要负责试题和测试用例的管理。 用户根据试题要求编写程序代码并提交给系统。 系统将测试用例和程序代码发送到评估机模块,评估机模块自动编译、执行并对结果进行评分,并发送结果。 对其他相关模块进行统计; 实验作业模块用于在线布置作业、从题库中选择试题、设定截止时间等要求; 考试模块用于学生在线考试,根据老师预设的参数自动从题库中随机选题生成试卷。 ,并将测试结果上传至教育平台; 竞赛模块主要用于ACM竞赛训练; 抄袭判定模块用于识别代码与他人代码的相似度; 用户管理模块负责用户信息的管理。 在这个项目中,我担任系统架构师,主要负责系统的架构设计。

组件技术是指通过组装一系列可重用的软件组件来构造软件系统的软件技术。 通过使用组件技术,开发人员可以有效地复用软件,减少重复开发,缩短开发时间,降低软件开发成本。 主流的组件技术有三种:CORBA、EJB、COM。 CORBA分为三个层次:对象请求代理、公共对象服务和公共设施。 优点是庞大而全面,互操作性和开放性好,但缺点是庞大而复杂,技术标准更新慢; EJB基于Java语言,支持跨平台,提供远程访问、安全、持久化和生命周期等机制,支持分布式计算。 缺点是服务治理能力差,逐渐被Cloud等轻量级框架取代; COM基于平台,功能强大、效率高,并有一系列开发工具支持,缺点是跨平台性能较差。 基于构件的软件开发过程主要分为模块划分、构件识别、构件获取、构件组装与测试、构件管理等步骤。

OJ系统采用基于云的微服务架构开发。 这里我们重点从组件获取、组件开发、组件组装三个阶段来描述本系统的组件化开发流程。

1. 获取组件

在OJ系统中,从实现方式上将可复用的功能需求和非功能需求分为三类。 **类需要通过对接现有系统来实现。 例如,需要将学校使用的OA和教育管理系统中的学生信息和课程信息同步到OJ系统。 我们访问OA和教育管理的开发者网站,联系开发者,获取了相关接口调用的SDK。 第二类是常见信息系统中常见的用户管理、角色权限管理、日志记录、内容维护、消息中心等基本功能。 我们利用单位过去项目开发中积累的组件库中的相应组件(如RBAC权限管理框架)来实现。 第三种需要集成第三方软件来实现,比如微服务注册中心、API消息路由网关、负载均衡机制、程序评估时调用的编译器、代码抄袭判定的文本比对功能等,无需额外开发。 我们使用 Cloud 中的框架作为微服务注册中心,使用 Nginx 反向代理作为负载均衡机制,使用 GCC、JDK 等作为编译器。 对于文本比较功能,我们使用开源程序。 此外,我们还根据OJ系统的使用场景重新开发了一些功能组件,以支持该系统的特定用户需求。

2. 组件开发

组件的优势体现在其粗粒度的可重用性。 因此,为了*大限度地提高组件的复用性和复用性,保持其高内聚、低耦合的特性,我们在开发中使用了一些经典的设计模式,如装饰器模式、策略模式、工厂模式等。在题库组件中,存储所有试题数据,包括试题介绍、试题等公共内容。 同一试题在自由练习、实验作业、考试、竞赛等不同使用场景下,需要添加不同的扩展功能。 我们使用装饰器模式来动态地向测试对象添加不同的职责。 在评估机制组件中,需要同时支持C语言、C++、Java、PHP等常用编程语言程序的评估。 不同语言对应的编译和执行方式存在较大差异。 我们使用策略模式来封装不同语言的编译和执行方法,并使其可以互换。 在数据库连接组件中,由于不同的业务需求,需要同时支持不同类型的数据库,包括MySQL、SQL。 我们采用工厂方法模式,有效解决了不同数据库类型对软件程序的影响,并且具有良好的可扩展性。 这种设计有效地体现了组件的优点。

3. 部件组装

OJ系统中不同的业务类型需要不同的组件组装方式。 在本系统的开发过程中,我们采用了以下三种方法。 **种是同步消息方法。 以考试功能为例,当用户进入考试时,考试组件需要验证考生信息,然后检索题库中的题目信息,形成试卷。 在此过程中,考试组件通过同步的方式将组件依次发送给考生。 ,题库组件请求数据,等待返回结果软件开发,然后处理组合,提供给调用者。 第二种是异步消息传递方式。 以程序代码的在线提交评估功能为例,评估机制组件对代码的编译、执行和评分过程相对于其他组件的数据处理过程来说是一个耗时的操作。 这时,如果采用同步方法,就会导致调用者被阻塞,严重影响用户体验,甚至造成雪崩效应。 因此,使用了异步消息队列。 代码提交后,写入消息队列,立即返回原来的程序执行。 评估机评估完成后,异步显示评估结果。 *后,它基于工作流,可以通过图形界面动态编排系统组件之间的交互和依赖关系,灵活改变多个组件之间协同工作的顺序,通过简单组件的组合实现复杂的功能。 定制。

总结

该系统自2019年10月正式上线以来,已运行一年多,已投入学校日常教学考试和竞赛训练中使用。 截至目前,拥有学生用户3000余人,评估程序代码7万余条,获得单位同事嘉奖。 领导和学校老师一致好评。

实践证明,OJ系统项目能够顺利上线、稳定运行,与系统采用的基于组件的开发方式密不可分。 经过这种基于组件的开发方法和实现效果,我认识到了软件元素复用对开发过程的重要价值。 从软件开发方式来看,从机器语言、汇编语言,到面向过程的开发、面向对象的开发,再到现在的基于组件、面向服务的软件开发,软件元素正呈现出两个维度的演化趋势:功能越来越强大和全面,其外部接口也变得越来越简单和标准。 *终,各个领域的软件可以在统一的标准下无缝组装。 面向协作的软件开发和基于功能的软件开发等新技术将会出现。 上层应用功能的实现也将变得极其简单,计算机软件将无处不在。 、数字生活、智慧地球等还处于概念阶段的东西都将成为现实。 这个目标值得我们每一位软件从业者为之努力。

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多