[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题

必答题-试题一(软件架构设计与评估)

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

图片[1]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

【问题 2】(12分)
请分析题干中的需求描述,填写图 1-2 中(1)~ (6)处的空白。

图片[2]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

1.应该采用仓库风格。(5分)
2.表(1)-(4)空的空白处分别为:(8分)
(1)数据存储在中心仓库,处理流程独立,支持交互式处理
(2)数据与处理紧密关联,调整处理流程需要系统重新启动
(3)数据与处理分离,需要加载数据,性能降低
(4)数据处理组件之间一般无依赖关系,可并发调用,提高性能

【解析】
在管道-过滤器风格的软件体系结构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
在仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。一方面,若构件控制共享数据,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
通过交互方式、数据结构、控制结构和扩展方法分别对仓库风格和管道过滤器风格进行对比,如下所示:
交互方式:管道-过滤器很明显是顺序结构或循环结构,数据在管理中进行传递。而仓库结构是数据在中心位置,所有的处理均是中心节点与周边节点之间的交互,从形态来看,是星型的。
数据结构:从数据结构来看,仓库风格会使用一个文件将数据保存起来,所有的操作围绕这个文件进行。而管道-过滤器则是在过滤器之间传递数据流。
控制结构:从控制结构来说仓库风格是业务功能驱动,而管道-过滤器是由数据流驱动的。
扩展方法:从扩展方法来讲,管道-过滤器是通过过滤器提供标准接口与其它过滤器对接,而数据仓库风格,要共享数据,扩展功能,只要功能的操作与数据模型本身是匹配的就行了,就像我们要共享一个数据库做系统集成,此时共享同一数据库的多个应用系统所用的数据模型一定会是一致的,否则无法去共享。

(1)安全性
(2)可修改性
(3)g
(4)i
(5)f
(6)j

【解析】
本题主要考查考生对于软件质量属性的理解、掌握和应用。本题考查的是架构设计过程中涉及的一些质量属性,以及架构风格的对比。常用的质量属性包括:
1、性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。
2、可靠性
可靠性(reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
3、可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
4、安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。
5、可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
6、易用性
软件开发工具应有十分友好的用户界面,用户乐于使用;工具应能剪裁和定制,以适应特定用户的需要;工具应能提示用户的交互操作,提供简单有效的执行方式;工具还应能检查用户的操作错误,尽可能自动改正错误。
识别软件架构质量属性是进行架构设计的重要步骤。根据对相关质量属性的定义和含义,其中:“c)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测和防御”、“i)系统需要针对代码仓库的所有操作进行详细记录;便于后期查阅与审计”属于安全性;“h)系统支持硬件设备灵活扩容,应保证在2人•天内完成”、“j)更改系统web界面风格需要在4人•天内完成”描述的是系统的可修改性;“g)在正常负载情况下,用户的代码提交请求应在0.5s内完成”描述的是性能属性;“d)系统主站点断电后,应在3s内将请求重定向到备用站点”、“f)系统宕机后,需要在15s内发现错误,并启用备用系统” 描述的是系统的可用性。

选做题-试题二(关系型数据库开发)

某企业委托软件公司开发一套包裹信息管理系统,以便于对该企业通过快递收发的包裹信息进行统一管理。在系统设计阶段,需要对不同快递信息的包裹单信息进行建模,其中,邮政包裹单如图2-1所示:

图片[3]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

图2-1 包裹单示意图

【问题1】(14分)
请说明关系型数据库开发中,逻辑数据模型设计过程包含哪些任务?该包裹单的逻辑数据模型中应该包含哪些实体?并指出每个关系模式的主键属性。

【问题2】(6分)
请说明什么是超类实体?结合图中包裹单信息,试设计一种超类实体,给出完整的属性列表。

【问题3】(5分)
请说明什么是派生属性?结合图2-1中包裹单信息说明哪个属性是派生属性。

逻辑数据模型设计过程包含的任务:
(1)构建系统上下文数据模型,包含实体及实体之间的联系;
(2)绘制基于主键的数据模型,为每个实体添加主键属性;
(3)构建全属性数据模型,为每个实体添加非主键属性;
(4)利用规范化技术建立系统规范化数据模型。
包裹单的逻辑数据模型中包含的实体:
(1)收件人(主键:电话);
(2)寄件人(主键:电话);
(3)包裹单(主键:编号)。

超类实体是将多个实体中相同的属性组合起来构造出的新实体。
用户(姓名、电话、单位名称、详细地址)

