软件工程——原理、方法与应用(第3版本)史济民-顾春华-版知识点整理(完整版)410

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
29. 软件测试
黑盒测试
定义:是根据被测试程序的功能来进行测试,也称为功能性测试 方法:
i. 等价分类法 ii. 边界值分析法 iii. 错误猜测发 iv. 因果图法
白盒测试
定义:以程序的结构为依据,又称结构测试 常用方法:
i. 逻辑覆盖法 ii. 路径测试法
30. 软件的维护
定义:在一个软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其 他
27. 软件设计一般包括
1) 数据设计(DD、E-R) 2) 体系结构设计(DFD)
3) 接口设计(DFD) 4) 过程设计(STD,控制规格说明、加工规格说明)
28. 传统的软件设计
1) 概要设计 i. 结构设计 ii. 接口设计
iii. 编写概要设计文档 2) 详细设计
i. 确定各个软件部件的数据结构和操作,产生描述各软件部件的详细设计文档
26. 试比较 3 种不同的设计思想
a) 面向过程的思想: i. 各模块功能可能相互交叉或重叠,模块间常常存在数据的共享或数据结构的 共享
b) 面向功能的思想: i. 各模块的功能单一,如能将它们与其他模块的数据共享降到最低限度,就可 以在某些应用中重用
c) 面向对象的思想: i. 各模块是一个个独立的单位,不仅重用性较好,而且易于测试,联调和维护
14. 传统软件工程方法与面向对象的区别、各自的优缺 点
区别: 前者是面向过程的语言,一切以算法为核心 后者是面向对象的语言,构成类的封装机制,跟好的实现了代码的服用性能,依 据
高内聚、低耦合的思想核心
传统的软件工程主要指结构化软件工程方法
优点: 1) 整体思路清楚,目标明确 2) 设计工作中阶段性非常强,有利于系统开发的总体管理和控制 3) 在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷
15. 软件需求
定义:是指一个软件系统必须遵ቤተ መጻሕፍቲ ባይዱ的条件或具备的能力 三个层次:业务需求、用户需求、功能需求 特征:
i. 功能性 ii. 可用性 iii. 可靠性 iv. 性能 v. 可支持性 vi. 设计约束
16. 软件需求工程
定义:是一门应用有效的技术和方法,合适的工具和符号,来确定,管理和描述目标 系统及其外部行为特征的学科。
23. 分析类的类型
边界类:提供了对参与者或外部协议交互的接口 控制类:用于封装一个或几个用例所特有的流程控制行为 实体类:用于对必须存储的信息和相关的行为建模
24. 面向对象设计的两个层次
1) 系统架构设计 1) 系统高层结构设计 2) 确定设计元素 3) 确定任务管理策略 4) 实现分布式机制 5) 设计技术存储方案 6) 人机界面设计
21. 面向对象开发的全过程
OOA分析模型->OOD 设计模型->OOP 实现模型->OOT 的迭代过程
22. OOA 的优点
1) 同时加强了对问题空间和软件系统的了解 2) 改进包括用户在内的软件分析有关的各类人员的交流 3) 对需求的变化具有较强的适应性 4) 很好地支持软件复用
5) 确保从需求模型到设计模型的一致性
1. 软件生存周期:
1) 需求分析 2) 软件分析 3) 软件设计 4) 编码(测试) 5) 软件测试 6) 运行维护
2. 7 种模型:
(1)瀑布模型
特点:线性模型,每一个阶段必须完成规定的文档 使用场合:需求明确的中、小型软件开发
(2)快速原型模型
特点:用户介入早,通过迭代完善用户需求,应用快速开发工具 适用场合:需求不明确的小型软件开发
数据字典(DD) 实体联系图(E-R)
设计模型 过程设计
接口设计 体系结构设计 数据设计
13. DFD<——>SC 图
把 DFD 图转换为最终 SC 图,仅仅完成了软件设计的第一步。 传统的软件工程将软件设计分成两步走:
1) 总体(或结构)设计——用最终 SC 图表示 2) 模块设计:——用逐步细化的方法来实现
缺点: 1) 用户要求难以在系统分析阶段准确定义,致使系统在交付时产生许多问 题 2) 不能适应事务变化的要求 3) 系统的开发周期长
面向对象: 优点: 1) 加强了对问题空间和软件系统的理解 2) 改进包括用户在内的与软件分析有关的各类人员之间的交流 3) 对需求的变化具有较强的适应性 4) 很好地支持软件复用 5) 确保从需求模型到设计模型的一致性 缺点: 1) 用户与分析员和管理之间的问题 2) 开发周期长 3) 结构化程度较低,开发初期难以锁定功能要求
指导思想:抽象与分解 基本步骤:
1) 自顶向下对系统进行功能分解,画出分层 DFD 图 2) 右后先前定义系统的数据和加工,编制 DD 和 PSPEC 3) 最终写出 SRS
9. SA 模型(结构化分析模型)的组成
10. 数据流图
组成符号: 1) 圆框代表加工;
2) 箭头代表数据的流向; 数据名称总是标在箭头的边上;
3) 方框表示数据的源点和终点; 4) 双杠(或单杠)表示数据文件或数据库;
11. 大型复杂的软件系统
SRS:需求规格说明书 通常把这种不需再分解的加工称为“基本加工”,把上述逐步分解称为“自顶向下,逐步 细化”
12. 将分析模型转化为软件的设计模型
分析模型 状态转换图(STD) 控制规格说明(CSPEC) 加工规格说明(PSPEC) 数据流图(DFD)
(3)增量模型
特点:每次完成一个增量,可用于 oo 开发 适用场合:容易分块的大型软件开发
(4)螺旋模型
特点:典型迭代模型,重视风险分析,可用于 oo 开发 适用场合:具有不确定性的大型软件开发
(5)构件集成模型
特点:软件开发与构件开发平行运行 适用场合:领域工程,行业的中型软件开发
(6)转换模型
属性,或使产品适应改变了的环境 分类:
i. 完善性维护 ii. 纠错性维护 iii. 适应性维护 iv. 预防性维护
31. 可维护性
定义:是衡量维护容易程度的一种软件属性 取决于:
i. 可理解性 ii. 可修改性
iii. 可测试性 三者一起构成了软件的质量属性
32. 文档的作用
1) 帮助维护人员读懂程序 2) 方便被维护软件的测试
四个阶段: i. 初始阶段
ii. 细化阶段 iii. 构造阶段 iv. 迁移阶段
4. 敏捷过程
定义:是指一种以人为核心,以迭代方式循序渐进开发的方法。
5. 软件可行性研究
内容: 1) 经济可行性 2) 技术可行性 3) 运行可行性 4) 法律可行性
步骤: 1) 对当前系统进行调查和研究 2) 导出新系统的解决方案 3) 提出推荐方案 4) 编写可行性论证报告
17. 需求分析
四大步骤: 1) 需求获取 2) 需求建模 3) 需求描述 4) 需求验证
18. 需求获取的常用方法
1) 常规的需求获取方法
a) 建立联合分析小组
b) 用户访谈 c) 问题分析的确认
2) 用快速原型法获取需求
19. 面向对象的需求建模
1) 画用例图 a) 确定参与者 (泛指所有存在于系统外部并与系统进行交互的人,硬件或其他 系统) b) 确定用例 c) 绘制和检查用例图
商业风险:包括市场,商业策略,推销策略等方面的风险
7. 项目实施计划
1) 项目实施计划 2) 质量保证计划 3) 软件测试计划 4) 文档编制计划 5) 用户培训计划 6) 综合支持计划 7) 软件分发计划
8. 结构化分析基本任务与指导思想
基本任务: 1) 编写软件需求规格说明书 2) 建立系统分析模型
特点:形式化的需求规格说明书,自动的程序变换系统 适用场合:理想化模型,尚无成熟工具支持
(7)净室模型
特点:形式化的增量开发模型,在洁净状态下实现软件制作 适用场合:开发团队熟悉形式化方法,中小型软件开发
3. 统一过程
定义:描述了软件开发过程中各个环节应该做什么、怎么做,什么时候做以及为什么要这 样做,描述了一组以某种顺序完成的活动
2) 写用例规约 a) 用例规约的内容 b) 用例规约示例 c) 用例模型的检查
3) 描述补充规约 4) 编写术语表 5) 调整用例模型
20. 需求管理的内容
1) 特定实践 a) 获得对需求的理解
b) 获取需求承诺 c) 管理需求变更 d) 维护对需求的双向可追溯性 e) 标识项目工作与需求的一致性 2) 管理流程 a) 需求确认 b) 需求跟踪 c) 需求变更 需求变更的流程: 变更申请->审批->更改->重新确认
6. 风险识别
定义:
1) 项目风险 2) 技术风险 3) 商业风险 风险预测: 1) 风险发生的可能性(极罕见,罕见,普通,可能,极可能) 2) 风险发生后的后果(灾难性的,严重的,轻微的,可忽略的) 项目风险:在预算、进度、人力、资源、客户及需求等方面潜在的问题
技术风险:设计,实现,接口和维护等方面的问题
2) 系统元素设计 1) 类/对象设计 2) 子系统设计 3) 包设计
25. OOD
a) 任务:将分析阶段建立的分析模型转换为软件设计模型 b) 广义地说,对象也是一种模块,再模块设计中要求的高内聚、低耦合等性质 c) 可重复使用的软件组件称之为构件 d) 现有的可复用构件,大多数是在对象的基础上创建的 e) 模块是一个拥有明确定义的输入、输出和特性的程序实体
33. 横向复用和纵向复用
定义:按复用活动所应用的领域范围 “标准函数库”是一种典型的原始横向复用机制
横向复用
定义:是指复用不同应用领域中的软件元素
纵向复用
定义:是指在一类具有较多公共性的应用领域之间,对软件构件进行复用 主要活动:
i. 实施领域分析 ii. 开发软件构件 iii. 建立软件构件库
相关文档
最新文档