软件工程 期末复习

zstu 浙江理工大学 2023学年第1学期 软件工程

带有参考标记 的章节建议优先阅读

题目的答案不保证完全正确

考前关键词速记

目录:需求获取、需求分析、软件设计、体系结构、人机交互、详细设计、实现、结构化开发、测试、维护、持续集成、度量、管理
生存周期:需求、设计、编码、测试、运行、退役
对应:需求规约、需求模型、体系结构、详细设计、源程序、可执行代码
软件危机:需求获取、需求分析不准确;缺乏项目管理
瀑布:可行性、需求、设计、编码、测试、运行、退役
适合小规模、需求稳定
优点:利于体系结构、利于管理、规范化
缺点:确定需求、时间长、缺陷隐藏
极限编程:完整团队、增量规划、客户参与、简单设计、结对编程、测试驱动、适时重构、持续集成、集体所有
适合小型软件、原型

UML静态:包、类、对象
UML行为:顺序、通信、状态、活动
用例与软件需求的关系:用例是功能性软件需求的主体部分
用例用椭圆、包含用虚线,连接不用箭头
类的组合实心,聚合空心,关联不用箭头
顺序图的对象用矩形

需求分析过程:优先级、用例、模型评审、原型
需求优先级因素:价值、成本、风险
优先级:架构、需求、风险
用例分析过程:精化领域概念模型、设置分析类、构思协作关系、分析类图
分析类:边界、控制、实体
用例:动作序列;交互图:消息;分析类:职责(响应消息);设计元素:方法
快速原型:探索性、实验性、进化性

设计元素:子系统、构建、类
设计模型:体系结构、用户界面、用例、数据、子系统/构建/类
质量要素:正确、充分、优化、简单

内聚:偶然 逻辑 时间;过程 通信;顺序 功能
耦合:非直接 数据/控制 外部 公共 内容
高内聚低耦合优点:结构简单、可复用、可修改、可维护、并行开发
信息隐藏优点:并行开发、便于测试、便于维护

体系结构:组件、连接件、约束
视图:逻辑、开发、物理、运行、数据
设计模式:以复用为目的,良好定义的设计经验
分层:松耦合、可复用、可替换、标准化。性能损耗大
管道:可升级、更换过滤器构件。只适合批处理
黑板:知识源可升级、更换、复用。性能差,开发测试难

体系结构初创:基于需求、参考已有体系结构、选取体系结构
逻辑体系过程:搜索设计资产、设计技术支撑、确立设计元素、整合设计元素

纵向复用:公共性领域之间进行软部件复用
领域分析:根据领域的特征预测软部件可复用性
领域分析过程:发现可复用实体、抽象化、分类、建立体系结构

界面设计:屏幕内容的表示、屏幕之间跳转关系的表示
界面元素:静态、动态、用户输入、用户命令

数据流图:外部实体矩形,转换圆形,数据流实心箭头,数据源双横线

测试:需求测试、设计测试、代码【单元测试、集成测试】、确认测试、系统测试、回归测试
确认测试:软件是否满足需求说明书
黑盒测试:等价分类、边界值分析、对比测试

非结构化维护:读代码
结构化维护:读文档、读设计、修改设计、修改代码、回归测试
可维护性因素:开发方法:设计、编码、测试;开发环境

持续集成:代码集成、编译、测试、质量分析、发布
持续集成过程:提交代码、触发集成、脚本程序 管道 主工具 从工具、发送通知
持续集成价值:风险、成本、效率、更新、环境、可视化

初始级:没有软件过程管理
可重复级:基本的软件过程管理
已定义级:软件过程的标准化、文档化
已管理级:软件过程的定量管理
优化级:软件过程的维护和更新

第 1 章 软件与软件工程

1.1 软件的概念

1.1.1 软件的组成

image-20231230190514637

1.1.2 软件生存周期

image-20240107121220364

1.2 软件工程

1.2.1 定义

image-20231230190748487

1.2.2 发展 ※

软件危机 ※

需求获取和需求分析不准确、缺乏项目过程管理

image-20231230191047347

image-20231230191057270

1.2.3 目标和原则

image-20231230192604594

原则:抽象、信息隐藏、模块化、局部化、一致性、完全性、可验证性

1.2.4 软件开发的方法

结构化方法、面向对象方法、形式化开发方法

1.3 过程模型

1.3.1 瀑布 ※

image-20230912104030427

image-20230912104333700

