2021_系统架构设计师

8/24/2022 note

# 科目一 : 综合知识

# 1. 前趋图

前趋图 (Precedence Graph)是一个有向无环图,记为:→=(Pi,Pj)Pi must complete before Pj may strat),假设系统中进程P={P1, P2, P3, P4, P5, P6, P7, P8},且进程的前驱图如下:

img

A. => ((P1, P2),(P3, P1),(P4, P1),(P5, P2),(P5, P3), (P6, P4),(P7, P5), (P7, P6),(P5, P6), (P4, P5), (P6, P7),(P7, P6) ]

B. => ((P1, P2),(P1, P3), (P2, P5), (P2, P3),(P3, P4), (P3, P5) ,(P4, P5), (P5, P6),(P5, P7),(P8, P5), (P6, P7),(P7, P8) ]

✅ C. =>((P1, P2),(P1, P3), (P2, P3),(P2, P5), (P3, P4), (P3, P5),(P4, P6), (P5, P6),(P5, P7),(P5, P8), (P6, P8),(P7, P8) ]

D. =>[ (P1, P2),(P1, P3),(P2, P3),(P2, P5), (P3, P6), (P3, P4) ,(P4, P7) ,(P5, P6), (P6, P7),(P6, P5),(P7, P5),(P7, P8) ]

本题考查操作系统基本概念,图中的每个结点可用干描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序(Partial Order, 亦称偏序关系)或前趋关系(Precedence Relation) "→"。

对于题中所示的前趋图,存在前趋关系: C. => {(P1, P2),(P1, P3),(P2, P3),(P2,P5),(P3, P4), (P3, P5),(P4, P6),(P5, P6),(P5,P7) ,(P5,P8), (P6,P8),(P7, P8) }

答案: C

# 2. 物理地址计算

某计算机系统页面大小为4K,进程P1的页面变换表如下图所示

若P1要访问数据的逻辑地址为十六进制1B1AH,那么该逻辑地址经过变换后,其对应的物理地址应为十六进制()。

页号 物理块号
0 1
1 6
2 3
3 6

A. 1B1AH

B. 3B1AH

✅ C. 6B1AH

D. 8B1AH

页面大小4K=212,页内地址有12 位。对应十六进行逻辑地址的B1A,逻辑地址中的1 就是页号,通过查表可知对应的物理块号是6,物理地址为6B1AH。

答案: C

# 3. 地址索引

某文件系统文件存储采用文件索引节点法。每个文件索引节点中有8个地址项,每个地址项大小为4字节,其中5个地址项为直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引。磁盘索引块和磁盘数据块大小均为1KB。

若要访问iclsClient.dll文件的逻辑块号分别为1、518,则系统应分别采用()

A. 直接地址索引和直接地址索引

B. 直接地址索引和一级间接地址索引

✅ C. 直接地址索引和二级间接地址索引

D. 一级间接地址索引和二级间接地址索引

直接地址索引有5个地址项,对应逻辑块号0-4。

一级间接索引有2个地址项,每个地址项对应1Kb/4B=256个物理块,对应逻辑块号范围是5-516。

二级间接索引有一个地址项,对应256X 256=65536个物理块,对应逻辑块号范围是517以上。

518 > 5 + (1kb / 4b) * 2 = 517

答案: C

# 4. 互斥资源分配

假设系统中互斥资源R的可用数为25。T0时刻进程P1、P2、p3、P4对资源R的最大需求数、已分配资源数和尚需资源数的情况如表a所示

若P1和P3分别申请资源R数为1和2,则系统( )。

进程 最大需求数 已分配资源数 尚需资源数
P1 10 6 4
P2 11 4 7
P3 9 7 2
P4 12 6 2

(这题没选项,但是应该是求分配顺序)

R的可用数初始为25,目前已经给4个进程分配出去6+4+7+6=23个资源

R剩余2个资源只能分配给尚需资源数最少的P3,使之可以顺利运行,分配后系统也是安全的。

答案: B

# 5. E-R图设计

某企业开发信息管理系统平台进行E-R图设计

人力部门定义的是员工实体具有属性:员工号、姓名、性别、出生日期、联系方式和部门

培训部门定义的培训师实体具有属性:培训师号,姓名和职称,其中职称={初级培训师,中级培训师,高级培训师},

这种情况属于( )


A.属性冲突

✅ B.结构冲突

C.命名冲突

D.实体冲突


在合并E-R图时,解决这一冲突的方法是( )

A.员工实体和培训师实体均保持不变

B.保留员工实体、删除培训师实体

✅ C.员工实体中加入职称属性,删除培训师实体

D.将培训师实体所有属性并入员工实体,删除培训师实体


ER图集成时产生的冲突及解决办法

属性冲突:包括属性域和属性取值的冲突。

命名冲突:包括同名异义和异名同义。

结构冲突:包括同一对象在不同应用中具有不同的抽象,以及统一实体在不同的局部E-R图中所包含的属性个数和属性排列次序不完全相同。

本题中,培训师属于员工的一种,所以不应该抽象为两个不同的实体,这种冲突属于结 构冲突,解决方案是员工实体中加入职称属性,然后把培训教师实体删除。

答案: B、C。

# 6. 自然连接

看关系R.S如下表所示,则关系R与S进行自然连接运算后的属性列数和元组个数分别为( )。

下两图分别是 R 和 S

A B C D
6 6 1 5
6 1 5 1
6 1 5 4
6 3 7 4
B C
6 1
1 5
6 3

A.6和7

B.4和4

✅C.4和3

D.3和4

自然连接是在等值连接的基础上去掉重复的属性列 而等值连接又要求R和S有相等的属性才能连接 自然连接的结果是6615、6151、6154。

答案: C

# 7. SoC(System on Chip)

一般说来,SoC称为系统级芯片,也称片上系统,它是一个有专用且标的集成电路产品,以下关手SoC不正确的说法是( )

A. SoC是一种技术,是以实际的、确定的系统功能开始,到软/硬件划分,并完成设计的整个过程

B. SoC是一款具有运算能力的处理器芯片,可面向特定用途进行定制的标准产品

C. SoC是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上,完成信息系统的核心功能

D. SoC是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,是面向特定用途的标准产品

在SoC中软硬件的结合是十分紧密的 软件和硬件之间的功能划分以及它们的实现并没有固定的模式,而是随着应用的不同而变化。

答案: B

# 8. 嵌入式实时操作系统

嵌入式操作系统与一般操作系统相比,具备许多特点。以下不属于嵌入式实时操作系统特点的是( )。

A. 可剪裁性

B. 实时性

C. 通用性

D. 可固化性

实时操作系统特点:可移植性、可裁剪、可固化、稳定性与可靠性等特点。

答案: C

# 9. NDB (Netware Database System,NDB)

基于网络的数据库系统(Netware Database System,NDB)是基于4G/5G的移动通信之上,在逻辑上可以把嵌入式设备看作远程服务器的一个客户端。

