软考系列(系统架构师)- 2020年系统架构师软考案例分析考点

试题一 软件架构(架构风格、质量属性)

阅读以下关于软件架构设计与评估的叙述,回答 问题  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分)
请问该需求应该采用哪一种风格。表  1-1 是对这两种风格分别从数据处理方式、系统拓展方式和处理性能三个方面进行了比较,请填写 表  1-1 中(1)~(4)处的空白。

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

答案与解析
  • 试题难度:一般
  • 知识点:案例分析>软件架构风格与架构设计
  • 试题答案:

    【问题 1】(13分)
    1.该系统更适合采用仓库架构风格。(5分)
    2.表(1)-(4)空的空白分别为:(8分)
    (1)数据存储在中心仓库,处理流程独立,支持交互式处理。
    (2)数据与处理紧密关联,调整处理流程需要系统重新启动。
    (3)数据与处理分离,需要加载数据,性能降低。
    (4)数据处理组件之间一般无依赖关系,可并发调用,提高性能。
    【问题 2】(12分)
    (1)安全性
    (2)可修改性
    (3)g
    (4)i
    (5)f
    (6)j

试题解析:

本题考查的是架构设计过程中涉及到的一些质量属性,以及架构风格的对比。
【问题 1】(13分)
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
在仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。一方面,若构件控制共享数据,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
通过交互方式、数据结构、控制结构和扩展方法分别对仓库风格和管道过滤器风格进行对比,如下所示:
交互方式:管理过滤器很明显是顺序结构或循环结构,数据在管理中进行传递。而仓库结构是数据在中心位置,所有的处理均是中心结点与周边结点之间的交互,从形态来看,是星型的。
数据结构:从数据结构来看,仓库风格会使用一个文件将数据保存起来,所有的操作围绕这个文件进行。而管道过滤器则是在过滤器之间传递数据流。
控制结构:从控制结构来说仓库风格是业务功能驱动,而管道过滤器是由数据流驱动的。
扩展方法:从扩展方法来讲,管道过滤器是通过过滤器提供标准接口与其它过滤器对接,而数据仓库风格,要共享数据,扩展功能,只要功能的操作与数据模型本身是匹配的就行了,就像我们要共享一个数据库做系统集成,此时共享同一数据库的多个应用系统所用的数据模型一定会是一致的,否则无法去共享。
【问题 2】(12分)
本题主要考查考生对于软件质量属性的理解、掌握和应用。
本题考查的是架构设计过程中涉及到的一些质量属性,以及架构风格的对比。常用的质量属性包括:
1、性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。
2、可靠性
可靠性(reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
3、可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
4、安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。
5、可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
6、易用性
软件开发工具应有十分友好的用户界面,用户乐于使用;工具应能剪裁和定制,以适应特定用户的需要;工具应能提示用户的交互操作,提供简单有效的执行方式;工具还应能检查用户的操作错误,尽可能自动改正错误。
识别软件架构质量属性是进行架构设计的重要步骤。根据对相关质量属性的定义和含义,其中:“c)系统应该具备完善的安全防护措措施,能够对黑客的攻击行为进行检测和防御”、“i)系统需要针对代码仓库的所有操作进行详细记录;便于后期查阅与审计”属于安全性;“h)系统支持硬件设备灵活扩容,应保证在2人天内完成”、“j)更改系统web界面风格需要在4人天内完成”这描述的是系统的可修改性;“g)在正常负载情况下,户的代码提交请求应在0.5s内完成”描述的是性能属性。

试题二 数据库(规范化)

阅读下列说明,回答 问题 1问题 3 ,将解答填入对应栏内。
【说明】
某企业委托软件公司开发一套包裹信息管理系统,以便于对该企业通过快递收发的包裹信息进行统一管理,在系统设计阶段,需要对不同快递信息的包裹单信息进行建模,其中,邮政包裹单如 图  2-1 所示:

图2-1 包裹详情单
图 2-1 包裹详情单

【问题  1】(13分)
请说明关系型数据库开发中,逻辑数据模型设计过程包含哪些任务?根据 图  2-1 包裹详情单应该设计出哪些关系模式的名称,并指出每个关系模式的主键属性。
【问题  2】(6分)
请说明什么是超类实体?结合图中包裹单信息,试设计一种超类实体,给出完整的属性列表。
【问题  3】(6分)
请说明什么是派生属性?结合图中包裹单信息说明哪个属性是派生属性。

