论软件架构建模技术与应用

  声明:本文为本人在软考系统架构设计师备考期间的练手写作,不保证内容的原创性与正确性,仅供参考,请勿照抄和用于学术论文等正规场合,因不当使用产生后果一律自负。

摘要

  2019年3月,我单位联合某高校研发了《程序在线评测比赛考试系统》。系统以程序代码在线提交自动评测功能为核心,分为题库模块、评测机模块、实验作业模块、考试模块、比赛模块、抄袭判定模块、用户管理模块等,支持对接教务平台。在项目中我担任系统架构师,负责架构设计工作。
  本文以该系统为例,主要论述了软件架构建模技术在项目中的具体应用,重点从4+1视图模型的场景视图、逻辑视图与物理视图三个方面介绍。场景视图以UML用例图对系统主要用户角色与涉及用例进行分析;逻辑视图通过UML包图从前端Web服务、平台保障服务、业务服务三个层次对系统功能进行建模;物理视图使用UML部署图对微服务在硬件环境的具体部署方法进行描述。最终系统顺利上线,获得用户一致好评。

正文

  笔者在一个专为高校建设计算机专业智能教学一体化平台的单位任职,过往成果有《计算机组成原理仿真实验系统》等。2019年3月,我单位联合某大学研发了《程序在线评测比赛考试系统》项目(以下简称为“OJ系统”),以取代原有传统的编程上机考试平台。
  系统以程序代码的在线提交自动评测功能为核心,主要分为题库模块、评测机模块、实验作业模块、考试模块、比赛模块、抄袭判定模块、用户管理模块等。题库模块主要负责试题和测试用例的管理,用户根据试题要求编写程序代码提交到系统,系统将测试用例与程序代码发送给评测机模块,由评测机自动编译、执行、判分,并将结果发送给其他相关模块进行统计;实验作业模块用于在线布置作业,从题库中选取试题,设置截止日期等要求;考试模块用于学生在线考试,按教师预先设置的参数自动从题库随机抽题生成试卷,以及向教务平台上传考试成绩;比赛模块主要用于ACM竞赛的培训;抄袭判定模块用于鉴定代码与他人代码雷同率;用户管理模块负责用户信息的管理。在这个项目中,我担任了系统架构师的职务,主要负责系统的架构设计相关工作。
  4+1视图模型从5个视角来描述软件架构,分别为:逻辑视图、物理视图、进程视图、开发视图和场景视图。逻辑视图主要描述系统的功能需求,将系统分解为一系列的功能抽象,可用对象模型来代表,用类图来描述;开发视图主要侧重于软件模块的组织和管理,考虑软件内部的需求;进程视图侧重于系统的运行特性,主要关注非功能需求,强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的功能抽象如何适应进程结构,定义了具体线程执行的操作;物理视图主要考虑软件向硬件的映射,解决系统的拓扑结构、安装和通信问题。场景视图可看做重要系统活动的抽象,使其他4个视图有机联系。
  OJ系统使用微服务架构开发,基于4+1视图建模,建模工具为Rational Rose,描述语言为UML,这里着重从场景视图、逻辑视图、物理视图三个方面展开介绍。

1. 场景视图

  场景视图使用UML模型中的用例图来进行建模。OJ系统功能主要面向高校学生程序设计语言的在线学习、考试、比赛,我们经过分析,结合用户的需求,在系统中划定了四类用户角色,这些角色分别为:在校学生、任课教师、系统管理员、校外人员。在校学生用户是OJ系统学生端的主要使用者,学生涉及的主要用例有:登录系统、提交代码、自由练习、参加考试、提交实验作业、参加比赛、信息维护、查看系统帮助、交流讨论等;任课教师用户属于OJ系统的管理者,教师涉及的主要用例有:登录系统、信息维护、班级管理、助教管理、学生管理、考试管理、题库管理、实验作业管理、比赛管理、代码查重、论坛管理等;系统管理员拥有OJ系统最高的系统权限,在具备学生与教师所有用例的基础上,还增加了教师管理、评测机管理、系统管理、服务器管理等用例。校外人员用户主要面向社会以及其他高校的编程学习爱好者,仅具备登录系统、提交代码、自由练习、参加比赛、查看系统帮助五种用例。

2. 逻辑视图

  逻辑视图使用UML模型中的包图来进行建模。我们经过分析,决定采用微服务架构风格开发,将系统分为前端Web服务、平台保障服务、业务服务三部分。前端Web服务由负载均衡与服务器集群结合,解决前台界面并发问题;平台保障服务分为API网关、服务注册中心、监控平台,用以实现基础服务框架,所有业务服务都注册到服务注册中心;业务服务分为多个微服务,实现具体业务功能,解决协同问题。当用户通过网络访问系统时,首先会访问到前置的负载均衡服务器,负载均衡服务器会将请求转发到前端网站的集群,前端网站通过发起http请求来和后端交互。API网关收到前端的请求,会从服务注册中心根据当前请求,来获取对应的服务配置,随后通过服务配置再调用已注册的服务。当后端微服务存在多个实例时,将采取负载均衡的方式调用。后端微服务通过同步消息、异步消息、工作流三种方式协同工作,完成具体业务功能。服务监控平台注册到服务注册中心,获取所有后端业务服务的运行状态信息。

