软件工程(导论)

成秀秀、杨玲、戚爱斌、苗世迪、温东新

目录

  • 1 软件与软件工程
    • 1.1 软件
    • 1.2 软件危机
    • 1.3 软件工程
    • 1.4 软件生命周期
    • 1.5 软件过程模型
    • 1.6 学生成果分享
  • 2 可行性研究与项目开发计划
    • 2.1 可行性研究的任务
    • 2.2 可行性研究过程
    • 2.3 进度计划
    • 2.4 学生成果分享
  • 3 需求分析
    • 3.1 需求分析的任务
    • 3.2 与用户沟通获取需求的方法
    • 3.3 分析建模与规格说明
    • 3.4 实体-联系图
    • 3.5 数据规范化
    • 3.6 状态转换图
    • 3.7 其它图形工具
    • 3.8 验证软件需求
  • 4 总体设计
    • 4.1 系统流程图
    • 4.2 数据流图
    • 4.3 数据字典
    • 4.4 设计过程
    • 4.5 设计原理
    • 4.6 启发规则
    • 4.7 描绘软件结构的图形工具
    • 4.8 面向数据流的设计方法
  • 5 详细设计
    • 5.1 结构程序设计
    • 5.2 人机界面设计
    • 5.3 过程设计的工具
    • 5.4 面向数据结构的设计方法
    • 5.5 程序复杂程度的定量度量
  • 6 软件编码
    • 6.1 程序设计语言
    • 6.2 编码风格
  • 7 软件测试
    • 7.1 软件测试基础
    • 7.2 单元测试
    • 7.3 集成测试
    • 7.4 确认测试
    • 7.5 白盒测试技术
    • 7.6 黑盒测试技术
    • 7.7 调试
    • 7.8 软件可靠性
  • 8 软件项目管理
    • 8.1 估算软件规模
    • 8.2 工作量估算
    • 8.3 人员组织
    • 8.4 质量保证
    • 8.5 软件配置管理
    • 8.6 能力成熟度模型
调试

调试总述

调试是在测试发现错误之后排除错误的过程。

软件错误的外部表现和它的内在原因之间可能并没有明显的联系。

调试就是把症状和原因联系起来的尚未被人深入认识的智力过程。 


一、调试过程

调试发生在测试之后。

调试过程从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,则这种不一致就是一个症状,它表明在软件中存在着隐藏的问题。

调试过程试图找出产生症状的原因,以便改正错误。 


二、调试途径

1. 蛮干法

蛮干法可能是寻找软件错误原因的最低效的方法。其他方法都失败时才使用这种方法。 

这种方法印出内存的内容,激活对运行过程的跟踪,在程序中到处都写上WRITE(输出)语句。

更多情况下只会浪费时间和精力。必须首先进行周密的思考,有明确的目的,尽量减少无关信息的数量。 

2. 回溯法

回溯是一种相当常用的调试方法,当调试小程序时这种方法是有效的。

具体做法是,从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。

随着程序规模扩大,应该回溯的路径数目也变得越来越大,以至彻底回溯变成完全不可能了。 

3. 原因排除法

■对分查找法:

如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后运行程序并检查所得到的输出。

如果输出结果是正确的,则错误原因在程序前半部分;反之,错误原因在程序后半部分。

对错误原因所在的那部分重复使用这个方法,直到把出错范围缩小到容易诊断的程度为止。

■归纳法:

是从个别现象推断出一般性结论的思维方法。

首先把和错误有关的数据组织起来进行分析,以便发现可能的错误原因。

然后导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。

■演绎法:

从一般原理或前提出发,经过排除和精化的过程推导出结论。

首先设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因。