【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英里,则自动降级为普卡会员。

在这里插入图片描述

相关推荐
apocelipes11 分钟前
atomic不是免费午餐
java·性能优化·golang·并发
A了LONE22 分钟前
cv弹窗,退款确认弹窗
java·服务器·前端
蔡楚门42 分钟前
福彩双色球第2025088期篮球号码分析
java
慕y2741 小时前
Java学习第九十六部分——Eureka
java·学习·eureka
头发那是一根不剩了2 小时前
信创应用服务器TongWeb安装教程、前后端分离应用部署全流程
java·信创·tongweb
吉凶以情迁2 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
卍郝凝卍2 小时前
云上服务器常见的存储方式和类型
大数据·服务器·数据库
22:30Plane-Moon2 小时前
Servlet作用域,监听器,JSP九大内置对象
java·开发语言·servlet
小白(猿)员2 小时前
JVM、JDK、JRE的区别
java·开发语言·jvm
axban3 小时前
QT中删除控件的注意事项、deleteLater和delete的区别
java·数据库·qt