1 / 82

第 七 讲 软件质量概述

第 七 讲 软件质量概述. 内 容. 一、软件面临的问题 二、问题分析 三、从质量到可信 四、设计质量 五、安全漏洞. 一、软件面临的问题. 从与软件相关的一些重大事故谈起. CSDN 网站 600 万用户密码泄露. 2011 年 12 月 21 日早晨,新浪微博爆出 CSDN 网站 600 多万用户的账户明文密码库泄露,当天出现迅雷快传链接 12 月 22 日晚, CSDN 发表声明: 向公安机关正式报案 临时关闭用户登录 并要求“ 2009 年 4 月以前注册的帐号,且 2010 年 9 月之后没有修改过密码”的用户立即修改密码.

wilmer
Download Presentation

第 七 讲 软件质量概述

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 七 讲 软件质量概述

  2. 内 容 一、软件面临的问题 二、问题分析 三、从质量到可信 四、设计质量 五、安全漏洞

  3. 一、软件面临的问题 从与软件相关的一些重大事故谈起

  4. CSDN 网站 600 万用户密码泄露 2011年12月21日早晨,新浪微博爆出 CSDN 网站 600 多万用户的账户明文密码库泄露,当天出现迅雷快传链接 12月22日晚,CSDN发表声明: 向公安机关正式报案 临时关闭用户登录 并要求“2009年4月以前注册的帐号,且2010年9月之后没有修改过密码”的用户立即修改密码 继CSDN后,天涯、开心网、多玩、世纪佳缘、珍爱网、美空网、百合网、178、7K7K等知名网站也被网友爆出采用明文密码,用户数据资料被放到网上公开下载

  5. 2012年3月20日,北京警方宣布成功侦破了曾在互联网上造成巨大影响的CSDN网站用户数据泄露案,涉案犯罪嫌疑人已经被刑事拘留。2012年3月20日,北京警方宣布成功侦破了曾在互联网上造成巨大影响的CSDN网站用户数据泄露案,涉案犯罪嫌疑人已经被刑事拘留。 2012年2月4日,专案组在浙江温州将网民曾某抓获,曾某承认,2010年 4 月利用 CSDN 网站漏洞,非法侵入服务器获取用户数据。在审查中,犯罪 嫌疑人曾某交代,他曾经入侵过某充值平台及某股票系统。警方介绍,在追查 CSDN 数据库泄露源头的过程中,侦查员又破获了另外4起网络泄密案,先后抓获 4 名“黑客”。 关键线索:”2010 年 9 月,一网民发帖自称掌握 CSDN 数据库,要求与公司进行合作”。

  6. 黑客入侵深圳福彩 篡改数据欲骗3305万巨奖 • 事件:2009年6月9日,双色球2009066 期开奖,全国共中出一等奖9注,其中深圳有5注。深圳市福彩中心在开奖(程序)结束后发现系统出现异常。经多次数据检验,工作人员判断,福彩中心销售系统 疑被非法入侵,中奖彩票数据记录被人为篡改,5注一等奖中奖数据系伪造。6月10日凌晨2时,福彩中心工作人员报案 • 结果:经调查,这是一起企图利用计算机网络信息系统技术诈骗彩票奖金的案件,所涉金额高达3305万元 • 原因:深圳市某信息技术公司软件开发工程师程某,利用在深圳福彩中心实施其它技术合作项目的机会,通过木马攻击程序,恶意篡改彩票数据,以达到伪造双色球一等奖中奖事实

  7. 科技 奥运? • 2007年10月30日,奥运门票第二阶段阶段预售首日……

  8. 2007年8月14日14时,美国洛杉矶国际机场电脑发生故障,60个航班的2万旅客无法入关。直至次日凌晨3时50分,所有滞留旅客才全部入关。 • 原因分析: 包含旅客姓名和犯罪记录的部分数据系统(海关和边境保护系统:决定旅客是否可以进入美国领土)瘫痪 2004年9月发生过类似问题

  9. 2006年3月2日14点10分,沪深大盘忽然发生罕见大跳水,7分钟之内上证指数跌去近 20 点。 • 原因分析: 当日下午刚上市的招商银行认股权证成交量巨大,导致其行情显示时总成交量字段溢出,使其价格在股票分析软件上成为一条不再波动的直线,让市场产生了恐慌。

  10. 2005年4月20日上午10时56分,中国银联系统通信网络和主机出现故障,造成辖内跨行交易全部中断。这是2002年中国银联成立以来,首次全国性因系统故障造成的跨行交易全面瘫痪。 • 原因:银联新近准备上线的某外围设备的隐性缺陷诱发了跨行交易系统主机的缺陷,使主机发生故障 软件能否提供支持?

  11. 2003年8月14日下午4时10分,美国及加拿大部分地区发生历史上最大的停电事故。15日晚逐步恢复2003年8月14日下午4时10分,美国及加拿大部分地区发生历史上最大的停电事故。15日晚逐步恢复 • 后果:经济损失250亿到300亿之间 • 原因分析 俄亥俄州的第一能源(FirstEnergy)公司x下属的电力监测与控制管理系统软件 XA/21 出现错误,系统中重要的预警部分出现严重故障,负责预警服务的主服务器与备份服务器连接失控,错误没有得到及时通报和处理,最终多个重要设备出现故障,导致大规模停电 2003年国际十大

  12. 1996年6月4日,欧洲空间局的阿丽亚娜火箭,发射后37秒爆炸。损失6亿美元1996年6月4日,欧洲空间局的阿丽亚娜火箭,发射后37秒爆炸。损失6亿美元 • 原因分析: ADA语言编写的一段程序,将一个64位浮点整数转换为16位有符号整数时,产生溢出,导致系统惯性参考系统完全崩溃

  13. 1994年12月3日,美国弗吉尼亚州 Lynchburg 大学的T.R.Nicely博士使用装有 Pentium 芯片的计算机时发现错误: (4195835/3145727)*3145727-4195835==0? • 后果: Intel 花费4亿多美元更换缺陷芯片 • 原因: Pentium 刻录了一个软件缺陷(浮点除法)

  14. 2002年6月28日 美国商务部的国家标准技术研究所(NIST)发布报告: “据推测,(美国)由于软件缺陷而引起的损失额每年高达 595 亿美元。 这一数字相当于美国国内生产总值的 0.6%”。

  15. 二、问题分析 从质量谈起 1、什么是质量? 2、什么是软件质量? 3、为什么软件质量保障困难?

  16. 1、什么是“质量” • “好坏程度” • ISO 9000(2000版) 质量是 (产品)的 一组固有特性满足要求的程度

  17. 特性:可区分的特征 物理特征:机械运动、温度、电流等 化学特征:成分组合、合成、分解等 固有特性:某事物中本来就有的、持久的特征 直径、硬度、高度、频率  赋予特性:对事物增加的特性 价格、位置 二者有一定的相对性

  18. 要求: 显式要求: 有明确规定的要求(行业标准或用户指定) 计算机屏幕尺寸 隐式要求: 约定成俗的要求 大楼要有楼梯 产品质量特性:内部特性、外部特性 满足的 程度! 满足的 成本!

  19. 2、什么是软件质量? 软件质量是: 软件产品 满足规定的和隐含的与需求能力有关的全部特征和特性

  20. 来源于 Barry Boehm的软件质量模型 • 形成了 ISO-9126的软件质量模型框架 • 影响了 软件生存周期中的不同阶段 • …… 区分不同的软件!

  21. BarryBoehm的软件质量模型 正确性 阐述性 正确性 可靠性 连贯性 容错性 效率 执行效率/储存效率 存取控制/存取检查 完整性 可操作性 可训练 可用性 沟通良好 简单性 可维护性 易操作的 工具 可测试性 自我操作性 灵活性 扩展性 一般性 可移植性 模块性 软件系统独立性 重复性 机器独立性 通讯公开性 互用性 数据公开性

  22. 软件产品 软件产品的效用 过程 过程 质量 内部 质量 属性 外部 质量 属性 使用 质量 属性 影响 影响 影响 使用 条件 依赖 依赖 依赖 内部 测量 外部 测量 使用质量的 测量 过程 测量 ISO-9126的软件质量模型框架 过程质量 有助于提高 产品质量 产品质量 有助于提高 使用质量

  23. 用户质量 要求 使用 质量 使用和反馈 指示 有助于确定 外部质量 需求 外部 质量 确认 有助于确定 指示 内部质量 需求 内部 质量 验证 软件生存周期中的质量

  24. 外部和内部质量 功能性 可靠性 易用性 效率 维护性 可移植性 适合性 准确性 互操作性 保密安全性 功能性的依从性 成熟性 容错性 易恢复性 可靠性的依从性 易理解性 易学性 易操作性 吸引性 易用性的依从性 时间特性 资源利用性 效率的依从性 易分析性 易改变性 稳定性 易测试性 维护性的依从性 适应性 易安装性 共存性 易替换性 可移植性的依从性 ***的依从性:软件产品遵循与***相关的标准、约定或法规以及类似规定的能力

  25. 使用质量 有效性 生产率 安全性 满意度

  26. 3、为什么软件质量保障困难? (1)软件产品与需求符合的程度 (2)软件的本质 (3)软件度量困难

  27. (1)软件产品与需求符合的程度 需求与成本之间的矛盾 需求是永无止境的 成本是永远有限的 微软:质量只要好到能使大量的产品卖给客户 NASA:可靠性要达到 99.999% Motorola:6 Σ 软件产品属性完全满足用户需求是不现实的 

  28. (2)软件的本质 • 规模、复杂性、演化性 • 网络环境 • 软件研发过程缺乏基础理论支撑 • 软件产品的验证缺乏基础理论支持

  29. (3)软件度量困难 • “You can't control what you don't measure” • Tom DeMarco, 1982 • 对比物理属性:尺子、秤、时钟、温度计、测速仪 • 它们的发展过程! • 代码、过程、组织 度量无处不在!

  30. 三、从质量到可信 1、什么是可信? 2、什么样的软件是可信的? Compaq、HP、IBM、Intel和Microsoft等发起(1999): Trusted Computing Platform Alliance 后来增加软件: Trusted Computing Group (2003) 微软倡导(2002): Trustworthy Computing

  31. 1、什么是可信? • Trusted • Trustworthy • Dependability • Confidence • Assurance 一个实体在实现给定目标时,其行为与结果总是可以预期的

  32. 可信软件 软件是可信的, 如果: 其服务总是与用户的预期相符 (质量?) 即使在运行过程中出现一些特殊情况

  33. 什么特殊情况? 1、硬件环境(计算机、网络)发生故障 2、低层软件(操作系统、数据库)出现错误 3、其它软件(病毒软件、流氓软件)对其产生影响 4、出现有意(攻击)、无意(误操作)的错误操作

  34. 2、什么样的软件是可信的? 可用 功能:正确、不少、不多 可靠性(容错):高 安全性(机密性、完整性):高 响应时间(从输入到输出):小 维护费用(监测、演化):小 ……

  35. 质量与可信(1) • 可信更多关主体与客体的关系 • 是系统“承诺”与实际表现的符合程度。存在这样一种情形,质量不是很高,但有具体的说明,仍然有高的可信性。 • 同一个系统的质量是确定的,但对不同主体的可信度可能不一样:一个受侵害的系统,对于实际用户是不可信的,对于黑客是可信的 • 对于同一个系统,当用户对其信息掌握得有限时,可信度低,掌握了较多的正面信息时,可信度提升

  36. 质量与可信(2) • 质量主要是针对客体自身而言的 质量与可信之间的关系 类似于 软件与服务之间的关系 软件、质量 更多地关注 客体:软件自身 服务、可信 更多地关注 主体:最终用户

  37. 四、设计质量 1、例子 2、模型检测概述 3、模型检测算法概览 4、模型检测工具

  38. 1、例子 Needham-Schroeder 身份认证协议 通信过程可能被窃听!加密可以防止窃听!如何约定加密数字? 每人 有自己的标识:N 每人 公布自己的公钥: 只有N才能解开的消息: [****]N 每个对话过程 用一对数字对内容加密: S1, S2 每次对话前 需要首先建立这对数字 Z N [N, S1]Z [S1, S2]N [S2]Z 该协议于1978年被提出并得到广泛应用

  39. 1996年,发现该协议存在设计缺陷: 攻击者可以伪装一方的身份 N W Z 开始伪装 [N, S1]W [N, S1]Z [S1, S2]N [S1, S2]N [S2]W [S2]Z 被欺骗! 不可信! 利用模型检测方法!

  40. In 1992 Clarke and his students at CMU used SMV to verify the IEEE Future+ cache coherence protocol. • They found a number of previously undetected errors in the design of the protocol. • This was the first time that formal methods have been used to find errors in an IEEE standard. • Although the development of the protocol began in 1988, all previous attempts to validate it were based entirely on informal techniques.

  41. In 1992 Dill and his students at Stanford used Murphito verify the cache coherence protocol of the IEEE Scalable Coherent Interface. • They found several errors, ranging from uninitialized variables to subtle logical errors. • The errors also existed in the complete protocol, although it had been extensively discussed, simulated, and even implemented.

  42. In 1995 researchers from Bull and Verimag used LOTOS to describe the processors, memory controller, and bus Arbiter of the Power Scale multiprocessor architecture. • They identified four correctness requirements for proper functioning of the arbiter. • The properties were formalized using bisimulation relations between finite labeled transition systems. • Correctness was established automatically in a few minutes using the CÆSAR/ ALDÉBARAN toolbox.

  43. A High-level Data Link Controller was being designed at AT&T in Madrid in 1996 • Researchers at Bell Labs offered to check some properties of the design using the Formal Check verifier. • Within five hours, six properties were specified and five were verified. • The sixth property failed, uncovering a bug that would have reduced through put or caused lost transmissions!

  44. Richard Raimi used Motorola’s Verdict model checker to debug a hardware laboratory failure. •Initial silicon of the PowerPC 620 microprocessor Crashed during boot of an operating system. •In a matter of seconds, Verdict found a BIU deadlock causing the failure.

  45. In 1994 Bosscher, Polak, and Vaandrager won a best-paper award for proving manually the correctness of a control protocol used in Philips stereo components. • In 1995 Ho and Wong-Toi verified an abstraction of this protocol automatically using HyTech. • Later in 1995 Daws and Yovine used Kronos to check all the properties stated and hand proved by Bosscher, et al.

  46. The NewCoRe Project (89-92) was the first application of formal verification in a software project within AT&T. • A special purpose model checker was used in the development of the CCITT ISDN User Part Protocol. • Five “verification engineers” analyzed 145 requirements. • A total of 7,500 lines of SDL source code was verified. • 112 errors were found; about 55%of the original design requirements were logically inconsistent.

  47. In 1995 the Concurrency Workbench was used to analyze an active structural control system to make buildings more resistant to earthquakes. • The control system sampled the forces being applied to the structure and used hydraulic actuators to exert countervailing forces. • A timing error was discovered that could have caused the controller to worsen, rather than dampen, the vibration experienced during earthquakes.

  48. ACM 2007年度图灵奖(Turing Award) Edmund M. Clarke, E Allen Emerson, Joseph Sifakis • 1981年,美国的Edmund Clarke和Allen Emerson以及在法国的Sifakis分别提出了模型检测(Model Checking)的最初概念 • 他们开发了一套用于判断硬件和软件设计的理论模型是否满足规范的方法 • 当系统检测失败时,还能利用它确定问题存在的位置

  49. 用于软件? 软件设计模型? •Statecharts …… 软件代码? Use static analysis to extract a finite state synchronization skeleton from the program. Model check the result. •Bandera --Kansas State •Java PathFinder --NASA Ames •Slam Project (Bebop) --Microsoft

  50. 2、模型检测概述 1)基本情况 2)什么是模型检测 3)基本思想 4)过程描述

More Related