【解析】
当较低层次上实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较高层次上实体类型为超类型,反之为子类型。子类到超类的过程为概化,超类到子类的过程为特化。
①子类与超类之间具有继承特点,即子类包含了超类的所有属性,并且可以比超类拥有更多的属性。
②这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。

派生属性是指某个实体的非主键属性由该实体其他非主键属性决定。
包裹单中的总计是由资费、挂号费、保价费、回执费计算得出,所以是派生属性。

【解析】
可以从其它属性得来的属性就叫派生属性。包裹图中的“总计”属性是派生属性。可以从资费、挂号费、保价费、回执费累加计算出来。

选做题-试题三(开放式嵌入式软件架构设计)

某公司一直从事宇航系统研制任务,随着宇航产品综合化、网络化技术发展的需要,公司的业务量急剧增加,研制新的软件架构已迫在眉睫。公司架构师王工广泛调研了多种现代架构的基础,建议采用基于FACE (Future Airborne Capability Environment)的宇航系统开放式软件架构,以实现宇航系统的跨平台复用,实现宇航软件高质量、低成本的开发。公司领导肯定了王工的提案,并指出公司要全面实施基于FACE的开放式软件架构,应注意每个具体项目在实施中如何有效实现从需求到架构设计的关系,掌握基于软件需求的软件架构设计方法,并做好开放式软件架构中各段间的接口标准化设计工作。

【问题1】(9分)
王工指出,软件开发中需求分析是根本,架构设计是核心,不考虑软件需求便进行软件架构设计很可能导致架构设计的失败,因此,如何把软件需求映射到软件架构至关重要。请从描述语言、非功能性需求描述、需求和架构的一致性等三个方面, 用300字以内的文字说明软件需求到架构的映射存在哪些难点。

【问题2】(10分)
图3-1是王工给出的FACE架构布局,包括操作系统、I/O 服务、平台服务、传输服务和可移植组件等5个段;操作系统、I/O和传输等3个标准接口。请分析图3-1给出的FACE架构的相关信息,用300字以内的文字简要说明FACE5个段的含义。

图片[4]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

【问题3】(6分)
FACE架构的核心能力是可支持应用程序的跨平台执行和可移植性,要达到可移植能力,必须解决应用程序的紧耦合和封装的障碍。请用200字以内的文字简要说明在可移植性上,应用程序的紧耦合和封装问题的主要表现分别是什么,并给出解决方案。

(1)软件需求通常以非正规的自然语言形式频繁获取。而软件架构则更倾向于使用一种更为正式、结构化的语言来描述系统的组件、接口、通信和交互方式。
(2)非功能属性(如性能、安全性、可用性等)在软件需求中通常被描述为系统属性,但在架构模型中形成规约却较为困难。这是因为非功能属性往往涉及多个系统组件和交互,需要综合考虑多个方面,而架构模型则可能更侧重于描述系统的结构和功能。
(3)从软件需求映射到软件架构的过程中,保持一致性和可追溯性也是一个复杂的任务。由于单一的软件需求可能涉及多个软件架构的关注点,而一个架构元素也可能对应多个软件需求,因此确保它们之间的映射关系是准确且可追溯的非常重要。

【解析】
在软件开发过程中,软件需求和软件架构是两个至关重要的组成部分,但它们之间确实存在一些明显的差异和挑战。
首先,软件需求通常以非正规的自然语言形式频繁获取,这主要是因为需求往往来源于业务用户、产品经理或利益相关者,他们习惯于使用日常语言和概念来表达他们的期望和需要。而软件架构则更倾向于使用一种更为正式、结构化的语言来描述系统的组件、接口、通信和交互方式。这种语言差异可能会导致在理解和沟通上的障碍。
其次,非功能属性(如性能、安全性、可用性等)在软件需求中通常被描述为系统属性,但在架构模型中形成规约却较为困难。这是因为非功能属性往往涉及多个系统组件和交互,需要综合考虑多个方面,而架构模型则可能更侧重于描述系统的结构和功能。因此,如何在架构中准确、全面地描述非功能属性是一个挑战。
最后,从软件需求映射到软件架构的过程中,保持一致性和可追溯性也是一个复杂且困难的任务。由于单一的软件需求可能涉及多个软件架构的关注点,而一个架构元素也可能对应多个软件需求,因此确保它们之间的映射关系是准确且可追溯的非常重要。这需要采用适当的需求管理和架构设计技术,以确保需求和架构之间的紧密联系和对应关系。

