第1题(案例题):阅读以下关于软件架构设计与评估的叙述,回答问题1和问题2。
【说明]某公司拟开发一套在线软件开发系统,支持用户通过浏览器在线进行软件开发活动。该系统的重要功能包括代码编辑、语法高亮显示、代码编译、系统调试、代码仓库管理等。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
a)根据用户的付费情况对用户进行分类,并根据类别提供相应的开发功能;
b)在正常负载情况下,系统应该在0.2s内对用户的界面操作请求进行响应;
c)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测和防御;
d)系统主站点断电后,应在3s内将请求重定向到备用站点;
e)系统支持中文昵称,但用户名必须以字母开头,长度不少于8个字符;
f)系统宕机后,需要在15s内发现错误并启用备用系统;
g)在正常负载情况下,用户的代码提交请求应在0.5s内完成;
h)系统支持硬件设备灵活扩容,应保证在2人·天内完成所有的部署与测试工作;
i)系统需要针对代码仓库的所有操作进行详细记录,便于后期查阅与审计;
j)更改系统web界面风格需要在4人·天内完成;
k)系统本身需要提供远程调试接口,支持开发团队进行远程排错;
在对系统需求、质量属性和架构特性进行分析的基础上,该公司的系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对候选系统架构进行评估
【问题1】(13分)针对该系统的功能,李工建议采用管道过滤器(pipe andfilter)的架构风格,而王工则建议采用仓库(repository)架构风格。请指出该系统更适合采用哪种架构风格,针对系统的主要功能,从数据处理方式、系统的可扩展性和处理性能三个方面对这两种架构风格进行比较与分析,填写表1-1中的(1)~(4)空白处。

【问题2】(12分)在架构评估过程中,质量属性效用树(utilitytree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称填入图1-2中(1)、(2)空白处,并选择干描述的(a)~(k)填入(3)~(6)空白处,完成该系统的效用树。

【问题1解答】
1.应该采用仓库风格。(5分)
2.表(1)-(4)空的空白处分别为:(8分)
(1)数据存储在中心仓库,处理流程独立,支持交互式处理
(2)数据与处理紧密关联,调整处理流程需要系统重新启动
(3)数据与处理分离,需要加载数据,性能降低
(4)数据处理组件之间一般无依赖关系,可并发调用,提高性能:
【问题2解答】(12分)
(1)安全性(2)可修改性 (3)g(4)i(5)f(6)j
第2题(案例题):阅读下列说明,回答问题1至问题3,将解答填入对应栏内。
【说明】某企业委托软件公司开发一套包裹信息管理系统,以便于对该企业通过快递收发的包裹信息进行统一管理。在系统设计阶段,需要对不同快递信息的包裹单信息进行建模,其中,邮政包裹单如图2-1所示:

【问题1】(14分)请说明关系型数据库开发中,逻辑数据模型设计过程包含哪些任务?该包裹单的逻辑数据模型中应该包含哪些实体?并指出每个关:系模式的主键属性。
【问题2](6分)请说明什么是超类实体?结合图中包裹单信息,试设计一种超类实体,给出完整的属性列表。
【问题3】(5分)请说明什么是派生属性?结合图2-1中包裹单信息说明哪个属性是派生属性。
【问题1解答】逻辑数据模型设计过程包含的任务:
(1)构建系统上下文数据模型,包含实体及实体之间的联系;
(2)绘制基于主键的数据模型,为每个实体添加主键属性;
(3)构建全属性数据模型,为每个实体添加非主键属性;
(4)利用规范化技术建立系统规范化数据模型。
包裹单的逻辑数据模型中包含的实体:
(1)收件人(主键:电话);
(2)寄件人(主键:电话);
(3)包裹单(主键:编号)。
【问题2解答】
超类实体是将多个实体中相同的属性组合起来构造出的新实体。
用户(姓名、电话、单位名称、详细地址)
【问题3解答】
派生属性是指某个实体的非主键属性由该实体其他非主键属性决定。包裹单中的总计是由资费、挂号费、保价费、回执费计算得出,所以是派生属性。
第3题:嵌入式省略
第4题(案例题):阅读以下关于数据库缓存的叙述,回答问题1至问题3。
【说明】某互联网文化发展公司因业务发展,需要建立网上社区平台,为用户提供一个对网络文化产品(如互联网小说、电影、漫画等)进行评论、交流的平台。该平台的部分功能如下:(a)用户帖子的评论计数器;(b)支持粉丝列表功能;(c)支持标签管理;(d)支持共同好友功能等;(e)提供排名功能,如当天最热前10名帖子排名、热搜榜前5排名等;(f)用户信息的结构化存储;(g)提供好友信息的发布/订阅功能。该系统在性能上需要考虑高性能、高并发,以支持大量用户的同时访问。开发团队经过综合考虑,在数据管理上决定采用Redis+数据库(缓存+数据库)的解决方案。
【问题1】(10分)Redis支持丰富的数据类型,并能够提供一些常见功能需求的解决方案。请选择题干描述的(a)~(g)功能选项,填入表4-1中(1)~(5)的空白处。