以下有关NDB的摘述中,不正确的是( )

A. NDB主要由客户端、通信协议和远程服务器等三部分组成

B. NDB的客户端主要负责提供接口给嵌入式程序,通信协议负责规范客户端与远程服务器之间的通信,远程服务器负责维护服务器上的数据库数

C. NDB具有客户端小、无需支持可剪裁性、代码可重用等特点

D. NDB是以文件方式存储数据库数据。即数据按照一定格式储存在磁盘中,使用时由应用程序通过相应的驱动程序甚至直接对数据文件进行读写

NDB需要支持可剪裁性、代码可重用。

答案: C

# 10. AI芯片

人工智能技术已成为当前国际科技竞争的核心技术之一,AI芯片是占据人工智能市场的法宝。

AI芯片有别于通常处理器芯片,它应具备四种关键特征。( )是AI芯片的关键特点。

A.新型的计算范式、信号处理能力、低精度设计、专用开发工具

✅ B.新型的计算范式、训练和推断、大数据处理能力、可重构的能力

C.训练和推断、大数据处理能力、可定制性,专用开发工具

D.训练和推断、低精度设计、新型的计算范式、图像处理能力

AI芯片的关键特点有: 新型计算范式、训练和推断、大数据处理能力、数据精度、可重构能力、软件工具。

答案: B

# 11. 以太网

以下关于以太网交换机转发表的叙述中,正确的是( )

✅ A. 交换机的初始MAC地址表为空

B. 交换机接收到数据帧后,如果没有相应的表项,则不转发该帧

C. 交换机通过读取输入帧中的目的地址添加相应的MAC地址表项

D. 交换机的MAC地址表项是静态增长的,重启时地址表清空

B错误,因为交换机接收到数据帧后,如果没有相应的表项,交换机慧采用ARP洪泛操作,即广播方式进行转发

C错误,因为交换机通过读取输入帧中的源地址添加相应的MAC地址表项。

D选项错误,交换机的MAC地址表项是动态增长的。所以选A


2014年计算机网络考研真题及解析(34) (opens new window)

以太网交换机收到一个帧时的自学习和转发过程如下:

  1. 登记:提取帧的源MAC地址,然后将其与帧进入交换机端口的端口号作为一条记录存储到帧交换表(或称转发表)中;

  2. 转发:提取帧的目的MAC地址,若该MAC地址是一个广播地址,则将该帧从除进入交换机的端口外的其他所有端口转发;若该MAC地址是一个单播地址,则在帧交换表中查找该MAC地址,按以下情况处理:

  • 若找不到该MAC地址的记录,则进行“盲目地转发”,也就是除帧进入交换机的端口外的其他所有端口转发该帧,也称为泛洪;
  • 若找到该MAC地址的记录,取出记录中的端口号,若该端口号与帧进入交换机的端口的端口号不同,则按该端口号进行“明确地转发”;若该端口号与帧进入交换机的端口的端口号相同,则丢弃该帧。

# 12. Internet 交换方式

Intemet 网络核心采取的交换方式为( )

✅ A.分组交换

B.电路交换

C.虚电路交换

D.消息交换

Intemet网络核心采取的交换方式为分组交换,分组交换也叫包交换,它将所接收的分 组先进行存储再进行转发。

答案: A

# 13. SDN(Software Defined Network)

SDN(Software Defined Network)的网络架构中不包含( )。

✅ A.逻辑层

B.控制层

C.转发层

D.应用层

什么是软件定义网络 (SDN)?一张架构图搞定 (opens new window)

SDN(Software Defined Netwok)软件定义网络,本质是将网络软件化,这样就可以像升级、安装软件一样对网络进行修改,方便更多的应用程序能快速部署到网络上。

SDN网络架构有三层,分别是:

(1) 应用层。对应用户不同的业务和应用。

(2) 控制层。主要负责处理数据平面资源的编排,维护网络拓扑、状态信息等。

(3) 数据转发层。负责用户数据的转发。

答案: A

# 14. 测试相关

在Web服务器的测试中,反映其性能的指标不包括:()

A. 链接正确跳转

B. 最大并发连接数

C. 响应延迟

D. 吞吐量


常见的Web服务器性能 评测方法有基准性能测试、压力测试和( )

A. 功能测试

B. 黑盒测试

C. 白盒测试

✅ D. 可靠性测试

# 15. 企业数字化转型

企业数字化转型的五个发展阶段依次是( )

✅ A.初始级发展阶段、单元级发展阶段、流程级发展阶段、网络级发展险段、生态级发展阶段

B.初始级发展阶段、单元级发展阶段、系统级发展阶段、网络级发展阶段、生态级发展阶段

C.初始级发展阶段、单元级发展阶段、流程级发展阶段、网络服发展输段、优化级发展阶段

D.初始级发展阶段、流程级发展阶段、系统级发展险段、网络级发展阶段、生态级发展阶段

# 16. 信息化建设

信息化建设从信息化建设的角度出发,以下说法错误的是( )

A. 有效开发利用信息资源

B. 大力发展信息产业

C. 充分建设信息化政策法规和标准规范

D. 信息化的主体是程序员和项目经理

企业信息化是一个长期的过程,需要全体社会成员来完成。

答案: D

# 17. 信息化需求

政府、企业等对信息化的需求是能织信息化的原动力,它决定了组织信息化的价值取向和成果效益水平

而需求本身又是极为复杂的,它是一个系统的、多层次的目和体系、组织信息化需求通常包含线个层次,即( )

三个层次的需求并不是相互孤立的,而是有着内在的联系。

A.战略需求,运作需求,功能需求

✅ B.战略需术,运作需求,技术需求

C.市场需求,技术需求,用户需求

D.市场需求,技术需求,领域需求

# 18.《软件产品管理办法》

为了加强软件产品管理,促进我国软件产业的发展,原信息产业部颁布了《软件产品管理办法》

“办法”规定,软件产品的开发,生产,销售,进出口等活动遵守我国有关法律,法规和标准规范

任何单位和个人不得开发,生产,销售,进出口含有以下内容的软件产品( )

①侵犯他人的知识产权 ②含有计算机病毒 ③可能危害计算机系统安全 ④含有国家规定禁止传播的内容 ⑤不符合我国软件标准规范 ⑥未经国家正式批准

A. ①②③⑥

B. ①②③④⑥

✅ C. ①②③④⑤

D. ①②③④⑤⑥

# 19. CMMI

某软件企业在项目开发过程中目标明确,实施过程遵守既定的计划与流程,资源准备充分,权责到人

对整个流程进行严格的监测,控制与审查,符合企业管理体系与流程制度。因此,该企业达到了CMMI评估的()

A.可重复级

✅ B.已定义级

C.量化级

D.优化级

通过CMMI5的国内企业有几个?这个认证是不是很牛啊? (opens new window)

在CMMI的已定义级中,开发过程,包括技术工作和管理工作,均已实现标准化、文档化。