操作系统服务段:这是FACE架构的基础,负责提供操作系统、运行时环境和操作系统级的健康监控服务。它通过开放式OSGi框架,为上层功能提供标准化的操作系统接口,并支持上层组件的即插即用能力。
I/O服务段:这个服务段主要负责对专用I/O设备进行抽象,以简化平台服务段软件与硬件设备之间的交互。然而,由于图形服务软件和GPU处理器的紧密关系,I/O服务段并不对GPU驱动进行抽象。
平台服务段:此服务段提供了用户所需的共性软件服务,如系统级健康监控、配置管理、日志记录和流媒体服务等。它进一步细分为平台公共服务、平台设备服务和平台图像服务三类。
传输服务段:作为数据传输的核心,该服务段主要为上层可移植组件段提供平台性的数据交换服务。它确保可移植组件之间通过标准接口进行通信,禁止组件间的直接调用。
可移植组件段:这是FACE架构中提供多组件使用能力和功能服务的部分。它主要包括公共服务和可移植组件两类。

【解析】
FACE架构由五个主要的服务段组成,每个服务段都扮演着特定的角色,以确保系统的高效、可靠和模块化运行。以下是这五个服务段的简要描述:
操作系统服务段:这是FACE架构的基础,负责提供操作系统、运行时环境和操作系统级的健康监控服务。它通过开放式OSGi框架,为上层功能提供标准化的操作系统接口,并支持上层组件的即插即用能力,使得系统的扩展和维护变得更为便捷。
I/O服务段:这个服务段主要负责对专用I/O设备进行抽象,以简化平台服务段软件与硬件设备之间的交互。然而,由于图形服务软件和GPU处理器的紧密关系,I/O服务段并不对GPU驱动进行抽象,以确保图形处理的高效性和直接性。
平台服务段:此服务段提供了用户所需的共性软件服务,如系统级健康监控、配置管理、日志记录和流媒体服务等。它进一步细分为平台公共服务、平台设备服务和平台图像服务三类,以满足不同应用场景的需求。
传输服务段:作为数据传输的核心,该服务段主要为上层可移植组件段提供平台性的数据交换服务。它确保可移植组件之间通过标准接口进行通信,禁止组件间的直接调用,从而提高了系统的可移植性和互操作性。
可移植组件段:这是FACE架构中提供多组件使用能力和功能服务的部分。它主要包括公共服务和可移植组件两类,使得开发者能够基于这些组件快速构建和部署应用程序,同时确保这些应用程序在不同平台上的可移植性。
综上所述,FACE架构的五个服务段共同协作,为开发者提供了一个高效、可靠和模块化的软件开发环境。

(1)紧耦合问题通常指的是系统中不同部分之间的高度依赖关系。主要变现在:I/O问题、业务逻辑问题、表现问题。
为了解决紧耦合问题,可以采用分离原则。这意味着将系统的不同部分(如I/O、业务逻辑、表现层等)进行隔离,使得它们之间的依赖关系尽可能少。
(2)封装通过将对象的属性和方法隐藏起来,只提供必要的接口供外部调用,主要表现在:
ICD硬编码问题、组件的紧耦合问题、直接调用问题
为了解决封装问题,可以采用提供数据源或槽的软件服务的方法。将紧耦合组件分解出应用程序,并将平台相关部分加入计算环境中,在计算平台内提供数据源或槽的软件服务,并实现接口标准化。

