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

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

授课视频在线视频

下一节:授课视频

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

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

嗨,大家好

今天我们来讨论软件质量模型

在软件开发活动中,项目经理眼中的质量

在软件开发活动中,项目经理眼中的质量

就是我们生产的软件能够令人满意地工作

实现预期的功能

所谓令人满意呢,包括功能、性能

接口方面的需求以及其他的一些指标

如可靠性、可维护性、可复用性和正确性等等

因此,项目经理需要一个具有指导意义的质量模

这个模型一方面可以帮助项目经理生产出

符合标准的软件产品

另一方面也可以帮助项目经理

识别出可能影响质量的风险

目前已经有了很多的质量模型

它们分别定义了不同的软件质量属性

比较常见的三个质量模型是

1977年的McCall模型

1978年的Boehm模型

和1993年的ISO9126模型

虽然2011年新推出了25010模型

它是在9126模型的基础之上针对通信技术的

一次演变进行了扩展

但是9126模型一直很受测试人员和其他相关开发
人员的喜爱

很多年来一直是世界上最畅销的ISO模型之一

因此,这里我们还是主要讨论9126模型

9126模型是建立在McCall和Boehm模型之上

同时加入了一些功能性的要求

还包括识别软件产品的内部和外部质量属性

McCall等人认为,特性是软件质量的反映

软件属性可以用做评价的准则

定量化地度量软件的属性就可以知道软件质量的
优劣

McCall模型将11个质量特性分成了三组

分别是产品修正,产品转移和产品运行

需要注意的是,理想的质量模型

它的度量应该兼顾所有的特性

然而在实际工作中

当出现问题的时候

项目管理人员必须权衡利弊,做出取舍

在满足某一个指标的同时

牺牲掉其他另外一个或几个指标

比如为了按期交货

就需要对软件功能进行分类

在第一个版本中实现高优先级的功能

在第二个版本中再实现低优先级的功能

所以,在项目开始的时候

项目经理应该根据客户的需求和项目的特点

选择一组项目的管理目标,针对这组目标

设计出一套数据测量和统计的方法

这组管理目标应该与软件产品和软件过程的属性
相关

而这些属性又能够反映出目标实现的概率

比如,从实用的角度出发

我们可以选择的管理目标包括

需求的质量、产品的质量、开发的有效性

测试的有效性

这组目标既反映了软件产品的质量属性

又能反映出软件过程的质量属性

一旦项目经理选定了管理目标

并且定义好了相关的质量属性

就应该可以着手定义测量标的

这些测量标的适用于整个软件生命周期

包括项目的初期阶段

这将有助于在软件开发的初期就能够发现潜在的
问题

下面我们来重点看一看ISO 9126质量模型

我们刚才说过,在1977年

McCall提出将质量的概念

分解为一系列的质量因素的想法

其他的质量模型的作者也一直遵循着这个概念

这样就进一步强化了这种分级分层的质量模型

国际标准化组织ISO和国际电工委员会IEC

也遵循了这个概念

他们在1991年定义了一系列的质量特性

这就是ISO 9126模型

ISO9126反映了整个软件产业

在质量模型方面达成了共识

确定了软件质量的一般概念

ISO9126由6个特性和27个子特性构成

子特性又包含了多个度量指标

从而形成了一个具有三层结构的质量模型

下面我们来进一步了解ISO9126的6个特性

就是功能性,可靠性,易用性

效率,维护性和可移植性

大家注意,每个特性中都有一个依从性

它表示遵循相关的标准、约定或者是法规

以及类似规定的能力

包括各种各样的国际标准、国家标准

行业标准、企业内部的规范等等

后面我们就不再单独讨论这个依从性了

首先来看最重要的特性:功能性

功能性是指软件是否满足了客户的需求

功能性是指软件是否满足了客户的需求

它有以下几个子特性

适合性是指当软件在指定条件下使用的时候

软件产品满足明确的和隐含的要求功能的能力

准确性表示软件运行之后够得到正确或相符的结
果或效果

比如财务类软件系统提供给用户的功能

能否满足用户对该功能的精确度要求

我们一般是小数点后面保留4位数字

互操作性表明该软件拥有能够和其他指定系统

进行交互的能力

而安全性则表示了软件产品对数据的访问能力

它包含了两方面的内容

一是防止未得到授权的人或系统

访问相关的数据或信息

二是要保证得到授权的人或系统

能正常的访问相关的数据或信息

第二个特性是可靠性

可靠性包括3个子特性

成熟性就是指软件系统防止内部错误扩散而导致
失效的能力

