精华内容
下载资源
问答
  • 2020-12-18 18:54:37

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

    摘要

      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. 物理视图

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

    总结

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

    更多相关内容
  • 浅谈软件需求建模

    2019-03-07 15:51:09
    建模就是采用表格化、图形化、公式化的方式,将系统的构成及其构成间的关系呈现给人们的一种技术方法。
  • 软件需求建模案例.ppt

    2019-12-28 21:17:21
    软件需求建模案例,该案例为教务系统的需求建模案例,内含,用例图,时序图,活动图,类图,是非常好的建模参考资料。。。。。。。。。。。
  • 基于特征组合的软件需求建模
  • 软件需求老师需要画出每种类型的建模图形、泳道图、流程图等等
  • 什么是需求建模|概述

    千次阅读 2022-03-14 16:42:31
    需求建模是软件建模最为重要的工作。需求模型描述软件的外部特性,包括软件能够给用户提供的...本章主要从软件需求、需求分析、软件需求建模、需求模型等概念进行阐述,同时简要阐述软件需求建模所需要遵循的一些原则。

    需求建模是软件建模最为重要的工作。需求模型描述软件的外部特性,包括软件能够给用户提供的功能和性能,分析模型、设计模型和测试模型均建立在需求模型的基础上。需求模型包括用例模型和非功能模型两个方面的内容。

    本章主要从软件需求、需求分析、软件需求建模、需求模型等概念进行阐述,同时简要阐述软件需求建模所需要遵循的一些原则。

    软件需求

    软件需求(software requirement)是所要开发的软件系统为解决用户问题所具有的能力与特性。

    软件需求可分为功能需求和非功能需求两个方面:

    • 功能需求: 是软件系统所具有的能力,表现为给用户提供的所有服务;
    • 非功能需求: 是约束系统,支持功能实现的相关需求,包括软件的效率、可靠性、安全性、可用性、适应性、健壮性等。

    需求分析

    需求分析(requirement analysis)是为获得合理的软件需求所从事的调查、分析、建模、编写文档及审核等工作。

    需求分析是开发软件的一项十分重要的工作,它是软件开发中软件分析、软件设计、编码和测试的基础,只有确定了正确、合理的软件需求,才有可能开发出成功的软件,错误或不完善的软件需求将导致软件开发工作的失败。

    软件需求建模

    软件需求建模(modeling for software requirement)是软件需求分析的一项重要工作,软件需求建模又简称需求建模,是在需求调查的基础上,在需求分析过程中采用软件建模工具建立软件需求模型的过程。

    需求模型

    需求模型(requirement model)是通过建模语言描述软件需求的模型。
    在需求模型中,需要对需求结构、软件功能、软件性能等内容进行建模。需求建模建立在业务模型的基础上,它又是软件其他模型的基础,如下图,描述了需求模型与其他软件模型之间的关系。
    图片
    需求模型包括用例模型、(功能模型)和非功能模型两部分。UML通过一组用例图来描述软件需求,功能模型用来描述软件的功能(用例和功能不一定能画等号,往往一个用例可能需要系统的多个功能来协作完成)。软件非功能需求一般表现为一组指标,非功能需求可以采用需求条目来表示。

    为了分清楚用例和需求的关系,笔者还特意做了相关文献的查阅和分析,如下:

    软件功能:功能是计算机术语,是用来描述计算机的,而非定义需求的术语。功能实际描述的是 输入->计算机->输出。一般用DFD图来表示,也是典型的面向过程分析模式。因此把用例当做功能点的分析员实际在做面向过程的分析。

    用例:用例不是计算机术语,是针对参与者来描述的,是从参与者的角度来描述,主要描述参与者可以做什么。用例的几个特征:

    1. 相对独立
    2. 执行结果对参与者来说是可以观测和有意义的
    3. 必须由一个参与者发起
    4. 以动宾短语形式出现

    业务流程:业务流程是要分析某项业务是如何一步一步完成的,有每个一步有哪些参与者,做什么业务动作,描述完成某个业务流程中多个业务动作的前后依赖关系。在UML中用活动图或序列图来描述。
    用例的核心是以参与者为中心,从参与者的角度来描述他要做什么日常工作(区分以业务流程描述的方式),并分析这些日常工作之间是如何交互的(区别于数据流的描述方式)换句话说, 用例要分析的首要目标不是要弄清楚某个业务是如何一步一步完成的,而是要弄清楚有多少参与者,每个参与者都做什么;业务流程分析则是后续的工作。其次,用例就是面向对象而生的,其思想完全符合OO。用例分析方法试图找到问题领域内所有相对独立的参与者和事件,并把业务流程当成这些参与者和事件之间的交互结果\

    软件需求建模需要遵循的原则

    1)真实地反映软件需求

    需求模型一定要真实的反映实际的软件需求。软件需求来自用户,需求模型的变更需要征求用户的意见,最后确定需求模型应通过用户确认。

    2)抽象的反映软件需求

    需求模型一定要在具体的业务的基础上进行革新和抽象。需求模型不是现行业务的模拟和照搬,而是对现行业务的改造和创新,因此,需求模型必须抽象的反映软件需求。

    3)完备反映软件需求

     需求模型必须全面反映软件的功能和性能需求,对软件范围之内的一切需求需要清晰地给出描述。
    

    4)直观地反映软件需求

    需求模型应该简单、直观地反映软件需求,使用户和开发人员能够容易理解。在需求建模过程中尽量用直观、易懂和简单的形式描述需求模型。

    5)一致的反映软件需求

     需求模型应该具有一致性,在模型中不应该存在矛盾、冲突和不一致之处。需求模型中的术语、定义、符号应该具有一致性,以给阅读者带来二义性的理解和理解难度。
    

    (后续将根据软件设计的几个维度分别进行阐述,欢迎关注后续文章!)


    如果你在这方面有不同方面的见解,也欢迎在下方进行留言,一起讨论

    想要了解更多信息,可关注本公众号(一起学开源);或请长按以下二维码添加助手。将拉你加入社区进行更多交流

    在这里插入图片描述

    文章有帮助的话欢迎点赞和转发。 
    
    谢谢支持哟 (*^__^*) 
    
    展开全文
  • 面向软件非功能需求软件过程建模方法
  • 软件需求分析与建模之面谈法
  • 需求分析与需求建模

    2021-02-26 05:42:04
    什么是软件需求?简单地说,软件需求就是“这个软件到底要为用户做什么”。1.用户所需的解决某个问题或达到某个目标所要具备的条件或能力。2.系统或系统组件为符合合同、标准、规范或其它正式文档而必须满足的条件或...
  • 软件工程(四)——需求建模

    千次阅读 2018-10-17 22:55:44
    笔者正在学习《软件工程-实践者的研究方法》这...需求建模动作产生以下一种或多种模型类型: 场景模型:出自各种系统“参与者”观点的需求; 数据模型:描述问题信息域的模型; 面向类的模型:表示面向对象类(属...

    笔者正在学习《软件工程-实践者的研究方法》这本书,记录下一些读书笔记,共勉!

    1.需求分析

    在技术层面上,软件工程开始于一系列的建模工作,最终生成待开发软件的需求规格说明和设计表示,指明软件和其他系统元素的接口,规定软件必须满足的约束。需求建模动作产生以下一种或多种模型类型:

    • 场景模型:出自各种系统“参与者”观点的需求;
    • 数据模型:描述问题信息域的模型;
    • 面向类的模型:表示面向对象类(属性和操作)的模型,其方式为通过类的协作获得系统需求;
    • 面向流程的模型:表示系统的功能元素并且当功能元素在系统中运行时怎样进行数据变换的模型;
    • 行为模型:描述如何将软件行为看作是外部“事件”后续的模型。

    1.1总体目标和原理

    在整个需求建模过程中个,软件工程师主要的关注点在“做什么”,而不是“怎么做”方面,包括:在特定环境下发生哪些用户交互?系统处理什么对象?系统必须执行什么功能?系统展示什么行为?定义什么接口?有什么约束?

    需求模型必须实现三个目标:①描述客户需要什么;②为软件设计奠定基础;③定义在软件完成后可以被确认的一组需求。需求模型在系统级描述软件设计之间建立了桥梁,系统描述给出了在软件、硬件、数据、人员和其他系统元素共同作用下的整个系统或商业功能,而软件设计给出了软件的应用程序结构、用户接口以及构件级的结构。

    1.2分析的经验原则

    创建需求模型时有以下的经验原则:

    • 模型应关注在问题域或者业务域内可见的需求,抽象的级别应该高一些,不要试图解释系统如何工作;
    • 需求模型的每个元素都能增加对软件需求的整体理解,并提供对信息域、功能和系统行为的深入理解;
    • 关于基础结构和其他非功能的模型应推延到设计阶段再考虑;
    • 最小化整个系统内的关联;
    • 确认需求模型为所有利益相关者都带来价值;
    • 尽可能保持模型简洁。

    1.3域分析

    域分析是识别、分析和详细说明某个特定应用领域的公共需求,特别是那些在该应用领域内被某个项目重复使用的需求。

    展开全文
  • 昆明理工大学软件工程实验二需求分析建模.doc
  • 该实验报告以新仁医院的住出院流程为背景,内容分为6部分:概述,业务与建模,需求建模,分析建模,设计建模,以及结论。2---5章包含各业务的各种流程图。 现信仁医院的住、出院流程如下: 患者到信仁医院就诊,...
  • 船舶建模软件

    2020-05-02 08:31:18
    船舶建模 静水力计算 模型参数修改 简单易上手
  • 感谢内容提供者:金牛区吴迪软件开发工作室 接上一篇:软件开发工具【十三】 之 Eclipse插件的使用与开发 文章目录一、UML建模介绍1.面向对象方法的出现和发展2....需求分析之用例图与活动图3.系统分析与设计四、E.

    感谢内容提供者:金牛区吴迪软件开发工作室
    接上一篇:软件开发工具【十三】 之 Eclipse插件的使用与开发

    一、UML建模介绍

    在这里插入图片描述

    1.面向对象方法的出现和发展

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.面向对象的一些概念

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.面向对象方法的基本过程

    在这里插入图片描述

    4.组件思想

    在这里插入图片描述
    在这里插入图片描述

    二、RATIONAL ROSE建模工具介绍

    1.RATIONAL 公司简介

    Rational 公司是提供面向对象的解决方案的大型软件公司

    2.面向对象的分析设计和Rational Rose

    在这里插入图片描述
    在这里插入图片描述

    3.Rational Rose可视化建模的特点

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三、使用RATIONAL ROSE 建模

    1.UML建模的三大部分

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.需求分析之用例图与活动图

    在这里插入图片描述
    在这里插入图片描述

    3.系统分析与设计

    在这里插入图片描述
    在这里插入图片描述

    四、ECLIPSEUML建模工具介绍及使用

    1.安装EclipseUML

    在这里插入图片描述

    2.使用EclipseUML进行建模

    在这里插入图片描述
    在这里插入图片描述




    ~ You’re terrific! The End ~

    展开全文
  • 北邮软件工程分布式系统中需求定义,领域建模,用例建模等相关文档,写的不一定非常符合您的心意,仅提供参考。
  • 文中提出一种半自动的软件产品线领域需求建模方法,基于关注点分离的思路,利用特征模型表示软件产品线中系列产品的不同方面的特征信息,通过特征模型的对比和组合实现领域需求模型的构建.为有效地实现特征模型对比与...
  • 软件方法:业务建模需求》UMLChina 首席专家潘加宇的第一本书。作者在为软件组织提供建模咨询和培训服务超过十年后,把他的经验和感悟写成了本书。《软件方法:业务建模需求》从“利润=需求-设计”开始,用...
  • 软件需求分析与建模

    2018-05-24 22:03:17
    需求分析是业务分析,也就是选择一种业务导向的线索将零散的需求串起来,形成一个体系完整、内容清晰的框架,以指导后续的设计、开发工作
  • 如下是一个完整的软件开发过程,其中需求人员要对原始的需求以条目的形式进行登记、分解、这样才便于跟踪和验证。而设计人员一般是基于模型进行分析设计,采用图形化的方式进行专业、准确和清晰的描述,而且需要把...
  • 软件方法:上册,业务建模需求》从“利润=需求-设计”开始,用市场经济的思想讲解软件开发中需求和设计的道理,以及统一建模语言UML 在需求和设计中的应用。本书还破解了软件开发领域流行的一些心灵鸡汤式宣传...
  • 6.1 软件设计过程;软件设计三类活动;软件结构设计步骤P53;概要设计说明书;详细设计说明书;6.2 软件模块化设计;分解;模块数与开发工作量;抽象;信息隐敝;逐步求精;模块的独立性;5.3 模块独立性度量;模块内聚性P58;内聚...
  • 软件产品线方法是一种面向特定领域的、大...通过分析软件产品线开发过程和软件产品线需求建模的特殊性,采用扩展UML用例图标签的方法,实现对软件产品线需求的明确描述。以网络图书销售软件产品线为例,进行具体说明。
  • 软件需求分析与建模-交互图.ppt
  • 软件需求分析与建模-活动图.ppt
  • 软件需求分析与建模-UML概述.ppt
  • 针对以上问题,提出采用状态变迁矩阵(STM)对嵌入式软件进行建模,通过确认STM中的每个单元格保证软件的正确性,且在需求分析阶段更容易发现需求遗漏。针对单元格处理经常出现大量的逻辑判断问题,提出采用决策表...
  • 软件需求设计UML建模

    2019-03-19 18:16:49
    标准的产品设计模式,经典,请酌情采纳,适合复杂业务逻辑的梳理和系统架构。
  • 需求建模语言入门 项目经常因为需求的缺失、不完整或者不明确而受到困扰。错误的需求实践普遍存在,所以大部分项目注定会失败。需求没做好是许多项目失败的根源。定义RML RML(Requirements Modeling language,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,837
精华内容 35,934
关键字:

软件需求建模