返回课程目录

第 12 章 软件工程基础

学习目标

  • 理解软件生命周期和软件开发环境。
  • 识别数据流图、数据字典和需求规格说明书。
  • 区分总体设计与详细设计。
  • 判断白盒测试、黑盒测试、测试阶段和调试方法。

1. 软件工程

软件工程用系统化、规范化的方法开发、运行和维护软件。软件生命周期通常包括问题定义、可行性研究、需求分析、设计、实现、测试、交付维护等阶段。

软件工具支持某一开发任务,软件开发环境则把一组工具集成在一起。

2. 需求分析

需求分析确定软件“做什么”。结构化分析常用:

  • 数据流图:描述数据在加工之间的流动。
  • 数据字典:定义数据流、数据存储和数据项。
  • 软件需求规格说明书:记录完整、准确和可验证的需求。

数据流图关注数据处理过程,不直接表示程序中的具体代码。

3. 软件设计

总体设计确定系统模块划分、模块功能和模块之间的调用关系。详细设计确定每个模块内部的算法、数据结构和处理流程。

设计应让模块功能单一,降低模块之间的耦合,提高模块内部的内聚。

4. 软件测试

  • 白盒测试:根据程序内部逻辑设计测试。
  • 黑盒测试:根据输入和预期输出设计测试,不查看内部实现。

测试通常按以下层次实施:

  • 单元测试:检查最小程序模块。
  • 集成测试:检查模块组合后的接口和协作。
  • 系统测试:检查完整系统是否满足需求。

测试的目的是发现错误,而不是证明软件绝对没有错误。

5. 调试

调试是在发现错误后定位并修正错误。静态调试通过阅读代码、审查逻辑发现错误;动态调试通过运行程序、设置断点和观察变量发现错误。

测试负责发现问题,调试负责分析原因并修复问题。

本章练习

  • 按先后顺序排列需求分析、设计、实现和测试。
  • 说明数据流图和数据字典的作用。
  • 判断只根据输入输出设计测试属于白盒还是黑盒。
  • 区分测试和调试。

本章小结

  • 软件生命周期把开发工作分成相互衔接的阶段。
  • 数据流图描述加工过程,数据字典定义其中的数据。
  • 总体设计划分模块,详细设计描述模块内部实现。
  • 白盒看内部逻辑,黑盒看外部功能;测试发现错误,调试修正错误。