当前课程知识点:软件工程与软件自动化 >  第七章 软件质量保证 >  7.1 质量和质量保证 >  授课视频

返回《软件工程与软件自动化》慕课在线视频课程列表

授课视频在线视频

下一节:授课视频

返回《软件工程与软件自动化》慕课在线视频列表

授课视频课程教案、知识点、字幕

嗨,大家好

今天我们开始讨论软件质量和软件质量保证的话

大家知道,中国有句老话叫做

在家千日好,出门一日难

出差在外,尤其是在旅游景点火车站、汽车站的
时候

大家对吃的要求一下子就降低很多,价格高还不
好吃

就打算着赶紧到了市区找个人多排队的饭店好好
吃一顿

为什么会这样呢?

难道我们对饭店的要求不都是“色香味俱佳”么?

饭店开在车站和景区,租金成本比较高

铁打的饭店,流水的客

它们的目标就是赚一把是一把

只要不把人吃坏就行了

饭店开在闹市区,顾客主要是附近的小区居民,
口碑很重要

它们的目标往往就是“抓住回头客,持续盈利”

因此我们可以说

产品和服务的质量是企业的质量目标所决定的

而质量目标又是由企业的商业目标所决定的

对于大部分普通的商业软件来说

提高软件质量的最终目标是为了赢利

而不是创造完美无缺的产品

也就是说,并不是“质量越高越好”,而是恰好让
用户满意

并且将提高质量所付出的努力控制在预算之内

企业不可能为了追求完美的质量而不顾一切代价

当企业为提高质量所付出的代价超过了它的销售
收入的时候

这个产品就已经没有商业价值了,还不如不开发

所以企业必须权衡质量、效率和成本

产品质量太高了或者太低了

都不利于企业获取利润

大家还记得数学家陈省身大师

给科大少年班的题词吧,不要考100分

对大部分孩子来说

把成绩从95分提高到100分

需要耗费几倍的时间和精力

那为什么不把这些时间和精力拿出来

做更有意义的事情呢?

从上面的例子中我们可以看出

质量的含义是与上下文密切相关的

不同的人从不同的角度来看软件质量问题

会有不同的理解

从用户的角度看,质量就是满足用户的需求

从开发者的角度看,质量就是与需求说明保持一

从产品的角度看,质量就是产品的内在特点

从价值的角度看,质量就是客户是否愿意购买

我们在超市里买东西看

到某件商品贴了一些醒目的标签

我们可能就会相信它的质量不错

满足了国家的强制质量要求

但是,软件产品,尤其是订制的软件产品

无法提供诸如国家的CCC认证标签

来给用户提供一个直观的质量展示

就需要通过其他的方式来给用户提供证据

来证明我们所开发的软件产品质量满足用户的要 求

在1983年,ANSI/IEEE729号标准给出了软件质
量的定义

那就是:软件产品满足规定的和隐含的

与需求能力有关的全部特征和特性

具体来说它包括四个方面的内容

一是软件本身的质量满足用户的要求程度

二是软件各种属性的组合程度

三是用户对软件产品的综合反映程度

四是软件在使用过程中满足用户要求的程度

后面我们会对这些特性和特征展开进一步地讨论

软件产品的质量不是由单一因素决定的

提高软件产品质量更不是一件简单的事情

往往需要构建一个复杂的质量体系

来持续地提高软件产品和服务的质量

那么什么是质量体系呢?

质量体系就是为了保证产品、过程或服务的质量

满足规定的或潜在的要求,由组织机构、职责

程序、活动、能力和资源等等构成的一个有机的
整体

按照质量体系的目的

可以分为质量管理体系和质量保证体系

一般来说,企业在非合同环境下,建立质量管理
体系

在合同环境下,应该建立质量管理体系和质量保
证体系

质量管理体系是企业内部建立的

为保证产品质量或质量目标所必需的、系统的质
量活动

质量保证体系则是为了使人们确信

某一产品、过程或服务的质量

所必须的,全部有计划有组织的活动

这种活动的标志或结果提供了一个“证据”

确保用户和消费者对我们产品的一种信任

确保用户和消费者对我们产品的一种信任

这种证据和信任是以企业的质量管理活动为坚实
的后盾

表明我们的产品或服务是在严格的质量管理中完
成的

我们拥有足够的管理上和技术上的保证能力

质量体系中的全部的要素、要求规定、标准等等
都要纳入文件

形成质量文件体系,成为企业全部文件的一部分

质量体系文件形成的文件体系分为3个层次

第一个层次是纲领性文件,叫质量手册

第二个层次涉及到各个职能部门的活动,成为质
量程序

第三个层次是详细的工作文件

包括表格、报告和指导书等等

在实际工作中,我们经常会遇到这样几个

与质量相关的概念:SQM,SQC和SQA

那么他们之间有什么关联呢?

我们知道,目前广泛认可的衡量软件质量的标准

就是软件产品是否满足了用户的需求

然而,用户对软件的需求往往是包罗万象的

比如功能需求、性能需求、约束性需求、潜在的
需求

甚至包括相互冲突的需求以及

技术上不可能实现的需求等等

如果我们等软件产品生产出来之后

再来验证这个产品是否满足了用户的需求

很容易成为一件引发供需双方各执一词的麻烦事

而且对于软件企业来说

这种质量工作未免代价太大了,风险太大了

一旦查出严重问题,那么毫无补救措施

因此,目前业内解决这个问题的两个核心策略

就是控制软件工程的质量和软件产品本身的质量

第一个策略主要涉及企业在工程过程当中