建立了完善的培训制度和专家评审制度,全部技术活动和管理活动均可控制,对项目进行中的过程、岗位和职责均有共同的理解。

答案: B

# 20. 产品配置

产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器可读或人工可读)和各种版本的( )的集合

A.需求规格说明、设计说明、测试报告

B.需求规格说明、设计说明、计算机程序

C.设计说明、用户手册、计算机程序

✅D.文档、计算机程序、部件及数据

产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器可读或人工可读)和各种版本的文挡、计算机程序、部件及数据的集合。

答案: D

# 21. 需求管理

需求管理的主要活动包括( )

A. 变更控制、版本控制、需求跟踪、需求状态跟踪

B. 需求获取、变更控制、版本控制、需求跟踪

C. 需求获取、需求建模、变更控制、版本控制

✅D. 需求获取、需求建模、需求评审、需求跟踪

# 22. 需求跟踪

()包括编制每个需求与系统元素之间的联系文档,这些元素包括其它需求、体系结构、设计部件、源代码模块、测试、帮助文件和文档等

A.需求描述

B.需求分析

C.需求获取

✅D.需求跟踪

# 23. 软件生命周期

根据传统的软件生命周期方法学,可以把软件生命周期划分为()

A. 软件定义、软件开发、软件测试、软件维护

✅B. 软件定义、软件开发、软件运行、软件维护

C. 软件分析、软件设计、软件开发、软件维护

D. 需求获取、软件设计、软件开发、软件测试

# 24. 敏捷方法

以下关于敏捷方法的描述中,不属于敏捷方法核心思想的是( )

A. 敏捷方法是适应型,而非可预测型

B. 敏捷方法以过程为本.

C. 敏捷方法是以人为本,而非以过程为本

D. 敏捷方法是迭代代增量式的开发过程.

[解析] 敏捷方法是一种以人为核心、迭代、循序渐进的开发方法。结构化开发方法是面向过程的

答案: B

# 25. RUP(Rational Unified Process)

RUP(Rational Unified Process)软件开发生命周期是一个二维的软件开发模型,其中,RUP的9个核心工作流中不包括( )

A. 业务建模

B. 配置与变更管理

✅C. 成本

D. 环境

RUP(Rational Unified Process)软件开发生命周期是一个二维的软件开发模型,RUP的9个核心工作流有:

  • 业务建模 :理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。

  • 需求:定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。

  • 分析与设计:把需求分析的结果转化为分析与设计模型。

  • 实现:把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。

  • 测试:检查各子系统的交互与集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。

  • 部署:打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。

  • 配置与变更管理:跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。

  • 项目管理:为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。

  • 环境: 为软件开发机构提供软件开发环境,即提供过程管 理和工具的支持。

答案: C

# 26. 版本控制

在软件开发和维护过程中,一个软件会有多个版本,( )工具用来存储、 更新、恢复和管理一个软件的多个版本。

A. 软件测试

✅B. 版本控制

C. UML建模

D. 逆向工程

在软件开发和维护过程中一个软件会有多个版本,版本控制工具(Git)用来存储、更新、恢复和管理一个软件的多个版本。

答案: B

# 27. 结构化设计

结构化设计是一种面向数据流的设计方法,以下不属于结构化设计工具的是( )

A. 盒图 B. HIPO 图 C. 顺序图 D. 程序流程图

顺序图是一种UML图,主要用于面向对象设计

答案: C

# 28. 软件设计过程

(1) 软件设计过程中,可以用耦合和内聚两个定性标准来衡量模块的独立程度,耦合衡量不同模块彼此间互相依赖的紧密程度,应采用以下设计原则( )

A. 尽量使用内容耦合、少用控制耦合和特征耦合、限制公共环境耦合的范围、完全不用数据耦合

✅B. 尽量使用数据耦合、少用控制耦合和特征耦合、限制公共环境耦合的范围、完全不用内容耦合

C. 尽量使用控制耦合、少用数据耦合和特征耦合、限制公共环境耦合的范围、完全不用内容耦合

D. 尽量使用特征耦合、少用数据耦合和控制耦合、限制公共环境耦合的范围、完全不用内容耦合

(2) 内聚衡量一个模块内部各个元素彼此结合的紧密程度,以下属于高内聚的是()。.

A. 偶然内聚

B. 时间内聚

✅C. 功能内聚

D. 逻辑内聚

内容耦合耦合性最强,模块的独立性最弱,因此不应该使用内容耦合。

根据题干信息,数据耦合在这里耦合性最弱,尽量使用数据耦合。 功能内聚内聚性最强,模块独立性也最强。

答案: B、C

# 29. UML

UML图( Unified Modeling Language)是面向对象设计的建模工具,独立于任何具体程序设计语言,以下()不属于UML中的模型

A. 用例图

B. 协作图

C. 活动图

D. PAD图

PAD图数据结构化设计的工具

答案: B、C

# 30. 环形复杂度

使用McCabe 方法可以计算程序流程图的环形复杂度,下图的环形复杂度为( )

img


A. 3

✅B. 4

C. 5

D. 6

环路复杂度等于闭环个数+1=4

答案: B

# 31. 软件构件

以下关于软件构件的叙述中,错误的是( )

A.构件的部署必须能跟它所在的环境及其他构件完全分离

B.构件作为一个部署单元是不可拆分的

C.在一个特定进程中可能会存在多个特定构件的拷贝

D.对于不影响构件功能的某些属性可以对外部可见

在一个特定进程中只能存在一个特定构件的拷贝

答案: C

# 32. 死锁

面向构件的编程目前缺乏完善的方法学支持,构件交互的复杂性带来了很多问题,其中()问题会产生数据竞争和死锁现象。

✅A.多线程

B.异步

C.封装

D.多语言支持

死锁的产生的原因之一有系统资源竞争,而多线程会争夺系统资源

答案: A

# 33. COM (Component Object Model 组件对象模型)

为实现对象重用,COM支持两种形式的对象组装。在( )重用形式下,一个外部对象拥有指向一个内部对象的唯一引用,外部对象只是把请求转发给内部对象

A.聚集

✅B.包含

C.链接

D.多态

在( )重用形式下,直接把内部对象的接口引用传给外部对象的客户,而不再转发请求。

A.引用

B.转发

C.包含

✅D.聚集

COM支持两种形式的对象组装:包含和聚集

包含就是一种简单的对象组装技术,其含义是一个对象拥有指向另一个对象的唯一引用

聚集是直接把内部对象的接口引用传给外部对象的客户,而不再转发请求

答案: B、D

# 34. 网络威胁

信息系统面临多种类型的网络安全威胁。其中,信息泄露是指信息被泄露或透露给某个非授权的实体;

( )是指数据被非授权地进行增删、修改或破坏而受到损失;

A.非法使用

✅B.破环信息的完整性

C.授权侵犯

D.计算机病毒