【问题2】(7分)该网上社区平台需要为用户提供7x24小时的不间断服务。同时在系统出现宕机等故障时,能在最短时间内通过重启等方式重新建立服务。为此,开发团队选择了Redis持久化支持。Redis有两种持久化方式,分别是RDB(Redis DataBase)持久化方式和AOF(Append OnlyFile)持久化方式。开发团队最终选择了RDB方式。请用200字以内的文字,从磁盘更新频率、数据安全、数据一致性、重启性能和数据文件大小五个方面比较两种方式,并简要说明开发团队选择RDB的原因。
【问题3】(8分)缓存中存储当前的热点数据,Redis为每个KEY值都设置了过期时间,以提高缓存命中率。为了清除非热点数据,Redis选择"定期删除+惰性删除”策略。如果该策略失效,Redis内存使用率会越来越高,一般应采用内存淘汰机制来解决。请用100字以内的文字简要描述该策略的失效场景,并给出三种内存淘汰机制。
【问题1解答】(1) (a) (2)(b)、(g)(3) (c)、(d)(4) (f) (5) (e)
【问题2解答】磁盘更新频率:AOF比RDB文件更新频率高。数据安全:AOF比RDB更安全。数据一致性:RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF通过append模式写文件,即使发生服务器宕机,也可通过redis-check-aof 工具解决数据一致性问题重启性能:RDB性能比AOF好。数据文件大小:AOF文件比RDB文件大。综合上述五个方面的比较,考虑在系统出现宕机等故障时,需要在最短时间内通过重启等方式重新建立服务,因此开发团队最终选择了RDB方式。
【问题3解答】失效场景:如果“定期删除”没删除KEY,也没即时去请求KEY,也就是说”惰性删除“也没生效。这样,Redis默认的”定期删除+惰性删除”策略就失效了。
对此,可采用内存淘汰机制解决:
(1)从已设置过期时间的数据集最近最少使用的数据淘汰。
(2)从已设置过期时间的数据集将要过期的数据淘汰。
(3)从已设置过期时间的数据集任意选择数据淘汰。
(4)从数据集最近最少使用的数据淘汰。
(5)从数据集任意选择数据淘汰。
第5题(案例题):阅读以下关于Web系统架构设计的叙述,回答问题1至问题3。
【说明】某公司拟开发一款基于Web的工业设备检测系统,以实现对多种工业数据的分类采集,运行状态检测以及相关信息的管理。该系统应具备以下功能:现场设备状态采集功能:根据数据类型对设备检测指标状态信号进行分类采集;设备采集数据传输功能:利用可靠的传输技术,实现将设备数据从制造现场传输到系统后台;设备检测显示功能:对设备的运行状态、工作状态以及报警状态进行检测并提供相应的图形化界面;设备信息管理功能:支持设备运行历史状态,报警记录、参数信息的查询。同时,该系统还需满足以下非功能性需求:(a)系统应支持大于100个工业设备的运行检测;(b)设备数据从制造现场传输到系统后台传输时间小于1s;(c)系统应在7*24小时工作;(d)可抵御常见XSS攻击;(e)系统在故障情况下,应在0.5小时内恢复;(f)支持数据审计。面对系统需求,公司召开项目讨论会议,制定系统设计方案,最终决定使用三层拓扑结构,即现场设备数据采集层、Web检测服务层和前端Web显示层。
【问题1】(6分)请按照性能、安全性和可用性三种非功能性需求分类将题干的(a)~(f)填入(1)~(3)空白处。非功能性需求归类表:

【问题2】(14分)该系统Web检测服务层拟采用SSM框架进行系统研发。SSM工作流程图如下图5-1所示,请从下面给出的(a)~(k)中进行选择,补充完善图5-1中(1)~(7)处空白的内容

