架构真题2021(四十三)

  1. 产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器刻可读或人工可读)和各种版本()的集合。
  1. 需求规格说明、设计说明、测试报告
  2. 需求规则说明、设计说明、计算机程序
  3. 设计说明、用户手册、计算机程序
  4. 文档、计算机程序、部件及数据

答案:D

解析:

产品配置 文档、计算机程序、部件及数据。

  1. ()包括编制每个需求与系统元素之间的联系文档,这些元素包括其他需求、体系结构、设计部件、源代码模块、测试、帮助文档和文档等。
  1. 需求描述
  2. 需求分析
  3. 需求获取
  4. 需求跟踪

答案:D

解析:

跟踪对应联系。

  1. 软件生命周期,可以把软件生命周期划分为()。

答案:

软件定义、软件开发、软件运行、软件维护。

  1. 软件测试是保证软件质量的重要手段。()是指被测试程序不在机器上运行,而采用人工监测和计算机辅助分析的手段对程序进行监测。
  1. 静态测试
  2. 动态测试
  3. 黑盒测试
  4. 白盒测试

答案:A

解析:

静态测试,不运行程序本身,通过分析手段。

动态测试,通过运行的程序,分析运行的效率、正确性和健壮性。由 测试用例、执行程序和分析程序的输出结果。

白盒测试也是结构测试,主要检测编码过程中的错误。

黑盒测试则是功能测试。

5、4+1视图模型可以从多个视图或视角来描述软件架构。其中,()用于捕捉设计的并发和同步特征,()描述了在开发环境中软件的静态组织结构。

  1. 逻辑视图
  2. 开发视图
  3. 过程视图
  4. 物理视图

答案:C    

  1. 类视图
  2. 开发视图
  3. 过程视图
  4. 用例视图

答案:B

解析:

开发视图:描述了开发环境中软件静态组织结构。

物理视图:描述了软件到硬件的映射。

过程视图:捕捉设计并发和同步特征。

逻辑视图:设计的对象模型。

  1. 在架构评估中,一般采用()三个方面对场景进行描述。

答案:刺激、环境、响应

  1. 改编作品的著作权归属改编人。

试题一:架构设计与评估

【问题2】(16分)

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

答案:

解释器是基于独立的规则,可以用解释器来解析,灵活性高,扩展性强,不需要改动代码的动态适配。

管道-过滤器则强调传递,构件是过滤器,连接件是管道,强调数据传输,每次修改则修改改动代码,灵活性修改性稍差。

隐式调用则侧重于发布/订阅或者多播模式,当某个事件触发,注册的其他构件都会接受到消息异步变化,灵活性和扩展性稍差。

【问题 3】(9分)

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

答案:

对象模型,是最核心最基础的模型,用对象图建模。

动态模型,表示构件之间的交互,状态图建模。

功能模型,表示数据流的变化,数据流图建模。

对象模型是动态模型和功能模型的基础部分,它的操作代表动态模型的动作,功能模型的函数。

动态模型则表示当有变化的时候,激动相对应的功能。

功能模型则是建立在对象模型的操作,动态模型的动作之上,同时还表示了对象值的约束。

【问题1】(9分)

在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系表过于细分,造成了大量的多表关联查询,影响了性能。例如当用户查询商品信息时,需要同时显示该药品的信息、供应商的信息、当前库存等信息。

为此,刘工认为可以采用反规范化设计来改造药品关系的结构,以提高查询性能。修改后的药品关系结构为:

药品(药品ID,药品名称,药品型号,药品价格,供应商ID,供应商名称,当前库存数量);

请用200字以内的文字说明常见的反规范化设计方法,并说明用户查询商品信息应该采用哪种反规范化设计方法。

答案:

常见反规范化设计:

  1. 冗余列,多余的列,其他表存在的
  2. 冗余派生,某个列由其他多个列组合或计算而成
  3. 合并表,把多个表合并成一个。
  4. 拆分表,把不经常查询的字段拆分成独立的表,比如大的富文本字段,课本的详情介绍等。

【问题2】(9分)

王工认为,反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。请用200字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说明该系统应该采用哪种方法。

答案:1、可以采用事务解决不一致问题,事务的原子性要么全部成功,要么全部失败。2、定时器解决,当其中一个修改的时候,定时修改其他数据。3、可以采用数据库触发器,来解决。

这里介意采用定时器,代码侵入性小,修改小。

【问题3】(7分)

该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis和MySQL的数据实时同步问题。

( )Redis的数据类型包括String、Hash、List、Set和ZSet等,请说明实现当前热销药品排名的功能应该选择使用哪种数据类型。

( )请用200字以内的文字解释说明解决Redis和MySQL数据实时同步问题的常见方案。

答案:zset,

主动解决,读取binlog,在更新redis里面的值。

被动解决,每次查询的时候,如果redis没有数据,则取数据库查询,再放入redis缓存里,如果修改也需要更新redis里面的值,这时候出现数据不一致时候,可以考虑同延迟双删来解决。

【问题1】(8分)

请用400字以内的文字简要描述基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点,以说明项目组选择李工设计思路的原因。

答案:

网关管理:云平台更强,可以实现对不同地点不同设备远程网关管理。

数据处理,数据处理更好,因为数据在云平台,容灾和安全性也会更好。

系统性能在云平台效率更高,因为只需要关注自己的业务开发,其他都交给云平台

【问题3】(5分)

该系统需实现用户终端与服务端的双向可靠通信,请用300字以内的文字从数据传输可靠性的角度对比分析TCP和UDP通信协议的不同,并说明该系统应采用哪种通信协议。

答案:TCP是基于字节流的双向传输协议,并且有三次握手动作,保证丢包的情况下,会继续重试连接。

UDP是无连接传输协议,丢包不会重传,不可靠。