阅读以下关于 Web 应用设计开发的描述,
在答题纸上回答问题 1 至问题 3。
某公司拟开发一个网络约车调度服务平台,实现基于互联网的出租车预约与管理。公司的系统分析师王工首先进行了需求分析,得到的系统需求列举如下:
系统的参与者包括乘客、出租车司机和平台管理员三类;
系统能够实现对乘客和出租车司机的信息注册与身份认证等功能,并对乘客的信用信息进行管理,对出租车司机的违章情况进行审核;
系统需要与后端的银行支付系统对接,完成支付信息审核、支付信息更新与在线支付等功能;
针对乘客发起的每一笔订单,系统需要实现订单发起、提交、跟踪、撤销、支付、完成等业务过程的处理:
系统需要以短信、微信和电子邮件多种方式分别为系统中的用户进行事件提醒。
【问题1】(9分)
请说明微服务架构的优点和缺点。
我的回答
优点:将系统中各个模块按功能拆分,降低了系统的耦合度,有助于构件复用;后续维护更加简单,只需在对应微服务中进行;增强了系统的可扩展性,后续扩展只需新增微服务,无需更改依赖的关系;各微服务可外部扩展,后续程序规模扩大更加容易。
缺点:前期开发代码量较大,相较集中部署架构需要更多人力;对开发团队的要求更高
正确答案:
微服务优点:
(1)每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
(2)微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
(3)微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
(4)微服务能使用不同的语言开发。
(5)去中心化。每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。
微服务缺点:
(1)很难在不采用分布式事务的情况下跨服务实现功能
(2)测试工作更加困难
(3)跨服务实现要求功能要求团队之间的紧密协作
(4)部署复杂
- 优点:从“业务、团队、独立性、技术灵活性、数据管理”角度来描述。
- 缺点:从“分布式事务、测试、部署复杂性、团队协作”角度来描述。
【问题3】(8分)答对4条即可
应用网关是实现微服务的主要技术之一,请简述应用网关的作用。
1、实现服务冗余,一个微服务对应多个ip地址,用户访问该服务时通过负载均衡获取服务
2、统一登记服务,优化配置,一次修改ip,全系统生效,也便于后续部署
3、实现权限校验,对应权限用户访问对应权限服务,提高系统的安全性
4、
标准答案:
1、提供统一入口 2、可以进行权限身份认证等安全管理 3、可以根据流量进行限流 4、数据缓存 5、性能监控等 6、异常重试 7、服务降级
阅读以下关于软件系统建模的叙述,
在答题纸上回答问题1至问题3。
【说明】
软考达人公司计划开发一套教学管理系统,用于加强教学管理服务。该教学管理系统基本的需求包括:
( )系统用户必须成功登录到系统后才能使用系统的各项功能服务;
( )管理员使用该系统管理专业、班级、教师、学生和课程等教学基础信息;
( )学生使用系统注册并选择专业,缴费后才能参与在线学习;
( )教师使用该系统发布模拟试卷;
( )学生在线做模拟试卷,在规定时间段内只能提交一次答卷;
( )教师使用该系统批阅答卷;
( )模拟考到期结束后,系统自动生成成绩单,管理员可以通过打印机打印成绩单。
项目组经过分析和讨论,决定采用面向对象开发技术对系统各项需求建模。
【问题1】(15分)
请根据题目所述需求,说明教学服务系统中有哪些参与者。并列举项目中使用的所有实体类。
参与者:管理员,学生,老师
实体类:管理员,学生,老师,专业,班级,课程,试卷,成绩单
【参考答案】
参与者有:系统用户、管理员、教师、学生、时间、打印机。
实体类有:系统用户、管理员、专业、班级、教师、学生、模拟试题、答卷、成绩单。
[!note] 注意
模拟试题和答卷不是一个实体
【问题2】(4分)
用例是对系统行为的动态描述,用例获取是需求分析阶段的主要任务之一。请指出在面向对象系统建模中,用例之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时, “选择专业”用例与“登录系统”用例之间、“参加模拟考试”用例与“批阅答卷”用例之间的关系分别属于哪种类型?
用例间的关系有 组合、聚集、继承、泛化、
包含、扩展、泛化、关联
“选择专业”用例与“登录系统”用例之间 为 选择专业必须登录系统,为包含关系
“参加模拟考试”用例与“批阅答卷”用例之间 为 老师批阅试卷之前需要需要学生参加模拟考试,为关联关系
正确答案:
用例之间的关系包括:泛化、包含、扩展。
“选择专业”用例与“登录系统”用例之间的关系为:包含关系。
“参加模拟考试”用例与“批阅答卷”用例之间的关系为:扩展关系。
方面 | 包含关系(include) | 扩展关系(extend) |
---|---|---|
是否必然执行 | 是 | 否 |
触发条件 | 主用例执行时必然调用 | 满足条件才触发 |
用途 | 提取公用行为,避免重复 | 补充可选或条件行为 |
例子 | 登录系统被各种操作包含 | 考试后可能批阅答卷 |
【问题3】(6分)
类图主要用来描述系统的静态结构,是组件图和配置图的基础。请指出在面向对象系统建模中,类之间的关系有哪几种类型?
聚集 如类A和其他类聚集得到类B,类B不依赖于类A
组合 如类A和其他类组合得到类B,类B依赖于类A
继承 类A继承类B,说明类A是类B的子类。
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
顺序 | 关系 | UML符号 | 含义 | 例子 |
---|---|---|---|---|
1 | 泛化(Generalization) | 空心三角箭头 | 表示子类是父类的具体化(抽象-具体关系),强调概念继承和重用属性/方法 | 老虎是动物的一种,即有老虎的特性也有动物的共性。 |
2 | 实现(Realization) | 虚线空心三角箭头 | 类实现接口,强调接口规范的实现 | 类 Printer 实现接口 IPrintable ,必须提供 print() 方法。 |
3 | 组合(Composition) | 实心菱形 | 强聚合,“整体-部分”关系,部分生命周期依赖整体 | 房子(House) 与 房间(Room) ,房子销毁时房间也销毁。 |
4 | 聚合(Aggregation) | 空心菱形 | 弱聚合,“整体-部分”关系,部分可以独立存在 | 班级(Class) 与 学生(Student) ,学生可以不属于班级存在。 |
5 | 关联(Association) | 实线 | 表示类之间有静态连接关系,可带多重性 | 教师(Teacher) 与 课程(Course) ,一个教师可以教多门课程。 |
6 | 依赖(Dependency) | 虚线箭头 | 表示一个类使用另一个类,关系是短暂和弱的,强调使用关系而非结构关系 | 考试系统(ExamSystem) 使用 打印机(Printer) 打印成绩单,系统不拥有打印机。 |
系统设计与建模
1、UML时序图的三种消息及其概念
同步消息:消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
异步消息:消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
返回消息:返回消息表示从过程调用返回。
2、系统分析设计过程中时序图和协作图两种交互图的选取原则
时序图的选取原则:
- 强调时间顺序:适用于展示对象之间消息传递的时间顺序和动态行为,描述系统中的事件发生顺序。
- 展示交互的时间线:清晰展示用例或场景中各对象在不同时间点的状态变化,帮助理解系统的时间维度行为。
- 描述复杂的交互场景:适用于多个对象和复杂交互的场景,通过时间线展示消息传递的先后顺序,使复杂交互过程易于理解。
协作图的选取原则:
- 强调对象间的关系:展示对象之间的链接和关系结构,适用于静态连接和通信路径的展示。
- 展示对象的结构关系:描述对象如何协作完成任务,强调对象之间的静态结构和协作方式。
- 突出对象间的通信:适用于展示对象间的通信和交互,而不是时间顺序,清晰展示对象之间的消息传递和关联关系。
3、UML时序图表示条件分支序列片段有哪些?
序列片段 | 含义 | 使用场景 | 示例标注 |
---|---|---|---|
alt(Alternative) | 条件分支,相当于 if…else… | 有多种互斥条件时使用 | [余额 > 100] → 扣费成功``[余额 ≤ 100] → 扣费失败 |
opt(Option) | 可选分支,相当于 if(条件) | 只有一个条件时使用 | [用户已登录] → 显示欢迎页 |
loop(Loop) | 循环执行,相当于 for / while | 某交互重复执行 | [i=1..n] 或 [while 条件] |
par(Parallel) | 并行执行 | 多个消息可以并发发生 | 并行处理:A→B,C→D |
break(Break) | 中断,退出序列 | 满足条件时提前终止 | [错误发生] → 中断操作 |
region(Critical Region) | 临界区,互斥执行 | 并发时只允许一个执行 | 临界区内的消息互斥 |
neg(Negative) | 非法序列,表示禁止的交互 | 说明某些消息序列不应出现 | [非法输入] → 拒绝处理 |
seq(Weak Sequencing) | 弱顺序,允许部分交错 | 串行但允许局部并行 | 两个片段之间顺序保证,片段内部可交错 |
strict(Strict Sequencing) | 严格顺序,完全串行 | 片段必须完全按顺序执行 | 先 A 完全结束,再执行 B |