【解析】
紧耦合问题通常指的是系统中不同部分之间的高度依赖关系,这种依赖关系可能导致系统难以维护、扩展和测试。
I/O问题:当I/O操作(如文件读写、网络通信等)与业务逻辑紧密耦合时,任何I/O操作的更改都可能影响到整个业务逻辑,使得系统难以维护和扩展。
业务逻辑问题:如果业务逻辑与底层系统(如数据库、文件系统等)紧密耦合,那么在业务逻辑发生更改时,可能需要同时修改底层系统,这增加了系统的复杂性和维护成本。
表现问题:如果用户界面与业务逻辑紧密耦合,那么任何用户界面的更改都可能影响到业务逻辑,这限制了用户界面的灵活性和可定制性。
为了解决紧耦合问题,可以采用分离原则。这意味着将系统的不同部分(如I/O、业务逻辑、表现层等)进行隔离,使得它们之间的依赖关系尽可能少。通过定义明确的接口和协议,不同部分之间可以通过这些接口进行通信,而不需要直接访问对方的内部实现。
接下来,我们来看封装问题。封装是面向对象编程中的一个重要概念,它通过将对象的属性和方法隐藏起来,只提供必要的接口供外部调用,从而保护对象的内部状态和数据安全。然而,在某些情况下,封装可能会出现问题,如:
ICD硬编码问题:当接口控制文档(ICD)中的信息被硬编码到代码中时,任何ICD的更改都需要修改代码,这增加了系统的维护成本。
组件的紧耦合问题:如果组件之间的依赖关系过于紧密,那么一个组件的更改可能会影响到其他组件,导致系统难以维护和扩展。
直接调用问题:当组件之间直接调用彼此的接口时,如果接口发生变化,可能需要修改多个组件的代码,这增加了系统的复杂性。
为了解决封装问题,可以采用提供数据源或槽的软件服务的方法。这意味着将紧耦合的组件分解出应用程序,并将平台相关部分加入计算环境中。在计算平台内,提供数据源或槽的软件服务,这些服务可以封装底层系统的复杂性和变化性,为上层应用提供稳定、可靠的接口。同时,通过实现接口标准化,可以确保不同组件之间可以通过标准接口进行通信,降低了系统的复杂性和维护成本。

选做题-试题四(数据库缓存)

某互联网文化发展公司因业务发展,需要建立网上社区平台,为用户提供一个对网络文化产品(如互联网小说、电影、漫画等)进行评论、交流的平台。该平台的部分功能如下:
(a)用户帖子的评论计数器;
(b)支持粉丝列表功能;
(c)支持标签管理;
(d)支持共同好友功能等;
(e)提供排名功能,如当天最热前10名帖子排名、热搜榜前5排名等;
(f)用户信息的结构化存储;
(g)提供好友信息的发布/订阅功能。
该系统在性能上需要考虑高性能、高并发,以支持大量用户的同时访问。开发团队经过综合考虑,在数据管理上决定采用Redis+数据库(缓存+数据库)的解决方案。

【问题1】(10分)
Redis支持丰富的数据类型,并能够提供一些常见功能需求的解决方案。请选择题干描述的(a) ~ (g) 功能选项,填入表4-1中(1) ~ (5)的空白处。

图片[5]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

【问题2】(7分)
该网上社区平台需要为用户提供7×24小时的不间断服务。同时在系统出现宕机等故障时,能在最短时间内通过重启等方式重新建立服务。为此,开发团队选择了Redis 持久化支持。Redis有两种持久化方式,分别是RDB(Redis DataBase)持久化方式和AOF (Append OnlyFile)持久化方式。开发团队最终选择了RDB方式。请用200字以内的文字,从磁盘更新频率、数据安全、数据一致性、 重启性能和数据文件大小五个方面比较两种方式,并简要说明开发团队选择RDB的原因。

【问题3】(8分)
缓存中存储当前的热点数据,Redis 为每个KEY值都设置了过期时间,以提高缓存命中率。为了清除非热点数据,Redis 选择“定期删除+惰性删除”策略。如果该策略失效,Redis内存使用率会越来越高,一般应采用内存淘汰机制来解决。请用100字以内的文字简要描述该策略的失效场景,并给出三种内存淘汰机制。

(1) (a)
(2) (b)、(g)
(3) (c)、(d)
(4) (f)
(5) (e)

图片[6]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

磁盘更新频率:AOF比RDB文件更新频率高。
数据安全:AOF比RDB更安全。
数据一致性: RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF 通过append模式写文件,即使发生服务器宕机,也可通过redis-check-aof 工具解决数据一致性问题。
重启性能:RDB性能比AOF好。
数据文件大小:AOF 文件比RDB文件大。
综合上述五个方面的比较,考虑在系统出现宕机等故障时,需要在最短时间内通过重启等方式重新建立服务,因此开发团队最终选择了RDB方式。

【解析】
Redis中的两种主要持久化机制:RDB(Redis Database)和AOF(Append Only File)。RDB是通过在指定的时间间隔内将内存中的数据集快照写入磁盘来实现持久化的,而AOF则是将每一个写命令都追加到日志文件中。
两种方式的比较主要包括:(1)磁盘更新频率:AOF比RDB文件更新频率高。(2)数据安全:AOF比RDB更安全。(3)数据一致性:RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF通过append模式写文件,即使发生服务器宕机,也可通过 redis-check-aof工具解决数据一致性问题。(4)重启性能:RDB性能比AOF好。(5)数据文件大小:AOF文件比RDB文件大。
然后在系统出现宕机等故障时,需要在最短时间内通过重启等方式重新建立服务,重启性能成为选择持久化机制时最需要考虑的因素。在这种情况下,RDB持久化方式确实是一个合适的选择,因为它在重启时能够更快地加载数据,从而更快地恢复服务。

