【从零开始学习计算机科学】软件工程(六)软件质量

embedded/2025/3/17 12:32:20/

【从零开始学习计算机科学】软件工程(六)软件质量

软件质量

软件工程中的重要的要求之一便是提高软件质量

GB/T 11457-2006中定义软件质量为:软件产品能满足给定需要的性质和特性的总体。软件具有所期望的各种属性的组合。顾客和用户觉得软件满足其综合期望的程度。
ANSI/IEEE std 729-1983对软件质量定义为:与软件产品满足规定的和隐含的需求能力有关的特征或特征的全体。

软件质量是很多种质量因素的综合体现,各种质量因素反应了软件质量的不同方面。人们通过改善软件的各种质量因素,从而提高软件的整体质量。
软件质量因素之间可能存在相互冲突或影响。如,由于效率的要求,应该尽可能采用汇编语言。但是用汇编语言实现的程序可靠性、可移植性、可维护性等较差。因此,实际软件开发过程中应该根据具体情况对各种质量因素进行折中或取舍,以获得用户和开发人员满足的总体质量。
一个软件的质量还体现在后期维护成本上。其主要消耗包括质量规划、正式技术审查、测试设备、培训;内部故障成本包括返工、修复、故障模式分析;外部故障成本为投诉解决、产品退换、帮助热线支持。
从预防到检测,从内部故障到外部故障成本,发现和修复错误或缺陷的相对成本急剧增加。因此,一个软件成功的关键因素在于:软件工程方法、项目管理技术、质量控制、质量保证。

QC_13">软件质量控制(QC

为了保证软件质量,我们需要在软件开发中对软件进行质量控制(QC)。QC包括一套软件工程活动,以帮助确保每个工作产品都符合其质量目标。
可以通过一系列指标,如缺陷率、测试覆盖率等反应产品的质量,因此QC是产品质量检查者。
QC主要通过两种方式实现:软件测试、软件评审。

软件评审

软件评审是软件过程的"过滤器"。在软件工程期间审核在不同点应用(如需求评审、设计评审、代码评审) ,并用于发现错误和缺陷,然后可以删除。评审技术是软件早期查错最有效的一种技术。
软件评审的价值在于:早期发现错误,意味着修改的成本更低。错误在软件过程中扩散的可能性更小。
业界统计表明:设计活动中引入的错误占软件过程中所有错误的50~65%。引入设计评审在发现设计缺陷方面有效率达75%。
如:评审系统安全设计情况。是否提供对使用系统资格进行检查的功能;是否提供对系统内重要数据加密的功能等。

评审包括:非正式评审和正式评审。

非正式评审适用于对较简单、还未形成正式工作成果的内容进行检查,没有正式的文档输出。
非正式评审方式包括:

  • desk check:由自己或同事对作者的工作产品进行评审(如对代码进行分析,依据编码规范检查源代码)。
  • 组队编程:鼓励在创建工作产品(设计或代码)时进行持续审核。
  • walk through(走查):由产品的设计者,引导其它成员浏览软件工作产品,并希望他们提给出问题反馈。
  • 分发:又称轮查,产品的设计者将要评审的工作产品共享或分发,评审人员以修订标记或批注的方式将意见直接添加到工作产品复件上。

其缺点主要有:由于缺乏事先规划、筹备,没有规范的会议议程,缺乏对错误进行后续的跟踪处理,非正式评审的有效性低于正式评审。

正式评审在软件开发生存周期中每个阶段结束时实施,有明确的评审规程和文档化评审结果。
评审参与者有:生产者 – 开发工作产品的个人;审核领导者 - 评估产品是否准备就绪,生成产品材料的副本,并将其分发给两个或三个审核员,以备提前准备;审阅者预计要花一到两个小时来审阅产品、做笔记,否则就会熟悉工作;记录者-审阅者,记录(书面)审查期间提出的所有重要问题。

正式评审的过程:

  1. 预备:评审小组先召开一个预备会议,作者会针对工作产品向大家做一个总体的介绍,例如本产品的目标,相关的实现细节、开发标准等。
  2. 审查:在预备会和正式评审会之间,评审小组成员会对工作产品进行彻底审查,并依据相关标准和准则评审工作产品。
  3. 评审:在预定时间,评审小组成员以会
文章来源:https://blog.csdn.net/m0_46224993/article/details/146136630
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/embedded/173347.html

相关文章

神聖的綫性代數速成例題3. 矩陣列數的極限、矩陣範數、行列式的計算

矩陣列數的極限:設矩陣序列,其中,若對每個都有,則稱矩陣序列收斂於矩陣,記作。矩陣範數:常用的矩陣範數有:行和範數,即矩陣每行元素絕對值之和的最大值。列和範數,即矩陣…

点点-一款超级强大AI生活搜索助手

今天得空,给兄弟萌墙裂推荐一款AI软件 ----点点! 前言 前两天刷小某书在评论区看到这么一句话:“在吃喝玩乐以及一些特别琐碎的很多方面,如果小某书搜不到的话,那就可能真的搜不到了”。这句话相信各位兄弟都深有同感,当代年轻人在互联网的状态之一是把小某书当某度用,…

SpringMVC(五)拦截器

目录 拦截器基本概念 一 单个拦截器的执行 1 创建拦截器 2 SpringMVC配置,并指定拦截路径。 3 运行结果展示: 二 多个拦截器的执行顺序 三 拦截器与过滤器的区别 拦截器基本概念 SpringMVC内置拦截器机制,允许在请求被目标方法处理的…

C++前缀和

个人主页:[PingdiGuo_guo] 收录专栏:[C干货专栏] 大家好,今天我们来了解一下C的一个重要概念:前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…

【JavaEE进阶】-- HTML

文章目录 1. HTML1.1 HTML基础1.1.1 什么是HTML1.1.2 认识HTML标签1.1.3 HTML 文件基本结构1.1.4 标签层次结构 1.2 HTML快速入门1.2.1 开发工具 1.3 HTML常见标签1.3.1 标题标签h1~h61.3.2 段落标签:p1.3.3 换行标签:br1.3.4 图片标签:img1.…

AI时代:数字媒体的无限可能

人工智能和数字媒体技术正深刻改变着我们的生活。通过大数据分析、机器学习等技术,人工智能不仅能精准预测用户需求,还能在医疗、金融等多个领域提供高效解决方案。与此同时,数字媒体技术的进步使得信息传播更加迅速和广泛。社会计算作为新兴…

闭包类题目

闭包是 JavaScript 中常考的概念,涉及变量作用域、函数作用域、执行上下文等知识点。常见的闭包题目涉及 返回结构,即返回值是一个函数,该函数能够访问外部函数的变量。 经典闭包返回结构function createCounter() {let count = 0; // 外部变量(被闭包捕获) return funct…

Spring框架:一些基本概念与核心优势解析

引言:为什么Java开发者离不开Spring? 在Java生态中,Spring框架早已超越工具范畴。从简单的Web应用到复杂的微服务架构,Spring凭借其独特的核心理念和模块化设计,持续引领着企业级开发的潮流。本文将从基础概念到实战优…