3. 物理视图

  物理视图使用UML模型中的部署图来进行建模。系统微服务采用分布式的部署方法,每个微服务单独编译、打包、部署,基于Docker容器连同运行环境一起封装,根据实际情况可在同一台物理机器或多台物理机器上同时部署多个实例来提高系统的性能。服务启动后会将自身信息注册到已部署好的分布式服务注册中心,所有客户端请求一律进入路由网关,路由网关根据请求通过服务注册中心来进行服务发现,然后通过反向代理的方式调用具体服务。在分布式部署多个服务的基础上,前端服务器集群通过Nginx负载均衡服务器做统一代理访问,部署为路由模式,系统内部网络与外部网络分属于不同的逻辑网络,以实现系统内部与外部网络的隔离。在负载均衡算法的选择上,使用了最小连接法,每当客户端的请求来临时,任务分发单元会将任务平滑分配给最小连接数的微服务节点,这样的部署方法以廉价且透明的方式扩展了服务器和网络的带宽,可以大大提升系统的并发量,同时保证系统整体的稳定性和可靠性。

总结

  通过4+1视图的场景视图、逻辑视图和物理视图等建模方式,对系统进行了详细的分析,为系统的设计和接下来的项目开发提供了有力的支持。
  系统自2019年10月正式上线已运行一年有余,在学校的日常教学考试和竞赛培训中投入使用,截至目前已有3000名以上的学生用户、评测了70000份以上的程序代码,获得了单位同事领导和学校教师们的一致好评。不可避免的,我们在设计过程中,也存在一些问题和不足,不少开发人员在实现过程中有时还是习惯于原有的结构化设计方法,对4+1视图模型的使用有些抵触。而且,这些视图在应用过程中,往往不是单独使用,需要多个视图综合运用。这方面,我们还缺少相关的经验。
  实践证明,OJ系统项目能够顺利上线,并且稳定运行,与系统采用了合适的软件架构建模技术密不可分。经过这次软件架构建模的方法和实施的效果后,我也看到了自己身上的不足之处,在未来还会不断地更新知识,完善本系统在各方面的设计,使整个系统能够更加好用,更有效地服务于高校师生。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UML(统一建模语言)是一种用于软件开发过程中描述、可视化和构建系统的标准化图形化语言。它通过使用不同的图形符号和表示方法来呈现系统的不同方面,例如结构、行为和交互。 UML提供了一系列的图形符号,如用例图、类图、对象图、序列图、活动图等,每个图形符号都可以表示系统的不同层面和关系。通过使用这些图形符号,开发人员可以更清楚地理解系统的结构和功能,并与其他开发人员、设计师和利益相关者进行有效的沟通。 模式应用是指在软件开发过程中使用设计模式来解决常见的设计问题。设计模式是一套经过验证的、可重复使用的解决方案,它们可以帮助开发人员在设计阶段更好地组织和实现系统。 通过使用模式,开发人员可以避免重复设计和编码,并提高系统的可维护性和可重用性。模式应用需要开发人员深入了解各种设计模式的特点和应用场景,并能够在系统开发过程中灵活地应用这些模式。 总之,UML和模式应用是在软件开发过程中非常重要的工具和技术。它们可以帮助开发人员更好地理解和描述系统,同时提供了解决设计问题的指导方针。通过熟练使用UML和模式应用,开发人员能够设计和开发出更高质量、可维护和可重用的软件系统。 ### 回答2: UML和模式应用主要是指在软件开发过程中使用统一建模语言(UML)和设计模式的方法。UML是一种广泛使用的图形化建模语言,用于描述软件系统的结构、行为和交互等方面。设计模式则是一些被广泛验证和可重用的解决方案,用于解决软件设计过程中的常见问题。 在软件设计过程中,使用UML可以帮助开发者更清晰地理解系统的需求和设计。通过使用UML类图、时序图等图形化表示方式,开发者可以更容易地沟通和交流,减少需求误解和风险。另外,UML还可以帮助开发者在设计过程中进行可视化建模,更有效地分析和设计系统的各个组成部分。 而设计模式则是一些被广泛验证和可重用的解决方案,用于解决软件设计过程中的常见问题。设计模式提供了一种标准化的方法和思路来解决常见的设计问题,例如如何实现对象的组合、如何处理对象的变化等。通过应用设计模式,开发者可以利用已有的经验和最佳实践,降低开发风险,提高系统的灵活性和扩展性。 综上所述,UML和设计模式的应用在软件开发中起到了重要的作用。UML可以帮助开发者更清晰地理解系统需求和设计,提高沟通效率和设计质量;而设计模式则提供了一种可重用的解决方案,帮助开发者更好地解决软件设计中的常见问题。通过合理地应用UML和设计模式,可以提高软件开发的效率和质量。 ### 回答3: UML和设计模式是软件工程中常用的两种工具和方法。UML(统一建模语言)是一种图形化的建模语言,用于描述和设计软件系统的结构、行为和交互等方面。通过使用UML,开发团队可以更好地理解和沟通软件系统的需求和设计。 在软件开发过程中,设计模式是一种被广泛接受和使用的重要方法论。设计模式提供了一套经过验证和优化的解决问题的模式,可以帮助开发人员更高效地解决特定的设计问题。 将UML和设计模式结合使用可以使软件开发更加规范和高效。使用UML可以将系统的需求和设计用图形符号进行表示和沟通,提高团队的合作效率。设计模式则可以提供一套经过实践验证的解决方案,提高代码的可重用性和可维护性。通过结合使用这两种工具和方法,开发人员可以更好地理解系统的需求,设计出更好的架构和模块,并更好地管理系统的变化和演化。 在软件开发中,UML和设计模式的应用通常以文档和图表的形式展现,并且常以PDF格式进行共享和传播。这些文档和图表可以包括系统的用例图、类图、时序图、状态图等UML图形,以及各种常用的设计模式的示例和示意图。通过阅读和理解这些文档和图表,开发人员可以更好地掌握和应用UML和设计模式,提高软件开发的质量和效率。 总而言之,UML和设计模式在软件开发中扮演着重要角色。通过结合使用这两种工具和方法,开发团队可以更好地进行需求分析和系统设计,并且可以更好地管理和维护软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值