TOC
CHAT

系统架构设计案例分析历年真题全解(2009~2024)

案例题专业解析。详细题解至2022,持续更新。第1题必做,第2~5题4选2(第3题必为嵌入式,故实为3选2)。

知识点归纳详见系统架构设计案例分析强化教程,热门考点便捷索引:

热门考点 索引(*表示考点含缓存数据库设计
软件质量属性 09-111-114-415-116-117-119-119-520-120-521-122-1、24下-1
软件架构风格 09-410-116-119-120-121-122-1
数据流图 09-214-218-219-222-2
UML图 15-216-216-518-221-2、23-2
数据架构建模 10-2*11-2(反规范化)、12-1(NoSQL)、15-417-4(ORM)、18-4*19-4*20-220-4*21-4*(反规范化)、22-4*、23-4*、24上-4*、24下-2*
Web应用系统架构设计 11-414-5*15-516-417-518-519-520-521-522-5、23-5、24上-5、24下-4
八大架构 信息系统架构层次式架构云原生架构面向服务架构通信系统架构安全架构大数据架构、嵌入式系统架构

新教材案例分析删减章节:UML建模与架构文档化、设计模式、XML技术、构件平台与典型架构、基于ODP的架构师实践、架构师的管理实践、企业集成架构设计、面向方面的编程

目录

1 2009下半年

1.1 第1题:软件质量属性

阅读以下软件架构设计的问题,在答题纸上回答问题1和问题2。

某软件开发公司欲为某电子商务企业开发一个在线交易平台,支持客户完成网上购物活动中的在线交易。在系统开发之初,企业对该平台提出了如下要求:

(1)在线交易平台必须在1s内完成客户的交易请求。
(2)该平台必须保证客户个人信息和交易信息的安全。
(3)当发生故障时,该平台的平均故障恢复时间必须小于10s。
(4)由于企业业务发展较快,需要经常为该平台添加新功能或进行硬件升级。添加新功能或进行硬件升级必须在6小时内完成。

针对这些要求,该软件开发公司决定采用基于架构的软件开发方法,以架构内核心进行在线交易平台的设计与实现。

本题考查考生对于质量属性及质量属性实现策略的掌握情况。

问题1考察常见的软件质量属性及其基本含义。

问题2主要结合实际案例,考查实现各种质量属性的策略。

【问题1】(9分)
软件质量属性是影响软件架构设计的重要因素。请用200字以内的文字列举六种不同的软件质量属性名称,并解释其含义。

常见的软件质量属性有多种,例如性能(Performance)、可用性(Availability)、可靠性(Reliability)、健壮性(Robustness)、安全性(Security)、可修改性(Modification)、可变性(Changeability)、易用性(Usability)、可测试性(Testability)、功能性(Functionality)和互操作性(Inter-operation)等。

这些质量属性的具体含义是(11选6即可):

  1. 性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理事件的个数。
  2. 可用性是系统能够正常运行的时间比例。
  3. 可靠性是指软件系统在应用或错误面前,在意外或错误使用的情况下维持软件系统功能特性的基本能力。
  4. 健壮性是指在处理或环境中,系统能够承受压力或变更的能力。
  5. 安全性是指系统向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
  6. 可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。
  7. 可变性是指体系结构经扩充或变更成为新体系结构的能力。
  8. 易用性是衡量用户使用一个软件产品完成指定任务的难易程度。
  9. 可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设
    计、测试执行的能力。
  10. 功能性是系统所能完成所期望工作的能力。
  11. 互操作性是指系统与外界或系统与系统之间的相互作用能力。

【问题2】(16分)
请对该在线交易平台的4个要求进行分析,用300字以内的文字指出每个要求对应何种软件质量属性;并针对每种软件质量属性,各给出2种实现该质量属性的架构设计策略。

  1. 在线交易平台必须在1s内完成客户的交易请求。该要求主要对应性能,可以采用的架构设计策略有增加计算资源、改善资源需求(减少计算复杂度等)、资源管理(并发、数据复制等)和资源调度(先进先出队列、优先级队列等)。
  2. 该平台必须严格保证客户个人信息和交易信息的保密性和安全性。该要求主要对应安全性,可以采用的架构设计策略有抵御攻击(授权、认证和限制访问等)、攻击检测(入侵检测等)、从攻击中恢复(部分可用性策略)和信息审计等。
  3. 当发生故障时,该平台的平均故障恢复时间必须小于10s。该要求主要对应可用性,可以采用的架构设计策略有Ping/Echo、心跳、异常和主动冗余等。
  4. 由于企业业务发展较快,需要经常为该平台添加新功能或进行硬件升级。添加新功能或进行平台升级必须在6小时内完成。该要求主要对应可修改性,可以采用的架构设计策略有软件模块泛化、限制模块之间通信、使用中介和延迟绑定等。

1.2 第2题:系统需求分析(结构化系统建模)

阅读以下关于结构化软件系统建模的叙述,在答题纸上回答问题1至问题3。

某公司拟开发一个商业情报处理系统,使公司能够及时针对市场环境的变化及时调整发展战略,以获取最大的商业利益。项目组经过讨论,决定采用结构化分析和设计方法。在系统分析阶段,为了更好地对情报数据处理流程及其与外部角色的关联进行建模,项目组成员分别给出了自己的设计思路:

(1)小张提出先构建系统流程图(System Flowcharts),以便更精确地反映系统的业务处理过程及数据的输入和输出;
(2)小李提出先构建系统数据流图(Data Flow Diagrams),来展现系统的处理过程和定义业务功能边界,并给出了情报分类子系统的0层和1层数据流图,后者如下图(情报分类子系统的1层数据流图)所示。

情报分类子系统的1层数据流图

项目组经讨论确定以数据流图作为本阶段的建模手段。工程师老王详细说明了流程图和数据流图之间的区别与联系,并指出了该数据流图中存在的错误。

本题考查考生对于结构化系统建模方法的掌握情况。

数据流图和流程图是结构化建模中使用的重要工具,能够帮助开发人员更好地分析和设计系统,增强系统开发人员之间交流的准确性和有效性。数据流图和流程图是为了达到不同的目的而产生的,其所采用的标准符号集合也不相同。在实际应用中,区别主要包括是否可以描述处理过程的并发性;描述内容是数据流还是控制流等几个方面。

数据流图中常见的错误分为两种类型:① 语法错误,包括外部实体之间、数据存储之间或外部实体与数据存储之间不经过加工而存在直接数据流;② 逻辑错误,包括数据黑洞(只有输入没有产生输出)、灰洞(输入不足以产生输出)和无输入。

高质量的数据流图首先要求满足数据流一致性要求,即数据流的输入输出应该匹配,输入数据的信息量足以产生输出数据,所有的输出数据都能够从输入数据中找到数据的来源。对于复杂性系统,可以采用DFD分层结构将系统的复杂性逐步分解降低,以提高数据流图的有效性。高质量的数据流图应该简化复杂的接口,最小化接口或连接的数目。

【问题1】(11分)
流程图和数据流图是软件系统分析设计中常用的两种手段,请用300字以内文字简要说明流程图与数据流图的含义及其区别,并说明项目组为何确定采用数据流图作为建模手段。

数据流图作为一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的数据流。

流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。

两者的区别主要包括:

  1. 数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。
  2. 数据流图展现系统的数据流;流程图展现系统的控制流。
  3. 数据流图展现全局的处理过程,过程之间遵循不同的计时标准;流程图中处理过程遵循一致的计时标准。
  4. 数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理模阶段。

本题项目组为了更好地对情报数据处理流程及其与外部角色的关联进行建模,符合数据流图的应用场景要求,因此,首先构建数据流图以反映数据流向和系统边界。

【问题2】(8分)
请分析指出如图所示的数据流图中存在的错误及其原因,并针对该图的1层数据流图绘制出情报分类子系统的0层数据流图。

如图所示的数据流图中存在的错误有以下4种:

  1. “分类训练”加工:只有输入没有输出,产生数据黑洞;
  2. “分类处理”加工:有输出没有输入,无中生有;
  3. “规则文件”数据流:外部实体没有经过加工处理,直接到数据存储;
  4. “配置信息”数据流:外部实体之间没有加工处理,存在直接数据流。

0层数据流图如下所示:

0层数据流图

【问题3】(6分)
高质量的数据流图是可读的、内部一致的并能够准确表示系统需求。请用300字以内文字说明在设计高质量的数据流图时应考虑的三个原则。

高质量数据流图设计时应考虑的三个原则:

  1. 复杂性最小化原则:DFD分层结构就是把信息划分为小的且相对独立的一大批子集例子,这样就可以单独考查每一个DFD。如果要了解某个过程更加详的信息,可以跳转到该过程的下一层;如果要知道一个DFD如何与其他DFD相关联,可以跳转到上一层的DFD进行考查。
  2. 接口最小化原则:接口最小化是复杂性最小化的一种具体规则。在设计模式时,应使得模型中各个元素之间的接口数或连接数最小化。
  3. 数据流一致性原则:一个过程和它的过程分解在数据流内容中是否有差别?是否存在有数据流出但没有相应的数据流入的加工?是否存在有数据流入但没有相应的数据流出的加工?

1.3 第4题:软件架构风格

阅读以下软件系统架构选择的问题,在答题纸上回答问题1至问题3。

某公司欲开发一个车辆定速巡航控制系统,以确保车辆在不断变化的地形中以固定的速度行驶。下图(定速巡航控制系统的简化示意图)为该系统的简化示意图。下表(定速巡航控制系统输入说明)描述了各种系统输入的含义。

定速巡航控制系统的简化示意图 定速巡航控制系统输入说明

公司的领域专家对需求进行深入分析后,将系统需求认定为:任何时刻,只要定速巡航控制系统处于工作状态,就要有确定的期望速度,并通过调整引擎油门的设定值来维持期望速度。

在对车辆定速巡航控制系统的架构进行设计时,公司的架构师王工提出采用面向对象的架构风格,而李工则主张采用控制环路的架构风格。在架构评估会议上,专家对这两种方案进行综合评价,最终采用了面向对象和控制环路相结合的混合架构风格。

本题主要考查软件系统架构的比较与选择问题,即如何根振实际系统的要求选择合适的架构风格。

【问题1】(5分)
在实际的软件项目开发中,采用成熟的架构风格是项目成功的保证。请用200字以内的文字说明:什么是软件架构风格;面向对象和控制环路两种架构风格各自的特点。

软件架构风格是描述某一类特定应用领域中软件系统组织方式和惯用方式。

面向对象架构风格的特征是将数据表示和基本操作封装在对象中。这种模式的构件是对象,对象维护自身表示的完整性,对象之间通过消息机制进行通信,对象交互时需要知道彼此的标识,通过对象之间的协作完成计算过程。

控制环路架构风格是将过程输出的指定属性维护在一个特定的参考值(设定点)。控制环路风格包括过程变量、被控变量、输入变量、操纵变量和设定点等构件,通过收集实际和理想的过程状态信息,并能调整过程变量使得实际状态趋于理想状态。

【问题2】(12分)
用户需求没有明确给出该系统如何根据输入集合计算输出。请用300字以内的文字针对该系统的增减速功能,分别给出两种架构风格中的主要构件,并详细描述计算过程。

对于系统的增减速功能,采用面向对象风格的巡航控制系统首先会定义司机、油门、时钟、速度计和车轮等构件(5选2即可)。

具体计算过程如下:

  1. 司机进行增/减速操作设置期望速度,该期望速度以消息的形式传递给速度计;
  2. 速度计通过向车轮和时钟发送消息获取车轮转速和时钟值,得到当前速度;
  3. 速度计计算当前速度和期望速度的速度差值;
  4. 该差值以消息的形式发送给油门,油门通过速度差值调节自身状态;
  5. 整个过程在时钟的控制下定期向速度计发送消息,重复执行2~4。

控制环路的架构风格以控制器为核心,期望速度、车轮脉冲、时钟和油门等作为构件(5选2即可)。

具体计算过程如下:

  1. 司机进行增/减速操作设置期望速度值;
  2. 将设定值置为期望速度值;
  3. 控制器采集车轮脉冲和时钟值,计算出当前速度;
  4. 比较期望速度和当前速度,计算速度差值,控制油门动作;
  5. 反复执行3和4。

【问题3】(8分)
实际的软件系统架构通常是多种架构风格的混合,不同的架构风格都有其适合的应用场景。以该系统为例,针对面向对象架构风格和控制环路架构风格,各给出两个适合的应用场景,并简要说明理由。

适合面向对象架构风格的应用场景:

  1. 用户刹车,立即退出巡航控制系统。理由:这是一个典型的事件驱动的场景,适合于面向对象风格。
  2. 系统对突发事件的处理,如某些部件失灵等。理由:当发生突发事件时,系统会同时产生数据和事件,这种清况用对象建模较为恰当。

适合面向控制环路架构风格的应用场景:

  1. 在达到期望速度后,系统维持恒定速度行驶。理由:这是一个典型的闭环控制的情景,系统需要在外界情况不断发生变化的情况下进行调整,使得系统状态尽可能接近期望状态。
  2. 用户改变期望速度后,系统不断进行调整,直至到达恒定速度。理由:这是一个闭环控制情景,当用户设定期望速度值后,系统需要在不断获取当前速度和外界条件的情况下对系统状态持续调整,使得系统状态尽可能接近这个新的期望状态。

1.4 第5题:系统安全性与保密性设计

阅读以下关于信息系统安全性的叙述,在答题纸上回答问题1至问题3。

某企业根据业务扩张的要求,需要将原有的业务系统扩展到互联网上,建立自己的B2C业务系统,此时系统的安全性成为一个非常重要的设计需求。为此,该企业向软件开发商提出如下要求:

(1)合法用户可以安全地使用该系统完成业务;
(2)灵活的用户权限管理;
(3)保护系统数据的安全,不会发生信息泄漏和数据损坏;
(4)防止来自于互联网上各种恶意攻击;
(5)业务系统涉及到各种订单和资金的管理,需要防止授权侵犯;
(6)业务系统直接面向最终用户,需要在系统中保留用户使用痕迹,以应对可能的商业诉讼。

该软件开发商接受任务后,成立方案设计小组,提出的设计方案是:在原有业务系统的基础上,保留了原业务系统中的认证和访问控制模块;为了防止来自互联网的威胁,增加了防火墙和入侵检测系统。

企业和软件开发商共同组成方案评审会,对该方案进行了评审,各位专家对该方案提出了多点不同意见。李工认为,原业务系统只针对企业内部员工,采用了用户名/密码方式是一可以的,但扩展为基于互联网的B2C业务系统后,认证方式过于简单,很可能造成用户身份被盗取:王工认为,防止授权侵犯和保留用户痕迹的要求在方案中没有体现。而刘工则认为,即使是在原有业务系统上的扩展与改造,也必须全面考虑信息系统面临的各种威胁,设计完整的系统安全架构,而不是修修补补。

本题考查信息系统的安全威胁以及采用的常用方案。

【问题1】(9分)
信息系统面临的安全威胁多种多样,来自多个方面。请指出信息系统面临哪些方面的安全威胁并分别简要描述。

信息系统面临的安全威胁来自于物理环境、通信链路、网络系统、操作系统、应用系统以及管理等多个方面:

  1. 物理安全威胁是指对系统所用设备的威胁,如自然灾害、电源故障、数据库故障和设备被盗等造成数据丢失或信息泄漏,
  2. 通信链路安全威胁是指在传输线路上安装窃听装置或对通信链路进行干扰。
  3. 网络安全威胁当前主要是指由于因特网的开放性、国际性与无安全管理性,对内部网络形成的严重安全威胁。
  4. 操作系统安全威胁指的是操作系统本身的后门或安全缺陷,如“木马”和“陷阱门”等。
  5. 应用系统安全威胁是指对于网络服务或用户业务系统安全的威胁,包括应用系统自身漏洞,也受到“木马”的威胁。
  6. 管理系统安全威胁指的是人员管理和各种安全管理制度。

【问题2】(8分)
认证是安全系统中不可缺少的环节,请简要描述主要的认证方式,并说明该企业应采用哪种认证方式。

目前主要的认证方式有三类:

  1. 用户名和口令认证:主要是通过一个客户端与服务器共知的口令(或与口令相关的数据)进行验证。根据处理形式的不同,分为验证数据的明文传送、利用单向散列函数处理验证数据、利用单向散列函数和随机数处理验证数据。
  2. 使用令牌认证:该方式中,进行验证的密钥存储于令牌中,目前的令牌包括安全证书和智能卡等方式。
  3. 生物识别认证:主要是根据认证者的图像、指纹、气味和声音等作为认证数据。根据该企业的业务特征,采用令牌认证较为合适。

【问题3】(8分)
请解释授权侵犯的具体含义;针对王工的意见给出相应的解决方案,说明该解决方案的名称、内容和目标。

授权侵犯指的是被授权以某一目的使用某一系统或资源的某个人,将此权限用于其他非授权的目的,也称作“内部攻击”。
针对王工的建议,从系统安全架构设计的角度需要提供抗抵赖框架。

抗抵赖服务包括证据的生成、验证和记录,以及在解决纠纷时随即进行的证据恢复和再次验证。

框架中抗抵赖服务的目的是提供有关特定事件或行为的证据。例如,必须确认数据原发者和接收者的身份和数据完整性,在某些情况下,可能需要涉及上下文关系(如日期、时间、原发者/接收者的地点等)的证据,等等。


2 2010下半年

2.1 第1题:软件架构风格

阅读以下关于软件系统架构选择的说明,在答题纸上回答问题1至问题3。

某公司欲针对Linux操作系统开发一个KWIC(Key Word in Context)检索系统。该系统接收用户输入的查询关键字,依据字母顺序给出相关帮助文档并根据帮助内容进行循环滚动阅读。在对KWIC系统进行需求分析时,公司的业务专家发现用户后续还有可能采用其他方式展示帮助内容。根据目前需求,公司的技术人员决定通过重复剪切帮助文档中的第一个单词并将其插入到行尾的方式实现帮助文档内容的循环滚动,后续还将采用其他的方法实现这一功能。

在对KWIC系统的架构进行设计时,公司的架构师王工提出采用共享数据的主程序-子程序的架构风格,而李工则主张采用管道-过滤器的架构风格。在架构评估会议上,大家从系统的算法变更、功能变更、数据表示变更和性能等方面对这两种方案进行评价,最终采用了李工的方案。

本题考察软件架构风格与架构设计。

【问题1】(7分)
在实际的软件项目开发中,采用恰当的架构风格是项目成功的保证。请用200字以内的文字说明什么是软件架构风格,并对主程序-子程序和管道-过滤器这两种架构风格的特点进行描述。

软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。

主程序-子程序架构风格中,所有的计算构件作为子程序协作工作,并由一个主程序顺序地调用这些子程序,构件通过共享存储区交换数据。

管道-过滤器架构风格中,每个构件都有一组输入和输出,构件接受数据输入,经过内部处理,然后产生数据输出。这里的构件称为过滤器。构件之间的连接件称为数据流传输的管道。

【问题2】(12分)
请完成下表(王工与李工的架构风格评价)中的空白部分(用+表示优、-表示差),对王工和李工提出的架构风格进行评价,并指出采用李工方案的原因。

王工与李工的架构风格评价

评价填空如下图所示:

评价填空

根据题干描述:“用户后续还有可能采用其它方式展示帮助内容",因此KWIC系统对功能变更要求较高;

根据题干描述:“ …,后续还将采用其它的方法实现这一功能”,因此KWIC系统对实现某一个功能的算法变更要求较高。KWIC是一个支持用户交互的窗口界面程序,因此对性能要求并不高。

KWIC系统的显示帮助内容为文本,数据的表示基本不变,因此对数据表示变更要求不高。

综合上述分析,可以看出应该采用李工提出的管道-过滤器架构风格。

【问题3】(6分)
下图是李工给出的架构设计示意图,请将恰当的功能描述填入图中的(1)~(4)。

李工给出的架构示意图

(1)文档检索
(2)查询结果按照字母表排序
(3)剪切行首单词
(4)单词插入行尾

2.2 第2题:数据架构建模

阅读以下关于软件系统数据架构建模的说明,在答题纸上回答问题1至问题3。

RMO是一家运动服装制造销售公司,计划在五年时间内将销售区域从华南地区扩展至全国范围。为了扩大信息技术对于未来业务发展的价值,公司邀请咨询顾问帮助他们制订战略信息系统规划。经过评审,咨询顾问给出的战略规划要点之一是建立客户关系支持系统CRSS。RMO公司决定由其技术部成立专门的项目组负责CRSS的开发和维护工作。

项目组在仔细调研和分析了系统需求的基础上,确定了基于互联网的CRSS系统架构。但在确定系统数据架构时,张工认为应该采用集中式的数据架构,给出的理由是结构简单、易维护且开发及运行成本低;而刘工建议采用分布式的数据架构,并提出在开发中通过“局部数据库+缓存”的读写分离结构实现,具有较好的运行性能和可扩展性。

项目组经过集体讨论,考虑到公司的未来发展规划,最终采用了刘工的建议。

本题考查考生对于软件系统数据架构建模的掌握情况。

【问题1】(8分)
请用300字以内的文字,说明张工和刘工提出的数据架构的基本思想。

张工提出的集中式数据架构是由一个处理器、与它相关联的数据存储设备以及其他外围设备组成,它被物理地定义到单个位置。系统提供数据处理能力,用户可以在同样的站点上操作,也可以在地理位置隔开的其他站点上通过远程终端来操作。系统及其数据管理被某个或中心站点集中控制。

刘工提出的分布式数据架构使用多个计算机系统上的多个局部数据库系统构成,数据可以在多个不同的局部数据库中进行传送,由不同的数据库管理系统软件进行管理,运行在多种不同的计算机上,支持多种不同的操作系统。这些机器位于(或分布在)不同的地理位置并通过多种通信网络连接在一起。企业数据可以分布在不同的计算机上,一个应用程序可以操作位于不同地理位置的机器上的数据。

【问题2】(13分)
在刘工建议的基础上,为了避免CRSS系统的单点故障,请用200字以内文字简要说明如何建立CRSS的数据库系统;对于数据的读取、添加、更改和删除操作分别如何实现。

读写分离架构利用了数据库的复制技术,将数据的读和写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的。
CRSS的分布式数据库系统需要由多个局部数据库系统、多个热备份数据库系统和多个数据缓存组成。局部数据库负责数据的写入,多个热备份数据库系统用以解决单点故障的问题,数据缓存负责为应用提供所读取的数据。

  1. 读取数据:应用访问缓存,如果命中则返回,否则从局部数据库系统中读取数据并将数据加载到缓存后返回。
  2. 添加数据:采用延迟加载策略,应用将数据直接写入局部数据库。
  3. 更改数据:应用更改局部数据库中的数据,将缓存中的数据标记为失效。
  4. 删除数据:应用删除局部数据库中的数据,将缓存中的数据标记为失效。

【问题3】(4分)
RMO公司销售区域将在未来五年大面积扩展,其潜在客户数量也会因此大幅度增加,所以良好的可扩展性是CRSS系统所必需的质量属性。请分别说明在集中式和分布式数据架构下,可以采用哪些方法提升系统的可扩展性。

张工提出的集中式数据架构通过向上扩展(Scale Up)提升系统的可扩展性。具体的实现方式包括硬件扩容(增加CPU数量、内存容量、磁盘数量)和硬件升级(更换高端主机或高速磁盘等)。

刘工提出的分布式数据架构通过向外扩展(Scale Out)提升系统的可扩展性。具体的实现方式包括数据复制、数据垂直切分(或/和)水平切分、缓存和全文搜索。

2.3 第4题:ESB、系统集成

阅读以下关于系统设计与开发工具集成的说明,在答题纸上回答问题1至问题3。

TeleDev是一个大型的电信软件开发公司,公司内部采用多种商业/开源的工具进行软件系统设计与开发工作。为了提高系统开发效率,公司管理层决定开发一个分布式的系统设计与开发工具集成框架,将现有的系统设计与开发工具有效集成在一起。集成框架开发小组经过广泛调研,得到了如下核心需求。

(1)目前使用的系统设计与开发工具的运行平台和开发语言差异较大,集成框架应无缝集成各个工具的功能;
(2)目前使用的系统设计与开发工具所支持的通信协议和数据格式各不相同,集成框架应实现工具之间的灵活通信和数据格式转换;
(3)集成框架需要根据实际的开发流程灵活、动态地定义系统工具之间的协作关系;
(4)集成框架应能集成一些常用的第三方实用工具,如即时通信,邮件系统等。

集成框架开发小组经过分析与讨论,最终决定采用企业服务总线(ESB)作集成框架的基础架构。

本题主要考查系统集成的相关知识及应用,需要考生结合题干描述和自己的实际经验进行回答。

【问题1】(8分)
ESB是目前企业级应用集成常用的基础架构。请列举出ESB的4个主要功能,并从集成系统的部署方式、待集成系统之间的耦合程度、集成系统的可扩展性三个方面说明为何采用ESB作为集成框架的基础架构。

ESB的主要功能包括(7选4即可):

  1. 应用程序的位置透明性
  2. 传输协议转换
  3. 消息格式转换
  4. 消息路由
  5. 消息增强
  6. 安全支持
  7. 监控和管理

(部署方式)采用ESB作为集成框架,能够实现灵活的部署结构,包括CS结构、P2P结构等。

(耦合程度)采用ESB作为集成框架,待集成系统只需要和总线进行联系,彼此之间不需要互相通信,这样就大大降低了系统的耦合程度。

(可扩展性)采用ESB作为集成框架,在加入新的待集成系统时,只需要采用插件的方式实现传输协议和数据格式的适配即可,系统的可扩展性较强。

【问题2】(12分)
在ESB基础架构的基础上,请根据题干描述中的4个需求,说明每个需求应该采用何种具体的集成方式或架构风格最为合适。

对于需求(1)来说,由于需要共享系统的功能,并且系统的运行平台与语言差异较大,应该采用面向服务的方式进行功能集成,可以将工具的功能包装为服务,实现跨语言与跨平台访问。

对于需求 (2)来说,工具所支持的通信协议和数据格式各不相同,并需要实现工具之间的灵活通信协议和数据格式交换,因此应该基于消息总线,以协议及数据适配器的方式实现灵活的通信协议和数据格式转换。

对于需求(3)来说,集成框架需要根据实际的软件系统开发流程,灵活、动态地定义系统设计与开发工具之间的协作关系,因此应该引入工作流定义语言及其引擎来动态描述工具之间的协作关系。

对于需求(4)来说,应该采用界面集成的方法对第三方工具进行集成,绕过工具内部的复杂处理逻辑。

【问题3】(5分)
请指出在实现工具之间数据格式的灵活转换时,通常采用的设计模式是什么,并对实现过程进行简要描述。

在实现工具之间数据格式的灵活转换时,通常采用适配器设计模式。即应首先定义一个统一的数据转换接口类,然后针对不同的数据格式转换需求定义对应的实际转换类,实际转换类需要继承数据转换接口类,并实现接口转换类定义的接口。

2.4 第5题:系统可靠性分析与设计

阅读以下信息系统可靠性的问题,在答题纸上回答问题1至问题3。

某软件公司开发一项基于数据流的软件,其系统的主要功能是对输入的数据进行多次分析、处理和加工,生成需要的输出数据。需求方对该系统的软件可靠性要求很高,要求系统能够长时间无故障运行。该公司将该系统设计交给王工负责。王工给出该系统的模块示意图如下图1(王工建议的软件系统模块示意图)所示。王工解释:只要各个模块的可靠度足够高,失效率足够低,则整个软件系统的可靠性是有保证的。

图1 王工建议的软件系统模块示意图

李工对王工的方案提出了异议。李工认为王工的说法有两个问题:第一,即使每个模块的可靠度足够高,假设各个模块的可靠度均为0.99,但是整个软件系统模块之间全部采用串联,则整个软件系统的可靠度为0.99^4 = 0.96,即整个软件系统的可靠度下降明显;第二,软件系统模块全部采用串联结构,一旦某个模块失效,则意味着整个软件系统失效。

李工认为,应该在软件系统中采用冗余技术中的动态冗余或者软件容错的N版本程序设计技术,对容易失效或者非常重要的模块进行冗余设计,将模块之间的串联结构部分变为并联结构,来提高整个软件系统的可靠性。同时,李工给出了采用动态冗余技术后的软件系统模块示意图,如下图2(李工建议的系统模块示意图)所示。

图2 李工建议的系统模块示意图

刘工建议,李工方案中M1和M4模块没有采用容错设计,但M1和M4发生故障有可能导致严重后果。因此,可以在M1和M4模块设计上采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。

注:假设各个模块的可靠度均为0.99

本题考查信息系统中可靠性的设计,是比较传统的题目,要求考生细心分析题目中所描述的内容。

【问题1】(4分)
在系统可靠性中,可靠度和失效率是两个非常关键的指标,请分别解释其含义。

可靠度是系统在规定的条件下、规定的时间内不发生失效的概率。

失效率又称风险函数,也可以称为条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。

【问题2】(13分)
请解释李工提出的动态冗余和N版本程序设计技术,给出图1中的模块M2采用图2中的动态冗余技术后的可靠度。请给出采用李工设计方案后整个系统可靠度的计算方法,并计算结果。

动态冗余又称为主动冗余,通过故障检测、故障定位及故障恢复等手段达到容错的目的。其主要方式为多重模块待机储备,当系统检测到某工作模块出现错误时,会用一个备用模块替代它并重新运行。各备用模块在其待机时,可与主模块一样工作,也可以不工作。前者称为热备份系统(双重系统),后者称为冷备份系统(双工系统、双份系统)。

N版本程序设计是一种静态的故障屏蔽技术,其设计思想为用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现,目的是減少N个版本的程序在表决点上相关错误的概率。

M2采用动态冗余后的可靠度为R = 1 - (1 - 0.99)^3 = 0.999999

李工给出的方案同时采用了串联和并联方式,其计算方法为首先计算出中间M2和M3两个并联系统的可靠度,再按照串联系统的计算方法计算出整个系统的可靠度。计算可得可靠度为R = 0.99 × 0.999999 × 0.999999 × 0.99 = 0.98

【问题3】(8分)
请给出检错技术的优缺点,并说明检测技术常见的实现方式和处理方式。

检错技术实现的代价一般低于容错技术和冗余技术,但存在一个明显缺点——无法自动解决故障,出现故障后若不进行人工干预,将最终导致软件系统无法正常运行。

检错技术常见的实现方式:最直接的一种实现方式是判断返回结果,若返回结果超出正常范围,则进行异常处理;计算运行时间也是一种常用技术,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;还有置状态标志位等多种方法,自检的实现方式需要根据实际情况来选用。

检错技术的处理方式,大多数都采用“查处故障-停止软件运行-报警”的处理方式。但根据故障的不同情況,也有采用不停止或部分停止软件系统运行的情况,一般由故障是否需要实时处理来决定。


3 2011下半年

3.1 第1题:软件质量属性

阅读以下关于软件架构评估的说明,在答题纸上回答问题1和问题2。

某网上购物电子商务公司拟升级正在使用的在线交易系统,以提高用户网上购物在线支付环节的效率和安全性。在系统的需求分析与架构设计阶段,公司提出的需求和关键质量属性场景如下:

(a)正常负载情况下,系统必须在0.5秒内对用户的交易请求进行响应;
(b)信用卡支付必须保证99.999%的安全性;
(c)对交易请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;
(d)网络失效后,系统需要在1.5分钟内发现错误并启用备用系统;
(e)需要在20人月内为系统添加一个新的CORBA中间件;
(f)交易过程中涉及的产品介绍视频传输必须保证画面具有600x480的分辨率,20帧/秒的速率;
(g)更改加密的级别将对安全性和性能产生影响;
(h)主站点断电后,需要在3秒内将访问请求重定向到备用站点;
(i)假设每秒钟用户交易请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的交易请求”这一要求是可以实现的;
(i)用户信息数据库授权必须保证99.999%可用;
(k)目前对系统信用卡支付业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性;
(l)更改Web界面接口必须在4人周内完成;
(m)系统需要提供远程调试接口,并支持系统的远程调试。

在对系统需求和质量属性场景进行分析的基础上,系统的架构师给出了三个候选的架构设计方案。公司目前正在组织系统开发的相关人员对系统架构进行评估。

本题考查软件质量属性的相关内容,以及架构风险、敏感点、权衡点的基本概念。软件质量属性在架构设计中是一个重要关注点,往往架构设计的过程就是对不同质量属性的平衡与取舍。

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

在线交易系统效用树

(1):可修改性
(2):可用性
(3):(f)
(4):(l)
(5):(h)
(6):(b)

【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。

系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。

敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。

权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。

题干描述中,(k)描述的是系统架构风险;(c)描述的是敏感点;(g)描述的是权衡点。

3.2 第2题:数据架构建模(反规范化)

阅读以下关于软件系统数据建模的说明,在答题纸上回答问题1至问题3。

某软件公司成立项目组为某高校开发一套教职工信息管理系统。与教职工信息相关的数据需求和处理需求如下:

(1)数据需求:在教职工信息中能够存储学校所有在职的教工和职工信息,包括姓名、所属部门、出生年月、工资编号、工资额和缴税信息;部门信息中包括部门编号、部门名称、部门人数和办公地点信息。
(2)处理需求:能够根据编制内或外聘教职工的工资编号分别查询其相关信息;每个月的月底统一核发工资,要求系统能够以最快速度查询出教工或者职工所在部门名称、实发工资金额;由于学校人员相对稳定,所以数据变化及维护工作量很少。

项目组王工和李工针对上述应用需求分别给出了所设计的数据模型(如以下两图所示)。王工遵循数据库设计过程,按照第三范式对数据进行优化和调整,所设计的数据模型简单且基本没有数据冗余;而李工设计的数据模型中存在大量数据冗余。

王工设计的数据模型:

王工设计的数据模型

李工设计的数据模型:

李工设计的数据模型

项目组经过分析和讨论,特别是针对数据处理中对数据访问效率的需求,最终选择了李工给出的数据模型设计方案。

本题考查数据库相关的知识。题目涉及反规范化技术。

【问题1】(9分)
请用300字以内的文字,说明什么是数据库建模中的反规范化技术,指出采用反规范化技术能获得哪些益处,可能带来哪些问题。

规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。

采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。

可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。

【问题2】(8分)
请简要叙述常见的反规范化技术有哪些。

  1. 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。
  2. 增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。
  3. 重新组表:如果许多用户需要查看两个表连接后的结果数据,则可直接将这两个表组成一个新表来避免连接运算,从而提高性能。
  4. 水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,常用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上的情况。
  5. 垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中,在查询时减少I/O次数。

【问题3】(8分)
请分析李工是如何应用反规范化技术来满足教职工信息管理需求的。

在教职工信息管理系统的需求中,能够根据编制内或外聘教职工的工资编号分别查询其相关信息,数据查询要求有很高的处理效率。李工所设计的数据模型中采用了三种反规范化技术:

  1. 增加冗余列:增加“部门名称”列,消除了数据查询中“教职工信息”表和“部门信息”表之间的连接;
  2. 增加派生列:增加“实发工资”列,消除了实发工资的计算过程;
  3. 水平分割表:将教职工信息表分割为“编制内教职工信息”表和“外聘教职工信息"表,减少了数据查询的范围。

3.3 第4题:Web应用系统架构设计

阅读以下Web应用系统架构设计的说明,在答题纸上回答问题1至问题3。

某公司拟开发一个市场策略跟踪与分析系统,根据互联网上用户对公司产品信息的访问情况和产品实际销售情况来追踪各种市场策略的效果。其中互联网上用户对公司产品信息的访问情况需要借助两种不同的第三方Web分析软件进行数据采集与统计,并生成不同格式的数据报表;公司产品的实际销售情况则需要通过各个分公司的产品销售电子表格或数据库进行采集与汇总。得到相关数据后,还要对数据进行分析与统计,并通过浏览器以在线的方式向市场策略制定者展示最终的市场策略效果。

在对市场策略跟踪与分析系统的架构进行设计时,公司的架构师王工提出采用面向服务的系统架构,首先将各种待集成的第三方软件和异构数据源统一进行包装,然后将数据访问功能以标准Web服务接口的形式对外暴露,从而支持系统进行数据的分析与处理,前端则采用CSS等技术实现浏览器数据的渲染与展示。架构师李工则认为该系统的核心在于数据的定位、汇聚与转换,更适合采用面向资源的架构,即首先为每种数据元素确定地址,然后将各种数据格式统一转换为JSON格式,通过对JSON数据的组合支持数据的分析与处理任务,处理结果经过渲染后在浏览器的环境中进行展示。在架构评估会议上,专家对这两种方案进行综合评价,最终采用了李工的方案。

本题主要考查Web应用背景下多元数据的集成与处理方式,并要求考生理解数据集成和处理各种方案的优劣,进行比较和选择。

【问题1】(7分)
请根据题干描述,对市场策略跟踪与分析系统的数据源特征与数据操作方式进行分析,完成下表(系统数据源特征与数据操作方式)中的(1)~(3),并用200字以内的文字说明李工方案的优点。

系统数据源特征与数据操作方式

(1):数据报表
(2):非实时
(3):只读

通过对系统的数据源特征和数据操作方式进行分析可以看出,待集成的数据均为持久型数据(文件或数据库),系统对数据的访问均为只读非实时性的。针对上述应用特征,李工提出的面向资源的架构方式以对数据资源的只读访问为核心,通过数据唯一标识直接对各种数据进行访问与获取,系统架构清晰、实现简单、效率较高。

【问题2】(12分)
请从数据获取方式、数据交互方式和数据访问的上下文无关性三个方面对王工和李工的方案进行比较,并用500字以内的文字说明为什么没有采用王工的方案。

从数据获取方式看,王工的方案需要将现有的多个系统和异构的数据源包装为服务,采用Web服务暴露数据接口,客户端需要通过服务调用获取数据,这种方法工作量大,复杂度较高。李工的方案则绕开了复杂的功能封装,只需要明确数据的位置与标识,通过特定的网络协议直接使用标识定位并获取数据,与王工的方案相比工作量小,实现简单。

从数据交互方式看,王工的方案采用远程过程调用和异步XML消息等模式实现数据交互,这种方式适合于系统之间功能调用时进行的少量数据传输,而在进行单纯的数据访问时效率不高,稳定性也较差。李工的方案则以数据资源为核心,在对数据资源进行标识的基础上,通过标识符直接对数据资源进行访问与交互,实现简单且效率较高。

从数据访问的上下文无关性看,王工的方案中数据访问是上下文有关的,具体表现在每次客户端进行数据请求都需要附加唯一的请求标识,并且服务端需要区分不同的客户端请求,效率较低。李工的方案中数据访问是上下文无关的,客户端通过全局唯一的统一资源标识符(URI)请求对应的数据资源,服务端不需要区分不同的客户端请求。

【问题3】(6分)
表现层状态转换(REST)是面向资源架构的核心思想,请用200字以内的文字解释什么是REST,并指出在REST中将哪三种关注点进行分离。

REST从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符(URI)确定,客户端应用程序通过URI获取资源的表现,并通过获得资源表现使得其状态发生改变。

REST中将资源、资源的表现和获取资源的动作三者进行分离。

3.4 第5题:系统安全性与保密性设计

阅读以下关于信息系统安全性的说明,在答题纸上回答问题1至问题3。

某大型跨国企业的IT部门一年前基于SOA(Service-Oriented Architecture)对企业原有的多个信息系统进行了集成,实现了原有各系统之间的互连互通,搭建了支撑企业完整业务流程运作的统一信息系统平台。随着集成后系统的投入运行,IT部门发现在满足企业正常业务运作要求的同时,系统也暴露出明显的安全性缺陷,并在近期出现了企业敏感业务数据泄漏及系统核心业务功能非授权访问等严重安全事件。针对这一情况,企业决定由IT部门成立专门的项目组负责提高现有系统的安全性。

项目组在仔细调研和分析了系统现有安全性问题的基础上,决定首先为在网络中传输的数据提供机密性(Confidentiality)与完整性 (Integrity)保障,同时为系统核心业务功能的访问提供访问控制机制,以保证只有授权用户才能使用特定功能。

经过分析和讨论,项目组决定采用加密技术为网络中传输的数据提供机密性与完整性保障。但在确定具体访问控制机制时,张工认为应该采用传统的强制访问控制(Mandatory Access Control) 机制,而王工则建议采用基于角色的访问控制(Role-Based Access Control)与可扩展访问控制标记语言(eXtensible Access Control Markup Language, XACML) 相结合的机制。项目组经过集体讨论,最终采用了王工的方案。

本题考查安全保密和访问控制技术。

【问题1】(8分)
请用400字以内的文字,分别针对采用对称加密策略与公钥加密策略,说明如何利用加密技术为在网络中传输的数据提供机密性与完整性保障。

  1. 对称加密策略
    • 机密性:发送者利用对称密钥对要发送的数据进行加密,只有拥有相同密钥的接收者才能将数据正确解密,从而提供机密性保障。
    • 完整性:发送者根据要发送的数据生成消息认证码(或消息摘要),利用对称密钥对消息认证码进行加密并附加到数据上发送;接收者使用相同密钥将对方发送的消息认证码解密,并根据接收到的数据重新生成消息认证码,比较两个认证码是否相同以验证数据的完整性。
  2. 公钥加密策略
    • 机密性:发送者利用接收者的公钥对要发送的数据进行加密,只有拥有对应私钥的接收者才能将数据正确解密,从而提供机密性保障。
    • 完整性:发送者根据要发送的数据生成消息认证码(或消息摘要),利用自己的私钥对消息认证码进行加密并附加到数据上发送;接收者利用对方的公钥将对方发送的消息认证码解密,并根据接收到的数据重新生成消息认证码,比较两个认证码是否相同以验证数据的完整性。

【问题2】(9分)
请用300字以内的文字,从授权的可管理性、细粒度访问控制的支持和对分布式环境的支持三个方面指出项目组采用王工方案的原因。

授权的可管理性:RBAC将用户与权限分离,与MAC相比,减小了授权管理的复杂性,更适合于大型企业级系统的安全管理。

细粒度访问控制的支持:XACML提供了统一的访问控制策略描述语言,策略表达能力强,可用来描述各种复杂的和细粒度的访问控制安全需求,更适合企业复杂业务功能的访问控制要求。

分布式环境的支持:XACML的标准性便于各子系统的协作交互,各子系统或企业业务部门可以分布管理访问控制权限,而MAC则通常需要对访问控制权限集中管理,不太适合企业基于SOA集成后的分布式系统。

【问题3】(8分)
下图(基于XACML的授权决策中心的基本结构)给出了基于XACML的授权决策中心的基本结构以及一次典型授权決策的执行过程,请分别将备选答案填入图中的(1)~(4)。

基于XACML的授权决策中心的基本结构

(1):策略执行点(PEP)
(2):策略决策点(PDP)
(3):策略管理点(PAP)
(4):策略信息点(PIP)


4 2012下半年

4.1 第1题:数据架构建模(NoSQL)

请详细阅读有关数据架构方面的描述,回答问题1至问题3。

某软件公司欲开发一个基于Web 2.0的大型社交网络系统。就该系统的数据架构而言,李工决定采用公司熟悉的数据架构,使用通用的商用关系型数据库,系统内部数据采用中央集中方式存储。

该系统投入使用后,初期用户数量少,系统运行平稳。6个月后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表现在:

(1)用户执行读写操作时,响应时间均变得很慢;
(2)随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难;
(3)数据容量很快超过系统原有的设计上限,数据库扩容困难;
(4)软件系统不断出现宕机,整个系统可用性较差。

经过多次会议讨论,公司的王工建议采用NoSQL数据库来替代关系数据库,以解决上述问题。但李工指出NoSQL数据库出现时间不长,在使用上可能存在风险。公司技术人员对NoSQL数据库产品进行了认真测试,最终决定采用NoSQL数据库来替代现有的数据库系统。

本题主要考查考生对NoSQL数据库的理解与掌握情况。

【问题1】(11分)
分别解释产生问题(1)~(4)的原因。

(1)用户响应时间慢:大型社交网络系统要根据用户个性化信息实时生成动态页面、提供动态信息,故基本上无法使用动态页面静态化技术,因此数据库并发负载极高,常达到每秒上万次读写请求。对于上万次SQL查询,关系数据库尚能应付,但对于上万次SQL写数据请求,硬盘I/O无法承受。特别是多表连接操作,会导致响应变慢。

(2)数据格式变化:大型社交网络系统随着用户的使用,会不断增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式。但关系数据库采用元组方式组织数据,难以使用新型数据格式,使之难以维护。

(3)数据容量超过设计上限:对于大型社交网络系统,往往会在短时间内产生海量数据。关系数据库多采用中央数据存储,使得数据容量受限于前期设计的上限,难以实现数据容量的横向扩展。

(4)系统可用性差:关系数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障容易导致系统崩溃,负载过高往往导致系统出现宕机现象。

【问题2】(8分)
请针对问题(1)~(4),分别指出NoSQL数据库的哪些特点促使公司最终采用了NoSQL数据库。

针对问题(1),NoSQL数据库支持高并发数据访问,性能较高。

针对问题(2) ,NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。

针对问题(3) ,NoSQL数据库能够支持海量数据的存储,且易于横向扩展。

针对问题(4),NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。

【问题3】(6分)
请指出该系统采用NoSQL数据库时可能存在的问题。

该系统采用NoSQL数据库时可能存在的问题有:

  1. NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。
  2. NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。
  3. NoSQL数据库不提供对SQL的支持,学习和应用迁移成本较高。
  4. NOSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限。

4.2 第2题:设计模式

阅读以下关于面向对象系统建模的叙述,在答题纸上回答问题1至问题3。

某软件企业为影音产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求:

(1)W公司经常进行促销活动。根据不同的条件(如订单总额、商品数量、产品种类等),公司可以提供百分比折扣或现金减免等多种促销方式供提交订单的用户选择。实现每种促销活动的代码量很大,且会随促销策略不同经常修改。系统设计中需要考虑现有的促销和新的促销,而不用经常地重写控制器类代码。
(2)该在线销售系统需要计算每个订单的税率,不同商品的税率及计算方式会有所区别。所以W公司决定在系统中直接调用不同商品供应商提供的税率计算类,但每个供应商的类提供了不同的调用方法。系统设计中需要考虑如果公司更换了供应商,应该尽可能少地在系统中修改或创建新类。

项目组架构师决定采用设计模式来满足上述设计要求,并确定从当前已经熟练掌握的设计模式中进行选择,这些设计模式包括:适配器模式(Adapter)、构造器模式 (Builder)、命令模式(Command)、外观模式(Facade)、中介模式(Mediator)、原型模式(Prototype)、代理模式(Proxy)、状态模式(State)和策略模式(Strategy)等。

本题主要考查系统建模技术中的设计模式。

【问题1】(6分)
设计模式按照其应用模式可以分为三类:创建型、结构型和行为型,请用200字以内文字说明三者的作用。

创建型模式主要用于创建对象,为设计类实例化新对象提供指南。

结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。

行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。

【问题2】(9分)
请将项目组已经掌握的设计模式按照其作用分别归类到创建型、结构型和行为型模式中。

创建型模式:构造器模式、原型模式。

结构型模式:适配器模式、外观模式、代理模式。

行为型模式:命令模式、中介模式、状态模式和策略模式。

【问题3】(10分)
针对题目中所提出的设计要求(1)和(2),项目组应该分别选择何种设计模式?请分别用200字以内文字说明具体的解决方案。

(1)策略模式
解决方案:在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们继承同一个超类。每个类都有相同名称的标准接口方法,用于根据订单编号计算将要折扣的金额总数。计算每个促销的内部代码对促销类来说完全不同(3分)。

(2)适配器模式
解决方案:增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。若要更换供应商,则只需写一个新的适配器子类,其他保持不变。

4.3 第4题:分布式系统设计

阅读以下关于分布式系统设计的说明,在答题纸上回答问题1至问题3。

某软件公司拟开发一套电信领域的分布式系统,该系统后台多个功能模块同时运行时的计算负载较大,且需要控制不同的特定电信硬件设备,由于硬件体积和I/O端口冲突等原因,这些设备需要分散安装在多个不同计算机系统中。该系统上线运行后将为企业最终用户提供7×24小时的不间断服务,而用户的单次接入服务往往需要后台多个模块共同协作完成。基于上述原因,该系统后台软件模块需分布在局域网内的多台计算机上。

项目组决定基于ISO的开放分布进程(ODP)规范来进行系统架构的设计与开发,近期项目组召开了多次会议,对架构设计阶段的关键问题进行了讨论分析。

本题考查考生对典型分布式系统架构设计相关基础知识的掌握,要求考生了解基于ODP的架构设计过程中不同架构视点所关注的核心工作,充分理解现有分布式基础设施为分布式系统构建提供的各种基本支撑,掌握分布式对象互操作的基本原理与交互过程。

【问题1】(10分)
ODP从5个标准的视点组织分析系统的架构,这些视点描述了同一系统的不同重要方面,请根据下图(ODP架构视点示意图)中不同视点所关注的核心内容,将备选的架构视点填入图中的(1)~(5)。

ODP架构视点示意图

备选答案:技术选择架构、企业业务架构、分布式工程架构、计算接口架构、逻辑信息架构

(1):企业业务架构
(2):逻辑信息架构
(3):计算接口架构
(4):分布式工程架构
(5):技术选择架构

【问题2】(9分)
在技术选择架构规划时,王工认为系统应基于现有分布式基础设施(分布式中间件)来构建,因为这样可以充分利用现有基础设施提供的各种支撑,在更短时间内构造出质量更高的分布式系统;而李工则认为可基于基本的进程间通信机制自主开发系统的支撑平台,这样可以避免对特定中间件的依赖,项目组经过认真讨论,最终采用了王工的方案。请用400字以内文字,从构件管理支持、互操作支持以及公共服务支持三个方面说明现有分布式基础设施为构建分布式系统所提供的基本支撑。

(构件管理支持)现有分布式基础设施一般通过构件容器为构件提供基本的运行环境;具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。

(互操作支持)现有分布式基础设施均提供了高层通信协议以屏蔽节点的物理特性以及各节点在处理器、操作系统、程序设计语言等方面的异构性;基于互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。

(公共服务支持)现有分布式基础设施通常将针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序;其提供的常见公共服务包括命名服务、事务服务、安全服务、持久性服务等。

【问题3】(6分)
由于系统后台模块的分布式特性,后台分布式对象之间的互操作机制是需要考虑的核心问题之一。下图(分布式对象互操作基本机制)展示了当前分布式基础设施中支持分布式对象互操作的基本机制,请将相应部件名称填入图中(1)~(2);基于下图给出的结构,用300字以内文字说明完成一次分布式对象调用的详细步骤。

分布式对象互操作基本机制

(1):存根/桩
(2):框架

(1):代理
(2):存根

一次远程调用的过程如下:

  1. 客户程序将调用请求发送给客户端桩,对于客户程序来说,桩即为服务程序在客户端的代理。
  2. 客户端桩负责将远程调用请求进行编组并发送给通信总线。
  3. 调用请求经通信总线传送到服务端框架。
  4. 服务端框架将调用请求解组并分派给真正的远程对象实现(服务程序)。
  5. 服务程序完成客户端的调用请求,将结果返回给服务端框架。
  6. 服务端框架将调用结果编组并发送给通信总线。
  7. 调用结果经通信总线传送到客户端桩。
  8. 客户端桩将调用结果解组并返回给客户程序,客户程序得到调用结果。

4.4 第5题:钦件架构风格

阅读以下关于软件架构风格的说明,在答题纸上回答问题1和问题2。

某软件公司为其新推出的字处理软件设计了一种脚本语言,专门用于开发该字处理软件的附加功能插件。为了提高该语言的编程效率,公司组织软件工具开发部门为脚本语言研制一套集成开发环境。软件工具开发部门根据字处理软件的特点,对集成开发环境进行了需求分析,总结出以下3项核心需求:

(1)集成开发环境需要提供对脚本语言的编辑、语法检查、解释、执行和调试等功能的支持,并要实现各种功能的灵活组合、配置与替换。
(2)集成开发环境需要提供一组可视化的编程界面,用户通过对界面元素拖拽和代码填充的方式就可以完成功能插件核心业务流程的编写与组织。
(3)在代码调试功能方面,集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能。具体来说,在调试过程中,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处所对应的代码。

针对上述需求,软件工具开发部门对集成开发环境的架构进行分析与设计,王工认为该集成开发环境应该采用管道-过滤器的架构风格实现,李则认为该集成开发环境应该采用以数据存储为中心的架构风格来实现。公司组织专家对王工和李工的方案进行了评审,最终采用了李工的方案。

本题主要考查考生对软件架构风格的理解与掌握,特别是针对实际应用问题,如何采用基于软件架构风格的系统软件架构设计。软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。

【问题1】(12分)
请用200字以内的文字解释什么是软件架构风格,并从集成开发环境与用户的交互方式、集成开发环境的扩展性、集成开发环境的数据管理三个方面说明为什么最终采用了李工的设计方案。

软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。

从集成开发环境与用户的交互方式看,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道-过滤器架构风格则对用户的交互式数据处理支持有限。

从集成开发环境的扩展性来看,系统核心需求要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖关系,并可以灵活定义功能之间的逻辑顺序。管道-过滤器架构风格同样以数据格式解耦数据处理过程之间的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。

从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道-过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。

【问题2】(13分)
在对软件系统架构进行设计时,要对架构需求进行分析,针对特定需求选择最为合适的架构风格,因此实际的软件系统通常会混合多种软件架构风格。请对核心需求进行分析,说明为了满足需求(2)和(3),分别应采用何种架构风格,并概要说明采用相应架构风格后的架构设计过程。

为了满足需求(2),应采用解释器架构风格。具体来说,需要:① 为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;② 编写解释器对该语言进行解释;③ 生成对应的脚本语言程序。

为了满足需求(3),应采用隐式调用架构风格。具体来说,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。


5 2013下半年

5.1 第1题:ESB、系统集成

阅读以下关于企业应用系统集成架构设计的说明,在答题纸上回答问题1和问题2。

某航空公司希望对构建于上世纪七、八十年代的主要业务系统进行改造与集成,提高企业的竞争力。由于集成过程非常复杂,公司决定首先以Ramp Coordination系统为例进行集成过程的探索与验证。

在航空业中,Ramp Coordination是指飞机从降落到起飞过程中所需要进行的各种业务活动的协调过程。通常每个航班都有一位员工负责Ramp Coordination,称之为Ramp Coordinator。由Ramp Coordinator协调的业务活动包括检查机位环境、卸货和装货等。

由于航班类型、机型的不同,Ramp Coordination的流程有很大差异。下图(Ramp Coordination业务流程)中,(a)所示的流程主要针对短期中转航班,这类航班在机场稍作停留后就起飞;(b)所示的流程主要针对到达航班,通常在机场过夜后第二天起飞;(c)所示的流程主要针对离港航班,这类航班是每天的第一班飞机。这三种类型的航班根据长途/短途、国内/国外等因素还可以进一步细分,每种细分航班类型的Ramp Coordination的流程也略有不同。

Ramp Coordination业务流程

为了完成上述业务,Ramp Coordination信息系统需要从乘务人员管理系统中提取航班乘务员的信息、从订票系统中提取乘客信息、从机务人员管理系统中提取机务人员信息、接收来自航班调度系统的航班到达事件。其中乘务人员管理系统和航班调度系统运行在大型主机系统之上,机务人员管理系统运行在Unix操作系统之上,订票系统基于Java语言,具有Web界面,运行在Linux操作系统之上。

目前Ramp Coordination信息系统主要由人工完成所有协调工作,效率低且容易出错。公司领导要求集成后的Ramp Coordination信息系统能够针对不同需求迅速开展业务流程,灵活、高效地完成协调任务。

针对上述要求,公司IT部门的架构师经过分析与讨论,最终采用面向服务的架构,以服务为中心进行Ramp Coordination信息系统的集成工作。

本案例题的主题是企业应用系统集成,使用的技术主要是SOA中的ESB,所以要求考生对ESB有一定的熟悉程度。

【问题1】(10分)
服务建模是对Ramp Coordination信息系统进行集成的首要工作,公司的架构师首先对Ramp Coordination信息系统进行服务建模,识别出系统中的两个主要业务服务组件:
(1)Ramp Control:负责Ramp Coordination信息系统中各种相关业务活动的组件;
(2)Flight Management: 负责航班相关信息的管理,包括航班日程、乘客信息等。
针对上述服务模型,结合题干描述,请为每个业务服务组件提供的服务进行分析与整理,完成下表(业务组件服务提供的服务)中的空白部分。

业务组件服务提供的服务

Ramp Control:检查机位环境、检查卸货、检查装货、检查关门

Flight Management:接收航班信息

【问题2】(15分)
对Ramp Coordination信息系统的集成涉及对乘务人员管理系统、航班调度系统、机务人员管理系统和订票系统的组织与协调,公司架构师决定采用企业服务总线(Enterprise Service Bus,ESB)技术进行系统集成,请用200字以内的文字对ESB的定义进行描述,给出ESB的五个主要功能,并针对题干描述,将恰当的内容填入下图(系统集成框架图)中的(1)~(6)。

系统集成框架图

ESB是传统中间件技术与XML、Web服务等技术结合的产物,主要支持异构系统集成。ESB基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供一系列的标准接口。

ESB的主要功能(7选5即可):

  1. 服务位置透明性
  2. 传输协议转换
  3. 消息格式转换
  4. 消息路由
  5. 消息增强
  6. 安全性
  7. 监控与管理

图中内容填空如下:

(1):ESB(或企业服务总线)
(2):订票系统
(3):航班信息
(4):乘务人员管理系统
(5):机务人员信息
(6):机务人员管理系统

5.2 第2题:项目管理

阅读以下关于某项目开发计划的说明,在答题纸上回答问题1至问题4。

某软件公司拟开发一套电子商务系统,王工作为项目组负责人负责编制项目计划。由于该企业业务发展需要,CEO急于启动电子商务系统,要求王工尽快准备一份拟开发系统的时间和成本估算报告。

项目组经过讨论后,确定出与项目相关的任务如下表(项目开发任务进度及费用)所示。其中,根据项目组开发经验,分别给出了正常工作及加班赶工两种情况下所需的时间和费用。

项目开发任务进度及费用

本题考察项目管理。

正常工作流程图:

正常工作流程图

加班工作流程图:

加班工作流程图

要缩短项目的工期,主要有两种方法:

  • 赶工:对成本和进度进行权衡,确定如何尽量少增加费用的前提下最大限度地缩短项目所需要的时间,又称赶进度。
  • 快速跟进:调整逻辑关系,通过对各种逻辑关系并行确定来缩短项目周期。在进行项目设计中,当风险不大时,通过精心安排而使项目的前后阶段相互搭接以加快项目进展速度的做法叫快速跟进。

其中快速跟进由于只是将部分工作提前开始,所以不会明显增加成本,在当前的环境中,是比较合适的方法。

可压缩天数与增加的费用

【问题1】(7分)
请用400字以内文字说明王工拟编制的项目计划中应包括哪些内容。

王工在接到任务后开始项目计划的编制工作,编制的计划应包括:

  1. 项目总计划(包括范围计划、工作范围定义、活动定义、资源需求、 资源计划、活动排序、费用估算、进度计划及费用计)
  2. 项目辅助计划(质量计划、沟通计划、人力资源计划、风险计划、采购计划)

【问题2】(8分)
请根据上表,分别给出正常工作和最短工期(加班工作)两种情况下完成此项目所需的时间和费用。

正常工作成本 = 7200 + 1600 + 9600 + 22200 + 5100 + 8700 + 6000 + 9800 + 4000 = 74200(元)

正常工作工期 = 4 + 2 + 6 + 12 + 6 + 7 + 4 = 41(天)

最短工期成本 = 8400 + 1900 + 14200 + 27600 + 5700 + 10000 + 6000 + 12800 + 5000 = 91600(元)

最短工期 = 3 + 1 + 4 + 8 + 5 + 4 + 2 = 27(天)

【问题3】(4分)
如果项目在系统调研阶段用了7天时间才完成,公司要求尽量控制成本,王工可在后续任务中采取什么措施来保证项目能按照正常工作进度完成?

在“B. 提交项目计划”和“I. 安装部署”任务中采用加班工作措施,以使得能够按照正常工作进度完成。

【问题4】(6分)
如果企业CEO想在34天后系统上线,王工应该采取什么措施来满足这一要求?这种情况下完成项目所需的费用是多少?

标准时长41天的任务,要34天完成,应赶工7天。具体赶工的任务包括:将A、B、H、I四个任务加班完成,这样正好弥补之前延误的7天工期,最终以79700元完成项目。

5.3 第4题:MVC、XML

阅读以下有关表现层设计方面的说明,在答题纸上回答问题1至问题3。

某商业银行欲开发一套个人银行系统,为用户提供常见的金融服务,包括转账、查询、存款变更和个人信息管理等功能。该软件除了业务需求外,还有一些特殊的表现层需求:

(1)根据用户级别的不同,界面和可用功能是不同的;
(2)支持Web、Windows、手机App等多种不同类型的界面;
(3)考虑到将来功能的扩展,需要系统支持界面的定制以及动态生成等功能,以降低系统维护和新功能发布的成本。

经过对需求的讨论,该银行初步决定采用MVC模式设计该个人银行系统的表现层,采用XML作为GUI的描述语言,并应用XML的界面管理技术来实现灵活的界面配置、界面动态生成和界面定制。

本题考查层次式架构的MVC模式以及XML技术的应用。

【问题1】(9分)
MVC模式强制性地将一个应用处理流程按照模型、视图、控制的方式进行分离,三者的协作关系如下图(MVC设计模式)所示。

MVC设计模式

请填写该图中的(1)~(3),并简要说明在该个人银行系统中采用MVC模式对界面设计的作用。

(1):选择视图
(2):业务处理
(3):状态查询

MVC模式对该个人银行系统的作用:

  1. 允许多种界面的扩展,视图的变更与增加,与模型无关
  2. 易于维护,控制器和视图随着模型的扩展而扩展,只要保持公共接口,控制器和视图的旧版本可以继续使用
  3. 可支持功能强大的用户界面

【问题2】(4分)
请从设计模式的角度,简要说明设计方案采用XML作为GUI描述语言的机制。

从设计模式的角度来说,整个XML表现层解析的机制是一种策略模式。在调用显示GUI时,并非直接调用特定的表现技术API,而是装载GUI对应的XML配置文件,然后根据特定的表现技术解析器解析XML,得到GUI视图实例对象。这样,对于GUI开发人员来说,GUI视图只需维护一套XML文件即可。

【问题3】(12分)
基于XML的界面管理技术可实现灵活的界面配置、界面动态生成和界面定制,其思路是用XML生成配置文件及界面所需的元数据,按不同需求生成界面元素及软件界面,其技术框图如下图(基于XML的界面管理技术框图)所示。

基于XML的界面管理技术框图

请将恰当的内容填入该图中的(1)~(3),并简要解释说明其含义。

(1):界面定制
(2):界面动态生成
(3):界面配置

界面配置是对用户界面的静态定义,通过读取配置文件的初始值对界面配置。由界面配置对软件功能进行裁剪、重组和扩充,以实现特殊需求。

界面定制是对用户界面的动态修改过程,在软件运行过程中,用户可按需求和使用习惯,对界面元素(如菜单、工具栏、键盘命令)的属性(如文字、图标、大小、位置等)进行修改。软件运行结束后,界面定制的结果被保存。

界面动态生成是系统通过DOM API读取XML配置文件的表示层信息(初始界面大小、位置等),通过数据存取类读取数据库中的数据层信息,运行时由界面元素动态生成界面。界面配置和定制模块在软件运行前后修改配置文件、更改界面内容。

5.4 第5题:系统安全性与保密性设计

阅读以下有关软件与信息安全方面的说明,在答题纸上回答问题1至问题3。

某软件公司拟开发一套信息安全支撑平台,为客户的局域网业务环境提供信息安全保护。该支撑平台的主要需求如下:

(1)为局域网业务环境提供用户身份鉴别与资源访问授权功能;
(2)为局域网环境中交换的网络数据提供加密保护;
(3)为服务器和终端机存储的敏感持久数据提供加密保护;
(4)保护的主要实体对象包括局域网内交换的网络数据包、文件服务器中的敏感数据文件、数据库服务器中的敏感关系数据和终端机用户存储的敏感数据文件;
(5)服务器中存储的敏感数据按安全管理员配置的权限访问;
(6)业务系统生成的单个敏感数据文件可能会达到数百兆的规模;
(7)终端机用户存储的敏感数据为用户私有;
(8)局域网业务环境的总用户数在100人以内。

本题考查的是安全性方面的知识,解决相关的问题,需要对一些基础知识有一定了解,例如:对称加密与非对称加密的基本流程,优缺点;口令认证与基于公钥的数字证书认证做法有什么不同;数据库加密中的加解密API与透明加密。

【问题1】(9分)
在确定该支撑平台所采用的用户身份鉴别机制时,王工提出采用基于口令的简单认证机制,而李工则提出采用基于公钥体系的认证机制。项目组经过讨论,确定采用基于公钥体系的机制,请结合上述需求具体分析采用李工方案的原因。

  1. 基于口令的认证方式实现简单,但由于口令复杂度及管理方面的原因,易受到认证攻击;而在基于公钥体系的认证方式中,由于其密钥机制的复杂性,同时在认证过程中私钥不在网络上传输,因此可以有效防止认证攻击,与基于口令的认证方式相比更为安全。
  2. 按照需求描述,在完成用户身份鉴别后,需依据用户身份进一步对业务数据进行安全保护,且受保护数据中包含用户私有的终端机数据文件,在基于口令的认证方式中,用户口令为用户和认证服务器共享,没有用户独有的直接秘密信息,而在基于公钥的认证方式中,可基于用户私钥对私有数据进行加密保护,实现更加简便。
  3. 基于公钥体系的认证方式协议和计算更加复杂,因此其计算复杂度要高于基于口令的认证方式,但业务环境的总用户数在100人以内,用户规模不大,运行环境又为局域网环境,因此基于公钥体系的认证方式可以满足平台效率要求。

【问题2】(7分)
针对需求(7),项目组经过讨论,确定了基于数字信封的加密方式,其加密后的文件结构如下图(加密数据文件结构)所示。请结合需求说明对文件数据进行加密时,应采用对称加密的块加密方式还是流加密方式,为什么?并对该机制中的数据加密与解密过程进行描述。

加密数据文件结构

应采用流加密方式。因为需求中提及“单个敏感数据文件可能会达到数百兆的规模”,文件数据量较大,使用流加密方式可以获得更高的加解密效率。

数据加密与解密过程如下:

  • 加密过程:首先生成一个对称密钥,使用用户公钥加密这个对称密钥后存储在文件头,然后用生成的对称密钥加密文件数据存储。
  • 解密过程:用户首先使用自己的私钥解密被加密的对称密钥,再用该对称密钥解密出数据原文。

【问题3】(9分)
对数据库服务器中的敏感关系数据进行加密保护时,客户业务系统中的敏感关系数据主要是特定数据库表中的敏感字段值,客户要求对不同程度的敏感字段采用不同强度的密钥进行防护, 且加密方式应尽可能减少安全管理与应用程序的负担。目前数据库管理系统提供的基本数据加密方式主要包括加解密API和透明加密两种,请用300字以内的文字对这两种方式进行解释,并结合需求说明应采用哪种加密方式。

目前数据库管理系统提供的基本数据加密支持主要有以下两种:

  1. 加解密API:数据库管理系统提供可在SQL语句中调用的加解密API,应用可以利用这些API构建自己的基础架构,对数据进行加密保护。
  2. 透明加密:安全管理员为数据库敏感字段选择加密方式及密钥强度,应用访问受保护数据时只需使用口令打开或关闭密钥表,对数据的加密和解密由数据库管理系统自动完成。

加解密API方式的灵活性强,但构建和管理复杂;而透明加密方式管理简单,应用程序负担轻,但灵活性较差。用户要求尽可能减少安全管理与应用程序的负担,因此应选择透明加密方式。


6 2014下半年

6.1 第1题:MVC

请详细阅读以下关于网络设备管理系统架构设计的说明,在答题纸上回答问题1和问题2。

某软件公司欲开发一个网络设备管理系统,对管理区域内的网络设备(如路由器和交换机等)进行远程监视和控制。公司的系统分析师首先对系统进行了需求分析,识别出如下3项核心需求:

(a)目前需要管理的网络设备确定为10类20种,未来还将有新类别的网络设备纳入到该设备管理系统中;
(b)不同类别的网络设备,监视和控制的内容差异较大;同一类别的网络设备,监视和控制的内容相似,但不同厂商的实现方式(包括控制接口格式、编程语言等)差异较大;
(c)网络管理员能够在一个统一的终端之上实现对这些网络设备的可视化呈现和管理操作。

针对上述需求,公司研发部门的架构师对网络设备管理系统的架构进行了分析与设计,架构师王工认为该系统可以采用MVC架构风格实现,即对每种网络设备设计一个监控组件,组件通过调用网络设备厂商内置的编程接口对监控指令进行接收和处理;系统管理员通过管理模块向监控组件发送监控指令,对网络设备进行远程管理;网络状态、监控结果等信息会在控制终端上进行展示。针对不同网络设备的差异,王工认为可以对当前的20种网络设备接口进行调研与梳理,然后通过定义统一操作接口屏蔽设备差异。李工同意王工提出的MVC架构风格和定义统一操作接口的思路,但考虑到未来还会有新类别的网络设备接入,认为还需要采用扩展接口的方式支持系统开发人员扩展或修改现有操作接口。公司组织专家进行架构评审,最终同意了王工的方案和李工的改进意见。

本题主要考查MVC架构风格的定义以及扩展接口模式结构的分析与理解。

MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格,其中M代表模式(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模型通过更新视图的数据来反映自身的变化。

扩展接口模式结构通常包含四个角色:基础接口、组件、扩展接口和客户端。其中每个扩展接口需要通过扩展基础接口获得基本操作能力,然后加入自己特有的操作接口,并通过设置全局唯一接口ID对自身接口进行标识。每个具体的组件需要实现扩展接口完成实际操作,客户端不与组件直接交互,而需要通过与扩展接口进行交互从而提出调用请求,扩展接口根据请求查找并选择合适的实现组件响应客户端请求。根据题干描述,可以看出基础接口这一角色应该对应统一操作接口,组件这一角色应该对应监控组件,扩展接口这一角色应该对应新网络设备的操作接口,客户端这一角色应该对应控制终端。

【问题1】(10分)
请用300字以内的文字解释什么是MVC架构风格以及其中的组件交互关系,并根据题干描述,指出该系统中的M、V、C分别对应什么。

MVC架构风格:用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC架构将整个软件系统划分为模型、视图和控制器3个部分。模型负责维护并保存具有持久性的业务数据,实现业务处理功能,并将业务数据的变化情况及时通知视图;视图负责呈现模型中包含的业务数据,响应模型变化通知,更新呈现形式,并向控制器传递用户的界面动作;控制器负责将用户的界面动作映射为模型中的业务处理功能并实际调用之,然后根据模型返回的业务处理结果选择新的视图。

在本题中:

  • M:监控组件
  • V:控制终端
  • C:管理模块

【问题2】(15分)
扩展接口模式结构通常包含四个角色:基础接口、组件、扩展接口和客户端,它们之间的关系如下图(扩展接口模式角色关系)所示。

扩展接口模式角色关系

其中每个扩展接口需要通过扩展基础接口获得基本操作能力,然后加入自己特有的操作接口,并通过设置全局唯一接口ID对自身接口进行标识;每个具体的组件需要实现扩展接口完成实际操作;客户端不与组件直接交互,而需要通过与扩展接口进行交互从而提出调用请求,扩展接口根据请求查找并选择合适的实现组件响应客户端请求。

请根据上图所示和题干描述,指出扩展接口模式结构中的四个角色分别对应网络设备管理系统的哪些部分;并以客户端发起调用操作这一场景为例,将备选答案填入下表(客户端发起调用操作过程描述)中的(1)~(5)。

客户端发起调用操作过程描述

基础接口:统一操作接口
组件:监控组件
扩展接口:新网络设备的操作接口
客户端:控制终端

(1):扩展接口
(2):组件
(3):操作接口
(4):接口ID
(5) 扩展接口

6.2 第2题:系统需求分析(结构化系统建模)

请详细阅读以下关于系统过程建模的说明,在答题纸上回答问题1至问题3。

某公司正在研发一套新的库存管理系统。系统中一个关键事件是接收供应商供货。项目组系统分析员小王花了大量时间在仓库观察了整个事件的处理过程,并开发出该过程所执行活动的列表:供应商发送货物和商品清单。公司收到商品后执行收货处理,包括卸载商品、确定收到了订单上的商品、处理与供应商的分歧等。对于已有商品,调整其库存信息,对于新采购的商品,在库存中添加新的商品记录。收货完成后,系统执行入库处理,将商品放到仓库对应的货架上。在付款处理活动中,自动生成应付账款信息,如果查询到该供应商有待付款记录,则进行合并付款,付款完成后消除应付账款记录。最后,仓库管理员根据最新的库存商品,调整出货信息。

小王根据自己观察的过程创建了该事件的1层数据流图,如下图(接收供应商供货的1层数据流图)所示。

接收供应商供货的1层数据流图

数据流图通过外部代理(实体)描述系统与外界之间的数据交互关系,内部的活动通过处理(加工)表示,用数据流描述系统中不同活动之间的数据传输内容和方向,需要持久化存储的数据用数据存储表示,一般用文件系统或者数据库表存储数据。

数据流图中的错误包括两类:① 逻辑错误,加工节点输入输出不平衡,包括黑洞、灰洞和无输入三种类型;② 语法错误,例如数据存储不完整、在数据存储与外部代理之间或者各自之间没有经过加工之间发生数据流等。

CRUD矩阵是指利用矩阵的形式来表示各个不同用户对不同操作的动作行为。其中,C为Create(产生),R为Read(引用),U为Update(更新),D为Delete(删除)。

【问题1】(8分)
请用300以内文字说明数据流图(Data Flow Diagram)的基本元素及其作用。

数据流:描述数据在系统内传播的路径,由一组成分固定的数据组成。

外部实体:定义系统之外的实体,可以是人、物或其他软件系统。

加工(处理):是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出。

数据存储:描述信息的静态存储,可以是文件、文件的一部分、数据库的元素等。

【问题2】(12分)
数据流图在绘制过程中可能出现多种语法错误,请分析上图所示数据流图中哪些地方有错误,并分别说明错误的类型。

加工P5.3:仅有输入流,缺少输出流,属于黑洞。

加工P5.4:仅有输出流,缺少输入流,属于奇迹。

D1到A2:缺少处理数据流的加工。

D2:数据存储没有输出的数据流。

【问题3】(5分)
系统建模过程中为了保证数据模型和过程模型的一致性,需要通过数据-过程-CRUD矩阵来实现数据模型和过程模型的同步,请在下表(接收供应商供货的CRUD矩阵)的(1)~(5)中填入相关操作。

(1):R
(2):R
(3):CRU
(4):RU
(5):CRUD

6.3 第4题:软件质量属性

请详细阅读有关软件架构评估方面的说明,在答题纸上回答问题1至问题2。

某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支付环节的效率和安全性。公司研发部门在需求分析的基础上,给出了在线交易系统的架构设计。公司组织相关人员召开了针对架构设计的评估会议,会上用户提出的需求、架构师识别的关键质量属性场景和评估专家的意见等内容部分列举如下:

(a)在正常负载情况下,系统必须在0.5秒内响应用户的交易请求;
(b)用户的信用卡支付必须保证99.999%的安全性;
(c)系统升级后用户名要求至少包含8个字符;
(d)网络失效后,系统需要在2分钟内发现错误并启用备用系统;
(e)在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能;
(f)系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能;
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计;
(h)需要在30人月内为系统添加公司新购买的事务处理中间件;
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性;
(i)主站点断电后,需要在3秒内将访问请求重定向到备用站点;
(k)用户信息数据库授权必须保证99.999%可用;
(I)系统需要对Web界面风格进行修改,修改工作必须在4人月内完成;
(m)系统需要为后端工程师提供远程调试接口,并支持远程调试。

本题主要考查考生对软件架构评估、软件质量属性以及架构评估中相关概念的理解与掌握。考生应该在熟记基础概念的基础上结合实际问题灵活掌握并应用这些概念。

在解答本题时,首先需要对题干中的所有软件需求描述进行分析与梳理,区分并找出其中的需求分析、软件质量属性描述,或者可能的风险、权衡点或敏感点描述。具体辨析如下:(a)性能;(b)安全性;(c)软件业务需求;(d)可用性;(e)性能;(f)权衡点;(g)敏感点;(h)可修改性;(i)风险点;(i)可用性;(k)安全性;(I)可修改性;(m)可测试性。

在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具,主要关注性能、可修改性、可用性和安全性4个方面。

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

在线交易系统效用树

(1):性能
(2):可修改性
(3):(e)
(4):(i)
(5):(l)
(6):(k)

【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。

系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。

敏感点是指为了实现某种特定质量属性,一个或多个系统组件所具有的特性。

权衡点是指影响多个质量属性的特性,并对多个质量属性来说都是敏感点的系统属性。

风险点:(i)
敏感点:(g)
权衡点:(f)

6.4 第5题:Web应用系统架构设计

请详细阅读有关Web应用架构设计方面的说明,在答题纸上回答问题1至问题3。

某软件公司开发运维了一个社交网站系统,该系统基于开源软件平台LAMP(Linux+Apache+MySQL+PHP)构建,运行一段时间以来,随着用户数量及访问量的增加,系统在Web服务器负载、磁盘I/O等方面出现了明显瓶颈,已不能满足大量客户端并发访问的要求,因此公司成立了专门的项目组,拟对系统架构进行调整以提高系统并发处理能力。目前系统采用了传统的三层结构,系统架构如下图(某社交网站系统架构)所示。

某社交网站系统架构

本题考察Web应用系统架构设计中的负载均衡、数据库存储机制、缓存等内容。

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的Hashmap。其守护进程(Daemon)是用C写的,但是客户端可以用任何语言来编写,并通过Memcached协议与守护进程通信。

Mysql查询缓存的作用为当查询接收到一个和之前同样的查询,服务器将会从查询缓存中检索结果,而不是再次分析和执行上次的查询,由此大大提高性能,节省时间。

【问题1】(10分)
针对目前出现的Web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的并发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理,并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对比结果填入下表(两种负载均衡机制对比分析表)中。

两种负载均衡机制对比分析表

基于DNS的负载均衡是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。

反向代理负载均衡是将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。

(1)否;(2)是;(3)否;(4)是;(5)否;(6)是;(7)是;(8)否。

【问题2】(7分)
针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。

本系统应采用水平分区,因为社交网络数据库的数据表记录数量非常庞大,而且记录的访问,大多集中于本地区域,所以水平分区能极大提高处理效率。

主从复制机制使得同样的数据,存在多个副本,这样让用户查询数据时,可以选择该数据最近的副本进行访问,提高效率,降低资源使用时的冲突。另一方面主从复制机制中一台数据库服务器故障不会导致站点无法访问。

【问题3】(8分)
为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(Query Cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。

(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于(1)中,若存在则直接从其中读取,若不存在则从(2)中读取并保存在(3)中;当(4)中数据发生更新时,需要将更新后的内容同步到(5)实例中。(备选答案:数据库、Memcached缓存)
(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。

(1):Memcached缓存
(2):数据库
(3):Memcached缓存
(4):数据库
(5):Memcached缓存

Memcached相比数据库查询缓存具有以下优势:

  • 缓存架构:数据库查询缓存只是将查询结果进行缓存,适用面很窄,而Memcached缓存是将数据库中的表进行缓存,对于在这些表之上的操作均可适用。
  • 缓存有效性:Memcached缓存时效较长,只要未更新,就属于有效状态,而数据库查询缓存时效较短(具体时效与配置有关),故在此方面Memcached缓存有优势。
  • 缓存数据类型:Memcached缓存数据为表级,而数据库查询缓存为元组级。

7 2015下半年

7.1 第1题:软件质量属性

阅读以下关于软件架构评估的说明,回答问题1和问题2。

某软件公司拟为某市级公安机关开发一套特种车辆管理与监控系统,以提高特种车辆管理的效率和准确性。在系统需求分析与架构设计阶段,用户提出的部分需求和关键质量属性场景如下:

(a)系统用户分为管理员、分管领导和普通民警等三类;
(b)正常负载情况下,系统必须在0.5秒内对用户的车辆查询请求进行响应;
(c)系统能够抵御99.999%的黑客攻击;
(d)系统的用户名必须以字母开头,长度不少于5个字符;对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;
(f)网络失效后,系统需要在2分钟内发现并启用备用网络系统;
(g)在系统升级时,需要保证在1个月内添加一个新的消息处理中间件;
(h)查询过程中涉及的车辆实时视频传输必须保证20帧/秒的速率,且画面具有600x480的分辦率;
(i)更改系统加密的级别将对安全性和性能产生影响;
(i)系统主站点断电后,需要在3秒内将请求重定向到备用站点;
(k)假设每秒钟用户查询请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的查询请求”这一要求是可以实现的;
(I)对用户信息数据的授权访问必须保证99.999%的安全性;
(m)目前对“车辆信息实时监控”业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性;
(n)重改系统的Web界面接口必须在1周内完成;
(o)系统需要提供远程调试接口,并支持系统的远程调试。

在对系统需求和质量属性场景进行分析的基础上,系统的架构师给出了三个候选的架构设计方案。公司目前正在组织系统开发的相关人员对系统架构进行评估。

本题考查的又是软件质量属性,要求考生掌握常见的软件质量属性的含义与具体的应用场景。

【问题1】(12分)
在架构评估过程中,质量属性效用树(Utility Tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入下图(特种车辆管理与监控系统效用树)中(1)(2)空白处;并选择题干描述中的(a)~(o),将恰当的序号填入(3)~(6)空白处,
完成该系统的效用树。

特种车辆管理与监控系统效用树

(1):安全性
(2):可修改性
(3):(h)
(4):(l)
(5):(j)
(6):(n)

【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干描述中的(a)~(o)各选出1个属于系统架构风险、敏感点和权衡点的描述。

架构风险是指系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。

敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。

权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。

架构风险:(m)
敏感点:(e)
权衡点:(i)

7.2 第2题:系统设计建模(面向对象设计)

阅读以下关于系统设计建模的说明,回答问题1至问题3。

某公司拟研制一款高空监视无人直升机,该无人机采用遥控-自主复合型控制实现垂直升降。该直升机飞行控制系统由机上部分和地面部分组成,机上部分主要包括无线电传输设备、飞控计算机、导航设备等,地面部分包括遥控操纵设备、无线电传输设备以及地面综合控制计算机等。其主要工作原理是地面综合控制计算机负责发送相应指令,飞控计算机按照预定程序实现相应功能。经过需求分析,对该无人直升机控制系统纵向控制基本功能整理如下:

(a)飞控计算机加电后,应完成系统初始化,飞机进入准备起飞状态;
(b)在准备起飞状态中等待地面综合控制计算机发送起飞指令,飞控计算机接收到起飞指令后,进入垂直起飞状态;
(c)垂直起飞过程中如果飞控计算机发现飞机飞行异常,飞行控制系统应转入无线电遥控飞行状态,地面综合控制计算机发送遥控指令;
(d)垂直起飞达到预定起飞高度后,飞飞机应进入高度保持状态;
(e)飞控计算机在收到地面综合控制计算机发送的目标高度后,飞机应进入垂直升降状态,接近目标高度;垂直升降过程中出现飞机飞行异常,控制系统应转入无线电遥控飞行;
(f)飞机到达目标高度后,应进入高度保持状态,完成相应的任务;
(g)飞机在接到地面综合控制计算机发送的任务执行结束指令后,进入飞机降落状态;
(h)飞机降落过程中如果出现飞机飞行异常,控制系统应转入无线电遥控飞行;
(i)飞机降落到指定着陆高度后,进入飞机着陆状态,应按照预定着陆算法,进行着陆;
(i)无线电遥控飞行中,地面综合控制计算机发送着陆指令,飞机进入着陆状态,应按照预定着陆算法,进行着陆。

本题主要考查系统设计建模的相关知识及工程实践经验。此类题目要求考生认真阅读题目,根据所学的状态图和活动图的概念,从题目中提取相应的要素,按照题目给出的提示,完成状态图和活动图。

【问题1】(6分)
状态图和活动图是软件系统设计建模中常用的两种手段,请用200字以内文字简要说明状态图和活动图的含义及其区别。

状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。

活动图可以用于描述系统的工作流程和并发行为,可视为状态图的特殊形式。活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。

两者最大的区别:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能。

【问题2】(10分)
根据题干中描述的基本功能需求,架构师王工通过对需求的分析和总结给出了如下所示的无人直升机控制系统纵向控制状态图。请根据题干描述,提炼出相应状态及条件,并完善如图所示状态图中的(1)~(5)。

无人直升机控制系统纵向控制状态图

(1):垂直起飞状态
(2):飞机飞行异常
(3):高度保持状态
(4):垂直升降状态
(5):无线遥控飞行状态

【问题3】(9分)
根据题目中描述的基本功能需求,架构师王工给出了如下所示的无人直升机控制系统纵向控制的顶层活动图。请根据题干描述,完善如图所示活动图的(1)~(9)。

无人直升机控制系统纵向控制顶层活动图

(1):地面综合控制计算机
(2):下传起飞就绪信息
(3):垂直起飞
(4):高度保持
(5):发送目标高度
(6):垂直升降
(7):发送任务结束指令
(8):飞机降落
(9):无线电遥控飞行

7.3 第4题:数据架构建模

阅读以下关于应用系统数据架构的说明,回答问题1至问题3。

某软件公司拟开发一套贸易综合管理系统,包括客户关系管理子系统和商品信息管理子系统两部分。客户关系管理子系统主要管理客户信息,并根据贸易业务需要频繁向客户发送相关的电子邮件、短信等提醒信息。商品信息管理子系统主要为客户提供商品信息在线查询功能,包括商品基本信息、实时库存与价格等。

在对系统进行数据架构设计时,公司项目组的架构师王工主张采用文件系统进行数据管理,原因是目前公司客户和商品数量不大,且系统功能较为简单,采用文件系统进行数据管理简单直观,开发周期短。架构师李工则建议采用关系数据库进行数据管理,原因在于公司目前正处在高速扩张期,虽然目前的客户和商品数量不大,但随着公司快速发展,需要管理的数据必然飞速膨胀,采用关系数据库作为数据存储层,系统的扩展性更强,并能够对未来可能增加的复杂业务提供有效支持。经过讨论,项目组初步采纳了李工的意见,决定采用关系数据库存储客户数据,并针对业务特征对系统性能进行优化。

本题考查文件系统、关系型数据库、内存型数据库的主要特点,需要填写4个表。

数据存储方式的选择主要受到设计难度、数据冗余程度、数据架构以及应用扩展性等因素的影响。

文件系统通常针对特定应用系统设计,因此设计难度相对较小。然而,它也存在数据冗余较大的问题,可能会在多个文件中复制相同的数据属性。文件系统以应用系统为中心组织和管理数据,因此其数据往往难以在不同的应用系统之间共享。

关系型数据库具有更为复杂的数据结构,需要符合关系模式,设计难度相对较大。但它严格遵守数据库范式,数据冗余较少。关系型数据库以数据库为中心组织和管理数据,这使得数据独立于应用系统,因此数据在不同的应用系统之间共享变得相对容易。

当设计SQL语句时,有一些关键的设计原则可以极大地影响查询的效率。例如:

  • 减少不必要的数据返回:只查询你真正需要的行和列,而不是返回整个表或不必要的列。
  • 使用连接查询:当需要从多个表中检索数据时,使用连接(JOIN)操作而不是子查询。
  • 避免全表查询操作:尽量避免使用可能导致全表扫描的操作,如NOT INNOT EXISTLIKE '%value%'(其中%在值的前面)。
  • 减少使用DISTINCT关键字:虽然DISTINCT可以去除重复的行,但也会增加查询的复杂性并可能降低性能。

【问题1】(8分)
请从设计难度、数据冗余程度、数据架构、应用扩展性等4个方面对关系型数据库管理系统和文件系统两种数据存储方式进行比较,填写下表1(关系型数据库管理系统和文件系统存储方式比较)中(1)~(4)。

表1 关系型数据库管理系统和文件系统存储方式比较

(1):数据结构需要符合关系模式,设计难度较大
(2):可能在多个文件中复制相同的数据属性,数据冗余较大
(3):以应用系统为中心管理数据
(4):数据独立于应用系统,数据库系统接口标准化,易于在不同应用之间共享数据

【问题2】(13分)
对系统的核心业务需求进行认真分析后,公司的资深架构师张工提出一种内存数据库和关系数据库的混合存储架构,其核心思想是将需要频繁读写的数据存入内存数据库,而将相对固定不变的数据存入关系数据库。请首先分析比较内存数据库和关系数据库在数据模型、读写性能、存储容量、可靠性等方面的差异,填写下表2(内存数据库和关系数据库比较)中(1)~(4)的空白,并根据张工的思路指定各种业务数据的存储方式,填写下表3(业务数据存储方式)中(5)~(9)的空白。

内存数据库和关系数据库比较

业务数据存储方式

(1):Key-Value模式
(2):外存读写,性能相对较低
(3):运行时整个数据库基本全调入内存,数据库容量受内存容量限制,容量较小
(4):虽然也有恢复机制,但并不是所有故障都能恢复,可靠性较低

(5):内存数据库
(6):内存数据库
(7):关系数据库
(8):内存数据库
(9):内存数据库

【问题3】(4分)
系统开发完成进行压力测试时,发现在较大数据量的情况下,部分业务查询响应时间过长,经过分析发现其主要原因是部分SQL查询语句效率低下。请判断下表4(SQL设计策略对性能的影响)中的SQL语句设计策略哪些可能会提升查询效率,哪些可能会降低查询效率,在(1)~(4)中填入“提升”或“降低”。

SQL设计策略对性能的影响

(1):提升
(2):降低
(3):降低
(4):提升

7.4 第5题:Web应用系统架构设计

阅读以下关于Web应用系统架构设计的叙述,回答问题1至问题3。

某信息技术公司计划开发一套在线投票系统,用于为市场调研、信息调查和销售反馈等业务提供服务。该系统计划通过大量宣传和奖品鼓励的方式快速积累用户,当用户规模扩大到一定程度时,开始联系相关企业提供信息服务,并按照信息服务种类和用户投票数量收取费用。

为了降低开发成本和提高开发效率,项目组经过讨论后决定采用轻量级Java EE开发框架设计系统应用架构。在应用架构设计中,除了满足系统主要功能需求,还需要考虑的因素包括:

(1)项目开发采用MySQL数据库存储数据,但将来可能移植到其他数据库平台;
(2)系统开发过程中尽可能降低或者消除SQL语句开发的工作量;
(3)投票系统中数据之间的关系复杂,需要支持数据对象的聚合和继承等关系。

项目组基于MVC模式设计出了投票系统的架构,包括表示层、业务逻辑层、数据持久层和数据层。在具体讨论数据持久层采用哪种技术方案时,老王建议采用成熟的Hibernate框架,小李则认为iBatis更加灵活,更适合作为投票系统数据持久层开发技术。

本题考察数据持久层相关技术。Hibernate框架在当时较为热门。

【问题1】(5分)
请用300以内文字说明什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处?

数据持久层是一组软件服务,将应用程序与该程序所使用的数据源分离,为整个项目提供一个统一、安全、并发的数据持久机制。

好处:

  1. 程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写程序代码。
  2. 业务逻辑代码可读性强,在代码中不会有大量的SQL语言,提高程序的可读性。
  3. 持久化技术可以自动优化,以减少对数据库的访问量,提高程序运行效率。
  4. 简化开发工作,让开发人员更关注于业务逻辑的开发。
  5. 通过对象/关系映射向业务逻辑提供面向对象的数据访问。
  6. 分离业务逻辑层和数据层,降低两者之间的耦合。

【问题2】(12分)
针对在线投票系统的实际应用需求和要求,项目组应选用哪种技术实现数据持久层?请用200字以内文字说明其采用该技术的原因。

项目组应选Hibernate框架。

原因:

  • 从移植的角度来看,使用Hibernate更容易移植到其他数据库平台。Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的HQL语句都与具体使用的数据库无关,移植性好。MyBatis项目中所有的SQL语句都依赖所用的数据库,所以对不同数据库类型的支持不佳。
  • 使用Hibernate能降低或者消除SQL语句开发工作量,Hibernate提供了方法完成持久层操作,程序员不需要对SQL 的熟练掌握便可完成任务。
  • Hibernate提供了对象状态管理的功能,使开发者不再需要理会底层数据库系统的细节,而MyBatis在这一块没有文档说明,用户需要自己对对象进行详细的管理。

【问题3】(8分)
数据持久层是web应用系统框架中重要的组成部分,主流的数据持久层技术分别基于不同的技术方案,请在下表(数据持久层技术分类)中(1)~(4)处分别根据(a)~(d)所列技术的方案类别填入其序号。

数据持久层技术分类

(1):(c)
(2):(b)
(3):(d)
(4):(a)


8 2016下半年

8.1 第1题:软件架构风格、软件质量属性

阅读以下关于软件架构设计的叙述,回答问题1至问题3。

某软件公司为某品牌手机厂商开发一套手机应用程序集成开发环境,以提高开发手机应用程序的质量和效率。在项目之初,公司的系统分析师对该集成开发环境的需求进行了调研和分析,具体描述如下:

a. 需要同时支持该厂商自行定义的应用编程语言的编辑、界面可视化设计、编译、调试等模块,这些模块产生的模型或数据格式差异较大,集成环境应提供数据集成能力。集成开发环境还要支持以适配方式集成公司现有的应用模拟器工具。
b. 经过调研,手机应用开发人员更倾向于使用Windows系统,因此集成开发环境的界面需要与Windows平台上的主流开发工具的界面风格保持一致。
c. 支持相关开发数据在云端存储,需要保证在云端存储数据的机密性和完整性。
d. 支持用户通过配置界面依据自己的喜好修改界面风格,包括颜色、布局、代码高亮方式等,配置完成后无需重启环境。
e. 支持不同模型的自动转换。在初始需求中定义的机器性能条件下,对于一个包含50个对象的设计模型,将其转换为相应代码框架时所消耗时间不超过5秒。
f. 能够连续运行的时间不小于240小时,意外退出后能够在10秒之内自动重启。
g. 集成开发环境具有模块化结构,支持以模块为单位进行调试、测试与发布。
h. 支持应用开发过程中的代码调试功能:开发人员可以设置断点,启动调试,编辑器可以自动卷屏并命中断点,能通过变量监视器查看当前变量取值。

在对需求进行分析后,公司的架构师小张查阅了相关的资料,认为该集成开发环境应该采用管道-过滤器(Pipe-Filter)的架构风格,公司的资深架构师王工在仔细分析后,认为应该采用数据仓储(Data Repository)的架构风格。公司经过评审,最终采用了王工的方案。

本题考查的是架构设计过程中涉及的一些质量属性,以及架构风格的对比。

在管道-过滤器风格的软件体系结构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。

在仓库(Repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。若构件控制共享数据,则为传统型数据库;若中央数据结构的当前状态触发进程执行的选择,则为黑板系统。

【问题1】(10分)
识别软件架构质量属性是进行架构设计的重要步骤。请分析题干中的需求描述,填写下表(质量属性识别表)中(1)~(5)处的空白。

质量属性识别表

(1):f
(2):性能
(3):d
(4):g
(5):b

【问题2】(7分)
请在阅读题干需求描述的基础上,从交互方式、数据结构、控制结构和扩展方法4个方面对两种架构风格进行比较,填写下表(两种架构的比较)中(1)~(4)处的空白。

两种架构的比较

(1):星型(工具之间通过中心节点进行交互)
(2):数据流(或流式数据)
(3):数据驱动
(4):模型适配(与数据仓储进行数据适配)

【问题3】(8分)
在确定采用数据仓库架构风格后,王工给出了集成开发环境的架构图。请填写下图(集成开发环境架构图)中(1)~(4)处的空白。

集成开发环境架构图

(1):模型/数据库/语法结构树
(2):编辑器
(3):适配器
(4):应用模拟器工具

8.2 第2题:系统需求分析(面向对象系统建模)

阅读以下关于软件系统建模的叙述,回答问题1至问题3。

某软件公司计划开发一套教学管理系统,用于为高校提供教学管理服务。该教学管理系统基本的需求包括:

(1)系统用户必须成功登录到系统后才能使用系统的各项功能服务;
(2) 管理员(Registrar)使用该系统管理学校(University)、系(Department)、教师(Lecturer)、学生(Student)和课程(Course)等教学基础信息;
(3)学生使用系统选择并注册课程,必须通过所选课程的考试才能获得学分;如果考试不及格,必须参加补考,通过后才能获得课程学分;
(4)教师使用该系统选择所要教的课程,并从系统获得选择该课程的学生名单;
(5)管理员使用系统生成课程课表,维护系统所需的有关课程、学生和教师的信息;
(6)每个月到了月底系统会通过打印机打印学生的考勤信息。

项目组经过分析和讨论,决定采用面向对象开发技术对系统各项需求建模。

本题考查面向对象需求分析中有关用例和类等系统建模知识。

参与者是指系统以外的,需要使用系统或与系统交互的事物,包括:人或组织、设备、外部系统等。在本题中,较为容易识别的参与者包括:学生、教师、管理员,比较隐晦的参与者包括:时间、打印机。

【问题1】(7分)
用例建模用来描述待开发系统的功能需求,主要元素是用例和参与者。请根据题目所述需求,说明教学服务系统中有哪些参与者。

学生、教师、管理员、时间、打印机。

【问题2】(7分)
用例是对系统行为的动态描述,用例获取是需求分析阶段的主要任务之一。请指出在面向对象系统建模中,用例之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时,“登录系统”用例与“注册课程”用例之间、“参加考试”用例与“参加补考"用例之间的关系分别属于哪种类型?

用例之间的关系:包含、扩展、泛化。

“登录系统”用例与“注册课程”用例之间的关系:包含。

“参加考试”用例与“参加补考”用例之间的关系:扩展。

【问题3】(11分)
类图主要用来描述系统的静态结构,是组件图和配置图的基础。请指出在面向对象系统建模中,类之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时,类University与类Student之间、类University和类Department之间、类Student和类Course之间的关系分别属于哪种类型?

类之间的关系:关联、聚合、组合、依赖、泛化、实现(可写可不写,因为实现是接口与类之间的关系,而接口是一种特殊的类)

类University与类Student之间的关系:聚合。

类University与类Department之间的关系:组合。

类Student与类Course之间的关系:关联。

8.3 第4题:Web应用系统架构设计

阅读以下关于应用服务器的叙述,回答问题1至问题3。

某电子产品制造公司,几年前开发建设了企业网站系统,实现了企业宣传、产品介绍、客服以及售后服务等基本功能。该网站技术上采用了Web服务器、动态脚本语言PHP。随着市场销售渠道变化以及企业业务的急剧拓展,该公司急需建立完善的电子商务平台。

公司张工建议对原有网站系统进行扩展,增加新的功能(包括订单系统、支付系统、库存管理等),这样有利于降低成本、快速上线;而王工则认为原有网站系统在技术上存在先天不足,不能满足企业业务的快速发展,尤其是企业业务将服务全球,需要提供24小时不间断服务,系统在大负荷和长时间运行下的稳定性至关重要。建议采用应用服务器的Web开发方法,例如J2EE,为该企业重新开发新的电子商务平台。

应用服务器是指通过各种协议把商业逻辑暴露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样。简单的说,能实现动态网页技术的服务器称为Web应用服务器。

【问题1】(7分)
王工认为原有网站在技术上存在先天不足,不能满足企业业务的快速发展,根据你的理解,请用300字以内的文字说明原系统存在哪几个方面的不足。

  1. PHP只能实现简单的分布式两层或三层的架构;而Java在这方面相对比较强大,可以实现多层的网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。
  2. PHP面向过程,Java面向对象。面向过程语言开发的程序只要业务流程发生变化,修改工作量很大,故可修改性差,可复用性也差。
  3. PHP语言在可靠性方面比J2EE平台差。J2EE平台有大量增强可靠性的成熟解决方案,而PHP只是一种简单的脚本语言,在可靠性方面缺乏成熟解决方案。
  4. PHP对于不同的数据库采用不同的数据库访问接口,而Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库,访问数据库的接口比较统一。所以原架构在数据库连接方面修改起来工作量也是很大的。
  5. PHP适合于小型项目,所以本项目中以前采用PHP是合适的,但目前大量功能需要增加,PHP在稳定性方面也达不到要求。
  6. PHP比Java的可维护性差。
  7. PHP比Java的扩展性差。
  8. PHP比Java的安全性差。

【问题2】(8分)
请简要说明应用服务器的概念,并重点说明应用服务器如何来保障系统在大负荷和长时间运行下的稳定性以及可扩展性。

应用服务器是指通过各种协议把商业逻辑暴露给客户端的程序。

保障的方法:

  • 若系统负荷很大,可以部署多台应用服务。多台应用服务器分担任务,以达到性能要求。
  • 应用服务器可以通过灵活地增加服务器完成扩展,故可扩展性好。
  • 应用服务器可长时间稳定运行,是因为当一台应用服务器出现故障时,可将当前运行的事务转移至正常应用服务器上完成执行,不影响业务正常执行,从而保障高可靠性与稳定性

【问题3】(10分)
J2EE平台采用了多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件可被分别部署到不同的机器中。请填写下图(J2EE的N层体系结构示意图)中(1)~(5)处的空白。

J2EE的N层体系结构示意图

(1):Applet
(2):Servlet
(3):EJB容器
(4):Session Bean
(5):Entity Bean

8.4 第5题:系统设计建模(面向对象设计)、MVC

阅读以下关于Scrum敏捷开发过程的叙述,回答问题1至问题3。

Scrum是一个增量的、迭代的敏捷软件开发过程。某软件公司计划开发一个基于Web的Scrum项目管理系统,用于支持项目团队采用Scrum敏捷开发方法进行软件开发,辅助主管智能决策。此项目管理系统提供的主要服务包括项目团队的管理、敏捷开发过程管理和工件的管理。

Scrum敏捷开发中,项目团队由Scrum主管、产品负责人和开发团队人员三种不同的角色组成,其开发过程由若干个Sprint(短的迭代周期,通常为2到4周)活动组成。

Product Backlog是在Scrum过程初期产生的一个按照商业价值排序的需求列表,该列表条目的体现形式通常为用户故事。在每一个Sprint活动中,项目团队从Product Backlog中挑选最高优先级的用户故事进行开发。被挑选的用户故事在Sprint计划会议上经过细化分解为任务,同时初步估算每一个任务的预计完成时间,编写Sprint Backlog。

在Sprint活动期间,项目团队每天早晨需举行每日站立会议,重新估算剩余任务的预计完成时间,更新Sprint Backlog、Sprint燃尽图和Release燃尽图。在每个Sprint活动结束时,项目团队召开评审会议和回顾会议,交付产品增量,总结Sprint期间的工作情况和问题。此时,如果Product Backlog中还有未完成的用户故事,则项目团队将开始筹备下一个Sprint活动迭代。

为完成Scrum项目管理系统,考虑到系统的智能决策需求,公司决定使用MVC架构模式开发该项目管理系统。具体来说,系统采用轻量级J2EE架构和SSH框架进行开发,使用MySQL数据库作为底层存储。

本题看似是考敏捷+MVC,但事实上是考状态图+MVC。

【问题1】(10分)
Scrum项目管理软件需真实模拟Scrum敏捷开发流程,请根据你的理解完成下图(Scrum敏捷开发状态图)给出的Scrum敏捷开发状态图,填写其中(1)~(5)的内容。

Scrum敏捷开发状态图

(1):制定Product Backlog
(2):Sprint计划会议
(3):每日站立会议
(4):Product Backlog中还有未完成的用户故事
(5):已交付Product Backlog中的所有用户故事

【问题2】(6分)
根据题干描述,本系统采用MVC架构模式,请从备选答案a~n中分别选出属于MVC架构模型中的模型(Model)、视图(View)和控制器(Controller)的相关内容描述填入下表(架构模式中包含的内容)的空(1)~(3)处。

架构模式中包含的内容

备选答案:

问题2备选答案

(1):b、c、d、h、k、l、m、n
(2):a、f
(3):e、j

(各内容内部无顺序关系)

【问题3】(9分)
根据项目组给出的系统设计方案,将备选答案a~I的内容填写在下图(系统架构图)中的空(1)~(9)。

系统架构图

备选答案:

问题3备选答案

(1):d或f
(2):f或d(注意不得与(1)重复)
(3):h
(4):e
(5):a
(6):k
(7):j
(8):b
(9):c


9 2017下半年

9.1 第1题:软件质量属性

阅读以下关于软件架构评估的叙述,回答问题1和问题2。

某单位为了建设健全的公路桥梁养护管理档案,拟开发一套公路桥梁在线管理系统。在系统的需求分析与架构设计阶段,用户提出的需求、质量属性描述和架构特性如下:

(a)系统用户分为高级管理员、数据管理员和数据维护员等三类;
(b)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御;
(c)正常负载情况下,系统必须在0.5秒内对用户的查询请求进行响应;
(d)对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;
(e)系统的用户名不能为中文,要求必须以字母开头,长度不少于5个字符;
(f)更改系统加密的级别将对安全性和性能产生影响;
(g)网络失效后,系统需要在10秒内发现错误并启用备用系统;
(h)查询过程中涉及的桥梁与公路的实时状态视频传输必须保证画面具有1024x768的分辨率,40帧/秒的速率;
(i)在系统升级时,必须保证在10人月内可添加一个新的消息处理中间件;
(i)系统主站点断电后,必须在3秒内将访问请求重定向到备用站点;
(k)如果每秒钟用户查询请求的数量是10个,处理单个请求的时间为30毫秒,则系统应保证在1秒内完成用户的查询请求;
(I)对桥梁信息数据库的所有操作都必须进行完整记录;
(m)更改系统的Web界面接口必须在4人周内完成;
(n)如果“养护报告生成”业务逻辑的描述尚未达成共识,可能导致部分业务功能模块规则的矛盾,影响系统的可修改性;
(o)系统必须提供远程调试接口,并支持系统的远程调试。

在对系统需求、质量属性描述和架构特性进行分析的基础上,系统的架构师给出了三个候选的架构设计方案,公司目前正在组织系统开发的相关人员对系统架构进行评估。

本题考查的又是软件质量属性,要求考生掌握常见的软件质量属性的含义与具体的应用场景。

【问题1】(12分)
在架构评估过程中,质量属性效用树(Utility Tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入下图(公路桥梁在线管理系统效用树)中(1)(2)空白处;并选择题干描述的(a)~(o),填入(3)~(6)空白处,完成该系统的效用树。

公路桥梁在线管理系统效用树

(1):安全性
(2):可修改性
(3):(h)或(k)
(4):(l)
(5):(j)
(6):(m)

【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(o)中分别选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。

系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。

敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。

权衡点是指影响多个质量属性的特性,是多个质量属性的敏感点。

风险点:(n)
敏感点:(d)
权衡点:(f)

9.2 第2题:MVC

阅读以下关于软件系统设计的叙述,回答问题1至问题3。

某软件企业受该省教育部门委托建设高校数字化教育教学资源共享平台,实现以众筹众创的方式组织省内普通高校联合开展教育教学资源内容建设,实现全省优质教学资源整合和共享。该资源共享平台的主要功能模块包括:

(1)统一身份认证模块:提供统一的认证入口,为平台其他核心业务模块提供用户管理、身份认证、权限分级和单点登录等功能;
(2)共享资源管理模块:提供教学资源申报流程服务,包括了资源申报、分类定制、资料上传、资源审核和资源发布等功能;
(3)共享资源展示模块:提供教育教学共享资源的展示服务,包括资源导航、视频点播、资源检索、分类展示、资源评价和推荐等功能;
(4)资源元模型管理模块:依据资源类型提供共享资源的描述属性、内容属性和展示属性,包括共享资源统一标准和规范、资源加工和在线编辑工具、数字水印和模板定制等功能;
(5)系统综合管理模块:提供系统管理和维护服务,包括系统配置、数据备份恢复、资源导入导出和统计分析等功能。

项目组经过分析和讨论,决定采用基于Java EE的MVC模式设计资源共享平台的软件架构,如下图(资源共享平台软件架构)所示。

资源共享平台软件架构

本题考察MVC设计模式。MVC是一种目前广泛流行的软件设计模式。近年来,随着J2EE(Java 2 Platform Enterprise Edition)的成熟,MVC成为了J2EE平台上推荐的一种设计模式。MVC强制性地把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离,形成了三个核心模块:控制器、模型、视图。

【问题1】(9分)
MVC架构中包含哪三种元素,它们的作用分别是什么?请根据该图所示架构将JavaEE中JSP、Servlet、Service、JavaBean、DAO五种构件分别填入空(1)~(5)所示位置。

MVC包含视图、控制器、模型:

  • 视图(View):视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。
  • 控制器(Controller):控制器接受用户的输入并调用模型和视图去完成用户的需求。该部分是用户界面与Model的接口。一方面它解释来自于视图的输入,将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为对模型特定方法的调用;另一方面,它处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈。
  • 模型(Model):模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。

(1):JSP
(2):Servlet
(3):JavaBean
(4):Service
(5):DAO

【问题2】(6分)
项目组架构师王工提出在该图所示架构设计中加入EJB构件,采用企业级JavaEE架构开发资源共享平台。请说明EJB构件中的Bean(构件)分为哪三种类型,每种类型Bean的职责是什么。

EJB中的Bean分三种类型:Session Bean、Entity Bean和Message-Driven Bean

  • Session Bean的职责:维护一个短暂的会话。
  • Entity Bean的职责:维护一行持久稳固的数据。
  • Messaae-Driven Bean的职责:异步接受消息

【问题3】(10分)
如果采用王工提出的企业级Java EE架构,请说明下列(a)~(e)所给出的业务功能构件中,有状态和无状态构件分别包括哪些。

(a)Identification Bean(身份认证构件)
(b)ResPublish Bean(资源发布构件)
(c)ResRetrieval Bean(资源检索构件)
(d)OnlineEdit Bean(在线编辑构件)
(e)Statistics Bean(统计分析构件)

有状态:(a)、(d)
无状态:(b)、(c)、(e)

9.3 第4题:数据架构建模、设计模式

阅读以下关于数据库设计的叙述,回答问题1至问题3。

某制造企业为拓展网上销售业务,委托某软件企业开发一套电子商务网站。初期仅解决基本的网上销售、订单等功能需求。该软件企业很快决定基于.NET平台和SQL Server数据库进行开发,但在数据库访问方式上出现了争议。王工认为应该采用程序在线访问的方式访问数据库;而李工认为本企业内部程序员缺乏数据库开发经验,而且应用简单,应该采用ORM(对象关系映射)方式。最终经过综合考虑,该软件企业采用了李工的建议。

随着业务的发展,该电子商务网站逐渐发展成一个通用的电子商务平台,销售多家制造企业的产品,电子商务平台的功能也日益复杂。目前急需对该电子商务网站进行改造,以支持对多种异构数据库平台的数据访问,同时满足复杂的数据管理需求。该软件企业针对上述需求,对电子商务网站的架构进行了重新设计,新增加了数据访问层,同时采用工厂设计模式解决异构数据库访问的问题。新设计的系统架构如下图(电子商务网站的体系结构)所示。

电子商务网站的体系结构

本题考察ORM相关技术和设计模式中的工厂模式,较难。

【问题1】(9分)
请用300字以内的文字分别说明数据库程序在线访问方式和ORM方式的优缺点,说明该软件企业采用ORM的原因。

数据库程序在线访问:

  • 优点:
    1. 性能比ORM好。
    2. 可以处理复杂查询语句。
  • 缺点:
    1. 要求程序员懂SQL语句。
    2. 修改与维护相对困难。

ORM:

  • 优点:
    1. 使用ORM可以大大降低学习和开发成本。
    2. 程序员无需再写SQL来进行数据库操作。
    3. 减少程序的代码量。
    4. 降低由于SQL代码质量差而带来的影响。
  • 缺点:
    1. 不太容易处理复杂查询语句。
    2. 性能较直接用SQL差。

本题中的场景之所以选择ORM,主要考虑的是程序员缺乏数据库开发经验,这样SQL语句质量有很大风险。同时学习成本很高。此外应用简单,不用担心ORM对性能的影响。

【问题2】(9分)
请用100字以内的文字说明新体系架构中增加数据访问层的原因。请根据该图所示,填写图中空白处(1)~(3)。

增加数据访问层的原因:

  • 由于涉及多种异构数据库平台,数据访问复杂性增加,不宜与业务逻辑混合在一起。
  • 数据管理变复杂之后,需要使用的代码量增加,分单独层次有利于让逻辑更清晰。
  • 业务逻辑应以相同的方式应对异构的数据库,此时需要单独的数据访问层屏蔽差异性。

(1)执行业务逻辑/业务组件/业务构件
(2)数据访问接口层/DAL接口
(3)工厂层/DAL工厂/数据访问工厂

【问题3】(7分)
应用程序设计中,数据库访问需要良好的封装性和可维护性,因此经常使用工厂设计模式来实现对数据库访问的封装。请解释工厂设计模式,并说明其优点和应用场景;请解释说明工厂模式在数据访问层中的应用。

工厂模式分抽象工厂与工厂方法,题目中的场景适合采用抽象工厂设计模式。

抽象工厂设计模式提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。其优点是可以非常方便地创建系列的对象,其使用场景也是创建系列对象的情况。在本题中,可以针对Oracle、MySQL、SQLServer分别建立抽象工厂,若指定当前工厂为Oracle工厂,则创建出来的数据库连接、数据集等一系列的对象都是符合Oracle操作要求的。这样便于数据库之间的切换。

9.4 第5题:Web应用系统架构设计

阅读以下关于Web系统架构设计的叙述,回答问题1至问题3。

某电子商务企业因发展良好,客户量逐步增大,企业业务不断扩充,导致其原有的B2C商品交易平台已不能满足现有业务需求。因此,该企业委托某软件公司重新开发一套商品交易平台。该企业要求新平台应可适应客户从手机、平板设备、电脑等不同终端设备访问系统,同时满足电商定期开展“秒杀”、“限时促销”等活动的系统高并发访问量的需求。面对系统需求,软件公司召开项目组讨论会议,制定系统设计方案。讨论会议上,王工提出可以应用响应式Web设计满足客户从不同设备正确访问系统的需求。同时,采用增加镜像站点、CDN内容分发等方式解决高并发访问量带来的问题。李工在王工的提议上补充,仅仅依靠上述外网加速技术不能完全解决高用户并发访问问题,如果访问量持续增加,系统仍存在崩溃可能。李工提出应同时结合负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等方法设计系统架构。经过项目组讨论,最终决定综合王工和李工的思路,完成新系统的架构设计。

响应式Web设计是指设计与开发的页面可以根据用户的行为(例如改变浏览器的窗口大小)和不同的设备环境(例如系统平台、屏幕分辦率以及横竖屏等)做出相应的响应来调整页面的布局,以提供用户可感知的、流畅的阅读和操作体验。响应式设计一般遵循“设计先行,内容优先,移动优先”的原则,即如果一个页面想要响应PC端和移动终端包括用户的一些行为等,那么设计师至少需要设计两套以上页面的设计图(PC端、移动终端),交互设计师也需先根据终端进行交互设计,把需求中最重要的内容展示在移动小屏幕上,然后前端工程师据此设计开发出响应式框架。

实现响应式Web设计主要依赖于以下几种技术,确保网页能够在各种设备和屏幕尺寸下都能提供优秀的用户体验:

  • 流式布局:通过百分比或视口单位(如vw、vh)来定必元素的宽度和高度,使网页布局能够随着浏览器窗口的大小变化而自动调整。
  • 弹性布局(Flexbox):Flexbox提供了一种更加灵活的方式来对容器中的项目进行排列、对齐和分配空间,即使它们的大小未知或是动态的,也能保持元素之间的间隔和对齐方式不变。此外,通过结合媒体查询,还可以实现弹性图片的缩放,以适应不同设备的显示需求。
  • 媒体查询(Media Queries):媒体查询允许我们在不同的设备条件下应用不同的样式规则。通过检测设备的特性(如屏幕宽度、高度、分辨率等),我们可以为不同的设备或屏幕尺寸编写特定的CSS样式,以实现更加精细化的布局控制。

在Web应用的架构中,各组件协同工作以确保高效、可靠地处理用户请求。具体来说:

  1. CDN内容分发:作为架构的最前端,CDN负责加速静态内容的传输,如图片、视频和静态文件等。当用户请求这些资源时,CDN会优先从最近的节点提供内容,从而减少延迟并提高用户体验。
  2. 负载均衡层:接收到来自用户的请求后,负载均衡层负责将这些请求分发到后端的多个服务器。
  3. 缓存服务器集群:如果请求的数据已经存在于缓存中,缓存服务器将直接返回数据给用户,从而减少对后端的访问压力。
  4. Web应用层:作为业务逻辑的核心,并与数据库等后端服务进行交互。它负责执行用户请求的业务逻辑。
  5. 主数据库——写操作:在读写分离的架构中,主数据库负责处理写操作,例如数据的添加、更新和删除。
  6. 从数据库——读操作:在读写分离的架构中,从数据库负责处理读操作请求。

【问题1】(5分)
请用200字以内的文字描述什么是“响应式Web设计”,并列举2个响应式Web设计的实现方式。

响应式web设计是指设计与开发的页面可以根据用户的行为和不同的设备环境做出相应的响应来调整页面的布局,以提供用户可感知的、流畅的阅读和操作体验。

实现方式:

  1. 流式布局
  2. 弹性布局(如弹性图片)
  3. 媒体查询

【问题2】(16分)
综合王工和李工的提议,项目组完成了新商品交易平台的系统架构设计方案。新系统架构图如下图所示。请从选项(a)~(i)中为架构图中(1)~(8)处空白选择相应的内容,补充支持高并发的Web应用系统架构设计图。

Web应用系统架构设计图

(a)Web应用层
(b)界面层
(c)负载均衡层
(d)CDN内容分发
(e)主数据库
(f)缓存服务器集群
(g)从数据库
(h)写操作
(i)读操作
(j)文件服务器集群

(1):(d)
(2):(c)
(3):(f)
(4):(a)
(5)(6):(e)(h)
(7)(8):(g)(i)

【问题3】(4分)
根据李工的提议,新的B2C商品交易平台引入了主从复制机制。请针对B2C商品交易平台的特点,简要叙述引入该机制的好处。

针对B2C商品交易平台的特点,引入主从复制机制带来了多方面的显著好处:

  1. 提升性能:交易平台要求高并发,主从复制方式一主多从,不同的用户请求可以从不同的从数据库读取数据,提高并发度。
  2. 可扩展性更优:如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求。
  3. 提升可用性:一主多从,一台从服务器出现故障不影响整个系统正常工作。
  4. 相当于负载均衡:一主多从分担任务,相当于负载均衡
  5. 提升数据安全性:系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失。

10 2018下半年

10.1 第1题:系统设计、C/S架构

阅读以下关于软件系统设计的叙述,回答问题1至问题3。

某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项目组完成了需求调研,现已进入到系统架构设计阶段。考虑到系统需求对架构设计决策的影响,项目组先列出了可能影响系统架构设计的部分需求如下:

(a)用户界面支持用户的个性化定制;
(b)系统需要支持当前主流的标准和服务,特别是通信协议和平台接口;
(c)用户操作的响应时间应不大于3秒,竞拍板块不大于1秒;
(d)系统具有故障诊断和快速恢复能力;
(e)用户密码需要加密传输;
(f)系统需要支持不低于2GB的数据缓存;
(g)用户操作停滞时间超过一定时限需要重新登录验证;
(h)系统支持用户选择汉语、英语或法语三种语言之一进行操作。

项目组提出了两种系统架构设计方案:瘦客户端C/S架构和胖客户端C/S架构,经过对上述需求逐条分析和讨论,最终决定采用瘦客户端C/S架构进行设计。

本题考到了极为罕见的非功能性需求分类方式。

问题2主要要求考生在理解软件的特殊性基础上,深刻认识软件可靠性一般是致力于系统性地减少和消除对软件程序性能有不利影响的系统故障。除非被修改,否则软件系统不会随着时间的推移而发生退化。在掌握这一特征的基础上,可以回答硬件可靠性特征与其对应的软件可靠性特征之间的差异或相似之处。

问题3主观性比较强,实际上题目中提到的这些要求两种架构都能完成,故在此对比两者相对优势:

(a)无论胖瘦,都能做到用户界面的个性化,但从更新的角度来看,胖客户端针对新增的个性化要求,更新起来较为困难。因此瘦客户端相对更有优势。
(b)从单次实现来看,胖瘦都能实现,但要随时保持最新,瘦客户端更有优势。
(c)胖客户端在客户端的运算能力上强一些。
(d)瘦客户端将业务逻辑迁移到应用服务器上, 所以有故障只要修复服务器上的内容;而胖客户端要更新所有客户端,工作量大。因此该情况下瘦客户端有优势。
(e)瘦客户端与胖客户端无明显差异。
(f)胖客户端容易实现2G数据缓存,而瘦客户端不容易实现。
(g)瘦客户端与胖客户端无明显差异。
(h)瘦客户端与胖客户端均可做到,但若涉及更新,瘦客户端有优势。

【问题1】(8分)
在系统架构设计中,决定系统架构设计的非功能性需求主要有四类:操作性需求、性能需求、安全性需求和文化需求。请简要说明四类需求的含义。

操作性需求(Operational Requirements):系统完成任务所需的操作环境要求及如何满足系统将来可能的需求变更的要求。

性能需求(Performance Requirements):针对系统性能要求的指标。常见的包括系统响应请求的速度(响应时间)和单位时间内处理请求的能力(吞吐率)。

安全性需求(Security Requirements):一系列保护措施或预防措施,旨在防止系统崩溃和确保数据的安全性。

文化需求(Cultural Reauirements):使用本系统的不同用户群体对系统提出的特有要求。

【问题2】(8分)
根据下表(需求分类),将题干所给出的系统需求(a)~(h)分别填入(1)~(4)。

需求分类

(1):(b)(d)
(2):(c)(f)
(3):(e)(g)
(4):(a)(h)

【问题3】(9分)
请用100字以内文字说明瘦客户端C/S架构能够满足题干中给出的哪些系统需求。

瘦客户端C/S架构能更好满足如下需求:

(a)无论胖瘦,都能做到用户界面的个性化,但从更新的角度来看,胖客户端针对新增的个性化要求,更新起来较为困难。因此瘦客户端相对更有优势。
(b)从单次实现来看,胖瘦都能实现,但要随时保持最新,瘦客户端更有优势。
(d)瘦客户端将业务逻辑迁移到应用服务器上, 所以有故障只要修复服务器上的内容;而胖客户端要更新所有客户端,工作量大。因此该情况下瘦客户端有优势。
(h)瘦客户端与胖客户端均可做到,但若涉及更新,瘦客户端有优势。

10.2 第2题:系统需求分析

阅读以下关于软件系统建模的叙述,回答问题1至问题3。

某公司欲建设一个房屋租赁服务系统,统一管理房主和租赁者的信息,提供快捷的租赁服务。本系统的主要功能描述如下:

  1. 登记房主信息。记录房主的姓名、住址、身份证号和联系电话等信息,并写入房主信息文件。
  2. 登记房屋信息。记录房屋的地址、房屋类型(如平房、带阳台的楼房、独立式住宅等)、楼层、租金及房屋状态(待租赁、已出租)等信息,并写入房屋信息文件。一名房主可以在系统中登记多套待租赁的房屋。
  3. 登记租赁者信息。记录租赁者的个人信息,包括:姓名、性别、住址、身份证号和电话号码等,并写入租赁者信息文件。
  4. 安排看房。已经登记在系统中的租赁者,可以从待租赁房屋列表中查询待租赁房屋信息。租赁者可以提出看房请求,系统安排租赁者看房。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。
  5. 收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。
  6. 变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。

本题考察系统需求分析中结构化系统建模的数据流图、ER图,以及面向对象方法中的用例相关概念。

Essential Use Cases和Real Use Cases是按照开发阶段来进行划分的。Essential Use Cases是在面向对象分析阶段使用的,Real Use Cases是在面向对象设计阶段使用的Essential Use Cases 描述的是用例的本质属性,它与如何实现这个用例无关,独立于实现该用例的软硬件技术。Real Use Cases描述的是用例的实现方式,表达了设计和实现该用例时所采用的方法和技术。

【问题1】(12分)
若采用结构化方法对房屋租赁服务系统进行分析,得到如下图所示的房屋租赁服务系统顶层DFD。使用题干中给出的词语,给出该图中外部实体E1~E2、加工P1~P6以及数据存储D1~D4的名称。

房屋租赁服务系统顶层DFD

E1:房主
E2:租赁者
P1:登记房主信息
P2:登记房屋信息
P3:登记租赁者信息
P4:查询租赁房屋信息
P5:安排看房
P6:变更房屋状态
D1:房主信息文件
D2:租赁者信息文件
D3:房屋信息文件
D4:看房记录文件

【问题2】(5分)
若采用信息工程(Information Engineering)方法对房屋租赁服务系统进行分析,得到如下图所示的房屋租赁服务系统ERD。请给出该图中实体(1)~(5)的名称。

房屋租赁服务系统ERD

(1):房主
(2):房屋
(3):房屋类型
(4):租赁者
(5):看房安排

【问题3】(8分)
(1)信息工程方法中的“实体(entity)”与面向对象方法中的“类(class)”之间有哪些不同之处?
(2)在面向对象方法中通常采用用例(Use Case)来捕获系统的功能需求。用例可以按照不同的层次来进行划分,其中的Essential Use Cases和Real Use Cases有哪些区别?请用100字以内文字解释说明上述两个问题。

(1)实体用于数据建模,而类用于面向对象建模。实体只有属性,而类有属性和操作。

(2)Essential Use Cases(抽象用例)和Real Use Cases(基础用例)的区别在于:

  • Essential Use Cases用于分析阶段,Real Use Cases用于设计阶段。
  • Essential Use Cases描述用例的本质属性,它与如何实现该用例无关,独立于实现该用例的软硬件技术。
  • Real Use Cases描述用例的实现方式,表达了设计和实现该用例时所采用的方法和技术。

10.3 第4题:数据架构建模(缓存)

阅读以下关于分布式数据库缓存设计的叙述,回答问题1至问题3。

某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速开展业务,该企业采用轻量型的开发架构(脚本语言+关系型数据库)研制了一套业务系统。业务开展后受到用户普遍欢迎,用户数和业务数量迅速增长,原有的数据库服务器已不能满足高度并发的业务要求。为此,该企业成立了专门的研发团队来解决该问题。

张工建议重新开发整个系统,采用新的服务器和数据架构,解决当前问题的同时为日后的扩展提供支持。但是,李工认为张工的方案开发周期过长,投入过大,当前应该在改动尽量小的前提下解决该问题。李工认为访问量很大的只是部分数据,建议采用缓存工具MemCache来减轻数据库服务器的压力,这样开发量小,开发周期短,比较适合初创公司,同时将来也可以通过集群进行扩展。然而,刘工又认为李工的方案中存在数据可靠性和一致性问题,在宕机时容易丢失交易数据,建议采用Redis来解决问题。经过充分讨论,该公司最终决定采用刘工的方案。

本题考查分布式数据库缓存设计。

【问题1】(9分)
在李工和刘工的方案中,均采用分布式数据库缓存技术来解决问题。请用100字以内的文字说明分布式数据库缓存的基本概念。

下表(MemCache与Redis能力比较)对MemCache和Redis两种工具的优缺点进行了比较,请补充完善表中的空(1)~(6)。

MemCache与Redis能力比较

分布式数据库缓存指的是在高并发环境下,为了减轻数据库压力和提高系统响应时间,在数据库系统和应用系统之间增加的独立缓存系统。

(1):key-value、list、set、string、sorted(或丰富/多种数据结构)
(2):不支持
(3):客户端哈希分片/—致性哈希
(4):Redis5.0及以前版本不支持
(5):有,私有内存池
(6):不支持

【问题2】(8分)
刘工认为李工的方案存在数据可靠性和一致性的问题,请用100字以内的文字解释说明。

为避免数据可靠性和一致性的问题,刘工的方案采用Redis作为数据库缓存,请用200字以内的文字说明基本的Redis与原有关系数据库的数据同步方案。

(可靠性问题)MemCache没有持久化功能,所以掉电数据会全部丢失,而且无法直接恢复,这存在可靠性问题。
(一致性问题)MemCache不支持事务,所以操作过程中可能产生数据的不一致性。

同步方案:读取数据时,先读取Redis中的数据,如果Redis没有,则从原数据库中读取,并同步更新Redis中的数据。写回时,写回到原数据库中,并同步更新至Redis中。

【问题3】(8分)
请用300字以内的文字,说明Redis分布式存储的两种常见方案,并解释说明Redis集群切片的几种常见方式。

Redis分布式存储的常见方案:

  1. 主从模式(Master/Slave)
  2. 哨兵模式(Sentinel)
  3. 集群模式(Cluster)

Redis集群切片的常见方式:

  1. 客户端分片:在客户端就通过key的hash值对应到不同的服务器。
  2. 中间件实现分片:在应用软件和Redis中间(例如Twemproxy、Codis等)由中间件实现服务到后台Redis节点的路由分派。
  3. 客户端服务端协作分片:Redis Cluster模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务slot上。不同的slot对应到不同服务器。

10.4 第5题:Web应用系统架构设计

阅读以下关于Web系统设计的叙述,回答问题1至问题3。

某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理、转账汇款、自助缴费、理财投资、贷款管理、网上支付、财务报表分析等业务功能。但是,由于原有以分行为主体的银行信息系统中,多个业务系统采用异构平台、数据库和中间件,使用的报文交换标准和通信协议也不尽相同,使用传统的EAI解决方案根本无法实现新的业务模式下异构系统间灵活的交互和集成。因此,为了以最小的系统改进整合现有的基于不同技术实现的银行业务系统,该银行拟采用基于ESB的面向服务架构(SOA)集成方案实现业务整合。

本题考察SOA相关技术。

【问题1】(7分)
请分别用200字以内的文字说明什么是面向服务架构(SOA)以及ESB在SOA中的作用与特点。

SOA是一个组件模型,将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口采用中立的方式进行定义,应独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。

ESB在SOA中的作用与特点:

  • ESB是SOA的一种实现方式,具有总线作用,将各种服务进行连接与整合。
  • 描述服务的元数据和服务注册管理。
  • 可在服务请求者和提供者之间传递数据,以及对这些数据进行转换,并支持由实践中总结出来的一些模式(如同步模式、异步模式等)。
  • 具有发现、路由、匹配和选择的能力以支持服务之间的动态交互,解耦服务请求者和服务提供者,还具有对安全的支持、服务质量保证、可管理性和负载平衡等高级能力。

【问题2】(12分)
基于该信息系统整合的实际需求,项目组完成了基于SOA的银行信息系统架构设计方案。该系统架构图如下图(基于SOA的银行信息系统架构设计)所示:

基于SOA的银行信息系统架构设计

请从(a)~(i)中选择相应内容填入图中的(1)~(6),补充完善架构设计图。
(a)数据层
(b)界面层
(c)业务层
(d)bind
(e)企业服务总线ESB
(f)XML
(g)安全验证和质量管理
(h)publish
(i)UDDI
(i)组件层
(k)BPEL

(1):(c)
(2):(i)
(3):(h)
(4):(e)
(5):(g)
(6):(j)

【问题3】(6分)
针对银行信息系统的数据交互安全性需求,列举3种可实现信息系统安全保障的措施。

在SOA(面向服务的架构)环境中,确保服务的安全性是至关重要的,这涉及多个层面的保护措施(5选3即可):

  1. 引入https协议或采用加密技术对数据先加密再传输
  2. 采用信息摘要技术对重要信息进行完整性验证
  3. 防火墙系统
  4. 安全检测
  5. 网络扫描

11 2019下半年

11.1 第1题:软件架构风格、软件质量属性

阅读以下关于软件架构设计与评估的叙述,回答问题1和问题2。

某电子商务公司为了更好地管理用户,提升企业销售业绩,拟开发一套用户管理系统。该系统的基本功能是根据用户的消费级别、消费历史、信用情况等指标将用户划分为不同的等级,并针对不同等级的用户提供相应的折扣方案。在需求分析与架构设计阶段,电子商务公司提出的需求、质量属性描述和架构特性如下:

(a)用户目前分为普通用户、银卡用户、金卡用户和白金用户四个等级,后续需要能够根据消费情况进行动态调整;
(b)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御;
(c)在正常负载情况下,系统应在0.5秒内对用户的商品查询请求进行响应;
(d)在各种节假日或公司活动中,针对所有级别用户,系统均能够根据用户实时的消费情况动态调整折扣力度;
(e)系统主站点断电后,应在5秒内将请求重定向到备用站点;
(f)系统支持中文昵称,但用户名要求必须以字母开头,长度不少于8个字符;
(g)当系统发生网络失效后,需要在15秒内发现错误并启用备用网络;
(h)系统在展示商品的实时视频时,需要保证视频画面具有1024x768像素的分辨率,40帧/秒的速率;
(i)系统要扩容时,应保证在10人·月内完成所有的部署与测试工作;
(i)系统应对用户信息数据库的所有操作都进行完整记录;
(k)更改系统的Web界面接口必须在4人·周内完成;
(I)系统必须提供远程调试接口,并支持远程调试。

在对系统需求、质量属性描述和架构特性进行分析的基础上,该系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。

在评估系统的架构选择时,需要权衡灵活性、可扩展性和性能等多方面的需求。该系统特别关注折扣定义的灵活性,这意味着需要一个能够轻松修改和扩展折扣规则的系统。

基于规则的架构风格非常适合该题中的场景,因为它允许将用户级别、折扣规则等定义为可动态改变的数据,从而避免在每次需要调整规则时修改和重新部署代码。当需要添加新的用户级别或折扣规则时,只需定义新的规则并更新规则数据,而无需对整个系统进行修改或重启。然而,基于规则的架构可能会带来一些性能上的挑战,因为系统需要实时解释和执行这些规则。

面向对象的架构风格(Object-Oriented Architecture)确实在性能上可能更具优势,因为它将用户级别、折扣规则等封装为对象,这些对象在系统启动时加载并可以直接运行。但是,当需要添加新的用户级别或折扣规则时,可能需要重新定义新的对象并重启系统,这降低了系统的可扩展性。

【问题1】(13分)
针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种架构风格,并从用户级别、折扣规则定义的灵活性、可扩展性和性能三个方面对这两种架构风格进行比较与分析,填写下表(两种架构风格的比较与分析)中的(1)~(3)空白处。

两种架构风格的比较与分析

针对用户级别与折扣规则管理功能的架构设计问题,该系统更适合采用基于规则的架构风格。

(1)将用户级别、折扣规则等描述为可动态改变的规则数据
(2)加入新的用户级别和折扣规则时需要重新定义新的对象,并需要重启系统
(3)用户级别和折扣规则已经在系统内编码,可直接运行,性能较好

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

会员管理系统效用树

(1):安全性
(2):可修改性
(3):(h)
(4):(j)
(5):(e)
(6):(k)

11.2 第2题:系统需求分析(结构化系统建模)

阅读下列说明,回答问题1至问题3,将解答填入对应栏内。 >
某软件企业为快餐店开发一套在线订餐管理系统,主要功能包括:

(1)在线订餐:已注册客户通过网络在线选择快餐店所提供的餐品种类和数量后提交订单,系统显示订单费用供客户确认,客户确认后支付订单所列各项费用。
(2)厨房备餐:厨房接收到客户已付款订单后按照订单餐品列表选择各类食材进行餐品加工。
(3)食材采购:当快餐店某类食材低于特定数量时自动向供应商发起采购信息,包括食材类型和数量。供应商接收到采购信息后按照要求将食材送至快餐店并提交已采购的食材信息。系统自动更新食材库存。
(4)生成报表:每个周末和月末,快餐店经理会自动收到系统生成的统计报表,报表中详细列出了本周或本月订单的统计信息以及库存食材的统计信息。
现采用数据流图对上述订餐管理系统进行分析与设计,系统未完成的0层数据流图如下图所示。

未完成的0层数据流图

本题考察结构化需求分析中的数据流图。

【问题1】(8分)
根据订餐管理系统功能说明,请在该图所示的数据流图中给出外部实体E1~E4和加工P1~P4的具体名称。

E1:客户
E2:厨房
E3:经理
E4:供应商
P1:在线订餐
P2:厨房备餐
P3:生成报表
P4:食材采购

【问题2】(8分)
根据数据流图规范和订餐管理系统功能说明,请说明在该图中需要补充哪些数据流可以构造出完整的0层数据流图。

增加E1到P1数据流“餐品订单”

增加P1到P2数据流“餐品订单”

增加D1到P3数据流“订单汇总”

增加P3到E3数据流“统计报表”

【问题3】(9分)
根据数据流图的含义,请说明数据流图和系统流程图之间有哪些方面的区别。

  • 数据流图中的处理过程通常具备并行处理能力,可以同时执行多个处理过程;而系统流程图则强调在某一特定时间点,系统只能处于一个处理过程的状态中。
  • 数据流图主要聚焦于展现系统的数据流动情况,通过数据流向和转换过程来反映系统的数据处理逻辑;而系统流程图则侧重于展示系统的控制流,即各个处理过程之间的控制关系和逻辑顺序。
  • 数据流图在展现全局处理过程时,各个过程之间可能遵循不同的计时标准;而系统流程图在描述处理过程时,则强调遵循一致的计时标准。

11.3 第4题:数据架构建模(缓存)

阅读以下关于分布式数据库缓存设计的叙述,回答问题1至问题3。

某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务器不能满足高速并发的业务要求。

为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。

本题考查分布式数据库缓存设计。

【问题1】(11分)
该系统使用过程中,由于同样的数据分别存在于数据库和缓存系统中,必然会造成数据同步或数据不一致性的问题。该企业团队为解决这个问题,提出了如下解决思路:

应用程序读数据时,首先读缓存,当该数据不在缓存时,再读取数据库;应用程序写数据时,先写缓存,成功后再写数据库;或者先写数据库,再写缓存。

王工认为该解决思路并未解决数据同步或数据不一致性的问题,请用100字以内的文字解释其原因。

王工给出了一种可以解决该问题的数据读写步骤如下:

读数据操作的基本步骤:

  1. 根据key读缓存
  2. 读取成功则直接返回
  3. 若key不在缓存中时,根据key(a)
  4. 读取成功后,(b)
  5. 成功返回

写数据操作的基本步骤:

  1. 根据key值写(c)
  2. 成功后(d)
  3. 成功返回

请填写完善上述步骤中(a)~(d)处的空白内容。

关于数据同步的潜在问题,当执行写入操作时,存在一种称为双写不一致的隐患。具体而言,有时我们可能遇到缓存写入成功但数据库写入失败,或者数据库写入成功而缓存更新失败的情况,这会导致数据在两个存储系统之间出现不一致。此外,当多个请求发生时,也可能产生读写冲突的并发问题。

(a):从数据库中读取数据或读数据库
(b):更新缓存中key值或更新缓存
(c):数据库
(d):删除缓存key或使缓存key失效或更新缓存(key值)

【问题2】(8分)
缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的查询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。

经过运维人员的深入分析,发现存在两种情况:

(1)用户请求的key值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力;
(2)系统运行期间,发生了黑客攻击,以大量系统不存在的随机key发起了查询请求,从而导致了数据库服务器的宕机。

经过研究,研发团队决定,当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询。

请用100字以内文字说明该设置空值方案存在的问题,并给出解决思路。

存在问题:不在系统中的key值是无限的,如果均设置key值为空,会造成内存资源的极大浪费,引起性能急剧下降。

解决思路:查询缓存之前,对key值进行过滤, 只允许系统中存在的key进行后续操作(例如采用key的bitmap进行过滤)。

【问题3】(6分)
缓存系统中的key一般会存在有效期,超过有效期则key失效;有时也会根据LRU算法将某些key移出内存。当应用软件查询key时,如key失效或不在内存,会重新读取数据库,并更新缓存中的key。

运维团队发现在某些情况下,若大量的key设置了相同的失效时间,导致缓存在同一时刻众多key同时失效,或者瞬间产生对缓存系统不存在key的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。

请用100字以内文字,给出解决该问题的两种不同思路。

缓存key值同时失效导致系统性能急剧下降甚至崩溃的问题,可能的解决方案包括:

  1. 缓存失效后,通过加排它锁或者队列方式控制数据库写缓存的线程数量,使得缓存更新串行化。
  2. 给不同key设置随机或不同的失效时间,使失效时间的分布尽量均匀。
  3. 设置两级或多级缓存,避免访问数据库服务器。

11.4 第5题:Web应用系统架构设计、软件质量属性

阅读以下关于Web系统架构设计的叙述,回答问题1至问题3。

某公司拟开发一个物流车辆管理系统,该系统可支持各车辆实时位置监控、车辆历史轨迹管理、违规违章记录管理、车辆固定资产管理、随车备品及配件更换记录管理、车辆寿命管理等功能需求。其非功能性需求如下:

(1)系统应支持大于50个终端设备的并发请求;
(2)系统应能够实时识别车牌,识别时间应小于1s;
(3)系统应7x24小时工作;
(4)具有友好的用户界面;
(5)可抵御常见SQL注入攻击;
(6)独立事务操作响应时间应小于3s;
(7)系统在故障情况下,应在1小时内恢复;
(8)新用户学习使用系统的时间少于1小时。

面对系统需求,公司召开项目组讨论会议,制订系统设计方案,最终决定基于分布式架构设计实现该物流车辆管理系统,应用Kafka、Redis数据缓存等技术实现对物流车辆自身数据、业务数据进行快速、高效的处理。

本题考查的是软件质量属性和Web应用系统架构设计。

【问题1】(4分)
请将上述非功能性需求(1)~ (8)归类到性能、安全性、可用性、易用性这四类非功能性需求。

性能:(1)(2)(6)
安全性:(5)
可用性:(3)(7)
易用性:(4)(8)

【问题2】(14分)
经项目组讨论,完成了该系统的分布式架构设计,如下图(物流车辆管理系统架构设计图)所示。请从下面给出的(a)~(i)中进行选择,补充完善下图中(1)~(7)处空白的内容。
(a)数据存储层
(b)Struct2
(c)负载均衡层
(d)表现层
(e)HTTP协议
(f)Redis数据缓存
(g)Kafka分发消息
(h)分布式通信处理层
(i)逻辑处理层
(j)CDN内容分发

物流车辆管理系统架构设计图

(1):(d)
(2):(e)
(3):(i)
(4):(h)
(5):(g)
(6):(f)
(7):(a)

【问题3】(7分)
该物流车辆管理系统需抵御常见的SQL注入攻击,请用200字以内的文字说明什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式。

SQL注入攻击:通过把SQL命令插入到 Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

可通过以下方式抵御SQL注入攻击(6选2即可):

  1. 使用正则表达式
  2. 使用参数化的过滤性语句
  3. 检查用户输入的合法性
  4. 用户相关数据加密处理
  5. 存储过程来执行所有的查询
  6. 使用专业的漏洞扫描工具

12 2020下半年

12.1 第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)~(4)空白处。

两种架构风格的比较与分析

应采用仓库风格。(5分)

表中空白处分别为(8分):

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

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

效用树

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

12.2 第2题:数据架构建模

阅读下列说明,回答问题1至问题3,将解答填入对应栏内。

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

包裹单示意图

当较低层次上实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较高层次上实体类型为超类型,反之为子类型。子类到超类的过程为概化,超类到子类的过程为特化。

  • 子类与超类之间具有继承特点,即子类包含了超类的所有属性,并且可以比超类拥有更多的属性。
  • 这种继承性可通过子类实体和超类实体设置相同的实体标识符来实现。

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

逻辑数据模型设计过程包含的任务:

  1. 构建系统上下文数据模型,包含实体及实体之间的联系
  2. 绘制基于主键的数据模型,为每个实体添加主键属性
  3. 构建全属性数据模型,为每个实体添加非主键属性
  4. 利用规范化技术建立系统规范化数据模型

包裹单的逻辑数据模型中包含的实体:

  • 收件人(主键:电话)
  • 寄件人(主键:电话)
  • 包裹单(主键:编号)

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

超类实体是将多个实体中相同的属性组合起来构造出的新实体。

用户(姓名, 电话, 单位名称, 详细地址)

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

派生属性是指某个实体的非主键属性由该实体其他非主键属性决定。

包裹单中的总计可由资费、挂号费、保价费、回执费计算得出,所以是派生属性。

12.3 第4题:数据架构建模(缓存)

阅读以下关于数据库缓存的叙述,回答问题1至问题3。

某互联网文化发展公司因业务发展,需要建立网上社区平台,为用户提供一个对网络文化产品(如互联网小说、电影、漫画等)进行评论、交流的平台。该平台的部分功能如下:

(a)用户帖子的评论计数器;
(b)支持粉丝列表功能;
(c)支持标签管理;
(d)支持共同好友功能等;
(e)提供排名功能,如当天最热前10名帖子排名、热搜榜前5排名等;
(f)用户信息的结构化存储;
(g)提供好友信息的发布/订阅功能。

该系统在性能上需要考虑高性能、高并发,以支持大量用户的同时访问。开发团队经过综合考虑,在数据管理上决定采用Redis+数据库(缓存+数据库)的解决方案。

Redis有两种主要持久化机制:RDB(Redis Database)和AOF(Append Only File)。RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,而AOF则将每一个写命令都追加到日志文件中。

过期策略:即redis针对过期的key使用的清除策略,Redis的过期策略为“定期删除+惰性删除”。

  • 定期删除:redis将每个设置了过期时间的key放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的key。 redis默认每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,若过期则删除。(随机抽取的原因:减轻CPU负载)
  • 惰性删除:定期删除可能会导致很多过期key到了过期时间并没有被删除——假如过期key靠定期删除没有被删除,还停留在内存里,除非系统主动去查该key才会被redis删除。因此需要惰性删除——在客户端访问这个key的时候,redis对key的过期时间进行检查,若过期则立即删除,不会返回任何东西。

由于redis定期删除是随机抽取检查,不可能扫描清除所有过期key,并且若key未被请求,无法触发惰性删除,则会导致redis的内存占用越来越高。此时需要内存淘汰机制。

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

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

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

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

  • 磁盘更新频率:AOF比RDB文件更新频率高。
  • 数据安全:AOF比RDB更安全。
  • 数据一致性:RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF通过append模式写文件,即使发生服务器宕机,也可通过redis-check-aof工具解决数据一致性问题。
  • 重启性能:RDB性能比AOF好。
  • 数据文件大小:AOF文件比RDB文件大。

综合上述五个方面的比较,考虑在系统出现宕机等故障时,需要在最短时间内通过重启等方式重新建立服务,因此开发团队最终选择了RDB方式。

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

失效场景:若“定期删除”既未删除KEY,也未及时去请求KEY,即“惰性删除”未生效,则Redis默认的“定期删除+惰性删除"策略失效。

对此,可采用内存淘汰机制解决(5选3即可):

  1. volatile-Iru:从已设置过期时间的数据集最近最少使用的数据淘汰。
  2. volatile-ttl:从已设置过期时间的数据集将要过期的数据淘汰。
  3. volatile-random:从已设置过期时间的数据集任意选择数据淘汰。
  4. allkeys-Iru:从数据集最近最少使用的数据淘汰。
  5. allkeys-random:从数据集任意选择数据淘汰。

补充:系统默认淘汰策略为no-enviction(禁止驱逐数据),即不淘汰。

12.4 第5题:Web应用系统架构设计、软件质量属性

阅读以下关于Web系统架构设计的叙述,回答问题1至问题3。

某公司拟开发一款基于Web的工业设备检测系统,以实现对多种工业数据的分类采集,运行状态检测以及相关信息的管理。该系统应具备以下功能:

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

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

(a)系统应支持大于100个工业设备的运行检测;
(b)设备数据从制造现场传输到系统后台传输时间小于1s;
(c)系统应在7×24小时工作;
(d)可抵御常见XSS攻击;
(e)系统在故障情况下,应在0.5小时内恢复;
(f)支持数据审计。

面对系统需求,公司召开项目讨论会议,制定系统设计方案,最终决定使用三层拓扑结构,即现场设备数据采集层、Web检测服务层和前端Web显示层。

本题考查的是软件质量属性和Web应用系统架构设计(Spring)。

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操作过程。

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

非功能性需求归类表

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

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

(a)Connection Pool
(b)Struts2
(c)Persistent Layer
(d)Mybatis
(e)HTTP
(f)MVC
(g)Kafka 24549/84
(h)View Layer
(i)JSP
(j)Controller Layer
(k)Spring

SSM框架工作流程图

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

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

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


13 2021下半年

13.1 第1题:软件架构风格、软件质量属性

阅读以下关于软件架构设计与评估的叙述,回答问题1和问题2。

某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。

该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程,采用自助方式进行智能应用设计、实现与部署,并可以开发新算法组件加入平台中。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:

(a)平台用户分为算法工程师、软件工程师和管理员等三种角色,不同角色的功能界面有所不同;
(b)平台应该具备数据库保护措施,能够预防核心数据库被非授权用户访问;
(c)平台支持分布式部署,当主站点断电后,应在20秒内将请求重定向到备用站点;
(d)平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式;
(e)平台主站点宕机后,需要在15秒内发现错误并启用备用系统;
(f)在正常负载情况下,机器学习流程从提交到开始执行,时间间隔不大于5秒;
(g)平台支持硬件扩容与升级,能够在3人·天内完成所有部署与测试工作;
(h)平台需要对用户的所有操作过程进行详细记录,便于审计工作;
(i)平台部署后,针对界面风格的修改需要在3人·天内完成;
(j)在正常负载情况下,平台应在0.5秒内对用户的界面操作请求进行响应;
(k)平台应该与目前国内外主流的机器学习应用开发平台的界面风格保持一致;
(I)平台提供机器学习算法的远程调试功能,支持算法工程师进行远程调试。

在对平台需求、质量属性描述和架构特性进行分析的基础上,公司的架构师给出了三种候选的架构设计方案,公司目前正在组织相关专家对平台架构进行评估。

本题是架构案例中的经典题型:软件架构风格+软件质量属性。

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

质量效用树

(1):性能
(2):可修改性
(3):(e)
(4):(j)
(5):(h)
(6):(i)

【问题2】(16分)
针对该系统的功能,赵工建议采用解释器 (Interpreter)架构风格,李工建议采用管道过滤器(Pipe-and-Filter)的架构风格,王工则建议采用隐式调用(Implicit Invocation)架构风格。请针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析,并指出该平台更适合采用哪种架构风格。

本题系统中有多个应用场景提到了系统分角色有不同的操作流程与界面,以及在修改扩充系统时,需要能够在限定时间内快速完成任务。基于这样的情况,根据题意从两方面进行分析:

  • 解释器:机器学习流程定义的灵活性高,学习算法的可扩展性强。因为解释器风格可以通过自定义流程规则及配套流程解释引擎开发,做到用户层面的流程完全定义,而不需要修改代码,所以无论是修改已有的业务流程,还是要扩展不同的角色,创建新角色的流程都非常便利。解释器按照输入输出格式将学习算法封装为组件,通过解释器机制动态增加或删除算法组件,并支持动态调用,学习算法的可扩展性强。
  • 管道过滤器:机器学习流程定义的灵活性低,学习算法的可扩展性弱。因为管道过滤器把数据处理职能做成过滤器,把数据传递做成管道,此时若流程不发生变化,则可以通过这种方式实现,但一旦发生流程变化或功能扩展,则需对过滤器进行修改调整,或在程序层面重建流程,此时必须修改代码完成任务。管道过滤器按照输入输出格式将学习算法封装为组件,如果需要增加或删除组件,需要停止平台并进行重新部署,学习算法的可扩展性弱。
  • 隐式调用:机器学习流程定义的灵活性一般,学习算法的可扩展性一般。隐式调用强调通过间接方式进行调用,如采用事件机制,要完成某个动作需先触发事件,事件与相关动作关联以提升灵活度。本题中可将角色执行业务的流程用事件触发。这种做法比管道过滤器强,但弱于完全自定义的解释器。隐式调用按照输入输出格式将学习算法封装为处理函数,支持动态增加和删除函数,学习算法的可扩展性一般。

经过综合比较与分析,可以看出该系统更适合使用解释器风格。

13.2 第2题:系统设计建模(面向对象设计)

阅读以下关于软件系统设计与建模的叙述,回答问题1至问题3。

某医院拟委托软件公司开发一套预约挂号管理系统,以便为患者提供更好的就医体验,为医院提供更加科学的预约管理。本系统的主要功能描述如下:(a)注册登录,(b)信息浏览,(c)账号管理,(d)预约挂号,(e)查询与取消预约,(f)号源管理,(g)报告查询,(h)预约管理,(i)报表管理,(i)信用管理。

本题考查UML建模相关知识内容。

【问题1】(6分)
若采用面向对象方法对预约挂号管理系统进行分析,得到如图所示的用例图。请将合适的参与者名称填入图中的(1)(2)处,使用题干给出的功能描述(a)~(i),完善用例(3)~(12)的名称。

用例图

(1):预约人员(患者)
(2):医院管理人员
(3):(a)
(4)~(8):(b)(c)(d)(e)(g),顺序可变
(9)~(12):(f)(h)(i)(j),顺序可变

【问题2】(10分)
预约人员(患者)登录系统后发起预约挂号请求,进入预约界面。进行预约挂号时使用数据库访问类获取医生的相关信息,在数据库中调用医生列表,并调取医生出诊时段表,将医生出诊时段反馈到预约界面,并显示给预约人员;预约人员选择医生及就诊时间后确认预约,系统反馈预约结果,并向用户显示是否预约成功。

采用面向对象方法对预约挂号过程进行分析,得到如下图所示的顺序图,使用题干中给出的描述,完善下图中对象(1)及消息(2)~(4)的名称。请简要说明在描述对象之间的动态交互关系时,协作图与顺序图存在哪些区别。

顺序图

(1):预约人员(患者)
(2):预约挂号请求
(3):显示医生可预约时段
(4):显示预约是否成功

顺序图强调对象交互的时间次序,协作图强调对象之间的组织结构。

【问题3】(9分)
采用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型,请分别介绍这3种模型,并详细说明它们之间的关联关系,针对上述模型,说明哪些模型可用于软件的需求分析?

对象模型用于描述系统数据结构;动态模型用于描述系统控制结构;功能模型用于描述系统功能。

这3种模型都涉及数据、控制和操作等共同的概念,但侧重点不同,从不同侧面反映了系统的实质性内容,综合起来全面地反映了对目标系统的需求。

功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候做;对象模型则定义了做事情的实体。

对象模型、动态模型和功能模型均可用于软件的需求分析。

13.3 第4题:数据架构建模(反规范化、缓存)

阅读以下关于数据库设计的叙述,回答问题1至问题3。

某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务。该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存(Redis)的混合架构实现。

经过规范化设计之后,该系统的部分数据库表结构如下所示:

供应商(供应商ID,供应商名称,联系方式,供应商地址)
药品(药品ID,药品名称,药品型号,药品价格,供应商ID)
药品库存(药品ID,当前库存数量)
订单(订单号码,药品ID,供应商ID,药品数量,订单金额)

本题考查反规范化和Redis缓存等数据库知识。

【问题1】(9分)
在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系表过于细分,造成了大量的多表关联查询,影响了性能。例如当用户查询商品信息时,需要同时显示该药品的信息、供应商的信息、当前库存等信息。

为此,刘工认为可以采用反规范化设计来改造药品关系的结构,以提高查询性能。修改后的药品关系结构为:

药品(药品ID,药品名称,药品型号,药品价格,供应商ID,供应商名称,当前库存数量)

请用200字以内的文字说明常见的反规范化设计方法,并说明用户查询商品信息应该采用哪种反规范化设计方法。

常见的反规范化技术包括:

  1. 增加冗余列:在多个表中具有相同的列。作用为在查询时避免连接操作。
  2. 增加派生列:增加的列通过表中其他数据计算生成。作用为在查询时减少计算量,从而加快查询速度。
  3. 重新组表:如果许多用户需要查看两个表连接出来的结果数据,则可将这两个表重新组成一个表来减少连接,从而提高性能。
  4. 分割表:有时对表做分割可以提高性能。

用户查询商品信息应采用“增加冗余列”。用户查询商品信息时,需要显示药品信息(药品表中),供应商信息(供应商表),库存信息(库存表中),此时查询的是药品表,但表中缺了供应商的信息和库存信息,可以通过增加冗余列的方式把这些信息并过来。以避免连接操作带来的查询性能下降。

【问题2】(9分)
王工认为,反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。请用200字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说明该系统应该采用哪种方法。

针对反规范化数据不一致问题,可采用的解决方案包括:

  1. 触发器数据同步
  2. 应用程序数据同步
  3. 批处理同步

本系统应该采用“应用程序数据同步”或“触发器数据同步”方式。

【问题3】(7分)
该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis和MySQL的数据实时同步问题。

(1)Redis的数据类型包括String、Hash、List、Set和ZSet等,请说明实现当前热销药品排名的功能应该选择使用哪种数据类型。
(2)请用200字以内的文字解释说明解决Redis和MySQL数据实时同步问题的常见方案。

(1)热销药品排名适合用ZSet,即有序集合类型。(原因:排行榜既要去重,又要排序)

(2)要实现Redis和MySQL之间的同步,常见方法包括:

  1. 实时同步方案,先查缓存,查不到再从DB查询,并保存到缓存;更新缓存时先更新数据库,再将缓存设置过期。
  2. 异步队列方式同步,可采用消息中间件处理。
  3. 过数据库插件完成数据同步。
  4. 利用触发器进行缓存同步。

13.4 第5题:Web应用系统架构设计

阅读以下关于Web系统架构设计的叙述,回答问题1至问题3。

某公司拟开发一个智能家居管理系统,该系统的主要功能需求如下:

(1)用户可使用该系统客户端实现对家居设备的控制,且家居设备可向客户端反馈实时状态;
(2)支持家居设备数据的实时存储和查询;
(3)基于用户数据,挖掘用户生活习惯,向用户提供家居设备智能化使用建议。

基于上述需求,该公司组建了项目组,在项目会议上,张工给出了基于家庭网关的传统智能家居管理系统的设计思路,李工给出了基于云平台的智能家居系统的设计思路。经过深入讨论,公司决定采用李工的设计思路。

【问题1】(8分)
请用400字以内的文字简要描述基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点,以说明项目组选择李工设计思路的原因。

网关管理:云平台更强,可以实现远程网关管理,可以对不同地点的多种设备进行统一管理,管理能力更强。

数据处理:云平台的海量存储空间、高计算性能和灵活的拓展功能,为基于用户数据的智能预测和决策方法提供了更好的支持。而家庭网关将数据的存储及处理交付网关,由于网关硬件性能的限制,可能存在家居设备海量数据存储及智能应用需求得不到有效的支持等问题。

系统性能:数据存在云上数据库中,通信效率更高,同时云也有更强的数据处理能力,所以会更高效。家庭网关的独立管理,一旦网关被售出,后期便难以进行系统的升级和拓展。

【问题2】(12分)
请从下面给出的(a)~(j)中进行选择,补充完善下图中空(1)~(6)处的内容,协助李工完成该系统的架构设计方案。

该系统的架构设计方案

(a)Wi-Fi
(b)蓝牙
(c)驱动程序
(d)数据库
(e)家庭网关
(f)云平台
(g)微服务
(h)用户终端
(i)鸿蒙
(j)TCP/IP

(1):(h)
(2):(i)
(3):(f)
(4):(d)
(5):(e)
(6):(c)

【问题3】(5分)
该系统需实现用户终端与服务端的双向可靠通信,请用300字以内的文字从数据传输可靠性的角度对比分析TCP和UDP通信协议的不同,并说明该系统应采用哪种通信协议。

该系统应采用TCP协议,这样才能保障用户终端和服务端之间的双向可靠通信。

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP之所以可靠,是因为建立连接时有3次握手,通信时有回应机制,因此丢包后能重传,以保障通信可靠性。

UDP是一种面向无连接的传输层通信协议,丢包后不会重传,故无法保障通信可靠性。


14 2022下半年

14.1 第1题:软件架构风格、软件质量属性

阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。

某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对简单,系统性能方面不做过多考虑。新系统除了保持现有的四级固定会员制度外,还需要根据用户的消费金额、偏好、重复性等相关特征动态调整商品的折扣力度,并支持在特定的活动周期内主动筛选与活动主题高度相关的用户集合,提供个性化的打折促销活动。

在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效;
(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警;
(c)在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应;
(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符;
(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息;
(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点;
(g)系统支持横向存储扩展,要求在2人·天内完成所有的扩展与测试工作;
(h)系统宕机后,需要在10秒内感知错误,并自动启动热备份系统;
(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断;
(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计;
(k)支持对系统的外观进行调整和配置,调整工作需要在4人·天内完成。

在对系统需求、质量属性描述和架构特性进行分析的基础上,系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。

问题1主要考查考生对软件架构评估、软件质量属性以及架构评估中相关概念的理解与掌握。考生应该在熟记基础概念的基础上结合实际问题灵活掌握并应用这些概念。在解答本题时,首先需要对题干中的所有软件需求描述进行分析与梳理,区分并找出其中的需求分析、软件质量属性描述,或者可能的风险、权衡点或敏感点描述。

具体列举如下:(a)易用性;(b)安全性;(c)性能;(d)系统的设计约束;(e)性能;(f)可用性;(g)可修改性;(h)可用性;(i)可测试性;(i)安全性;(k)可修改性。

在解答问题2时,需要从可修改性、灵活性和系统性能三个方面进行综合考虑。从可修改性来看,解释器风格折扣规则是独立的语法规则,由解释器可对变化的规则进行解析,修改更容易。而面向对象相对固定,有变化需要修改具体的类。从灵活性来看,解释器可以根据用户灵活解释执行规则,优于面向对象。从系统性能来看,面向对象优于解释器。综合三个方面来看,解释器的优势更大,故该系统更适合采用解释器风格。

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

会员与促销管理系统效用树

(1):安全性
(2):可修改性
(3):(e)
(4):(j)
(5):(h)
(6):(k)

【问题2】(13分)
针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能;王工则建议采用解释器(Interpreters)架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。请针对系统的主要功能,从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。

应该选择解释器架构风格。

折扣规则的可修改性:解释器风格比面向对象方式实现强。面向对象相对固定,将其封装对象,有变化需要修改源代码。解释器风格折扣规则是独立的语法规则,由解释器可对变化的规则进行解析,调整时仅需要调整规则描述,无须修改源代码。

个性化折扣定义灵活性:解释器强于面向对象,面向对象架构风格需要将用户筛选条件封装为对象,调整筛选条件时需要修改源代码灵活性较低。解释器可以根据用户灵活解释执行规则,以规则数据的方式描述用户筛选条件,支持规则的动态加载与处理,灵活性较高。

系统性能:面向对象优于解释器。面向对象的实现相对固定,将折扣力度和筛选条件内置在系统源代码中,处理速度快,性能高,而解释器是运行期动态绑定执行,处理速度慢,性能低。

14.2 第2题:系统设计建模(结构化设计)

阅读以下关于软件系统设计与建模的叙述,在答题纸上回答问题1至问题3。

煤炭生产是国民经济发展的主要领域之一,其煤矿的安全非常重要。某能源企业拟开发一套煤矿建设项目安全预警系统,以保护煤矿建设项目从业人员生命安全。本系统的主要功能包括如下(a)~(h)所述:

(a)项目信息维护
(b)影响因素录入
(c)关联事故录入
(d)安全评价得分
(e)项目指标预警分析
(f)项目指标填报
(g)项目指标审核
(h)项目指标确认

本题考察结构化设计。

数据流图是描述数据处理过程的工具,从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。数据流在分析阶段的作用是建立系统的功能模型。在设计阶段的作用是为模块划分与模块之间接口设计提供依据。数据字典是对于数据流图中出现的所以被命名的图形元素在数据字典中作为一个词条加以定义,使得每个图形元素的名字都有一个确切的解释。用于描述系统中各类数据,为数据库概要设计、逻辑设计提供支持。

【问题1】(9分)
王工根据煤矿建设项目安全预警系统的功能要求,设计完成了系统的数据流图,如下图(煤矿建设项目安全预警系统数据流图)所示。请使用题干中描述的功能(a)~(h)补充完善空(1)~(6)处的内容,并简要介绍数据流图在分层细化过程中遵循的数据平衡原则。

煤矿建设项目安全预警系统数据流图

(1):(f)
(2):(g)
(3):(h)
(4):(d)
(5):(b)
(6):(e)

分层细化的数据平衡原则:

  1. 子图与父图之间的平衡:
    • 任何一张DFD子图边界上的输入/输出数据流必须与其父图对应加工的输入/输出数据流保持一致。
    • 如果父图中某个加工的一条数据流对应于子图中的几条数据流,而子图中组成这些数据流的数据项全体正好等于父图中的这条数据流,那么它们仍然是平衡的。
  2. 子图内部:加工的输入和输出需要平衡。每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。

【问题2】(9分)
请根据【问题1】中数据流图表示的相关信息,补充完善下图(煤矿建设项目安全预警系统总体E-R图)中实体(1)~(6)的具体内容,将正确答案填在答题纸上。

煤矿建设项目安全预警系统总体E-R图

(1):项目管理员
(2):项目经理
(3):项目指标数据
(4)~(6) :指标参数、项目信息、事故及影响因素参数

【问题3】(7分)
在结构化分析和设计过程中,数据流图和数据字典是常用的技术手段,请用200字以内的文字简要说明它们在软件需求分析和设计阶段的作用。

在软件需求分析阶段:

  • 数据流图主要用于建立软件的功能模型,以图形化方式呈现业务数据的流动和处理过程。
  • 数据字典是关于数据的信息集合,用于对数据流图中每个组成部分加以定义和说明。

在软件设计阶段:

  • 数据流图为模块划分与模块之间接口设计提供依据,数据流图主要用于经过一系列设计转换后,产生由模块图表示的软件设计模型;详细设计阶段数据流图可进行模块内部的数据流设计。
  • 数据字典用于描述系统中各类数据,为数据库概要设计、逻辑设计提供支持。

14.3 第4题:数据架构建模(缓存)

阅读以下关于数据库缓存的叙述,在答题纸上回答问题1至问题3。

某大型电商平台建立了一个在线B2B 商店系统,并在全国多地建设了货物仓储中心,通过提前备货的方式来提高货物的运送效率。但是在运营过程中,发现会出现很多跨仓储中心调货从而延误货物运送的情况。为此,该企业计划新建立一个全国仓储货物管理系统,在实现仓储中心常规管理功能之外,通过对在线B2B商店系统中订单信息进行及时的分析和挖掘,并通过大数据分析预测各地仓储中心中各类货物的配置数量,从而提高运送效率,降低成本。

当用户通过在线B2B商店系统选购货物时,全国仓储货物管理系统会通过该用户所在地址、商品类别以及仓储中心的货物信息和地址,实时为用户订单反馈货物起运地(某仓储中心)并预测送达时间。反馈送达时间的响应时间应小于1秒。

为满足反馈送达时间功能的性能要求,设计团队建议在全国仓储货物管理系统中采用数据缓存集群的方式,将仓储中心基本信息、商品类别以及库存数量放置在内存的缓存中,而仓储中心的其它商品信息则存储在数据库系统。

本题考察数据库缓存相关技术,首次考察缓存击穿与布隆过滤器。

【问题1】(9分)
设计团队在讨论缓存和数据库的数据一致性问题时,李工建议采取数据实时同步更新方案,而张工则建议采用数据异步准实时更新方案。

请用200字以内的文字,简要介绍两种方案的基本思路,说明全国仓储货物管理系统应该采用哪种方案,并说明采取该方案的原因。

  • 数据实时同步更新方案:当数据库数据更新时,同时更新内存的缓存数据,保持数据的强一致性。
  • 异步准实时更新方案:更新数据库后,通过发布订阅/MQ异步更新缓存,保持数据的准一致性。

题干中明确提出了反馈送达时间功能的性能要求,属于数据一致性实时要求比较高的应用场景,故应采用数据实时同步更新方案。

【问题2】(9分)
随着业务的发展,仓储中心以及商品的数量日益增加,需要对集群部署多个缓存节点,提高缓存的处理能力。李工建议采用缓存分片方法,把缓存的数据拆分到多个节点分别存储,减轻单个缓存节点的访问压力,达到分流效果。

缓存分片方法常用的有哈希算法和一致性哈希算法,李工建议采用一致性哈希算法来进行分片。请用200字以内的文字简要说明两种算法的基本原理,并说明李工采用一致性哈希算法的原因。

  • 哈希分片:通过对key进行hash操作,将数据分配到不同实例(类似于取余操作,余数相同的放在一个实例上)。
  • 一致性哈希分片:把存储结点和需要存储的数据都存放在一个hash环上,数据根据hash值在hash环上按顺时针方向存储到对应的结点上。

在扩充时,一致性哈希只需对少量数据进行存储位置的更新,而哈希分片需要对几乎所有数据进行存储位置更新。由于仓储中心以及商品数量很难有明确的上限,节点需要支持动态扩展,因此应采用一致性哈希算法。

【问题3】(7分)
全国仓储货物管理系统开发完成,在运营一段时间后,系统维护人员发现大量黑客故意发起非法的商品送达时间查询请求,造成了缓存击穿。张工建议尽快采用布隆过滤器方法解决。请用200字以内的文字解释布隆过滤器的工作原理和优缺点。

布隆过滤器通过一个长的二进制向量和一系列随机映射函数来记录与识别某个数据是否在一个集合中。若数据不在集合中,则会被过滤器识别出来,无需再到数据库中进行查找,能将数据库查询返回值为空的查询过滤掉。

优点:

  1. 占用内存小
  2. 查询效率高
  3. 无需存储元素本身,在某些对保密要求比较严格的场合有很大优势

缺点:

  1. 有一定的误判率,不能准确判断元素是否在集合中
  2. 无法获取元素本身
  3. 一般情况下不能从布隆过滤器中删除元素

14.4 第5题:Web应用系统架构设计

阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题1至问题3。

某公司拟开发一套基于边缘计算的智能门禁系统,用于如园区、新零售、工业现场等存在来访、被访业务的场景。来访者在来访前,可以通过线上提前预约的方式将自己的个人信息记录在后台,被访者在系统中通过此请求后,来访者在到访时可以直接通过“刷脸”的方式通过门禁,无需做其他验证。此外,系统的管理员可对正在运行的门禁设备进行管理。

基于项目需求,该公司组建项目组,召开了项目讨论会。会上,张工根据业务需求并结合边缘计算的思想,提出本系统可由访客注册模块、模型训练模块、端侧识别模块与设备调度平台模块等四项功能组成。李工从技术层面提出该系统可使用Flask框架与SSM框架为基础来开发后台服务器,将开发好的系统通过Docker进行部署,并使用MQTT协议对Docker进行管理。

本题考察Web应用系统架构设计,设计MQTT协议、边缘计算等新内容。

【问题1】(5分)
MQTT协议在工业物联网中得到广泛的应用,请用300字以内的文字简要说明MQTT协议。

MQTT(消息队列遥测传输)是一个基于发布/订阅模式的消息协议,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理。MQTT工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT协议是轻量、简单、开放和易于实现的。

【问题2】(14分)
在会议上,张工对功能模块进行了更进一步的说明:访客注册模块用于来访者提交申请与被访者确认申请,主要处理提交来访申请、来访申请审核业务,同时保存访客数据,为训练模块准备训练数据集;模型训练模块使用访客数据进行模型训练,为端侧设备的识别业务提供模型基础;端侧识别模块在边缘门禁设备上运行,使用训练好的模型来识别来访人员,与云端服务协作完成访客来访的完整业务;设备调度平台模块用于对边缘门禁设备进行管理,管理人员能够使用平台对边缘设备进行调度管理与状态监控,实现云端协同。

下图给出了基于边缘计算的智能门禁系统架构图,请结合HTTP协议和MQTT协议的特点,为图中(1)~(6)处选择合适的协议;并结合张工关于功能模块的描述,补充完善图中(7)~(10)处的空白。

基于边缘计算的智能门禁系统

(1):HTTP
(2):MQTT
(3):HTTP
(4):HTTP
(5):HTTP
(6):HTTP
(7):端侧识别
(8):模型训练
(9):设备调度平台
(10):访客注册

【问题3】(6分)
请用300字以内的文字,从数据通信、数据安全和系统性能等方面简要分析在传统云计算模型中引入边缘计算模型的优势。

数据通信:通信更快捷,数据量更少。边缘设备会先对采集到的原始数据进行计算,仅将处理后的少量有价值的数据上传到数据中心,极大减轻传海量数据对网络带宽造成的通信压力。如果数据全部上传到云数据中心,会产生较大的通信负担。

数据安全:数据以加密方式存储在需要用到的边缘设备上,本地化处理比对,减少原始信息在网上的传递带来的安全隐患。黑客也无法通过攻破一个结点使整个系统瘫痪。

系统性能:性能更高。边缘计算模型将部分数据处理环节从云计算中心转移到边缘设备上进行,省去了数据上传及与数据中心交互的环节,能明显提高系统性能,以人脸识别为例,在进行识别时,只在本地进行比对不用把人脸数据传递到远程服务器对比。


15 2023下半年

23年改革机试后再无完整版真题。

第1题:大数据架构(Lambda、Kappa)

第2题:系统设计建模(面向对象设计)

第4题:数据架构建模(主从、缓存)

第5题:Web应用系统架构设计


16 2024上半年

24年开始追加上半年考试。

第1题:微服务架构

第2题:系统设计建模

第4题:数据架构建模(缓存)

第5题:Web应用系统架构设计


17 2024下半年

第1题:软件质量属性

第2题:数据架构建模(缓存)

第4题:Web应用系统架构设计

第5题:软件设计

发表评论