image-20230912104226942

image-20230912104350695

image-20230912104408215

image-20230912104422990

image-20230912104459805

image-20230912104512884

image-20230912104533467

image-20230912104652706

1.3.2 增量

image-20231230193429664

image-20231230193438994

1.3.3 原型建造

image-20231230193813307

image-20231230193825428

image-20231230193858029

1.3.4 螺旋

image-20231230194005659

image-20231230194013478

image-20231230194808672

image-20231230194817122

1.3.5 基于构建

image-20231230195013081

image-20231230195026142

题目

image-20231231170955840

image-20240101193439187

1.4 敏捷开发 ※

1.4.1 原则

image-20231230195755187

1.4.2 极限编程

极限编程是遵循敏捷开发原则的软件过程。

image-20231230202113452

image-20231230202132398

1.4.3 应用

image-20231230205509532

题目

image-20231231214310825

第 2 章 UML 与 RUP 统一过程

2.2 面向对象的软件开发方法

2.2.1 概念 ※

题目

image-20240102130633424

为了在对象obj1与对象obj2之间消息传递,面向对象的程序设计机制提供如下4种手段:

(1) 引用全局对象。obj1直接引用作为全局对象的obj2。

(2) 通过参数传递。obj2作为obj1的某项操作中的实在参数。

(3) 引用局部对象。在obj1的某项操作的函数体中创建或获取obj2

(4) 通过类的成员变量。obj2作为obj1所属类的属性的取值。

前三种类型的连接具有暂时性,obj1与obj2之间的连接仅在obj1的某项操作的执行过程中建立,操作完成后连接即告终结。这种暂时性连接用UML 的依赖关系表示。对最后一种具有稳定性的连接关系,需要进一步分析。如果参与连接的两个类在现实世界中存在“皮之不存,毛将焉附”的部分整体关系,则用UML 的构成关系表示。否则,如果它们在现实世界中仍存在“多个整体对象可共享同一部件对象”的部分整体关系,则用UML 的普通聚合关系表示。如果以上两种假设均不成立,则原连接关系精化成UML中普通的关联关系。

image-20240102130216484

2.3 UML 概述

image-20231231232504135

image-20231231232514505

题目

image-20231231232634181

image-20240102115815682

第 3 章 需求工程概述

image-20240101184813093

题目

image-20240105152810609

3.1 概念

3.1.1 分类

image-20240101185004139

题目

image-20240102115248724

第 4 章 需求获取

image-20231230205848218

题目

image-20240105153251053

image-20240105153318948

4.1 需求表示

4.1.1 用例 ※

重点关注用例与软件需求的关系

image-20231230210213268

image-20231230210230066

image-20231230210254848

image-20240102171210303

4.1.2 用例图 ※

image-20231230210426423

image-20231230210553532

image-20231230211241964

image-20231230212940052

4.1.3 用例的表示 ※

image-20231230213220512

image-20231230213240201

4.1.4 类图 ※

image-20231230213419100

image-20231230214744083

image-20231230214832142

image-20231230215915757

image-20231230215941652

image-20231230220305879

image-20231230220314486

4.1.5 活动图

image-20231230221536711

image-20231230221556761

image-20231230221608361

image-20231230221619662

image-20231230221627495

题目

image-20231231212302180

image-20231231231154679

image-20231231231212305

image-20240101194641571

image-20240102115437115

注意 14 题不要选择 B

image-20240102120847569

image-20240102162431837

image-20240102162514379

image-20240105154712156

image-20240105154721120

image-20240105154744033

4.5 精化用例

image-20240102164925530

4.5.1 交互动作序列

image-20240102165411715

image-20240102165438484

image-20240102165453967

image-20240102165503333

image-20240102165730388

4.5.3 构建完整用例

image-20240102165827957

image-20240102165840195

4.5.4 精化用例图 ※

image-20240102170019428

题目

image-20240102170340951

image-20240102170709537

第 5 章 需求分析

image-20231231224624067

image-20231231224705373

5.1 分析模型的表示

5.1.1 顺序图 ※

image-20231231225018286

image-20231231225911369

image-20231231225919730

image-20231231225932400

image-20231231225940999

image-20231231225953056

image-20231231230001055

image-20231231230010743

image-20231231230019139

image-20231231230026736

题目

image-20231231230252631

5.2 过程模型

image-20240102124608915

5.3 需求优先级分析

5.3.1 确定优先级 ※

价值、成本、风险

