软件工程(导论)

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

目录

  • 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 能力成熟度模型
质量保证

一、软件质量

概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。

软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。         

定义强调了下述的3个要点: 

■软件需求是度量软件质量的基础,与需求不一致就是质量不高。

■指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致软件质量不高。

■通常,有一组没有显式描述的隐含需求。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。

影响软件质量的主要因素,是从管理角度对软件质量的度量。可以把这些质量因素分成3组,分别反映用户在使用软件产品时的3种不同倾向或观点。这3种倾向是:产品运行、产品修改和产品转移。 


二、软件质量保证措施

软件质量保证(software quality assurance,SQA)的措施主要有:

■基于非执行的测试(复审或评审),主要用来保证在编码之前各阶段产生的文档的质量;

■基于执行的测试(软件测试),需要在程序编写出来之后进行,它是保证软件质量的最后一道防线;

■程序正确性证明,使用数学方法严格验证程序是否与对它的说明完全一致。 


1. 技术复审的必要性

正式技术复审的显著优点是,能够较早发现软件错误,从而可防止错误被传播到软件过程的后续阶段。

统计数字表明,在大型软件产品中检测出的错误,60%~70%属于规格说明错误或设计错误,而正式技术复审在发现规格说明错误和设计错误方面的有效性高达75%。由于能够检测出并排除掉绝大部分这类错误,复审可大大降低后续开发和维护阶段的成本。

正式技术复审是软件质量保证措施的一种,包括走查(walkthrough)和审查(inspection)等具体方法。走查的步骤比审查少,而且没有审查正规。 

2. 走查

走查组由4~6名成员组成。走查组组长引导该组成员走查文档,力求发现尽可能多的错误。

走查组的任务仅仅是标记出错误而不是改正错误,改正错误的工作应该由该文档的编写组完成。

走查的时间最长不要超过2小时,这段时间应该用来发现和标记错误,而不是改正错误。

走查主要有下述两种方式: 

■参与者驱动法 

■文档驱动法

3. 审查

■综述:由负责编写文档的一名成员向审查组综述该文档。

■准备:评审员仔细阅读文档。

■审查:评审组仔细走查整个文档。

■返工:文档的作者负责解决在审查报告中列出的所有错误及问题。

■跟踪:组长必须确保所提出的每个问题都得到了圆满的解决。

通常,审查组由4人组成。组长既是审查组的管理人员又是技术负责人。审查过程不仅步数比走查多,而且每个步骤都是正规的。

4. 程序正确性证明

在20世纪60年代初期,人们已经开始研究程序正确性证明的技术,提出了许多不同的技术方法。

人工证明程序正确性,对于评价小程序可能有些价值,但是在证明大型软件的正确性时,不仅工作量太大,更主要的是在证明的过程中很容易包含错误,因此是不实用的。为了实用的目的,必须研究能证明程序正确性的自动系统。

目前已经研究出证明PASCAL和LISP程序正确性的程序系统,正在对这些系统进行评价和改进。现在这些系统还只能对较小的程序进行评价。