信息的完整性是指信息在传输、交换、存储和处理过程中,保持信息不被破坏或修改

不丢失和信息未经授权不能改变的特性,也是最基本的安全特征


( )是指对信息或其他资源的合法访问被无条件地阻止;

✅A.拒绝服务

B.陷阱门

C.旁路控制

D.业务欺骗

拒绝服务攻击(DDOS = Distributed denial of service attack)

由攻击者向服务器发送大量垃圾信息或干扰信息的方式,导致服务器无法向正常用户提供服务

陷阱门是编程人员在进行程序设计时建立的,在程序正常运行时,通过某些按键和参数可以绕过正常的安全检查和错误跟踪检查。

旁路攻击会绕过对加密算法的繁琐分析,利用密码算法的硬件实现的运算中泄露的信息,如执行时间、功耗、电磁辐射等,结合统计理论快速的破解密码系统。

欺诈者采用某种手段欺骗合法的用户或系统自愿地放弃敏感信息等。

()是指通过对系统进行长期监听,利用统计分析方法对诸如通信频度、通信的信息流向、通信总量的变化等参数进行研究,从而发现有价值的信息和规律。

A.特洛伊木马

B.业务欺骗

C.物理侵入

✅D.业务流分析

业务流分析是指通过对系统进行长期监听,利用统计分析方法对诸如通信频度、通信的信息流向、通信总量的变化等参数进行研究,从而发现有价值的信息和规律

答案: B、A、D

# 35. 软件测试

软件测试是保障软件质量的重要手段

( )是指被测试程序不在机器上运行,而采用人工监测和计算机辅助分析的手段对程序进行监测

✅A.静态测试

B.动态测试

C.黑盒测试

D.白盒测试

( )也称为功能测试,不考虑程序的内部结构和处理算法,只检查软件功能是否能按照要求正常使用

A.系统测试

B.集成测试

✅C.黑盒测试

D.白盒测试

静态测试是指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测。

动态测试是通过运行程序发现错误。动态测试可以采用黑盒测试和白盒测试。

白盒测试也称为结构测试,要根据程序内部逻辑结构设计测试用例,检测程序中的主要执行通路是否都能按预定要求正确工作。主要用于软件单元测试阶段。

黑盒测试也称为功能测试,不考虑程序的内部结构和处理算法,只检查软件功能是否能按照要求正常使用。主要用于集成测试、确认测试和系统测试阶段。

答案: A、D

# 36. ABSD(Archiecture Based Software Design)

基于架构的软件设计(Archiecture Based Software Design,ABSD)方法是架构驱动的方法,该方法是一个( )的方法,软件系统的架构通过该方法得到细化,直到能产生( )

✅A.自顶向下

B.自底向上

C.原型

D.自顶向下和自底向上结合


A.软件质量属性

B.软件连接性

✅C.软件构件或模块

D.软件接口

ABSD方法是一个自顶向下,递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类

答案: A、C

# 37. 视图模型

4+1 视图模型可以从多个视图或视角来描述软件架构。其中,( )用于捕捉设计的并发和同步特证;

A.逻辑视图

B.开发视图

✅C.过程视图

D.物理视图


() 描述了在开发环境中软件的静态组织结构。

A.类试图

✅B.开发视图

C.过程视图

D.用例视图

4+1视图:

(1) 逻辑视图。逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。一般用类图和对象图描述。

(2) 开发视图。开发视图也称为模块视图,在UML中被称为实现视图,它主要侧重 于软件模块的组织和管理。该视图可描述源代码,系统文件结构。

(3)过程视图。过程视图侧重于系统的运行特性,主要关注一些非功能性需求,例如,系统的性能和可用性等。 过程视图强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的功能抽象如何适合进程结构等 它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。

(4)物理视图。物理视图在UML中被称为部署视图,它主要考虑如何把软件映射到硬件上, 它通常要考虑到解决系统拓扑结构、系统安装和通信等问题。 当软件运行于不同的物理节点上时,各视图中的构于系统的不同节点上。 因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小化

(5) 场景。场景可以看作是那些重要系统活动的抽象,它使四个某种意义上说场景是最重要的需求抽象。场景视图对应UML中的用

答案: C、B。

# 38. 软件架构

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,按照软件架构风格,物联网系统属于()软件架构风格。

✅A.层次型

B.事件系统

C.数据线

D. C2

物联网属于层次型架构,分为:

1)感知层:负责信息采集和物物之间的信息传输。

2)网络层:利用无线和有线网络对采集的数据进行编码、认证和传输。

3)应用层:实现应用。

答案: A。

# 39. 特定领域软件架构

特定领域软件架构(Domam Specifie Sottware Architecture.DSSA)是指特定应用领域中为一组应用提供组织结构参考的标准软件架构。

从功能覆盖的范围角度,( ) 定义了一个特定的系统族,包含整个系使族内的多个系统,可作为该领城系统的可行解决方案的一个通用软件架构;

✅A.垂直域

B.水平域

C.功统域

D.属性域

( )定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能。

A.垂直域

✅B.水平域

C.功统域

D.属性域

特定领域的架构可以分为:

垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中 可作为系统的可行解决方案的一个通用软件体系结构。

水平域:定义了在多个系统和多个系统族中功能区城的共有部分。在子系统级上涵盖 多个系统族的特定部分功能。

答案: A、B

# 40. 架构风格设计

某公司拟开发一个个人社保管理系统,该系统的主要功能需求是根据个人收入、家庭负担、身体状态等情况,预估计算个人每年应支付的社保金,该社保金的计算方式可能随着国家经济的变化而动态改变

针对上述需求描述,该软件系统适宜采用( ) 架构风格设计,该风格的主要特点是( ) 。

A. Layered system

B. Data flow

C. Event system

✅D. Rule-based system


✅A.将业务逻辑中频繁变化的部分定义为规则

B.各构件间相互独立

C.支持并发

D.无数据不工作

社保金的计算方式不是固定的,可以采用Rule-based system ( 基于规则的系统)实现。 基于规则的系统中的规则引擎负责对规则进行解释实现,能够将业务规则跟应用程序分离开来,减少了运维的工作

答案:D、A

# 41. 系统质量

在架构评估过程中,评估人员所关注的是系统的质量属性。其中,( ) 是指系统的响应能力

A.安全性

✅B.性能

C.可用性

D.可靠性


即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的( )

✅A.个数

B.速度

C.消耗

D.故障率

安全性是系统向合法用户提供服务并阻止非法用户的能力。

性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时 间内系统所能处理的事件的个数。

可用性是是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现 故障时系统能够恢复正常的速度来表示。

可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统 的功能特性的基本能力。

答案: B、A。

# 42. 可用性

在一个分布式软件系统中,一个构件失去了与另一个远程构件的连接。在系统修复后,连接于30秒之内恢复,系统可以重新正常工作。这一描述体现了软件系统的( ) 。

A.安全性

✅B.可用性

C.兼容性