答案与解析

  • 试题难度:一般
  • 知识点:
  • 试题答案:

    【问题 1】(13分)
    逻辑结构设计包含的任务主要有:
    (1)把概念结构设计阶段设计好的基本E-R图转换为关系数据库的关系模式;(2)对关系模式进行优化;(3)设计用户视图。
    设计的关系模式主要有:
    收件人信息。主键:证件号
    寄件人信息。主键:用户代码
    包裹单信息。主键:包裹单编号
    快递员信息。主键:员工编号
    邮局站点信息。主键:邮局编号
    【问题 2】(6分)
    将一些子实体所共有的属性抽象为一个单独的新实体,这个新的实体就是超类实体。
    比如根据这个包裹单信息可以设计一个 “人员信息”的超类:人员信息(姓名,电话,单位名称,详细地址,邮政编码)。
    【问题 3】(6分)
    可以从其它属性得来的属性就叫派生属性。包裹图中的“总计”属性是派生属性。

  • 试题解析:

    【问题 1】(13分)
    数据库设计分为概念结构设计、逻辑结构设计、物理结构设计:
    概念设计也称为概念结构设计,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。概念模型的表现形式即ER模型。
    逻辑设计也称为逻辑结构设计,其主要任务是将概念设计阶段设计好的E-R图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(如:关系模式)。
    物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。
    【问题 2】(6分)
    当较低层次上实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较高层次上实体类型为超类型,反之为子类型。子类到超类的过程为概化,超类到子类的过程为特化。
    ①子类与超类之间具有继承特点,即子类包含了超类的所有属性,并且可以比超类拥有更多的属性。
    ②这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。
    【问题 3】(6分)
    可以从其它属性得来的属性就叫派生属性。包裹图中的“总计”属性是派生属性。可以从资费、挂号费、保价费、回执费累加计算出来。

试题三 嵌入式

阅读以下关于开放式嵌入式软件架构设计的相关描述,回答 问题 1问题 3
【说明】
某公司一直从事宇航系统研制任务,随着宇航产品综合化、网络化技术发展的需要,公司的业务量急剧增加,研制新的软件架构已迫在眉睫。公司架构师王工广泛调研了多种现代架构的基础,建议采用基于FACE (Future Airborne Capability Environment)的字航系统开放式软件架构,以实现字航系统的跨平台复用,实现字航软件高质量、低成本的开发。公司领导肯定了王工的提案,并指出公司要全面实施基于FACE的开放式软件架构,应注意每个具体项目在实施中如何有效实现从需求到架构设计的关系,掌握基于软件需求的软件架构设计方法,并做好开放式软件架构中各段间的接口标准化设计工作。
【问题  1】(9分)
王工指出,软件开发中需求分析是根本,架构设计是核心,不考虑软件需求便进行软件架构设计很可能导致架构设计的失败,因此,如何把软件需求映射到软件架构至关重要。请从描述语言、非功能性需求描述、需求和架构的一致性等三个方面, 用300字以内的文字说明软件需求到架构的映射存在哪些难点。
【问题 2】(10分)
图3-1是王工给出的FACE架构布局,包括操作系统、I/O 服务、平台服务、传输服务和可移植组件等5个段;操作系统、I0和传输等3个标准接口。请分析图3-1给出的FACE架构的相关信息,用300字以内的文字简要说明FACE 5个段的含义。

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