失效场景:如果“定期删除”没删除KEY,也没即时去请求KEY,也就是说“惰性删除”也没生效。这样,Redis 默认的“定期删除+惰性删除”策略就失效了。
对此,可采用内存淘汰机制解决:
(1)从已设置过期时间的数据集最近最少使用的数据淘汰。
(2)从已设置过期时间的数据集将要过期的数据淘汰。
(3)从已设置过期时间的数据集任意选择数据淘汰。
(4)从数据集最近最少使用的数据淘汰。
(5)从数据集任意选择数据淘汰。

【解析】
过期策略:即redis针对过期的key使用的清除策略,策略为:定期删除+惰性删除。
1、定期删除:
redis会将每个设置了过期时间的key放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的key。redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢?你想一想假如redis存了几十万个key ,每隔100ms就遍历所有的设置过期时间的key的话,就会给CPU带来很大的负载。
2、惰性删除:
所谓惰性策略就是在客户端访问这个key的时候,redis对key的过期时间进行检查,如果过期了就立即删除,不会给你返回任何东西。
定期删除可能会导致很多过期key到了时间并没有被删除掉。所以就有了惰性删除。假如你的过期 key,靠定期删除没有被删除掉,还停留在内存里,除非你的系统去查一下那个 key,才会被redis给删除掉。这就是所谓的惰性删除,即当你主动去查过期的key时,如果发现key过期了,就立即进行删除,不返回任何东西。
由于redis定期删除是随机抽取检查,不可能扫描清除掉所有过期的key并删除,然后一些key由于未被请求,惰性删除也未触发。这样redis的内存占用会越来越高。此时就需要内存淘汰机制。
主要有如下一些策略:
1、volatile-lru:从设置过期时间的数据集中挑选出最近最少使用的数据淘汰。没有设置过期时间的key不会被淘汰,这样就可以在增加内存空间的同时保证需要持久化的数据不会丢失。
2、volatile-ttl:除了淘汰机制采用LRU,策略基本上与volatile-lru相似,从设置过期时间的数据集中挑选将要过期的数据淘汰,ttl值越小越优先被淘汰。
3、volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。当内存达到限制无法写入非过期时间的数据集时,可以通过该淘汰策略在主键空间中随机移除某个key。
4、allkeys-lru:从数据集中挑选最近最少使用的数据淘汰,该策略要淘汰的key面向的是全体key集合,而非过期的key集合。
5、allkeys-random:从数据集中选择任意数据淘汰。
6、no-enviction:禁止驱逐数据,也就是当内存不足以容纳新入数据时,新写入操作就会报错,请求可以继续进行,线上任务也不能持续进行,采用no-enviction策略可以保证数据不被丢失,这也是系统默认的一种淘汰策略。

选做题-试题五(Web系统架构设计)

某公司拟开发一款基于Web的工业设备检测系统,以实现对多种工业数据的分类采集,运行状态检测以及相关信息的管理。该系统应具备以下功能:
现场设备状态采集功能:根据数据类型对设备检测指标状态信号进行分类采集;
设备采集数据传输功能:利用可靠的传输技术,实现将设备数据从制造现场传输到系统后台;
设备检测显示功能:对设备的运行状态、工作状态以及报警状态进行检测并提供相应的图形化界面;
设备信息管理功能:支持设备运行历史状态,报警记录、参数信息的查询。
同时,该系统还需满足以下非功能性需求:
(a)系统应支持大于100个工业设备的运行检测;
(b)设备数据从制造现场传输到系统后台传输时间小于1s;
(c)系统应在7*24小时工作;
(d)可抵御常见XSS攻击;
(e)系统在故障情况下,应在0.5小时内恢复;
(f)支持数据审计。
面对系统需求,公司召开项目讨论会议,制定系统设计方案,最终决定使用三层拓扑结构,即现场设备数据采集层、Web检测服务层和前端Web显示层。

