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 and filter) 的架构风格,而王工则建议采用仓库(repository)架构风格。请指出该系统更适合采用哪种架构风格,并针对系统的主要功能,从数据处理方式、系统的可扩展性和处理性能三个方面对这两种架构风格进行比较与分析,填写表1-1中的(1)~ (4)空白处。
[问题2] (12 分)
在架构评估过程中,质量属性效用树(utilitytree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称填入图1-1中(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、阅读以下关于开放式嵌入式软件架构设计的相关描述,回答问题1至问题3。
[说明]
某公司一直从事宇航系统研制任务,随着宇航产品综合化、网络化技术发展的需要,公司的业务量急剧增加,研制新的软件架构已迫在眉睫。公司架构师王工广泛调研了多种现代架构的基础,建议采用基于FACE (Future Ai rborne Capabi li ty Envi ronment)的宇航系统开放式软件架构,以实现宇航系统的跨平台复用,实现宇航软件高质量、低成本的开发。公司领导肯定了王工的提案,并指出公司要全面实施基于FACE的开放式软件架构,应注意每个具体项目在实施中如何有效实现从需求到架构设计的关系,掌握基于软件需求的软件架构设计方法,并做好开放式软件架构中各段间的接口标准化设计工作。
[问题1] (9分)
王工指出,软件开发中需求分析是根本,架构设计是核心,不考虑软件需求便进行软件架构设计很可能导致架构设计的失败,因此,如何把软件需求映射到软件架构至关重要。请从描述语言、非功能性需求描述、需求和架构的一致性等三个方面,用 300字以内的文字说明软件需求到架构的映射存在哪些难点。
[问题2] (10分)
图3-1是王工给出的FACE架构布局,包括操作系统、I/O 服务、平台服务、传输服务和可移植组件等5个段;操作系统、I/0 和传输等3个标准接口。请分析图3-1给出的FACE架构的相关信息,用300字以内的文字简要说明FACE5个段的含义。
[问题3] (6 分)
FACE架构的核心能力是可支持应用程序的跨平台执行和可移植性,要达到可移植能力,必须解决应用程序的紧耦合和封装的障碍。请用200字以内的文字简要说明在可移植性上,应用程序的紧耦合和封装问题的主要表现分别是什么,并给出解决方案。
参考答案:
[问题1]
(1)需求和架构描述语言存在差异:软件需求是频繁获取的非正规的自然语言,而软件架构常用的是一种正式语言。
(2)非功能属性难于在架构中描述:系统属性中描述的非功能性需求通常很难在架构模型中形成规约。
(3)需求和架构的一致性难以保障:从软件需求映射到软件架构的过程中,保持-.致性和可追溯性很难,且复杂程度很高,因为单一的软件需求可能定位到多个软件架构的关注点。反之,架构元素也可能有多个软件需求。
[问题2]
操作系统服务段:为FACE架构其他段提供操作系统、运行时和操作系统级健康监控等服务。通过开放式OSGi框架为上层功能提供OS标准接口,并可实现上层组件的即插即用能力。I/0服务段:主要针对专用I/O设备进行抽象,屏蔽平台服务段软件与硬件设备的关系。由于图形服务软件和GPU处理器紧密相关,因此I/0服务段不对GPU驱动进行抽象。,平台服务段:主要是指用户需要的共性软件,如:系统级健康监控(HM)、配置、日志和流媒体等服务。本段可包括平台公共服务、平台设备服务和平台图像服务等三类。传输服务段:主要为.上层可移植组件段提供平台性的数据交换服务。可移植组件将通过传输服务段提供的服务实现交换,禁止组件间直接调用。可移植组件段:提供了多组件使用能力和功能服务。主要包括公共服务和可移植组件两类。
[问题3]
紧耦合问题主要表现在: I/O 问题、业务逻辑问题和表现问题。解决方案:可采用分离原则,通过隔离实现硬件特定信息和少数模块的代码,减少耦合性。封装问题主要表现在: ICD 硬编码问题、组件的紧耦合问题、直接调用问题。解决方案:可以通过提供数据源或槽的软件服务的方法,将紧耦合组件分解出应用程序,并将平台相关部分加入计算环境中,在计算平台内提供数据源或槽的软件服务,并实现接口标准化。
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)处空白的内容。
(a)Connection Pool
(b) Struts2
(c)Persi stent Layer
(d)Mybatis
(e)HTTP
(f)MVC
(g)Kafka
(h) View Layer
(i )JSP
(j)Controller Layer
(k)Spring
[问题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]
该工业设备检测系统需与不同设备进行数据交互,采用标准的数据访问机制可以在硬件供应商
和软件开发商之间建立一套完整的规则。只要遵循这套规则,数据交互对两者来说都是透明
的,硬件供应商只需考虑应用程序的多种需求和传输协议,软件开发商也不必了解硬件的实质
和操作过程,实现对设备数据采集的统一管 理。