答案与解析

  • 试题难度:一般
  • 知识点:案例分析>嵌入式系统设计
  • 试题答案:

    【问题 1】(9分)
    (1)需求和架构描述语言存在差异:软件需求是频繁获取的非正规的自然语言,而软件架构常用的是一种正式语言。
    (2)非功能属性难于在架构中描述:系统属性中描述的非功能性需求通常很难在架构模型中形成规约。
    (3)需求和架构的一致性难以保障:从软件需求映射到软件架构的过程中,保持一致性和可追溯性很难,且复杂程度很高,因为单- -的软件需求可能定位到多个软件架构的关注点。反之,架构元素也可能有多个软件需求。
    【问题 2】(10分)
    操作系统服务段:为FACE架构其他段提供操作系统、运行时和操作系统级健康监控等服务。通过开放式OSGi框架为上层功能提供OS标准接口,并可实现上层组件的即插即用能力。
    I/O服务段:主要针对专用IO设备进行抽象,屏蔽平台服务段软件与硬件设备的关系。由于图形服务软件和GPU处理器紧密相关,因此I/0服务段不对GPU驱动进行抽象。
    平台服务段:主要是指用户需要的共性软件,如:系统级健康监控(HM).配置、日志和流媒体等服务。本段可包括平台公共服务、平台设备服务和平台图像服务等三类。
    传输服务段:主要为上层可移植组件段提供平台性的数据交换服务。可移植组件将通过传输服务段提供的服务实现交换,禁止组件间直接调用。
    可移植组件段: 提供了多组件使用能力和功能服务。主要包括公共服务和可移植组件两类。
    【问题 3】(6分)
    紧耦合问题主要表现在:I/O问题、业务逻辑问题和表现问题。
    解决方案:可采用分离原则,通过隔离实现硬件特定信息和少数模块的代码,减少耦合性。
    封装问题主要表现在: ICD硬编码问题、组件的紧耦合问题、直接调用问题。
    解决方案:可以通过提供数据源或槽的软件服务的方法,将紧耦合组件分解出应用程序,并将平台相关部分加入计算环境中,在计算平台内提供数据源或槽的软件服务,并实现接口标准化。

  • 试题解析:【问题 1】
    软件需求是指为用户解决某一问题或达到某一目标所需的软件功能;系统或系统构件为了满足合同、规约、标准或其他正式实行的文档而必须满足或具备的软件功能。
    软件需求包括三个不同的层次:业务需求、用户需求和功能需求;软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。
    架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
    通常在软件开发过程中,需求会随着开发深入而有所变化,而架构又不能完全地将需求全部反映出来,因此,如何把软件需求映射到软件架构是至关重要一个问题。
    (1)从描述语言方面来讲:软件需求是频繁获取的非正规的自然语言,而软件架构常用的是一种正式语言。
    (2)从非功能性需求描述方面来讲:系统属性中描述的非功能性需求通常很难在架构模型中形成规约。
    (3)从需求和架构的一致性方面来讲:从软件需求映射到软件架构的过程中,保持一致性和可追溯性很难,且复杂程度很高,因为单一的软件需求可能定位到多个软件架构的关注点。反之,架构元素也可能有多个软件需求。

    【问题 2】
    FACE软件架构是建立在操作系统上的一个三维架构,该架构由操作系统、I/O服务、平台服务(PSS)、传输服务(TSS)、可移植组件五部分组成。该软件架构能够更好的将关注点分离,软件功能能够重用,旨在实现FACE的目标——降低研发和集成的成本。
    (1)操作系统服务段:为FACE架构其他段提供操作系统、运行时和操作系统级健康监控等服务。通过开放式OSGi框架为上层功能提供OS标准接口,并可实现上层组件的即插即用能力。本段是FACE架构的基本服务段。
    (2)I/O服务段:主要针对专用I/O设备进行抽象,屏蔽平台服务段软件与硬件设备的关系,形成一种虚拟设备,这里隐含着对系统中的所有硬件I/O的虚拟化。由于图形服务软件和GPU处理器紧密相关,因此I/O服务段不对GPU驱动进行抽象。
    (3)平台服务段:主要是指平台/用户需要的共性服务软件,主要涵盖跨平台的系统管理、共享设备服务,以及健康管理等。如:系统级健康监控(HM)、配置、日志和流媒体等服务。本段主要包括平台公共服务、平台设备服务和平台图像服务等三类。
    (4)传输服务段:通过使用传统跨平台中间件软件(如CORBA、DDA等),为平台上层可移植组件段提供平台性的数据交换服务,可移植组件将通过传输服务段提供的服务实现交换,禁止组件间直接调用。本段应具备QoS质量特征服务、配置能力服务以及分布式传输服务等。
    (5)可移植组件段:为用户软件段,提供了多组件使用能力和功能服务。主要包括公共服务和可移植组件两类。

    【问题 3】
    可移植性是软件质量之一,良好的可移植性可以提高软件的生命周期。可移植性是指软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。
    紧耦合就是模块或者系统之间关系太紧密,存在相互调用。紧耦合系统的缺点在于更新一个模块的结果导致其它模块的结果变化,难以重用特定的关联模块。
    封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
    紧耦合问题主要表现在:I/O问题、业务逻辑问题和表现问题。
    解决方案:可采用分离原则,通过隔离实现硬件特定信息和少数模块的代码,减少耦合性。
    封装问题主要表现在: ICD硬编码问题、组件的紧耦合问题、直接调用问题。
    解决方案:可以通过提供数据源或槽的软件服务的方法,将紧耦合组件分解出应用程序,并将平台相关部分加入计算环境中,在计算平台内提供数据源或槽的软件服务,并实现接口标准化。

试题四 数据缓存(Redis)

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

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

表 4-1 Redis 数据类型与业务功能对照表

