【2025 年】软件体系结构考试试卷-期末考试

2025 年软件体系结构考试试卷

考试学期:2025 考试形式:闭卷 考试时间:120 分钟

年级:______ 专业:软件工程 班级:______

一、单选题(每小题 1.5 分,共 24 分)

关于策略模式,下述说法不正确的是:〔 〕

A. 定义一系列算法,将每个算法封装起来,使它们可以互换
B. 客户端必须知道所有策略类的存在

C. 上下文类负责维护策略对象的引用

D. 适用于需要动态切换算法的场景

以〔 〕为代表的面向服务的体系结构(SOA),强调服务的封装和复用。
A. Web Services B. JavaBean C. EJB D. CORBA

软件工程的基本目标是:〔 〕

A. 提高软件性能 B. 降低开发成本 C. 实现软件可维护性 D. 以上都是

软件配置项不包括:〔 〕

A. 源代码 B. 测试用例 C. 开发环境 D. 需求文档

软件危机的表现不包括:〔 〕

A. 软件质量难以保证 B. 软件开发成本失控 C. 软件维护困难 D. 软件需求明确

不属于 "视图 - 控制器 - 模型"(MVC)模式的是:〔 〕

A. 视图 B. 控制器 C. 模型 D. 适配器

关于观察者模式,下述说法不恰当的是:〔 〕

A. 当主题状态变化时,所有观察者会被通知

B. 观察者和主题之间是松耦合的

C. 一个主题可以有多个观察者
D. 观察者必须继承自同一个抽象类

下列哪个不是管道 - 过滤器结构风格的特点?〔 〕

A. 数据通过管道传输 B. 过滤器可复用 C. 处理顺序固定 D. 支持并行处理

在设计模式中,以下哪种模式属于结构型模式?〔 〕

A. Singleton B. Adapter C. Observer D. Strategy

关于软件体系结构描述语言(ADL),下列说法错误的是:〔 〕

A. 用于描述软件体系结构的结构和行为
B. 不支持体系结构的分析和验证

C. 可定义构件和连接件的接口

D. 是理解和交流体系结构的工具

里氏替换原则的含义是:〔 〕
A. 子类可以替换父类出现在任何地方,且不影响程序正确性

B. 父类可以替换子类出现在任何地方

C. 子类必须实现父类的所有方法

D. 以上都不对

关于接口隔离原则,下述叙述错误的是:〔 〕

A. 客户端不应该依赖它不需要的接口

B. 一个类对另一个类的依赖应该建立在最小的接口上

C. 接口应该尽量细化,避免大而全的接口
D. 接口隔离原则与单一职责原则无关

行为模型不包括以下哪种图?〔 〕

A. 用例图 B. 活动图 C. 状态图 D. 类图

构件交互的基本方式不包括:〔 〕

A. 过程调用 B. 消息传递 C. 共享内存 D. 数据拷贝

在体系结构中,用于提高系统可靠性的结构风格是:〔 〕

A. 分层结构风格 B. 容错结构风格 C. 事件驱动结构风格 D. 客户端 - 服务器结构风格

以下哪个不是软件体系结构评估的常用方法?〔 〕

A. 场景 - based 评估 B. 度量 - based 评估 C. 仿真 - based 评估 D. 代码审查

二、多项选择题(每小题 2 分,共 16 分)

类图中包含的元素有:〔 〕
A. 类 B. 接口 C. 关联关系 D. 依赖关系

下面属于软件体系结构风格的是:〔 〕
A. 分层结构 B. 管道 - 过滤器 C. 黑板系统 D. 单例模式

提高软件可维护性的措施包括:〔 〕
A. 良好的代码注释 B. 模块化设计 C. 严格的测试 D. 复杂的算法实现

客户端 - 服务器(C/S)体系结构的优点有:〔 〕
A. 客户端响应速度快 B. 服务器负载均衡 C. 数据安全性高 D. 易于扩展

软件体系结构的质量属性包括:〔 〕
A. 性能 B. 可靠性 C. 可维护性 D. 安全性