选用什么样的质量体系以及如何监督标准的执行

我们称为SQA,就是软件质量保证

第二个策略主要涉及验证产品在各个阶段

具体质量如何,有没有偏离用户的原始需求等等

我们称为SQC,就是软件质量控制

SQA和SQC各司一职,相辅相成,统一于SQM

也就是软件质量管理

因此,我们可以说

SQA通过控制过程来保证软件产品的质量

强调的是过程的改进和信心的保证

而SQC呢,则是按照质量要求

检查具体的可交付成果的质量

强调的是具体的可交付成果

软件测试就是SQC的一项核心活动

为了提高软件开发的质量

我们可以把SQA进一步分解为5个目标

并对应着典型的软件开发过程中的6种活动

首先,SQA活动肯定要有计划

这个比较容易理解

我们通过需求管理、静态测试和动态测试这些活

来确保开发出来的软件满足用户的需求

通过需求管理和过程管理来保证软件开发过程

遵循了合适的开发标准和规程

通过SQA计划,需求管理,过程管理和质量度量
这些活动

给管理者提供了针对软件质量的可视性

消除了管理者的对质量的未知而引发的恐惧

通过需求管理,过程管理和质量度量这些活动

可以将质量管理的结果及时地反馈给相关人员

让质量管理的每一个细节都能够得到落实和反馈

最终我们可以扎扎实实地推动软件产品质量的提

SQA的活动是以过程为中心

通过过程的持续改进来提高产品的质量

从这张图中我们可以看出

SQA的活动散布在整个软件开发过程中

在项目的计划阶段

除了制定各种各样的项目计划之外

同样需要制定质量保证计划

在需求分析阶段

也要加入质量保证活动的分析

同时,需求管理的核心是需求变更控制

在反复多次的需求变更过程中

质量保证活动必须保证每次变更

不会对产品质量和过程质量造成不良的影响

静态测试通过对程序员的代码进行审阅来保证代
码质量

并完成需求变更之后设计与代码实现之间的一致
性验证等等

动态测试不仅需要涉足设计用例的设计质量

还需要完成功能测试,回归测试,性能测试和确
认测试等等

最后,对整个软件开发过程的评估和跟踪

确保过程本身的质量能够得到保证

并确保过程的规范能够被各个开发人员和测试人
员严格遵守

如何提高软件开发企业的质量保证能力呢?

首先要定义恰当的质量目标

恰当的意思是我们要从用户的角度来定义软件质
量的目标

满足用户的业务需求,实现令人满意的用户体验
即可

不要制定过高的质量目标

然后根据时间,资源和预算等等这些客观的情况

来定义合适的软件质量标准

既不让开发团队感觉痛苦,又能让用户满意

第二,如果每个人都知道了质量的重要性

他们就会从内心深处更加注重设计质量和代码质

就会更加用心的写出高质量的代码

第三,调整团队和个人的目标,纳入质量考核体

实施严格的奖惩措施,刺激开发人员的

工作效率和工作质量

让他们把改善软件质量当作是一个奋斗目标

并逐渐的养成习惯

第四,获取正确的需求

尽量减少不必要的需求变更

从而减少返工和重新测试的时间,减少总体工作

第五,将测试重点放在最关键的和高风险的部分

在时间有限的情况下,我们不可能将方方面面的
缺陷

通过测试全部暴露出来

只有抓住重点杜绝关键缺陷

即便有其它的缺陷没有被发现

也不至于严重影响到软件的整体质量

第六,提高设计质量

设计质量的高低是决定软件产品质量的一个关键
因素

参照简明清晰的设计编写出来的代码

也会更简单,更干净,代码当中包含的错误也会
更少

也更容易诊断和修复缺陷

第七,合理的使用自动化测试工具

传统的手工测试很难覆盖到软件的全部功能点

而且效率也很低

单调而重复的这种测试更是对软件测试人员

心理素质的一个极大的考验

容易造成对测试工作的懈怠,降低测试质量

通过自动化测试工具的合理使用

可以缩短软件的测试周期,提高测试的可重复性

提高测试质量

提高测试质量

如何来保证SQA工作的有效性呢

质量保证的人员不应该是软件开发人员

活动执行人员或者负责人员

软件质量保证人员应该有资源、有职责

有权限和组织上的独立性

以便能够进行客观的软件质量保证评价

并能够启动进一步的验证和纠正流程

以保证能够及时有效的完成对过程质量的控制

SQA人员的工作很重要

他们是项目组的助手

可以监督项目组在开发过程中

是否按照开发过程流程进行项目的开发活动

保证过程质量

他们是管理者的耳目

可以帮助高级管理层了解项目的过程和产品质量

他们是质量改进的源泉,通过SQA活动的记录

信息的统计和分析

可以促进质量体系的持续改进

他们还是用户利益的代表

给用户提供可信的证据来证明他们可以满足客户
的需求

在实际工作中, SQA要避免犯一些错误

以免引起工作上的不便

比如,不要与项目组作对

而要给项目组提供切实有效的建议和有价值的经 验教训

不做画蛇添足的事情

尽可能的参与到软件开发活动中去

而不仅仅是指手画脚的做做检查

SQA人员一方面要坚持原则

另一方面也要具有灵活性,兼顾严格的执法与适
度的灵活

力求找到在严格执法与灵活之间的平衡点

SQA人员不要简单的对那些不符合规程的行为提出
警告

而是要进一步的得到相关数据,进行相应的分析

最终给出有用的回避建议和改进建议

好,今天就讨论到这里,谢谢大家

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

授课视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。