image-20240102124901473

image-20240102124914041

image-20240102124926412

5.3.2 编排优先顺序 ※

架构、需求、风险

image-20240102125034990

5.4 用例分析

image-20240102153607336

image-20240102153651981

5.4.1 精化领域概念模型

image-20240102153756892

image-20240102153808631

5.4.2 设置分析类 ※

image-20240102153951534

image-20240102160411390

image-20240102160515676

image-20240102160643343

image-20240102160927206

image-20240102160940221

image-20240102160948400

image-20240102161101800

5.4.4 导出分析类图 ※

职责:响应消息

事件->消息->职责->函数方法

image-20240102161236457

image-20240102161252161

image-20240102161332628

题目

image-20240102161653539

image-20240102162528247

5.5 快速原型 ※

参考 1.3.3。探索性原型不涉及软件的具体实现方法

image-20231231213916307

题目

image-20231231213955526

第 6 章 软件设计概论

image-20231231171416383

image-20231231171423967

6.1 概念

6.1.1 软件设计模型 ※

设计元素就是模块

image-20231231171742361

image-20231231171755220

6.1.2 质量要素 ※

正确性、充分性、优化性、简单性

6.2 软件设计的基本原则

6.2.1 抽象与逐步求精 ※

抽象:自顶向下设计

image-20231231172109119

6.2.2 模块化 ※

image-20231231172459149

image-20231231172508639

image-20231231211022016

image-20231231211036025

优点:简单、可复用、可修改、可维护、并行开发

image-20231231211149182

6.2.3 信息隐藏 ※

优点:并行开发、便于测试、便于维护

image-20231231211607853

6.2.4 关注点分离 ※

聚焦某个关注点

image-20231231212021927

题目

image-20231231212120655

image-20231231214107435

image-20240102130949175

image-20240101002430562

image-20240105153447177

image-20240101194105451

image-20240102115710678

第 7 章 软件体系结构设计

image-20231231230712026

image-20231231214533133

题目

image-20231231214600051

image-20231231230730999

7.1 概念

7.1.1 定义 ※

image-20240102162823862

7.1.2 体系结构视图 ※

image-20240102163008276

题目

image-20231231235213396

7.2 表示

7.2.1 包图

image-20240107144943458

7.2.2 构建图

image-20240107145003512

7.4 设计模式

7.4.1 定义

设计模式:以设计复用为目的、良好定义的设计经验

image-20240102174259811

7.4.2 通用模式 ※

分层:松耦合、可复用、可替换、标准化。性能损耗大

管道:可升级、更换过滤器构件。只适合批处理

image-20240102174447479

image-20240102174456784

image-20240102174540529

image-20240102174600698

image-20240102174928460

image-20240102175002766

image-20240102175217259

image-20240102175226642

7.5 概念设计

image-20240102175343027

7.5.2 体系结构初创 ※

image-20240102175520035

image-20240102175528083

image-20240102175537496

7.6 体系结构精化

image-20231231235127872

7.6.1 逻辑视图体系结构

image-20240102163334223

7.6.2 开发视图体系结构

image-20240102163431284

题目

image-20240102163546570

7.7 基于构件的体系结构设计

7.7.1 概述 ※

重点关注纵向复用、领域分析

image-20240102175945279

image-20240102180306711

7.7.2 构建创立 ※

领域分析:发现可复用实体、抽象化、分类、建立体系结构

image-20240102180339031

image-20240102180718028

7.7.3 构建复用

image-20240102180929503

第 8 章 人机交互设计

8.3 用户界面设计模型的表示 ※

屏幕:窗口、对话框、网页

界面设计:屏幕内容的表示、屏幕之间跳转关系的表示

界面元素:静态、动态、用户输入、用户命令

image-20231231213221297

题目

image-20231231213342028

image-20231231235300300

第 11 章 结构化软件开发

11.1 数据流

11.1.1 数据流图与数据字典 ※

image-20240102121750526

image-20240102121757804

image-20240102121809639

image-20240102121930387

image-20240102121936811

11.1.4 基于数据流的分析方法 ※

image-20240102122154035

image-20240102122205100

image-20240102122224343

题目

image-20240102124144465

image-20240102170932983

image-20240105154856580

11.2 面向数据流的设计方法

11.2.1 概念和过程

image-20240102122700612

image-20240102122913960

11.2.2 变换分析 ※

image-20240102123313020

image-20240102123356119