【问题  2】(7分)
该网上社区平台需要为用户提供  7×24 小时的不间断服务。同时在系统出现宕机等故障时,能在最短时间内通过重启等方式重新建立服务。为此,开发团队选择了  Redis 持久化支持。Redis 有两种持久化方式,分别是  RDB(Redis DataBase) 持久化方式和  AOF (Append OnlyFile)  持久化方式。开发团队最终选择了  RDB 方式。请用  200 字以内的文字,从磁盘更新频率、数据安全、数据一致性、 重启性能和数据文件大小五个方面比较两种方式,并简要说明开发团队选择  RDB 的原因。
【问题  3】(8分)
缓存中存储当前的热点数据,Redis 为每个 KEY 值都设置了过期时间,以提高缓存命中率。为了清除非热点数据,Redis 选择 “定期删除+惰性删除” 策略。如果该策略失效,Redis 内存使用率会越来越高,一般应采用内存淘汰机制来解决。请用  100 字以内的文字简要描述该策略的失效场景,并给出三种内存淘汰机制。

答案与解析

  • 试题难度:一般
  • 知识点:
  • 试题答案:

    【问题 1】(10分)
    (1)a
    (2)b,g
    (3)c,d
    (4)f
    (5)e
    【问题 2】(7分)
    (1)磁盘更新频率:AOF 比 RDB 文件更新频率高;
    (2)数据安全:AOF 比 RDB 更安全;
    (3)数据一致性:RDB 间隔一段时间存储,可能发生数据丢失和不一致;AOF 通过 append 模式写文件,即使发生服务器宕机,也可通过 redis-check-aop 工具解决数据一致性问题;
    (4)重启性能:RDB 性能比 AOF 好;
    (5)数据文件大小:AOF 文件比 RDB 文件大。
    综合上述五个方面的比较。考虑在系统出现宕机等故障时,需要在最短时间内通过重启等方式重新建立服务,因此开发团队最终选择了 RDB 方式。
    【问题 3】(8分)
    由于 Redis 定期删除是随机抽取检查,不可能扫描清除掉所有过期的 key 并删除,然后一些 key 由于未被请求,惰性删除也未触发。这样 Redis 的内存占用会越来越高。此时就需要内存淘汰机制。
    常用的内存淘汰机制是六种(volatile-lru、volatile-ttl、volatile-random、allkeys-lru、allkeys-random、no-enviction)。注:任选其中三种都可得分。

  • 试题解析:

    【问题 1】(10分)

    【问题 2】(7分)
    本问题考察 Redis 持久化存储的基本概念及应用。
    Redis 提供了两种持久化存储的机制,分别是 RDB(Redis DataBase)持久化方式和 AOF(Append Only File)持久化方式。RDB 持久化方式是指在指定的时间间隔内将内存中的数据集快照写入磁盘,是 Redis 默认的持久化方式。AOF 方式是指 Redis 会将每一个收到的写命令都通过 write 函数追加到日志文件中。

    【问题 3】(8分)
    过期策略:即 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 系统架构设计的叙述, 在答题纸上回答 问题 1问题 3
【说明】
开发基于 Web 的基业设备检测系统,以实现对多种工业数据的分类采集,运行状态检测以及相关信息的管理该系统应具备以下功能:

现场设备状态采集功能,根据数据类型对设备检测指标状态信号进行分类采集,设备采集数据传输功能;
9-11个月可靠的传输技术,实现将设备数据从制造现场传输到系统后台设备检测显示功能;
对设备的运行状态工作以及报警状态进行检测并提供相应的图形化界面设备信息管理功能;
支持设备运行历史状态,报警记录参数信息的查询。

同时,该系统还需满足以下非功能性需求:

(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) Persistent Layer
(d) Mybatis
(e) HTTP
(f) MVC
(g) Kafka
(h) View Layer
(i)  Jsp
(j)  Conrtoller Layer
(k) Spring

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

答案与解析

  • 试题难度:一般
  • 知识点:
  • 试题答案:

    【问题 1】(6分)
    (1)a、b
    (2)d、f
    (3)c、e
    【问题2】(14分)
    (1)a
    (2)c
    (3)d
    (4)k
    (5)j
    (6)h
    (7)i
    【问题 3】(5分)
    通过采用标准的数据访问机制,可以屏蔽不同设备之间数据交互的差异,解决了系统使用数据不一致性,又在一定程度上减低了数据结构与应用系统的耦合度,减少了应用系统的维护的工作量。

  • 试题解析:

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

参考链接