第四章 软件工程
1.软件生命周期
-
需求分析–软件需求说明书
综合需求:系统界面、系统功能、性能、安全性、保密性、可靠性,系统运行要求
数据要求:基本数据元素、数据元素之间逻辑关系、数据量。 -
软件设计
-
编码及单元测试
单元测试:程序自己测试,是否实现详细设计说明书中的功能。 -
集成及系统测试
集成测试: 也叫组装测试,各模块组装而成的程序进行测试,主要目标是实现模块间的接口和通信问题。
系统测试:对象是完整的系统,环境测试。 -
安装
-
实施与维护
2.数据流图
结构化开发方法中需求分析工具;
- 外部实体:系统之外的
- 数据流:具有名字和方向的数据
- 加工:对数据流的转换
- 数据存储:存储信息
3.内聚和耦合
七种内聚
- 功能内聚
- 顺序内聚
- 通信内聚
- 过程内聚
- 瞬时内聚
- 逻辑内聚
- 偶然内聚
七种耦合
- 非直接耦合
- 数据耦合
- 标记耦合
- 控制耦合
- 外部耦合
- 公共耦合
- 内容耦合
4.软件质量模型
- 功能性
适合性、准确性、互用性、依从性、安全性 - 可靠性
成熟型、容错性、可恢复性 - 可用性
可理解性、易学性、可操作性 - 效率
时间特性、资源特性 - 可维护性
可分析性、可改变性、稳定性、可测试性 - 可移植性
适应性、可安装性、遵循性、可替换性、不用兼容性
5.软件开发模型
- 瀑布模型
严格规定各阶段必须提交的文档;二次开发(需求明确)。 - 喷泉模型
开发过程迭代(多次重复)和无间隙(不存在明显边界)特征 - 快速原型模型
需求不明确,快速建立反映用户需求的软件模型。 - 演化模型
从初始模型逐步演化到最终软件产品的渐进过程。 - 螺旋模型
加入风险分析。使用大中型项目。
6.统一过程UP
- 初始阶段
原始项目需求和业务用例 - 精化阶段
提交系统架构及其相关文档、领域模型、开发计划 - 构建阶段
开发剩余的构件,以及其组装 - 提交阶段
进行测试,发布版本
7.系统转换
- 直接转换
确定新系统运行无误 - 并行转换
新老系统并行运行一段时间 - 分段转换
一部分一部分代替老系统
8.CMM模型成熟度
- 初始级:
依赖个别人努力和机遇而成功; - 可重复级:
对成本 进度和功能追踪; - 定义级:
过程文档化、标准化 - 管理级:
软件过程和产品质量有详细度量标准 - 优化级:
信息定量分析
9.软件测试
目的:软件投入生产性运行之前,尽可能多地发现软件错误。测试只能证明软件中有错误,不能证明软件没有错误。
根据pareto原理,80%错误可能出现在20%的错误模块,测试关键是如何找到20的模块,故对发生错误较多的程序段,应该进行深入测试。
10.软件测试
四个步骤:单元-集成-确定-系统
白盒测试(结构测试)
- 单元测试,完全知道程序结构和算法。
- 语句覆盖:语句都走一次
- 判断覆盖:判断结果都走一次
- 条件覆盖:判断条件都取各种可能值
- 判断/条件覆盖:判定表达式所有可能至少出现一次
- 条件组合覆盖:
- 路径覆盖:程序的每条可能执行到路径都至少经过一次
黑盒测试(功能测试)
- 集成测试和确认测试(检查符合需求说明书)
- 等价类划分
无效等价类
有效等价类 - 边界值分析
- 错误推断
- 因果图
α测试:在开发者场所,由开发者指导用户完成
β测试:用户现场由用户报告给开发者
11.XP极限编程
敏捷开发方法:自适应方法、水晶方法、特性驱动开发。
四大价值观:沟通、简单、反馈、勇气。
五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。
12.软件文档
- 开发文档
- 管理文档
- 用户文档
13.软件维护
- 改正性维护
- 适应性维护
- 完善性维护
- 预防性维护
1***险管理
- 风险识别:建立风险条目检查表
- 风险预测:风险估算
- 风险评估:定义风险参考
- 风险控制:风险避免