设计模式的分类包括:〔 〕
A. 创建型模式 B. 结构型模式 C. 行为型模式 D. 功能型模式

对软件体系结构的动态性描述可采用的方法有:〔 〕
A. 状态转移图 B. 时序图 C. 活动图 D. 用例图

体系结构设计的原则包括:〔 〕
A. 关注点分离 B. 接口标准化 C. 松耦合 D. 高内聚

三、填空题(每小题 2 分,共 10 分)

软件体系结构的核心元素包括构件 连接器、和 配件。

五层参考模型包括物理层、数据链路层、 网络 、应用层和用户层。

"模块化 __" 和 "信息隐藏" 是模块化设计的基本原则。

数据流图的四种基本元素是加工、数据源 数据终点______和数据存储。
设计模式中的 Singleton 模式属于___创建_____型模式,其目的是
__确保类只有一个实例并提供全局访问点

四、判断题(正确写 T,错误写 F,每小题 1 分,共 10 分)

软件体系结构设计是对系统的高层抽象,不涉及具体实现细节。〔T 〕

管道 - 过滤器结构风格中,过滤器之间需要知道彼此的存在。〔 F〕

软件重用只能重用代码,不能重用设计和架构。〔F 〕

体系结构评估可以在系统开发的任何阶段进行。〔T 〕

适配器模式用于解决接口不兼容的问题,使不兼容的接口可以协同工作。〔T 〕

面向对象设计中,继承是实现代码重用的唯一方式。〔F 〕

软件体系结构风格一旦确定,不能在开发过程中修改。〔F 〕

状态图用于描述对象在其生命周期中的状态变化及响应的事件。〔 T〕

敏捷开发方法不关注软件体系结构的设计,只注重代码实现。〔F 〕

领域特定语言(DSL)可用于更高效地描述特定领域的软件体系结构。〔 T〕

五、简答题(每小题 3 分,共 15 分)

简述管道 - 过滤器结构风格的优缺点。

答:过滤器可复用,便于独立开发和测试;
支持并行处理,数据可同时流经多个过滤器;
系统扩展性好,可通过添加 / 删除过滤器修改功能。
缺点:
处理顺序固定,难以动态调整数据流路径;
数据转换开销大,需在过滤器间进行格式转换;
无法处理交互式或实时性要求高的场景。

2.什么是依赖注入原则?其作用是什么?
定义:依赖注入(DI)是一种设计原则,指将组件的依赖关系通过外部注入(而非内部创建)的方式实现。
作用:
降低组件间耦合度,提高代码可维护性和可测试性;
便于动态替换依赖对象,支持系统灵活扩展;
符合 "控制反转(IoC)" 思想,使组件专注于核心逻辑。

3.说明软件体系结构与软件设计的区别与联系。
答:区别:
抽象层次:体系结构是系统的高层抽象,关注构件、连接件及整体结构;软件设计侧重具体模块和算法实现。
关注点:体系结构关注系统质量属性(如性能、可靠性);软件设计关注功能实现细节。
联系:
体系结构是软件设计的基础,为设计提供框架和约束;
软件设计是体系结构的细化,实现体系结构定义的构件和交互。

4.简述工厂方法模式的核心思想及适用场景。
答: 核心思想:定义一个创建对象的接口(工厂),但由子类决定实例化哪个具体类,将对象创建与使用分离。
适用场景:
当系统需要动态创建对象,且创建逻辑可能变化时;
当子类可能扩展或修改对象创建方式时;
避免客户端与具体类直接耦合,提高系统灵活性。

5.软件体系结构评估的主要目标是什么?
答:验证质量属性:评估体系结构是否满足性能、可靠性、可维护性等需求;
发现设计缺陷:识别潜在问题(如耦合度过高、扩展性不足),避免后期返工;
支持决策制定:为体系结构优化、技术选型等提供依据;
确保一致性:验证体系结构与需求、设计文档的一致性。

