【PPT】全面软件质量管理_第1页
【PPT】全面软件质量管理_第2页
【PPT】全面软件质量管理_第3页
【PPT】全面软件质量管理_第4页
【PPT】全面软件质量管理_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全面的软件质量管理在软件质量内涵内建设高质量,维修质量林锐博士linrui,上海漫索计算机科技有限公司, 目录1 .引言2 .软件质量属性和质量要素3 .商业目标决定质量目标4 .质量保证能否保证质量5 .质量人员情况6 .全面软件质量管理:模型7 .全面软件质量管理:制定质量计划8 .全面软件质量管理:技术审查9 .全面软件质量管理:软件测试10 .全面软件质量管理:过程检验11 .全面软件质量管理:缺陷跟踪工具参考书: 软件工程与项目管理解析,林锐,电子工业出版社,2003,1,1 .引言,软件质量管理是一个充满争议的话题。 作为软件品质管理圣经的CMM和ISO9001好像不能很好地发挥作用,现实和理想的差距太大。 经典的软件工程教科书、CMM和ISO9001,总是无视业务目标而谈论质量管理,本末倒置,在纸上谈论士兵,误解了很多读者,因此质量管理变得那么辛苦。 世界上没有万能的软件质量管理圣经,不要迷信CMM和ISO9000。 要咨询有实战经验的同行专家,不要轻信“纸上谈兵”的专家。 本文给出了实用主义的“全面软件质量管理”方法。 重要理念:业务目标决定质量目标。 提高软件质量的最终目的是获利,而不是制造完美的产品。 因此,普通的商务软件并不是“质量越高越好”,而是正好让很多用户满意,把提高质量的成本控制在预算内。 2 .如何表现软件的质量属性和质量要素,2.1质量词典的质量定义是典型的特征或本质的特征与事物固有或其他事物区别的特征或本质优秀或优秀的程度。 CMM的质量定义一个系统、组件或过程满足特定需求一个系统、组件或过程符合客户或用户的要求或期望。 上述定义是抽象的,人们一定很困惑。 用“人的健康”模拟地说明软件的品质吧。 以前认为结实、饭量多是健康的,但这显然不科学。 现代人通过考察身高、体重、心率、血压、血液、体温等各种生理因素来判断是否健康。 如果这些因素都合格,表明这个人很健康。 如果某些因素不合格,那个人在某些方面不健康,医生表示要接受对症治疗。 通过模拟,我们理解软件质量是许多质量属性的综合表示,各种质量属性反映了软件质量的各个方面。 人们通过改善软件的各种品质特性来提高软件的整体品质(否则就无法着手)。 软件质量属性多为准确性、准确性、鲁棒性、可靠性、容错性、性能、易用性、安全性、可扩展性、重用性、兼容性、可移植性、测试性、可维护性、灵活性等。 在这些质量属性之间“你里面有我,我里面有他,很纠缠。 如果开发者每天面对那么多的质量属性咬字,不久就会像孔乙己一样腐烂,所以我们有必要将质量属性进行分类和整合。 质量属性分为两类:“功能性”和“非功能性”,后者也称为“能力”。 2 .软件质量属性和质量要素,2.2十大软件质量要素功能性质量要素:准确性、稳健性、可靠性非功能性质量要素:性能、易用性、清晰性、安全性、可扩展性、兼容性、移植性为何被解释为“十大”质量要素(参见高质量程序设计指南C+/C语言 ),2.3软件质量要素是什么? (1)从技术角度看,对整个软件的质量影响最大的质量属性是质量要素;(2)从业务角度看,成为客户最关心的卖点的质量属性是质量要素。对于特定的软件,我们可以先判断质量因素,然后给出提高质量的具体措施。 不是所有的质量属性都想在脑子里做,不仅做不好,也许没有代价。 如果一些质量属性不能产生显着的经济效益,我们可以忽略它们,将能源用于对经济效益最有贡献的质量因素。 简而言之,只有质量因素值得开发者努力改进。 2、软件质量属性和质量要素,2.4准确性是软件根据需要正确完成任务的能力。 “正确性”的含义涵盖了“正确性”。 准确性无疑是第一重要的软件质量属性。 技术审查与测试的首要关系是检验工作成果的正确性。 机器不能主动欺骗人,软件执行错误通常是人造成的,不能借口机器出故障。 2.5鲁棒性鲁棒性是指在异常情况下软件能够正常工作的能力。 正确性描述了软件在要求范围内的行为,鲁棒性描述了软件在要求范围外的行为。 开发人员往往不将异常情况误认为正常情况,结果导致稳健性下降。 用户无论正确性和顽强性的差异如何,软件出现错误都是开发者的错误。 提高软件健壮性也是开发者的义务。 壮健性有两层意义:一层是容错能力,二层是恢复能力。 从意义上说,恢复不是容错的。 Unix的容错性很高,但很遗憾很难使用。 Windows容错性低,但可回复性高,使用方便。 占操作系统市场的90%。 2、软件质量属性和质量因素,2.6可靠性是指在一定环境下系统在一定时间内不发生故障的概率。 可靠性本来就是硬件领域的术语。 例如,某个电子设备刚开始工作时很好,但是设备在工作中物理性质发生变化(例如发热),所以系统的功能和性能逐渐失常。 因此,从设计到生产完全正确的硬件系统在工作中不一定可靠。 软件在运行时物理性质不会发生变化,如果软件的某个功能正确的话,一辈子都会被认为是正确的。 但是,我们不能彻底测试软件,也不能消除软件的潜在错误。 平时软件运行良好,何时不能正常运行,比如千年等“千年虫”问题,日常的“内存泄漏”、“误差积累”问题等。 软件可靠性分析通常采用统计方法,令人遗憾的是目前一线开发人员可以取得的成果很少,许多文章仅限于理论研究。 口语中可靠性的含义广泛,几乎涵盖了正确性、壮健性。 人们一发现系统有缺陷,就可以得出不可靠的结论。 专业来说,这种说法是正确的。 隐藏时出现的错误一般是可靠性问题,纠错成本高。 例如,维护人员突然赶到现场时,错误消失了的维护人员回家时,又发生了错误。 软件可靠性问题主要是编程时埋下的祸害(难以测试),应提倡标准化编程,预防可靠性祸害。 2、软件的质量属性和质量要素,2.7性能指的是软件的“时间-空间”效率,不仅是软件的运行速度。 人们总是希望软件运行速度快,资源少。 马跑得快的同时,马吃的量也很少。 优化性能的重要工作是找到限制性能的“瓶颈”,不能在没有关系的地方乱忙碌碌。 比如在大学里当老师,如果只是加强课程,埋头于实验的话,晋升就会迟钝。 有些人找到了突破口,一年之内写了几十篇文章,打破格升副教授,赢得教授。 程序员可以通过优化数据结构、算法和代码来提高软件性能。 例如,数据库程序的优化。 算法的复杂性分析方法很好,能达到“未知先知”的效果。性能的最佳化就像是从海绵中榨出水一样,不按压的话水就不出来,海绵越按压就越干。 有些程序员认为,当前的计算机不仅速度更快,而且内存更大,因此降低了优化软件性能的需求。 这种看法是错误的,但随着机器的发展,软件系统也越来越大和复杂,性能的优化仍然是必要的。 最具代表性的是三维游戏软件,例如DeltaForce、古墓丽影、反恐精英等,如果不对软件(主要是游戏引擎)进行精湛的优化,就不可能在普通的PC上顺利地进行游戏。 2 .软件质量属性和质量要素,2.8易于使用是指用户易于使用软件。 现代人生活节奏快,无论做什么都想方便。 将使用方便性作为重要的品质属性来对待是不会受到谴责的。 软件易用性差的根本原因:理工科大学教育存在缺陷:没有开设人机工程学、美学、心理学等必修课程,许多开发人员不知道如何设计易用的软件产品。 开发者犯了“错位”的毛病。 他认为只要自己方便使用,用户也会满意的。 软件的易用性应该让用户评价。 当用户真的觉得软件容易使用的时候,因为产生了温暖的感觉,所以用“界面容易”“容易使用”等语言对软件产品进行了评价。 2.9清晰明确,意味着所有工作成果易读易懂,可以提高团队开发效率,降低维护成本。 开发者只有在自己的想法清楚的时候,才能写出让他人容易读懂容易理解的程序和文件。 能理解的通常是简洁的。 原始问题可能很复杂,但高层次的人可以简洁地设计软件系统。 如果软件系统过大,迟早会出现问题。 因此,简洁是人们对工作“拼命”的结果,而不是马虎应对的结果。 与简洁对立的是“萝莉太吵了”。 不要在学校把“写文章”手法用于产品开发! 简洁写文章的话,容易理解,不能投稿的情况比较多,加上什么不明白的东西,使原本简单的东西变得复杂,投稿的命中率才会提高。 2 .软件质量属性和质量要素,2.10安全性在此指的是信息安全,英语不是Safety而是Security。 所谓安全性,是指系统不被非法侵入的能力,不管是技术性问题还是管理性问题。 信息安全是一门比较深刻的学问,它的发展建立在正义与邪恶的斗争之上。 世界上似乎不存在绝对安全的系统,美军的系统也频繁被黑客攻击。 现在全世界的黑客泛滥的是“道高一尺,魔高一丈”。开发者和顾客为了提高安全性而想投资的资金有限,他们必须考虑价值。 什么样的安全性令人满意? 一般而言,若黑客超过可获得为非法闯入而花费的成本(考虑时间、费用、风险等)的好处,则该系统将是安全的。 对一般软件不要求高安全性,不能完全忽略安全性,必须分析黑客行为。 2、软件质量属性和质量因素,2.11可扩展性反映了软件适应“变化”的能力。 在软件开发过程中,“变化”是理所当然的,如需求、设计变化、算法改进、程序变化等。 因为软件是“软件”,所以天生就容易修改以适应“变化”吗? 关键是软件的规模和复杂性。 如果软件规模小、问题简单,则更容易修复,“可扩展性”并不重要。 如果软件代码只有100行,“软件工程”也不能使用。 如果软件规模大、问题复杂、软件扩展性差,那么该软件就像用卡做成的房子一样,可能会拔卡或推入房子倒塌。 现代软件产品通常采用“增量开发模式”,不断推出新版本,获得附加价值利润。可扩展性变得越来越重要。 可扩展性是系统设计阶段重点考虑的质量属性。 关于软件的可扩展性,开发者首先考虑了提高可扩展性的方法,为了提高可扩展性而努力设计了优秀的体系结构,但是不应该这样做。 从业务角度看,如果软件不断发布新版本,可扩展性就很重要。 但是,如果软件没有下一个版本(一次买卖),就不需要增加可扩展性,也不需要自己操心! 2 .软件的质量属性和质量要素,2.12兼容性是不同产品(或旧产品)相互交换信息的能力。 例如,如果两个文字处理软件的文件格式兼容,则两个文件都可以处理对方的文件。 此功能对用户非常有益。 互换性的商业规则:弱者谋求与强者的互换性。 否则,没有置身之处的强者应该避免互换性,否则市场就会分裂。 仔细看在香港拍的帮派电影,很容易理解其原因。 金山软件公司的WPS与微软的Word之争。 WPS和Word不相容的话就不能生存。 但是,Word绝对不能与WPS兼容。 除非WPS在中国被称为领导者。 中国联通与中国移动的手机联络问题。 2.13可移植软件(因特网价值与用户数的平方成比例)的可移植性主要是代码的可移植性,它能够在不同硬件和软件环境(CPU、OS和编译器)下运行,而软件没有改变或者没有改变。 编程语言低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低就低。 因为英特尔cpu和SPARCCPU等硬件体系结构使用不同的指令集和字长,操作系统和编译器可以阻止这种差异,从而提高语言的可移植性。 Java程序被称为“一次性编译,四处运行”,移植性100%。 为了提高Java程序的性能,最新的Java标准可以使用与平台相关的优化技术,优化的Java程序不能“一次性编译,到处运行”,但“一次性编程,到处运行” 软件必须将“设备相关程序”与“设备相关程序”分离,将“功能模块”与“用户界面”分离设计。 3、商业目标决定了质量目标,3.1为了从教科书的片面角度强调软件工程教科书质量的重要性,必须经常列举历史上发生的重大软件质量事故,如航天飞机爆炸、核电站事故、爱国者导弹故障等。 这些事故确实不是危言耸听,而是给人们敲响了质量警钟。 学术界总是喜欢宣传质量至上的理念,忽视企业的商业利益,把质量目标放在商业目标上。 无法评价这个现象是好还是坏,但确实误解了很多读者。 许多软件工作人员都有“质量越高越好”的观念,这是教科书教的,不是他自己理解的。 我曾在着作高质量程序设计指南C+/C语言中广泛宣传了高质量程序设计的理念,努力使c程序达到“零缺陷”的质量目标。 尽管这本书得到了很多程序员的赞同,我还是要反省并改变质量观念,重视软件的质量是理所当然的,但要强调“质量越高越好”不是普遍的真理。 只有极少数软件应该追求“零缺陷”,对大多数软件来说,业务目标决定质量目标,不应该把质量目标放在业务目标之上。 3.2严格的系统是质量要求航天等系统质量要求极高,任何缺陷都可能引起机械破坏,人们会付出一切代价去除缺陷。 在发射宇宙飞船之前,如果发现任何异常,立即取消发射指令,直到异常消除。 前苏联做得最过分,许多重大武器系统负责人签字生死,系统开发成功获得英雄勋章,失败后被枪杀。 在这种压力下,没有人对质量有一点松弛。3 .商业目标决定质量目标,3.3普通商业软件:商业目标决定质量目标的上述严格系统毕竟很少,大多数普通软件的缺陷不会导致机械破坏这样的严重损失。 否则,没有人从事软件开发。 在日常工作中,我们接触的软件几乎都有缺陷,即使是软件行业的领导者Microsoft,也经常引起软件产品的错误和恐慌,人们抱怨也会直接使用有缺陷的软件。 企业的根本目标不是生产完美的产品,而是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论