【问题1】(6分)
请按照性能、安全性和可用性三种非功能性需求分类将题干的(a)~(f)填入(1)~(3)空白处。非功能性需求归类表:

图片[7]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

【问题2】(14分)
该系统Web检测服务层拟采用SSM框架进行系统研发。SSM工作流程图如下图5-1所示,请从下面给出的(a) ~ (k)中进行选择,补充完善图5-1中(1) ~(7)处空白的内容。
(a)Connection Pool
(b)Struts2
(c)Persistent Layer
(d)Mybatis
(e)HTTP
(f)MVC
(g)Kafka
(h)View Layer
(i)JSP
(j)Controller Layer
(k)Spring

图片[8]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

【问题3】(5分)
该工业设备检测系统拟采用工业控制领域中统一的数据访问机制,实现与各种不同设备的数据交互,请用100以内的文字说明采用标准的数据访问机制的原因。

(1)a、b
(2)d、f
(3)c、e

【解析】
本题考查的是架构设计过程中涉及的一些质量属性。常用的质量属性包括:
1、性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件作出响应,或者在某段时间内系统所能处理的事件的个数。
2、可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
3、安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
4、可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考查这些变更的代价衡量可修改性。
5、可靠性
可靠性(reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
6、易用性
软件开发工具应有十分友好的用户界面,用户乐于使用;工具应能剪裁和定制,以适应特定用户的需要;工具应能提示用户的交互操作,提供简单有效的执行方式;工具还应能检查用户的操作错误,尽可能自动改正错误。

(1)a
(2)c
(3)d
(4)k
(5)j
(6)h
(7)i

【解析】
Spring是一个轻量级的企业级应用开发框架,于2004年由Rod Johnson发布了1.0版本,经过多年的更新迭代,已经逐渐成为Java开源世界的第一框架,Spring框架号称Java EE应用的一站式解决方案,与各个优秀的MVC框架如SpringMVC、Struts2、JSF等可以无缝整合,与各个ORM框架如Hibernate、MyBatis、JPA等也可以无缝衔接,其他各种技术也因为Spring的存在而被很容易地整合进项目开发之中,如Redis整合、Log4J整合等等。
SpringMVC是Spring框架体系中的全功能MVC模块。SpringMVC是基于Java语言实现MVC设计模式的请求驱动类型的轻量级Web框架,目的是将Web开发模块化及代码简化。其提供了DispatcherServlet前端控制器分派请求,同时提供灵活的配置处理程序映射、视图解析,并支持文件上传,目前已经是众多MVC框架中的佼佼者。
MyBatis的前身是 Apache社区的一个开源项目iBatis,于2010年更名为MyBatis。MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,使得开发人员更加关注SQL本身和业务逻辑,不用再去花费时间关注整个复杂的JDBC操作过程。
Spring+spring mvc+mybatis整合的框架组件图如下所示:

图片[9]-[软考高级-系统架构设计师-2020年下半年]下午考试主观题-案例分析真题-IT谷

该工业设备检测系统需与不同设备进行数据交互,采用标准的数据访问机制,可以在硬件供应商和软件开发商之间建立一套完整的规则。只要遵循这套规则,数据交互对两者来说都是透明的,硬件供应商只需考虑应用程序的多种需求和传输协议,软件开发商也不必了解硬件的实质和操作过程,实现对设备数据采集的统一管理。

【解析】
在工业设备检测系统中,采用标准的数据访问机制是实现高效、可靠且灵活的数据交互的关键。这种机制通过定义一套统一的规则和接口,确保了不同设备之间的无缝连接和数据流通,无论这些设备来自不同的硬件供应商还是服务于多样化的应用场景。而标准数据访问机制在工业设备检测系统中发挥着至关重要的作用,比如:
(1)提高数据交互的透明性:对于硬件供应商和软件开发商而言,标准数据访问机制使得数据交互过程变得透明。硬件供应商只需关注如何按照标准接口提供数据,而软件开发商则只需关注如何接收和处理这些数据,无需关心背后的硬件实现。
(2)促进设备兼容性和互操作性:通过遵循统一的标准,不同品牌和型号的工业设备能够更容易地实现兼容和互操作,从而降低了系统集成和部署的复杂性。
(3)增强系统的可扩展性和可维护性:随着企业规模的扩大和业务需求的变化,可能需要引入新的设备或升级现有系统。标准数据访问机制使得这些变更更加容易实现,因为新设备或系统只需遵循相同的标准即可与现有系统无缝集成。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容