D.可移植性

可用性是是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。 “在系统修复后, 连接于30秒之内恢复。”这属于可用性的特征。

答案: B

# 43. 安全性

安全性是根据系统可能受到的安全威胁的类型来分类的。

其中,()保证信息不泄露给未授权的用户、实体或过程;

A.可控性

✅B.机密性

C.安全审计

D.健壮性

( )保证信息的完整和准确,防止信息被篡改。

A.可控性

✅B.完整性

C.不可否认性

D.安全审计

1、保密性:也称机密性,是不将有用信息泄漏给非授权用户的特性。可以通过信息加 密、身份认证、访问控制、安全通信协议等技术实现,信息加密是防止信息非法泄露的最基 本手段,主要强调有用信息只被授权对象使用的特征。

2、完整性:是指信息在传输、交换、存储和处理过程中,保持信息不被破坏或修改、 不丢失和信息未经授权不能改变的特性,也是最基本的安全特征。

3、可用性:也称有效性,指信息资源可被授权实体按要求访问、正常使用或在非正常 情况下能恢复使用的特性(系统面向用户服务的安全特性)。在系统运行时正确存取所需信 息,当系统遭受意外攻击或破坏时,可以迅速恢复并能投入使用。是衡量网络信息系统面向 用户的一种安全性能,以保障为用户提供服务。

4、可控性:指网络系统和信息在传输范围和存放空间内的可控程度。是对网络系统和 信息传输的控制能力特性。

5、不可否认性:又称拒绝否认性、抗抵赖性,指网络通信双方在信息交互过程中,确 信参与者本身和所提供的信息真实同一性,即所有参与者不可否认或抵赖本人的真实身份, 以及提供信息的原样性和完成的操作与承诺。

答案: B、B。

# 44. 架构评估

在架构评估中,场景是从( )的角度对与系统交互的描述,一般采用( )三方面来对场景进行描述。

A.系统设计者

B.系统开发者

✅C.风险承担者

D.系统测试者


A.刺激源、制品、响应

B.刺激、制品、响应

✅C.刺激、环境、响应

D.刺激、制品、环境

在进行体系结构(架构)评估时,一般首先要精确地得出具体的质量目标,并以之作为 判定该体系结构优劣的标准。我们把为得出这些目标而采用的机制叫做场景。

场景是从风险承担者的角度对与系统的交互的简短描述。在体系结构评估中,一般采用 刺激、环境和响应三方面来对场景进行描述。

刺激是场景中解释或描述风险承担者怎样引发与系统的交互部分。例如,用户可能会激 发某个功能,维护可能会做某个更改,测试人员可能会执行某种测这些都属于对场景的刺激。

环境描述的是刺激发生时的情况。例如,当前系统处于什么状态?有什么特殊的约束条 件?系统的负载是否很大?某个网络通道是否出现了阻塞等。

响应是指系统是如何通过体系结构对刺激作出反应的例如,用户所要求的功能是否得到 满足?维护人员的修改是否成功?测试人员的测试是否成功等。

答案: C、C。

# 45. 架构评估

在架构评估中,( )是一个或多个构件(和/或构件之间的关系)的特性。

✅A.敏感点

B.非风险点

C.权衡点

D.风险点

改变加密级别的设计决策属于(),因为它可能会对安全性和性能产生非常重要的影响。

A.敏感点

B.非风险点

✅C.权衡点

D.风险点

敏感点是一个或多个构件(和/或构件之间的关系)的特性。

改变加密级别的设计决策属于权衡点,因为它可能会对安全性和性能产生非常重要的影响。

答案: A、C。

# 46. 三层CIS架构

在三层CIS架构中,( )是应用的用户接口部分, 负贵与应用逻辑间的对话功能;

✅A.表示层

B.感知层

C.设备层

D.业务逻辑层

( )是应用的本体,负责具体的业务处理逻辑。

A.数据层

B.分发层

✅C.功能层

D.算法层

三层C/S架构将应用系统分成表示层、功能层和数据层三个部分:

(1) 表示层。表示层是系统的用户接口部分,担负着用户与系统之间的对话功能。它用于检查用户从键盘等输入的数据,显示输出的数据。

(2) 功能层。功能层也称为业务逻辑层,是将具体的业务处理逻辑编入程序中。

(3) 数据层。数据层相当于二层C/S架构中的服务器,负责对DBMS的管理和控制。

答案: A、C。

# 47. 软件著作权

赵某购买了一款有注册商标的应用App,攫自复制成光盘出售,其行为是侵犯( )的行为。

A.注册商标专用权

✅B.软件著作权

C.光盘所有权

D.软件专利权

此行为为侵犯了软件的著作权,如果是在复制品上申请了相同或相似的商标则属于侵犯商标权。

答案: B。

# 48. 著作权

下列关于著作权归属的表述,正确的是( )。

✅A.改编作品的著作权归属于改编人

B.职务作品的著作权都归属于企业法人

C.委托作品的著作权都归属于委托人

D.合作作品的著作权归属于所有参与和组织创作的人

根据《中华人民共和国著作权法》第十二条规定,改编、翻译、注释、整理已有作品而产生的作品,其著作权由改编、翻译、注释、整理人享有,但行使著作权时不得侵犯原作品的著作权。

答案: A。

# 49. 著作权

X公司接受Y公司的委托开发了一款应用软件,双方没有订立任何书面合同。在此情形下,( )享有该软件的著作权。

A.X、Y公司共同

✅B.X公司

C.Y公司

D.X、Y公司均不

根据《中华人民共和国著作权法》第十九条受委托创作的作品,著作权的归属由委托人和受托人通过合同约定。合同未作明确约定或者没有订立合同的,著作权属于受托人。

答案: B

# 50. CA证书

某Web网站向CA申请了数字证书。用户登录过程中可通过验证( )确认该数字证书的有效性,以( )。

(1) ✅A. CA的签名 B.网站的签名 C.会话密钥 D. DES密码

(2) A. 向网站确认自己的身份: B.获取访问网站的权限 C.和网站进行双向认证 ✅D.验证该网站的真伪

用户可以使用CA的公钥对证书上的签名进行验证,一旦验证通过,该证书就被认为 是有效的,从而该验证网站的真伪。 答案: A、D

# 51. 数学

非负变量x和y,在x<=4,y<=3和x+2y<=8的约束条件下,目标函数2x+3y的最大值为( )。

A.13

✅B.14

C.15

D.16

根据题干,满足目标函数2x+3y的最大值时, X=4,带入x+2y≤8中,得y=2。则2x+3y=14。

答案: B。

# 52. 期望时间

某项目包括A~G七个作业,各作业之间的衔接关系和所需时间如下表:

作业 A B C D E F G
紧前作业 - A A B C,D - E,F
所需天数 5 7 ? 8 3 20 4

其中,作业C所需的时间,乐观估计为5天,最可能为14天,保守估计为17天。