【问题3】(5分)该工业设备检测系统拟采用工业控制领域中统一的数据访问机制,实现与各种不同设备的数据交互,请用100以内的文字说明采用标准的数据访问机制的原因。
【问题1解答】(1)a、b (2)d、f (3)c、e
【问题2解答】 (1)a (2)c (3)d (4)k (5)j(6)h (7)i
【问题3解答】该工业设备检测系统需与不同设备进行数据交互,采用标准的数据访问机制,可以在硬件供应商和软件开发商之间建立一套完整的规则。只要遵循这套规则,数据交互对两者透明的,硬件供应商只需考虑应用程序的多种需求和传输协议,软件开发商也不必了解硬件的实质和操作过程,实现对设备数据采集的统一管理。
相关知识总结
1.1管道过滤器和仓库架构风格
管道-过滤器:
数据处理方式:数据驱动机制,处理流程事先确定,交互性差
系统拓展方式:数据与处理紧密关联,扩展或调整过滤器时需要确保数据格式和流程的一致性(组件与组件之间需要标准的接口定义),扩展复杂 处理性能:劣势:需要数据格式转换,性能降低;优势:支持过滤器并发调用,性能提高
仓库:
数据处理方式:以数据为中心,处理与数据独立,交互性更好,支持交互式处理
系统扩展方式:数据与处理解耦和,可动态添加和删除处理组件
处理性能:需要加载数据,数据量大时,数据交流频繁,性能较低;优势:处理组件之间无依赖关系,可并行操作,性能提高
2.1 请说明关系型数据库开发中,逻辑数据模型设计过程包含哪些任务?
(1)确定数据模型、
(2)将E-R图转换成为指定的数据模型
(3)确定完整性约束
(4)确定用户视图
2.2 什么是超类实体?
超类实体是将多个实体中相同的属性组合起来构造出新的实体。
2.3 什么是派属性?
派送属性是指某个实体的非主键属性由该实体其他属性计算得出的属性。
派生属性指不必单独存储,而可通过计算得出的属性。它的值依赖于同一实体或相关实体的其他属性。
3.1 Redis 五种数据类型的特性与业务场景
STRING::字符串、整数或浮点数。String 类型支持原子增减(INCR/DECR命令),适合实现评论数、点赞数等计数器功能。
LIST::列表。List列表类型支持双向队列操作,可作为轻量级消息队列实现发布 / 订阅功能,也可用于实现时间线、消息流等场景。
SET::无序集合。Set类型天然去重,支持交集、并集、差集操作,适合粉丝列表(去重)、标签管理(去重标签)、共同好友(交集计算)等场景。
HASH::包括键值对的无序散列表。Hash 类型适合存储对象,可直接存储用户信息的多个字段(如昵称、头像、简介),无需序列化整个对象,读写效率高。
ZSET::有序集合。ZSET(有序集合)支持按分数排序,可通过ZRANGE/ZREVRANGE快速获取 Top N 数据,完美适配排行榜场景。
3.2 请用200字以内的文字,从磁盘更新频率、数据安全、数据一致性、 重启性能和数据文件大小五个方面比较两种方式(RDB,AOF),并简要说明开发团队选择RDB的原因。
磁盘更新频率:RDB方式在指定时间间隔将内存中的数据快照保存到磁盘中,AOF则是实时记录每次写操作到磁盘
数据安全性:AOF方式,更好保证数据安全性。增加磁盘IO负担
数据一致性:RDB方式在快照时刻保存数据,在上一次保存快照之后的数据,发生故障后可能丢失;AOF通过记录每次写操作,数据更加完整和一致。
重启性能:RDB方式重启速度较快,只需要将磁盘中的文件读入到内存即可,AOF需要重新执行日志文件中的写操作,重启时间长
数据文件大小:AOF数据文件通常更大,AOF记录了每次写操作
3.3 缓存中存储当前的热点数据,Redis 为每个KEY值都设置了过期时间,以提高缓存命中率。为了清除非热点数据,Redis 选择"定期删除+惰性删除"策略。如果该策略失效,Redis内存使用率会越来越高,一般应采用内存淘汰机制来解决。请用100字以内的文字简要描述该策略的失效场景,并给出三种内存淘汰机制。
失效场景:过期键的定期删除测量,随机检查一部分键的过期时间,并删除其中的过期键,如果没有检查到的过期键则不会被删除;惰性删除,访问一个键时,Redis判定这个键是否过期,如果过期就立即删除,当外部在这段时间内没有去查询这个key,则无法惰性删除该过期键。
淘汰机制解决:
(1)从已过期的数据集最近最少使用的数据淘汰
(2)从已设置过期时间的数据集将要过期的数据淘汰
(3)从已设置过期时间的数据集随机选择数据淘汰
(4)从数据集最近最少使用的数据淘汰
(5)从数据集随机选择数据淘汰