软件构造 7-1 健壮性与安全性

健壮性与安全性

什么是健壮性与安全性?

如何衡量健壮性与安全性?

健壮性:系统或组件在存在无效输入或压力环境时一颗正确运行的程度。

健壮性编程关注异常终止和异常活动的处理。

健壮性原则:严于律己(满足specification),宽以待人(接受各种输入)

健壮性编程原则(把用户当做小孩)

1.用户会修改代码,而且自己写的还不对

2.用户不会看specification(所以我们应该在他操作错误时返回明确的错误信息帮助其改正)

3.危险行为,我们不应当将信息暴露给用户,以至于产生漏洞,使用户专注于自己的代码部分

4.使不可能发生的事情真的不可能发生。(指异常)

安全性:正确实现规格说明的能力

比较健壮性:

1.安:不会有不准确结果,无结果优于不准确。

2.健:总是尝试做一些事情,确保软件运行,即使有时会产生不准确的结果。

总;健壮性增加了对常见错误和非严重错误的容错性。而正确性在遇到任何不完美输入时会引发错误

例子:

健壮性:对第三方和用户更为友好。(在出现错误会提醒给他们第二次机会,而不是直接崩)

正确性:对开发者友好1.专注一种模式,所有要求都满足。

          2.因为单一所以易于理解,易于维护

内外兼修

外部接口,(UI,输入文件,配置,API等):使其健壮起来,尽可能的友善(就像公司前台),即使别人输入的一堆垃圾我们也要微笑面对。

内部模式:越简单越好,最好100%的有用状态。使用不变量和断言使命令安全。抛出excpetion(大的不是具体的以保证最快抛出)

及对外健壮,对内正确

可靠性:系统在任何需要的规定条件下执行所需功能的能力

可靠性 = 健壮性 + 正确性

软件灾难的条款

error:在开发过程中的错误决定

defect:使程序偏离原来的目的

fault:在代码中错误或者缺失该有的功能

failure:在在运行过程中fault的体现,在运行过程中与希望的行为相悖

通常 error - > defect/fault/bug - >failure

例子

注意:

1.并非所有缺件缺陷都是编码错误引起的,如遗漏需求

2.不是否有缺陷(defects)都必然导致失败

3.在环境改变时缺陷会变为failure

4.单个缺陷可能会产生各种各样的失败现象

提高健壮性和正确性

1.健壮性安全性编程。(断言,防御性编程,代码审查,形式验证)

2.发现failure的症状(信息转储,栈追踪,执行日志,测试)

3.找出潜在fault(debug,bug定位)

4.修复errors

如何衡量健壮性和正确性

1.MTBF:平均故障间隔时间,相邻两次故障之间的平均工作

2.MTBF的计算历来与系统failure的定义

  a.导致系统不可使用的failure

  b.出现failure,但是系统仍可以运行

MTBF:可修复

MTTF:不可修复系统的平均失效时间

Residual defect rates:每千行代码的产生bug数

1 - 10 正常工业软件

0.1 - 1高质量代码

0.01 - 0.1最好,严格安全的代码

接下来是本章的结构图

谢谢观看

原文地址:https://www.cnblogs.com/hitycy/p/10880550.html

时间: 2024-10-08 04:31:18

软件构造 7-1 健壮性与安全性的相关文章

软件构造正确性和健壮性

面向健壮性的编程有以下几点要求或优点:处理未期望的行为和错误终止即使终止执行,也要准确/无歧义的向用户展示全面的错误信息错误信息有助于进行debug 健壮性原则:总是假定用户为恶意用户,假定自己的代码会失败把用户想象成一个小孩,可能输出任何东西注意,因为用户很小孩,最好要返回给用户错误提示信息,而且要详细准确无歧义!对自己的代码要保守,对用户的行为要开放. 关于这一点,体现在代码方面,就需要做出策略,是写多个分支进行检查或者是检测错误报错. 原文地址:https://www.cnblogs.co

【软件构造】第七章第一节 健壮性和正确性的区别