假设其他作业都按计划进度实施,为使该项目按进度计划如期全部完成。作业C ( ) 。

A.必须在期望时间内完成

B.必须在14天内完成

C.比期望时间最多可拖延1天

✅D.比期望时间最多可拖延2天

关键路径ABDEG=27天

作业C的期望时间= (乐观时间+4X最可能时间+保守时间) /6=13。

项目的总工期,即关键路径为ABDEG=27天,活动C所在的路径ACEG,需要25天,因此活动C比期望时间最多可拖延2天。

答案: D。

# 53. English

The prevailing distributed computing model of the current era is called client/server computing.

A ( Client/Server system ) is a solution in which the presentation,presentation logic,application logic,data and data layers are distributed between client PCs and one or more servers.

A ( Thin client ) is a personal computer that does not have to be very powerful in terms of processor speed and memory because it only presents the interface to the user.

A ( Fat client ) is a personal computer,notebook computer,or workstation that is typically more powerful in terms of processor speed,memory,and storage capacity.

A ( Database server) hosts one or more shared database but also executes all database commands and services for information systems.

A(n) ( Web server) hosts Internet or intranet Web sites,it communicates with clients by returning to them documents and data.

(1) ✅A. Client/Server system

B. Client-side

C. Server-side

D. Database


(2) A. Server-side

B. Browser

C. Fat client

D. ✅Thin client


(3) A. Cloud platform

B. Cluster system

✅C. Fat client

D.Thin client


(4) A. Transaction server

✅B. Database server

C. Application server

D. Message server


(5) A. Database server

B. Message server

✅C. Web server

D. Application server

现在主流的分布式计算是客户/服务器计算模式。客户/服务器系统是一种解决方案,其中表示层、表示逻辑层、应用逻辑、数据操作、数据层分布在客户的PC端与一个或多个服务器端之间。瘦客户端指的是个人电脑在处理速度、内存方面无须很强大,因为它仅仅是展示接口给用户。胖客户端是指个人电脑、笔记本、工作站在处理速度、内存、存储容量方面都很强大的一类电脑。数据库服务器控制一个或多个共享数据库,同时也执行所有数据库命令以及服务于信息系统。web服务器控制互联网、信息平台,与客户端通信,返回给客户端文件与数据。

答案:A、D、C、B、C

# 科目二: 案例分析

# ✅【题目一】【必做】架构风格与评估

img

img

# 【问题1】 (9分)

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

# 【问题一解析】

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

# [问题2] (16分)

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

# [问题2解析]

输入和输出,构件读取输入的数据流,经过内部处理(计算或增值),产生输出数据流。 前一个构件的输出作为后一个构件的输入,前后数据流关联。

过滤器就是构件,连接件就是管道。

隐式调用风格是构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的 过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所 有过程。一个事件的触发就导致了另一个模块中的过程调用。

平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式: 从灵活性上解释器可以通过灵活的自定义规则实现规则的重组。

从可扩展性上解释器可以包括一个完成解释工作的解释引擎、一个包含将被解释的代码 的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的 进度的数据结构。可以通过新建规则实现可扩展性.

# ✅【题目二】UML设计

某医院拟委托软件公司开发一套预约挂号管理系统,以便为患者提供更好的就医体验,为医院提供更加科学的预约管理。本系统的主要功能描述如下:

(a)注册登录,(b)信息浏览,(c)账号管理,(d)预约挂号,(e)查询与取消预约,(f)号源管理,(g)报告查询,(h)预约管理,(i)报表管理和 (j)信用管理等。

# 【问题1】 (6分)

若采用面向对象方法对预约挂号管理系统进行分析,得到如图2-1所示的用例图。请将合适的参与者名称填入图2.1中的(1)和(2)处,使用题干给出的功能描述(a)〜(j),完善用例 (3)~(12)的名称,将正确答案填在答题纸上。

img

  • (1) 系统管理员
  • (2) 患者
  • (3) a
  • (4) c
  • (5) f
  • (6) h
  • (7) i
  • (8) j
  • (9) b
  • (10) d
  • (11) e
  • (12) g

# 【问题2】

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

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

img

# 【问题2解析】

  • (1)预约人员

  • (2)发起预约挂号请求

  • (3)显示医生出诊时段

  • (4)显示是否预约成功

  • 顺序图强调交互的消息时间顺序。

  • 协作图强调接受和发送消息的对象的结构组织,强调通信的方式。

  • 顺序图和协作图 (opens new window)

# 【问题3】(9分)

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

针对上述模型,说明哪些模型可用于软件的需求分析?

对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用类图?来实现。

动态模型描述与时间和操作顺序有关的系统特征,例如,触发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现。

功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用用例图来实现。

# 【题目三】嵌入式的题目,没人选的

TBD

# ✅【题目四】数据建模

某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。

通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存 (Redis)的混合架构实现。

经过规范化设计之后,该系统的部分数据库表结构如下所示。

  • 供应商(供应商ID,供应商名称,联系方式,供应商地址)

  • 药品(药品ID,药品名称,药品型号,药品价格,供应商ID)

  • 药品库存(药品ID,当前库存数量)

  • 订单(订单号码,药品ID,供应商ID,药品数量,订单金额)

# 【问题1】(9分)

在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系表过于细分,造成了大量的多表关联查询,影响了性能。

例如当用户查询商品信息时,需要同时显示该药品的信息、供应商的信息、当前库存等信息。

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

修改后的药品关系结构为:药品(药品ID,药品名称,药品型号,药品价格,供应商ID,供应商名称,当前库存数量);

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

# 【问题1解析】

::: tips

  • (1) 增加冗余列:增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。

例如:以规范化设计的理念,学生成绩表中不需要字段“姓名",因为“姓名" 字段可以通过学号查询到,但在反规范化设计中,会将“姓名"字段加入表中。这样查询一个学生的成绩时,不需要与学生表进行连接操作,便可得到对应的“姓名"

  • (2) 增加派生列:增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。

例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。

但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价"以提高查询效率。

  • (3) 重新组表:重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把 这两个表重新组成一个表来减少连接而提高性能。

  • (4) 分割表: 有时对表做分割可以提高性能。表分割有两种方式。

  • 水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。水平分割通常 在下面的情况下使用。

    • 情况1:表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降 低了索引的层数,提高查询效率。

    • 情况2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。

    • 情况3:需要把数据存放到多个介质上。

  • 垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。

  • 如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割

另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。其缺点是 需要管理冗余列,查询所有数据需要连接操作。本题中用到了重新组表得方式。

# 【问题2】(9分)

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

# 【问题2解析】

或者说:触发器、批处理维护、应用逻辑。

这里比较适合触发器,当数据有更改的时候,触发器自动更新数据。

# 【问题3】(7分)

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

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

ZSet

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

  1. 引用Mysql的事务,因为事务有一致性保证,事务提交成功后再更新缓存。

  2. 在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位

从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据。

  1. 通过数据库中间件产品保证缓存和数据库数据实时同步