image-20240102123445373

image-20240102123454967

image-20240102123147455

11.2.3 事务分析 ※

image-20240102123630100

image-20240102123640491

image-20240102123709247

image-20240102123717506

题目

image-20240102170633104

第 12 章 软件测试

12.1 概念

image-20231231215355068

12.1.1 任务

image-20231231215425765

12.1.2 信息流程

image-20231231220212566

12.1.3 测试用例设计 ※

image-20231231220558470

image-20231231220616190

题目

image-20240102131034323

image-20240102115634205

12.2 过程模型

image-20240101184327621

image-20240101184631870

题目

image-20240101184653390

image-20240105153629079

image-20240102163652300

12.3 测试方法

12.3.1 白盒测试

image-20240101190058055

12.3.2 黑盒测试 ※

等价分类、边界值分析、对比测试

image-20240101190453036

image-20240101190429811

题目

image-20231231220723381

image-20240101001759381

第 2 题的最佳答案应当是 B,而不是 A

image-20240101193942960

image-20240102161754828

image-20240102170547515

image-20240102170855515

image-20240105154816885

image-20240105154829850

12.4 测试策略

image-20231231163526497

12.4.1 单元测试

image-20231231163614698

12.4.2 集成测试

image-20231231163722142

image-20231231163732272

增量式集成分为自顶向下集成和自底向上集成

12.4.3 确认测试

image-20231231164349558

12.4.4 系统测试

image-20231231164442628

image-20231231164451985

题目

image-20231231164259460

第 13 章 软件维护

13.1 概念

image-20240101194325290

image-20240101194339301

题目

image-20240101194405675

13.2 过程模型

13.2.1 结构化与非结构化的维护 ※

image-20240102183436418

image-20240102183445565

13.3 可维护性

image-20240102183846614

image-20240102183857149

image-20240102183903380

第 14 章 持续集成

14.1 概述

14.1.1 概念 ※

image-20240101192107119

image-20240101192120548

image-20240101192128061

image-20240101192136281

14.1.2 过程和管道 ※

image-20240101193139645

image-20240101193148866

14.1.3 价值 ※

风险、成本、效率、更新、环境、可视化

image-20240101193301183

题目

image-20240101193326523

(1)提交代码:一个或多个开发人员将新代码提交至VCS。

(2)触发集成:按照预先配置的“推”或“拉”方式触发管道中首个动作。

(3)执行集成:从工具执行由开发人员根据项目需要开发的脚本程序来完成相应的集成动作。在管道中每个动作完成后,主工具自动触发下一动作对应的从工具开始执行,直至到达管道的末尾,或者当前动作宣告失败。

(4)发送通知:可以对主、从工具进行配置以支持向代码提交者(或项目其他成员)发送集成过程中的进展及错误概述信息。

第 15 章 软件度量与估算

15.2 软件规模度量

image-20240102162014707

题目

image-20240102162034543

15.4 软件质量度量

15.4.1 软件质量的概念

image-20240101191044056

image-20240101191317202

image-20240101191325032

题目

image-20240101191502867

(1)正确性:软件满足需求规约及完成用户目标的程度。

(2)可用性。学习和使用软件的难易程度,

(3)可靠性。软件完成预期功能,成功运行的概率。软件可靠性反映了软件无故障工作的状况。

(4)有效性。软件系统利用计算机的时间资源和空间资源完成系统功能的能力。

(5)可维护性。软件制品交付用户使用后,能够对它进行修改,以便改正潜伏的缺陷、改进性能和其他属性,使软件制品适应环境的变化等等。

(6)可复用性。软构件可以在多种场合应用的程度称为构件的可复用性。

第 16 章 软件项目管理与过程改进

16.7 软件配置管理

image-20231231162449759

16.7.1 概念

基线可以理解为一个配置文件 conf.ini

image-20231231162636779

16.7.2 任务

image-20231231163022740

题目

image-20231231162557724

image-20231231162657911

16.8 软件过程改进

16.8.1 概念

image-20231231165804449

image-20231231165815323

16.8.2 能力成熟度模型 CMM ※

初始级:没有软件过程管理

可重复级:基本的软件过程管理

已定义级:软件过程的标准化、文档化

已管理级:软件过程的定量管理

优化级:软件过程的维护和更新

image-20231231165258815

image-20231231170557367

image-20231231170614415

image-20231231170653674

image-20231231170723835

image-20231231170751812

题目

image-20231231170835610