论软件系统建模方法及其应用

论软件系统建模⽅法及其应⽤
  声明:本⽂为本⼈在软考系统架构设计师备考期间的练⼿写作,不保证内容的原创性与正确性,仅供参考,请勿照抄和⽤于学术论⽂等正规场合,因不当使⽤产⽣后果⼀律⾃负。
摘要
低硅铁  2019年3⽉,我单位联合某⾼校研发了《程序在线评测⽐赛考试系统》。系统以程序代码在线提交⾃动评测功能为核⼼,分为题库模块、评测机模块、实验作业模块、考试模块、⽐赛模块、抄袭判定模块、⽤户管理模块等,⽀持对接教务平台。在项⽬中我担任系统架构师,负责架构设计⼯作。
  本⽂以该系统为例,主要论述了软件系统建模⽅法在项⽬中的具体应⽤。系统采⽤⾯向对象建模⽅法,基于UML中的4+1视图建模,着重从场景视图、逻辑视图与物理视图三个⽅⾯介绍。场景视图以⽤例图分析主要⽤户⾓⾊与⽤例;逻辑视图通过包图对系统的前端Web服务、平台保障服务、业务服务功能建模;物理视图使⽤部署图描述微服务在硬件环境的具体部署⽅法。最终系统顺利上线,获得⽤户⼀致好评。
正⽂
  笔者在⼀个专为⾼校建设计算机专业智能教学⼀体化平台的单位任职,过往成果有《计算机组成原理仿
真实验系统》等。2019年3⽉,我单位联合某⼤学研发了《程序在线评测⽐赛考试系统》项⽬(以下简称为“OJ系统”),以取代原有传统的编程上机考试平台。小型计算机
  系统以程序代码的在线提交⾃动评测功能为核⼼,主要分为题库模块、评测机模块、实验作业模块、考试模块、⽐赛模块、抄袭判定模块、⽤户管理模块等。题库模块主要负责试题和测试⽤例的管理,⽤户根据试题要求编写程序代码提交到系统,系统将测试⽤例与程序代码发送给评测机模块,由评测机⾃动编译、执⾏、判分,并将结果发送给其他相关模块进⾏统计;实验作业模块⽤于在线布置作业,从题库中选取试题,设置截⽌⽇期等要求;考试模块⽤于学⽣在线考试,按教师预先设置的参数⾃动从题库随机抽题⽣成试卷,以及向教务平台上传考试成绩;⽐赛模块主要⽤于ACM竞赛的培训;抄袭判定模块⽤于鉴定代码与他⼈代码雷同率;⽤户管理模块负责⽤户信息的管理。在这个项⽬中,我担任了系统架构师的职务,主要负责系统的架构设计相关⼯作。
  常⽤的软件系统建模⽅法有结构化建模⽅法、信息⼯程建模⽅法、⾯向对象建模⽅法三种。结构化建模⽅法以过程为中⼼,⽤于分析⼀个现有的系统以及定义新系统的业务需求,创建的模型为数据流图(DFD),适合流程较为稳定的系统;信息⼯程建模⽅法以数据为中⼼,但过程敏感,强调在分析和研究过程需求之前,⾸先研究和分析数据需求,创建的模型为实体联系图(ERD),主要⽤于数据建模;⾯向对象建模⽅法将数据和过程集成到对象中,创建的模型为对象模型,通过统⼀建模语⾔(UML)描述,定义了⼏种不同类型的模型图,以对象的形式共建⼀个信息系统或应⽤系统。
  OJ系统使⽤微服务架构开发,基于⾯向对象建模⽅法中的4+1视图建模,建模⼯具为Rational Rose,描述语⾔为UML,这⾥着重从场景视图、逻辑视图、物理视图三个⽅⾯展开介绍。
1. 场景视图
  场景视图使⽤UML模型中的⽤例图来进⾏建模。OJ系统功能主要⾯向⾼校学⽣程序设计语⾔的在线学习、考试、⽐赛,我们经过分析,结合⽤户的需求,在系统中划定了四类⽤户⾓⾊,这些⾓⾊分别为:在校学⽣、任课教师、系统管理员、校外⼈员。在校学⽣⽤户是OJ系统学⽣端的主要使⽤者,学⽣涉及的主要⽤例有:登录系统、提交代码、⾃由练习、参加考试、提交实验作业、参加⽐赛、信息维护、查看系统帮助、交流讨论等;任课教师⽤户属于OJ系统的管理者,教师涉及的主要⽤例有:登录系统、信息维护、班级管理、助教管理、学⽣管理、考试管理、题库管理、实验作业管理、⽐赛管理、代码查重、论坛管理等;系统管理员拥有OJ系统最⾼的系统权限,在具备学⽣与教师所有⽤例的基础上,还增加了教师管理、评测机管理、系统管理、服务器管理等⽤例。校外⼈员⽤户主要⾯向社会以及其他⾼校的编程学习爱好者,仅具备登录系统、提交代码、⾃由练习、参加⽐赛、查看系统帮助五种⽤例。