# 【题目五】Web架构设计

某公司拟开发一个智能家居管理系统,该系统的主要功能需求如下:

1) 用户可使用该系统客户端实现对家居设备的控制,且家居设备可向客户端反馈实时状态;

2) 支持家居设备数据的实时存储和查询;

3) 基于用户数据,挖掘用户生活习惯,向用户提供家居设备智能化使用建议。

基于上述需求,该公司组建了项目组,在项目会议上,张工给出了基于家庭网关的传统智能家居管理系统的设计思路,李工给出了基于云平台的智能家居系统的设计思路。经过深入讨论,公司决定采用李工的设计思路。

# 【问题1】 (8分)

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

# 【问题1解析】

在网关管理方面,基于云平台的智能家居管理系统可以将分散的智能家居网关数据集中起来,实现对智能家居网关的远程高效管理。

在数据处理方面,云端服务器对智能家居网数据进行备份存储,当家庭网关由于故障等原因导致数据丢失时,可以通过云端管理系统对网关数据进行恢复,从而提高数据的容灾性。

在系统性能方面,基于云服务平台的智能家居管理系统将数据信息存储在云端,减少了数据请求时间,提高了通信效率。

请从下面给出的(a)〜(j)中进行选择,补充完善图5.1中空(1)〜(6)处的内容,协助 李工完成该系统的架构设计方案。

img

(a) Wi-FI

(b) 蓝牙

(c) 驱动程序

(d) 数据库

(e) 家庭网关

(f) 云平台

(g) 微服务

(h) 用户终端

(i) 鸿蒙

(j) TCP/IP

# 【问题2解析】

  • (1) h 用户终端

  • (2) i 鸿蒙

  • (3) f 云平台

  • (4) d 数据库

  • (5) e 家庭网关

  • (6) c 驱动程序

# 【问题3】(5分)

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

# 【问题3解析】

TCP在IP协议提供的不可靠数据服务的基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。

TCP协议一般用于传输数据量比较少, 且对可靠性要求高的场合。

UDP是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信,与TCP相比, UDP是一种无连接的协议,它的错误检测功能要弱得多。

该系统应采用TCP协议。

# 考试科目三:论文

# ✅试题一 论面向切面的编程技术及其应用

针对应用开发所面临的规模不断扩大、复杂度不断提升的问题,面向切面的编程(Aspect Oriented Programming,AOP) 技术提供了一种有效的程序开发方法。

为了理解和完成一个复杂的程序,通常要把程序进行功能划分和封装。一般系统中的某些通用功能,如安 全性、持续性、日志记录等等,其代码是分散的,较难实现模块化,不利于程序演变、维护和更新。

AOP 技术将逻辑上关系松散的代码封装到一个具有某种公共行为的可重用模 块,并将其命名为切面(Aspect) .

# 请围绕“面向切面的编程技术及其应用”论题,依次从以下三个方面进行论述。

1.概要叙述你参与实施的应用AOP 技术的软件项目以及你在其中所担任的主要工作。

2.叙述在软件项目实践过程使用AOP 技术开发的具体步骤。

3.结合项目内容,论述该项目使用AOP 技术的原因,开发过程中存在的问题和解决方法,以及使用AOP技术带来的实际应用效果。


# 个人论文

# 【摘要】

2021年12月,笔者所在公司中标上海某商学院的智慧校园物联板块建设。系统包含人行车行闸机模块、BMS(建筑设备管理系统)模块,安防/消防板块,访客管理模块和健康采集/管理模块等。同时支持对接大数据平台,支持健康码、行程码和核酸报告的采集、核验、管理。在项目中我担任系统架构师,负责架构设计工作。 本文以该系统为例,主要论述了 [面向切面的编程技术及其应用] 在项目中的具体应用,系统使用Koa框架开发,数据库使用MongoDB,缓存使用Redis,采用Nginx实现路由转发,负载均衡等。业务服务划分为多个微服务,同时基于docker容器,协同实现业务具体功能。通过AOP思想封装了用户auth授权校验和前端数据层校验,提高了接口的安全性和健壮性,提前规避了安全问题和数据不一致的问题,最终系统顺利上线,获得校内领导老师的一致好评。

# 【正文】

笔者所在的单位是以信息技术为载体,叠加行业应用,面向政务、司法、教育、医疗健康、金融等国计民生行业,致力于为客户打造智慧空间信息化解决方案的公司。公司在2021年中标了上海某商学院的智慧校园物联板块建设,为了实现智慧校园平台的需求和目标,公司整合了多方需求和技术,构建了一套智慧校园平台该平台主要包含三大模块:智慧教学、平安校园、绿色校园。智慧教学包括课程活动一览、空间设备管理、课程管理、资产管理、设备健康度统计等功能。 平安校园包括人行、车行、门禁、电梯、安防等功能,绿色校园包括照明、空调、水电等内容的管理。健康模块需要对接大数据平台,作为微服务模块独立部署,主要包括健康码、行程码和核酸报告的采集、核验、管理等内容。

作为项目的技术架构第一负责人,我与公司内部专家、外部架构师一同建立了项目技术架构组,设计整体的项目的技术架构,同时挑选项目内部成员,建立需求分析组,系统开发组,系统测试组,运维支持组,开展业务需求分析、系统设计、系统上线。一方面我指导团队研发工作,监控整体工作进度。同时,我及时向公司领导、项目客户方、相关项目团队汇报沟通工作进展,阐明关键技术要点。

在项目中,项目主程序和子程序通过暴露API接口,通过HTTP Method进行信息交互,在项目实践中,原先基于OOP的思想遇到了一些困难:

# (一) 基于 OOP(面向对象)思想的一些遗憾
  • 项目在实现业务逻辑前,往往会基于OOP的思想,通过引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。但当我们要为分散的对象引入公共行为的时候,OOP往往会显得无能为力。面向对象往往合适定义从上到下的关系,但在定义从左到右的关系的时候,就会变得不合适了。譬如需要基于用户的权限做安全验证,对应的验证方法本身和用户的相关操作无关,也无法再抽象出一个新的Model去进行CRUD。这种思想在项目中导致了大量代码的重复,而不利于各个模块的重用。
# (二) 数据在 Controller 层需要做统一的处理和验证
  • 除了用户安全/权限相关的验证,还需要对数据进行统一的处理,比如数据的格式化、数据的验证、甚至是日志的统一输出。这些处理和验证都需要在 Controller 层进行。如果采用OOP的思想,这些校验和验证都要在Service层中进行,那么Service层代码冗余且不美观,导致大量的代码重复。Service层应专注于业务的具体实现过程,不应该再去处理数据的格式化、验证等问题。
# (三) 降低耦合度,便于后续代码的维护和扩展
  • 日志记录、性能统计、等功能的扩展都需要横向扩展业务代码,基于OOP的思路难以实现 (1107+369=1476)