六、计算题(每小题 5 分,共 25 分)

设计一个在线购物系统,要求实现商品展示、购物车管理和订单处理功能。试用 MVC 模式设计该系统的体系结构,给出类图和各部分的职责。

java 复制代码
类图核心元素:
模型(Model):
Product(商品):属性(ID、名称、价格等),方法(获取信息);
Cart(购物车):属性(商品列表、总价),方法(添加 / 删除商品);
Order(订单):属性(订单号、用户、商品列表等),方法(创建订单、支付)。
视图(View):
ProductView(商品展示界面):显示商品列表、详情;
CartView(购物车界面):显示购物车内容、结算按钮;
OrderView(订单界面):显示订单信息、支付结果。
控制器(Controller):
ProductController:处理商品查询、筛选请求;
CartController:处理购物车操作(添加、删除);
OrderController:处理订单创建、支付流程。
职责划分:
模型:管理数据和业务逻辑,不依赖视图和控制器;
视图:渲染数据,接收用户输入并传递给控制器;
控制器:接收用户请求,调用模型处理数据,更新视图。

某图书馆管理系统中,图书状态包括 "可借""已借""预约""损坏"。读者可以借阅、归还图书,管理员可以处理预约和损坏图书。绘制图书状态的状态图。

某大学选课系统包含学生类(Student)、课程类(Course)和选课类(Selection)。学生有学号、姓名、专业等信息,课程有课程号、名称、学分等信息,选课记录包括学生、课程和成绩。绘制该系统的类图,包括类的属性、方法和关联关系。

某医院挂号系统的工作流程是:患者先到挂号处登记个人信息,选择科室和医生,支付挂号费,获取挂号单。然后到相应科室候诊,医生诊断后开具处方,患者到收费处缴费,取药离开。画出该系统的数据流程图。

某智能家居系统中,灯光控制器有 "开""关""亮度调节" 三种状态。用户可以通过手机 APP、语音命令或物理开关控制灯光。绘制灯光控制器的状态图,包括状态、事件和转换条件。

例题、航空公司会员对象状态图:

乘客只要办理该航空公司的会员卡,即可成为普卡会员,普卡会员可以升级到银卡会员或金卡会员。非会员不能积累里程数。每年年末,系统根据会员在本年度累积的里程数对下一年会员等级进行调整。普卡会员在一年内累积的里程数若满25000英里但不足50000英里,则自动升级为银卡会员;若累积的里程数在50000英里以上,则自动升级为金卡会员。银卡会员在一年内累积的里程数若在50000英里以上,则自动升级为金卡会员。若一年内没有达到对应级别要求的里程数,则自动降低会员等级。金卡会员一年内累积的里程数若不足25000英里,则自动降级为普卡会员;若累积的里程数达到25000英里,但是不足50000英里,则自动降级为银卡会员。银卡会员一年内累积的里程数若不足25000英里,则自动降级为普卡会员。

在这里插入图片描述

相关推荐
TE-茶叶蛋几秒前
Eslint自定义规则使用
运维·服务器
Ven%15 分钟前
Linux环境下使用WPS比较word文档并生成修订
linux·服务器·python·wps
only-lucky22 分钟前
C++设计模式
java·c++·设计模式
黄豆匿zlib24 分钟前
Python中布尔值在函数中的巧妙运用
java·服务器·python
峥嵘life32 分钟前
Android Java语言转Kotlin语言学习指导实用攻略
android·java·kotlin
kong@react34 分钟前
使用springboot实现过滤敏感词功能
java·spring boot·后端·spring
Jerry404_NotFound34 分钟前
求助帖:学Java开发方向还是网络安全方向前景好
java·开发语言·python·安全·网络安全·渗透·代码审计
勤奋的知更鸟38 分钟前
Java 编程之代理模式
java·开发语言·设计模式·代理模式
越来越无动于衷1 小时前
Tomcat本地部署Maven Java Web项目
java·tomcat·maven
aashuii1 小时前
华为CE交换机抓包
运维·服务器