爪形手
2. 逻辑视图
  逻辑视图使⽤UML模型中的包图来进⾏建模。我们经过分析,决定采⽤微服务架构风格开发,将系
统分为前端Web服务、平台保障服务、业务服务三部分。前端Web服务由负载均衡与服务器集结合,解决前台界⾯并发问题;平台保障服务分为API⽹关、服务注册中⼼、监控平台,⽤以实现基础服务框架,所有业务服务都注册到服务注册中⼼;业务服务分为多个微服务,实现具体业务功能,解决协同问题。当⽤户通过⽹络访问系统时,⾸先会访问到前置的负载均衡服务器,负载均衡服务器会将请求转发到前端⽹站的集,前端⽹站通过发起http请求来和后端交互。API⽹关收到前端的请求,会从服务注册中⼼根据当前请求,来获取对应的服务配置,随后通过服务配置再调⽤已注册的服务。当后端微服务存在多个实例时,将采取负载均衡的⽅式调⽤。后端微服务通过同步消息、异步消息、⼯作流三种⽅式协同⼯作,完成具体业务功能。服务监控平台注册到服务注册中⼼,获取所有后端业务服务的运⾏状态信息。手机报网站
3. 物理视图
lsd法  物理视图使⽤UML模型中的部署图来进⾏建模。系统微服务采⽤分布式的部署⽅法,每个微服务单独编译、打包、部署,基于Docker 容器连同运⾏环境⼀起封装,根据实际情况可在同⼀台物理机器或多台物理机器上同时部署多个实例来提⾼系统的性能。服务启动后会将⾃⾝信息注册到已部署好的分布式服务注册中⼼,所有客户端请求⼀律进⼊路由⽹关,路由⽹关根据请求通过服务注册中⼼来进⾏服务发现,然后通过反向代理的⽅式调⽤具体服务。在分布式部署多个服务的基础上,前端服务器集通过Nginx负载均衡服务器做统⼀代理访问,部署为路由模式,系统内部⽹络与外部⽹络分属于不
同的逻辑⽹络,以实现系统内部与外部⽹络的隔离。在负载均衡算法的选择上,使⽤了最⼩连接法,每当客户端的请求来临时,任务分发单元会将任务平滑分配给最⼩连接数的微服务节点,这样的部署⽅法以廉价且透明的⽅式扩展了服务器和⽹络的带宽,可以⼤⼤提升系统的并发量,同时保证系统整体的稳定性和可靠性。
总结
  通过4+1视图的场景视图、逻辑视图和物理视图等建模⽅式,对系统进⾏了详细的分析,为系统的设计和接下来的项⽬开发提供了有⼒的⽀持。
  系统⾃2019年10⽉正式上线已运⾏⼀年有余,在学校的⽇常教学考试和竞赛培训中投⼊使⽤,截⾄⽬前已有3000名以上的学⽣⽤户、评测了70000份以上的程序代码,获得了单位同事领导和学校教师们的⼀致好评。不可避免的,我们在设计过程中,也存在⼀些问题和不⾜,不少开发⼈员在实现过程中有时还是习惯于原有的结构化设计⽅法,对4+1视图模型的使⽤有些抵触。⽽且,这些视图在应⽤过程中,往往不是单独使⽤,需要多个视图综合运⽤。这⽅⾯,我们还缺少相关的经验。
  实践证明,OJ系统项⽬能够顺利上线,并且稳定运⾏,与系统采⽤了合适的软件系统建模⽅法密不可分。经过这次4+1视图的建模⽅法和实施的效果后,我也看到了⾃⼰⾝上的不⾜之处,在未来还会不断地更新知识,完善本系统在各⽅⾯的设计,使整个系统能够更加好⽤,更有效地服务于⾼校师⽣。
>分动箱

本文发布于:2024-09-23 21:22:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/138636.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   服务   模块
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议