第七章第一节  健壮性和正确性的区别 第七章:进入软件构造最关键的质量特性 --健壮性和正确性. 本节在1-2节的基础上,重申了Robustness and Correctness的重要性,澄清了二者之 间的差异,并指明了在软件构造中处理二 者的典型技术(防御式编程.异常处理. 测试.调试等) Outline 健壮性(Robustness)和正确性(correctness) 如何测量健壮性和正确性 Notes ## 健壮性(Robustness)和正确性(correctness) [健壮性] 定

软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结

健壮性与正确性 健壮性与正确性是不同的——一个倾向于使程序尽可能保持运行,即使遇到错误,一个倾向于使程序尽可能正确,不在意保持运行 异常 异常分为两种——checked exception与unchecked exception 二者的区别在于: checked exception需要显式的处理,说白了就是编程者必须要么用catch抓住它,然后在try中想办法处理掉,要么显式的将这个异常扔到调用的上一级方法,也就是甩锅.总而言之,你永远不能无视checked exception unchecke

软件构造复习——7.1健壮性与正确性

一.健壮性和正确性的简单介绍 1.1Robustness  健壮性 1.1.1 定义:健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力.所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式. 简单来说就是系统在正常输入或不正常外部环境下仍能够表现正常的程度. 1.1.2面向健壮性编程的做法 处理未期望的行为和错误终止 即使终止执行,也要准确/无歧义的向用户展示全面的错误信息 错误信息有助于进行debug 1.1.3面向健壮性编程的原则 总是

【软件构造】第一章 软件构造基础(2)

二.软件构造的质量目标 1. 外部属性(主要):影响用户感受,如外观.速度等 (1)正确性:符合规格范围和计划目标 ·只保证各个层面的正确性(假设调用正确) ·检验与调试 ·防御性编程 ·形式化编程 (2)健壮性:响应规格范围外的异常情况 ·提示错误信息 ·正常退出或降级 (3)可扩展性:提供增加新功能的空间 ·固化需求以规避风险 ·设计简洁.离散化 (4)可复用性:使软件模块能够被其他程序使用 ·模式固化 (5)兼容性:跨平台.跨软件交互 ·使用标准文件格式.数据结构.接口,保持一致性 ·定义

【软件构造】第二章第二节 软件构造的过程、系统和工具

第二章第二节 软件构造的过程.系统和工具 Outline 广义的软件构造过程 编程 静态代码分析 动态代码分析 调试与测试 重构 狭义的软件构造过程 构造系统:经典BUILD场景 构造系统的组件 构造过程和构造描述 Java编译工具 子目标和结构变体 构造工具 Notes ## 广义的软件构造过程 [编程(Coding)] 开发语言:如Java.C.Python 使用IDE(集成开发工具)的优势(组成) 方便编写代码和管理文件(有代码编辑器,代码重构工具.文件和库(Library)管理工具) 能

软件构造

1-2章: 1. 软件构造的多维度视图 2.软件构造的阶段划分.各阶段的构造活动 3.内部/外部的质量指标 4.软件配置管理SCM与版本控制系统VCS 5. Git/GitHub 多维视图: Build-time :想法->需求->设计->代码->安装/可抽象的包 run-time:程序在目标机器内部运行时的外观如何,目标机器加载到内存中所有的磁盘文件是什么 Component-level :体系结构->源代码是如何由文件,目录包,库之间的依赖物理组织在一起 软件构造五大关键

软件构造 第一章第二节 软件开发的质量属性

?软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality factors affect the software itself and its developers 内部质量因素影响软件本身和它的开发者 External quality results from internal quality 外部质量取决于内部质量 外部属性: 正确性:按照预先定义的"

软件构造 第一章

一.课程简介 1.软件构造课程的目标 ①程序设计与实现能力 ②系统设计与实现能力 ③系统分析与评价能力 ④利用现代软件构造工具的能力 2.传统软件设计步骤 ①讨论需要写的软件并实现②测试代码并改错③重复②.图示如下 3.更好的软件设计 ①未雨绸缪②考虑非功能质量属性③考虑多种设计选择④把设计决策明确写下来 4.设计的目标.原则和模式 设计目标:编程的视野 设计原则:编程的标尺 设计模式:编程的经验 二.软件构造多维视图 1.什么是软件 (1)构成: ·程序Program:UI, Algorith