也就是说,子系统、模块、单元模块等等的设计
人员

应该仔细地分析那些和自身接口有关系的子系统
子模块

识别出这些接口上可能会传递过来的错误

然后在自己的系统模块内部

对这些可能的错误预先进行防范

避免这些错误传递到自身而引起自身的失效

容错性就是软件系统防止外部接口错误扩散

而导致系统失效的能力

也就是说,设计人员应该充分分析外部接口

可能产生的错误

然后在设计上对这些错误一一给予防范

防止这些外部传入的错误波及自身而失效

易恢复性就是系统失效后重新恢复原有功能、性
能的能力

具体来说就是原有能力恢复的速度和程度

第三个特性是易用性

这个特性包括下面的几个子特性

一是易理解性,就是用户在使用软件系统的过程

系统交互给用户的信息是否准确、清晰、易懂

能帮助用户准确的理解系统当前真实的状态

指导用户进一步的操作

我们在设计软件系统的时候,应该站在用户的角

关注系统返回给用户的每一条信息

不要只关注功能的实现

二是易学性,就是软件系统提供相关的辅助手段

帮助用户学习和使用它的能力

比如,是否有用户手册

用户手册是不是有中文版,是不是有在线帮助

界面上控件是否有错误回显的功能等等

三是易操作性,就是不要对用户要求过高

要进一步提高用户操作的便捷程度

四是吸引性,就是软件界面要美观

四是吸引性,就是软件界面要美观

功能要新颖,能够吸引用户

第四个特性是软件效率

这个特性包括下面的两个特性

一是时间效率,就是系统在各个业务场景下

能够完成用户指定的业务请求所需要的响应时间

二是资源效率,就是系统在各个业务场景下

完成用户指定的业务请求所消耗的系统资源

比如CPU的占有率、内存的占有率、通信带宽的
占有率

软件内部消息包的资源占有率等等

我们往往可以通过性能测试来度量

一个软件系统的时间效率和资源效率

比如,我们可以首先来测试单用户单业务情况下

响应时间和资源消耗情况

然后再测试多用户单业务情况下

它的响应时间和资源消耗情况

最后再测多用户多业务情况下

系统的响应时间和资源消耗情况

收集到这些数据之后

对这些数据进行对比分析,发现性能指标的分布
规律

找出业务瓶颈,从而可以进一步提升软件系统的
性能

第五个特性是软件可维护性

这个特性包括下面的几个子特性

一是易分析性,也就是软件系统提供辅助手段

帮助开发人员分析识别缺陷、失效产生的原因

找出待修复部分的能力,从而降低缺陷定位的成 本

二是易改变性,就是对软件缺陷的修复容易被实

从而可以降低修复缺陷成本

如果软件的设计时候能够做到封装性好、高内
聚、低耦合

就可以为未来可能的变化留有扩充的余地

三是稳定性,就是软件产品避免由于

软件的修改而造成意外结果的能力

四是易测试性,就是降低发现缺陷的成本

易测试性表现为两个方面

第一个方面是软件的可控制性

就是软件系统提供辅助手段帮助测试工程师

控制系统的运行和测试的能力

第二个方面是软件的可观察性

第二个方面是软件的可观察性

就是软件系统提供辅助手段帮助测试工程师

获得系统的运行信息,以正确判断系统的

运行状态和测试执行结果的能力

一般来说,测试系统工程师应该在需求分析阶段

就提出可测试性需求

就提出可测试性需求

可测试性需求和软件产品的其他需求一起纳入需
求包

用于后续的分析设计和实现

第六个是可移植性

这个特性包括下面的几个子特性

一是适应性,就是软件系统无需做任何变动

就能适应不同运行环境的能力

也就是我们平常说的平台无关性

平台这里一般包括操作系统平台、数据库平台和
硬件平台等等

解决平台无关这种可移植性问题的一个常用思路

就是构造出一个虚拟层,虚拟层将下层的细节屏

向上提供统一的接口

二是易安装性,就是尽可能少的提供选择

让用户方便进行安装

三是共存性,也就是软件系统和那些在公共环境

与其共享资源的其他系统共存的能力

我们不仅需要关注自身特性的实现

我们还要关注本软件是否影响了其他软件的正常
功能

四是易替换性,也就是软件系统的升级能力

比如是否提供自动的在线升级功能

好,软件质量模型就讨论到这里,下次再见

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

第一章 软件工程基础

-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 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

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

授课视频笔记与讨论

也许你还感兴趣的课程:

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