AOP具有高度灵活的定制性,是一种软件设计范式业界领先的插件机制,和上层业务框架机制,可以让开发者自由的定制自己的业务逻辑。我们团队基于AOP的思想,设计并封装中间件进行了用户权限验证和数据校验层,用于用户身份信息校验和前端数据校验,提前规避了安全问题和数据不一致的问题。具体实现流程如下:

# 一、 区分横切关注点

将系统需求进行功能性分解,区分出普通关注点以及横切关注点,确定哪些功能是组件语言必须实现的,哪些功能可以以 aspect 的形式动态加入到系统组件中。

系统 aspect 是指用 AOP语言实现的将横切关注点封装成的独立的模块单元。

  • 对于一个HTTP接口而言,首先要进行用户鉴权和数据校验,这两个流程对于所有接口都是通用的,可以基于AOP的思想,封装成中间件使用。而具体的Service层方法实现,则必须由特定方法实现。

AOP的实现方式是通过插件机制,把业务逻辑和业务实现分离开,插件机制可以让开发者自由的定制自己的业务逻辑。

# 二、 构造出系统的切面

如果说对象是一个空心的圆柱体,其中封装的是对象的属性和行为,那么面向方面的编程就是一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面就是所谓的方面了。然后它又以巧夺天工的妙手将这些剖开的切面复原,不留痕迹。

AOP技术和OOP技术则恰恰相反,它利用一种称为横切的技术,破解开封装的对象内部,并那些影响了多个类的公共行为封装到一个可重用的模块,并将其命名为"Aspect"。

单独完成每一个关注点的编码和实现,构造系统组件和系统 aspect。这里的系统组件,是实现该系统的基本模块,对 OOP 语言,这些组件可以是类,对于过程化程序设计语言,这些组件可是各种函数和 API。

所谓Aspect就是将那些与业务无关的,却为业务模块所共同调用的逻辑或责任都封装起来,以减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

  • 每收到一个http请求,koa就会调用通过app.use()注册的async函数,并传入ctx和next参数。

  • 在执行中间件时,总会携带传入的两个参数 ctx 和 next,参数 ctx 是由 koa 传入的,封装了 request 和 response 对象,可以通过它访问 request 和 response,next 就是进入下一个要执行的中间件。koa-router匹配API的Method和URL后,就会执行对应的中间件来对请求进行处理。

# 三、 组件代码与切面代码结合形成系统

用联接器指定的重组规则,将组件代码和 aspect 代码进行组合,形成最终系统。

  • 在建立好http服务器后,会调用koa-compose模块对middleware中间件数组进行处理。

  • Koa 中间件采用的是洋葱圈模型,利用KOA的洋葱圈模型,可以将上一个中间件的参数继续传递到下一个中间件使用,相比传统的链式调用。从middleware数组中取第一个函数开始执行,中间件函数中调用next方法就会去取下一个中间件函数继续执行。每个中间件函数执行完毕后都会返回一个promise对象。如果遇到异常,可以阻止await next()的调用,达到拦截请求的效果。


  • 该项目 2021 年 6 月完成系统上线, 2021 年 7 月通过最终验收,得到了用户的一致肯定,顺利达成了项目既定目标。尤其在系统整体技术架构方面,效果尤为突出。

  • 一是保持了较好的灵活性,提供了较多的基础组件,使得应用功能便于横向扩充,满足了项目业务灵活性;

  • 二是系统性能整达到各个层次的整合设计,数据库层(mongo分片、读写分离)、应用开发层(redis缓存技术、查询条件condition的严格限制),服务部署层(采用集群部署),路由转发(nginx)还预留了 70%性能,满足了后期 3-5 年的业务增量。


  • 在实施过程中,也暴露了一些具体问题,例如跨系统之间接口交互时,由于业务复杂,简单的队列机制无法满足繁忙场景,需要建立具有动态优先级调整机制的处理队 列等等,这些问题通过应急处理和协调,以及高层领导的推动,都得到了妥善解决,没有影响到项目的总体进度。我们已经把这些经验和教训,总结到了工作总结里面,向其他技术人员分享,为今后系统架构设计提供帮助。相信通过不断持续学习改进,加强自己的系统分析与设计能力,努力工作提升工作水平,为社会和公司多贡献一点自己的价值。

# 试题二 论系统安全架构设计及其应用

随着社会信息化进程的加快,计算机及网络已经被各行各业广泛应用,信息安全问题也 变得愈来愈重要。它具有机密性、完整性、可用性、可控性和不可抵赖性等特征。信息系统 的安全保障是以风险和策略为基础,在信息系统的整个生命周期中提供包括技术、管理、人员和工程过程的整体安全, 以保障信息的安全特征。 请围绕“系统安全架构设计及其应用”论题,依次从以下三个方面进行论述。

1.概要叙述你参与管理和开发的涉及安全架构设计的软件项目以及承担的主要工作。

2.请详细论述安全架构设计中鉴别框架和访问控制框架设计的内容,并论述鉴别和访问 控制所面临的主要威胁有哪些,说明其危害。

3.请简要说明在你所参与项目的开发过程中,在鉴别框架和访问控制框架设计中存在的 实际问题,以及是如何解决这些问题的。

# 试题三 论企业集成平台的理解与应用

企业集成平台 (Enterprise Imtcgation Plaform,EIP)是支特企业信息集成的像环境,其主 要功能是为企业中的数据、系统和应用等多种对象的协同行提供各种公共服务及运行时的支 撑环境。企业集成平台能够根据业务模型的变化快速地进行信息系统的配置和调整,保证不 同系统、应用、服务或操作人员之同顺畅地相互操作,进而提高企业适应市场变化的能力, 使企业能够在复杂多变的市场环境中生存。 请围绕“企业集成平台的理解与应用”论题,依次从以下三个方阅进行论述。

1.概要叙述你参与管理和开发的、采用企业集成平台进行企业信息集成的软件项目以及 你在其中所承担的主要工作。

2.请给出至少 4 种企业集成平台应具有的基本功能,并对这 4 种功能的内涵进行简要阐述。

3.具体阐述你参与管理和开发的项目是如何使用企业集成平台进行企业信息集成的,并围绕上述 4 种功能,详细论述在集成过程中遇到了哪些实际问题,是如何解决的。

# 试题四 论微服务架构及其应用

微服务架构 (Microservices Architecture)是一种架构风格,它将一个复杂的应用拆分成 多个独立自治的服务,服务与服务间通过松耦合的形式交互,在微服务架构中,服务是细粒 度的,协议是轻量级的。这些服务通常按业务能力组织,有自身的技术堆栈。 请围绕“微服务架构及其应用”论题,依次从以下三个方面进行论述。

  1. 概要叙述你参与管理和开发的、采用微服务架构的软件项目以及你在其中所承担的 主要工作。

2.请简要描述微服务架构的优点。

3.具体阐述你参与管理和开发的项目是如何基于微服务架构进行件设计实现的。