如何提高软件质量课件_第1页
如何提高软件质量课件_第2页
如何提高软件质量课件_第3页
如何提高软件质量课件_第4页
如何提高软件质量课件_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

如何提高我们的软件质量研发中心软件室-王丁2008-6如何提高我们的软件质量研发中心软件室-王丁1主题什么是软件质量?软件质量的过去和将来!我们遇到了什么?或者即将遇到什么?怎么办?参考资料主题什么是软件质量?2什么是质量?质量具有三个维度:•

符合目标。目标是客户所定义的,符合目标即判断我们是不是在做需要做的事情。•

符合需求。即产品是不是在做让它做的事情。•

符合实际需求。实际的需求包括用户明确说明的和隐含的需求。ISO关于质量的定义表示如下:“一个实体(产品或服务)的所有特性,基于这些特性可以满足明显的或隐含的需要。”什么是质量?质量具有三个维度:3什么是软件质量?外部用户要求:正确,高效,健壮,易用和可靠内部维护人员要求:可维护(代码易读,易读,易Debug,注释清晰,容易扩展)内部测试人员要求:可测试,易用,易理解企业产品化要求:可扩展,可移植,可配置,灵活,重用性高,模块和组件化

什么是软件质量?外部用户要求:正确,高效,健壮,易用和可靠4代码大全怎么说因此《代码大全》将软件质量特征分为内部质量特征和外部质量特征:

外部质量特征包括:

+正确性。整个系统受说明、设计和实现的错误影响程度。

+可用性。用户学会和使用系统的难易程度。

+效率。对系统资源的最小利用,包括存储和执行时间。

+可靠性。在一定条件下执行特定功能的能力。

+完整性。防止非法或不适当地访问。完整性思想包括:限制非法用户访问,同时确保证数据恰当访问;并行数据表进行并行修改;数据段仅含有有效数据等等。

+适应性。系统在应用或其它环境下不作修改就能使用的能力。

+精确性。系统不受错误影响的程度,尤其是数据输出方面。精确性和正确性是不同的。精确性是对系统完成其工作性能良好的衡量,而不是它设计得是否正确。

+坚固性。系统对无效输入或压力环境中能继续执行其功能的能力。

代码大全怎么说因此《代码大全》将软件质量特征分为内部质量特征5代码大全怎么说内部质量特征包括:

+可维护性。修改一个软件系统,提高其性能或修正其错误的能力。

+灵活性。修改系统使其能适应于不同的用途或环境的能力,而不必对系统进行特定的设计。

+可移植性。能修改所设计的某一系统使其能在其它环境下运行的能力。

+可重用性。能将系统的一部分用于其它系统的难易程度。

+可读性。能读懂或理解系统源代码的能力,尤其是在细节说明这一级上。

+可测试性。对整个系统进行单元或系统测试以证实其满足所有需求性能的测试难易程度。

+可理解性。能从整个系统水平或细节说明这一级上理解整个系统的难易程度。可理解性要比可读性从更一般的水平上讨论系统的紧密性。

代码大全怎么说内部质量特征包括:

+可维护性。修改一个软件系6我们把影响软件质量的因素分成三组,分别反映用户在使用软件产品时的三种不同倾向或观点。这三种倾向是:产品运行、产品修改和产品转移。信息系统作为一个产品,也可以参照这三种倾向来定义。

我们把影响软件质量的因素分成三组,分别反映用户在使用软件产品7我们需要注意的几个数据1、在项目发布后发现和修复Bug的成本是需求和设计阶段所需的一百倍!2、80%可避免的重复劳动源自于20%的缺陷,其中两大主要来源包括草率的需求定制和象征性的案例设计和开发。3、大约80%的缺陷来自20%的模块,而约半数的模块是几乎没有缺陷。4、90%的软件的停工期最多来自于10%的缺陷。我们需要注意的几个数据8总结一下上面四条原则说明了两个问题,一是错误越早发现成本越低,而且大部分的错误都是在软件开发的前面阶段引入的。二是大部分的错误都集中在少数的模块。总结一下上面四条原则说明了两个问题,9缺陷代价曲线缺陷代价曲线10软件质量的过去20世纪60年代中期,美国的首次金星探测计划,因为在FORTRAN语言程序的DO语句中漏掉一个逗号,惨遭失败。1996年,欧洲航天局首次发射阿丽亚娜5号火箭失败,其直接原因是火箭控制系统的软件故障,导致直接经济损失5亿美元,还使耗资80亿美元的开发计划延迟了三年。1986年3月到1987年1月,由加拿大原子能有限公司生产的Therac25放射治疗机造成两人死亡、数人受伤。软件质量的过去20世纪60年代中期,美国的首次金星探测计11软件质量的过去1992年,法国伦教由于救护派遗系统全部崩溃,导致多名病人因为抢救不及时而失去生命。1991年海湾战争期间,美国爱国者导弹由于软件计时系统累计误差造成拦截失败,造成人员无辜伤亡。1990年美国电话系统中新投入使用的软件发生失效,导致主千线远程网大规模崩溃,给运营商造成了重大的经济损失。1991年,由于一系列局域电话网因软件错误而中断,造成了数以千计依靠电讯公司运营业务的公司遭受巨额的资金损失。软件质量的过去1992年,法国伦教由于救护派遗系统全部崩溃,12软硬件产品的不同点特征软件硬件存在形式虚拟、动态固化、稳定客户需求不确定性相对清楚度量性非常困难正常生产过程逻辑性强流水线、工序逻辑关系复杂清楚接口复杂多数简单、适中维护复杂、新的需求、可以不断打补丁多数简单、适中、没有新的需求软硬件产品的不同点特征软件硬件存在形式虚拟、动态固化、稳定客13软硬件开发过程的比较软件

硬件54-56%质量缺陷来自需求不清楚需求分析《=》调研分析质量控制的主要阶段之一25%质量缺陷来自设计和编程设计、编程《=》设计阶段质量控制的主要阶段之一

测试《=》设计审查

发布《=》设计完成

这里不是软件质量管理的主要阶段软件拷贝《=》制造、检验生产的主要过程,质量控制的重点不仅支持原有功能,解决以前就存在的问题,而且增加新特性、加强新功能维护《=》维修支持原有功能,解决运行中出现的问题,一般比较容易预测软硬件开发过程的比较软件

硬件54-56%质量缺陷来自需需14我们遇到了什么?项目没有被很好地理解;计划不周,最终导致进度拖延。没有充分的文档资料。人与人的交流比写程序困难得多。软件可靠性缺少度量的标准,质量无法保证。软件难以维护、不易升级,问题越改越多。我们遇到了什么?项目没有被很好地理解;计划不周,最终导致进度15如何改进我们的软件质量的思考从一个企业的长远发展来看,首先应当从流程抓起,规范软件产品的开发过程。这是一个软件企业从小作坊的生产方式向集成化、规范化的大公司迈进的必经之路,也是从根本上解决质量问题,提高工作效率的一个关键手段。如何改进我们的软件质量的思考从一个企业的长远发展来看,首先应16瀑布模型编程设计需求分析测试维护瀑布模型是应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。遗漏的需求或者不断变更的需求会使得该模型无所适从。然而,对于那些容易理解但很复杂的项目,采用瀑布模型会是比较适合的,因为你可以按部就班的去处理复杂的问题。在质量要求高于成本和进度要求的时候,该模型表现的尤其突出。瀑布模型编程设计需求分析测试维护瀑布模型是应用的最为广泛的一17RAD模型(V模型)RAD模型(V模型)18螺旋模型(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程:实施软件开发和验证;(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋型项目从小的规模开始,然后探测风险,制定风险控制计划,接着确定下一步项目是否还要继续,然后进行下一个螺旋的反复。该模型的最大优点就是随着成本的增加,风险程度随之降低。然而螺旋模型的缺点是比较复杂,且需要管理人员有责任心,专注以及有管理方面经验。螺旋模型(1)制定计划:确定软件目标,选定实施方案,弄清19RUP(RationalUnifiedProcess)RUP工作流程示意图RUP(RationalUnifiedProcess20IPD(IntegratedProductDevelopment)IPD流程示意图IPD(IntegratedProductDevel21目前主要的一些软件开发过程模型瀑布模型原型模型快速应用开发(RAD)模型螺旋模型喷泉模型增量模型和迭代模型构件组装模型并发模型目前主要的一些软件开发过程模型瀑布模型22流程与技术流程和成功不是等价的。没有流程就成功是不可能得到保证,但有了流程并不意味着肯定能够成功。这恐怕是很多迷信于流程的人所不能接受的。但这的确是个事实。记得有个做了将近30多年的需求分析专家说过:即使是一个已经达到CMM4级的公司,也完全有可能做不好需求分析。为什么?技术,技术是成功的另外一个必要条件总之流程很关键,技术也很重要,我的观点是:鱼和熊掌,两者都不能放。流程与技术流程和成功不是等价的。没有流程就成功是不可能得到保23我们的遇到的问题对于软件开发来说,要保证软件的质量,需要掌握多方面的技术,包括分析技术设计技术、编码技术测试技术在国内有一个普遍的非正常现象,就是大家觉得只有编程能力才是玩电脑的真正技能。就好像造一套房子,其它都不重要,只要砖瓦匠有高超的技能就行了。尽管这个比喻会打击很多程序员的自尊心,但这的确是一个事实。我们缺少系统级的工程师,在分析和设计方面的工作做得很不扎实。我们的遇到的问题对于软件开发来说,要保证软件的质量,需要掌握24我们需要做好的地方UML代表软件建模的发展趋势需求分析的能力学习好《设计模式》测试技术程序员也要有扎实的文档编写能力良好的编程习惯我们需要做好的地方UML代表软件建模的发展趋势25关于软件测试软件测试是软件质量控制中的关键活动。业界的统计数据表明,测试的成本大约占软件开发总成本的50%左右。软件测试的目的是要发现软件中的错误。一个好的测试是发现至今没有被发现的错误。传统的软件测试专注于动态测试范畴,如:单元测试,集成测试和系统测试。而测试工程的发展已经进入到了全流程的测试,包括开发过程前期的静态测试关于软件测试软件测试是软件质量控制中的关键活动。业界的统计数26关于测试的一些介绍白盒测试

黑盒测试单元测试

集成测试

系统测试

关于测试的一些介绍白盒测试27改善软件质量的技术软件质量目标明确定义质量保证工作测试策略软件工程指南非正式技术复查(review,walk-through)正式技术复查外部审查改善软件质量的技术软件质量目标28缺陷检测率缺陷检测率29如何提高软件质量课件30国际上流行的质量标准(CMM)软件能力成熟度模型是目前国内软件企业中非常受欢迎的一个质量标准。并且该标准已经成为业界一个事实上的标准。CMM为软件组织提供了一个指导性的管理框架。在这个框架的指导下:•

软件组织可以对其软件开发、维护过程获得控制。•

软件组织可以推进其软件工程更为科学、推进软件过程管理更为卓越。•

CMM通过确定当前软件过程管理的成熟度,通过标识软件的质量和过程改进中关键的、要害的问题,可以指导软件组织选择正确的软件过程改进策略。•

CMM将其焦点,聚焦在一系列具体的软件过程活动上,并以侵略方式(Aggressively)达到这些活动。一个软件组织就可以稳定地、持续地改进其整个软件组织过程,使得其软件过程管理能力取得持续地、持久地不断争长提高。国际上流行的质量标准(CMM)软件能力成熟度模型是目前国内31CMM的五个等级在CMM中,把软件工厂分为五个等级:初始级可重复级已定义级管理级优化级CMM的五个等级在CMM中,把软件工厂分为五个等级:32软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。也许,有些企业制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策、资源等方面的保证时,那么它仍然被视为初始级。初始级可重复级人们根据多年的经验和教训,总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,可重复的过程才能逐渐改进和成熟。可重复级的管理过程包括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面;其中项目管理过程又分为计划过程和跟踪与监控过程。通过实施这些过程,从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。

已定义级要求制定企业范围的工程化标准,并将这些标准集成到企业软件开发标准过程中去。所有开发的项目需根据这个标准过程裁剪出与项目适宜的过程,并且按照过程执行。过程的裁剪不是随意的,在使用前必须经过企业有关人员的批准。

CMM的等级说明软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。33CMM级别与软件质量关系表格每千行软件的缺陷数目软件过程成熟度等级软件准时提交的百分比每人每月生产的程序行数软件需要返工的百分比平均软件失效时间(近似)大于10初始级<=50Z>=452到60分钟小于10可重复级901.5Z201-160小时小于1已定义级992.5Z10不确定小于0.1管理级降低开发时间到1/25Z5不确定小于0.01优化级降低开发时间到1/410Z<=2近似完全可靠CMM级别与软件质量关系表格每千行软件的缺陷数目软件过34改进我们的软件质量吧根据不同业务特点可以选择瀑布模型,迭代模型等,并在这些模型上进行适当的变化以适应于短平快的产品开发特点

实施简洁的开发过程体系提高需求分析和设计方面的技术,例如:原型法技术,分析模式,设计模式,面向对象设计,UML等;

提高需求分析和设计方面的技术改进我们的软件质量吧根据不同业务特点可以选择瀑布模型,迭代模35改进我们的软件质量吧加强编程规范工作

进行适当的测试工作,建议进行单元测试和系统测试

实施配置管理工作,加强版本控制

开展走读、评审和检视活动,尤其要加强代码走读,建议进行每日交叉走读活动进行简单的度量分析获得质量数据改进我们的软件质量吧加强编程规范工作进行适当的测试工作,建36给软件开发人员的一些忠告我的源代码给猫吃了!?1在所有弱点中,最大的弱点就是害怕暴露弱点2提供各种选择,不要找蹩脚的理由给软件开发人员的一些忠告我的源代码给猫吃了!?1在所有弱点中37不要容忍破窗户软件的熵定期为你的知识资产投资你的知识资产不要容忍破窗户软件的熵定期为你的知识资产投资你的知识资产38交流!知道你要说什么了解你听众选择时机,选择风格让文档美观让听众参与做倾听者回复他人交流!知道你要说什么了解你听众选择时机,选择风格让文档美观让39重复的危害强加的重复无意的重复无耐性的重复开发者之间的重复不要重复你自己让复用变的更容易重复的危害强加的重复无意的重复无耐性的重复开发者之间的重复不40软件的正交性消除无关事物之间的影响提示如果显著的改变某个特定功能背后的需求,有多少模块会受影响?软件的正交性消除无关事物之间的影响提示如果显著的改变某个特定41软件的正交性让你的代码保持解耦避免使用全局变量避免编写相似的函数单元测试软件的正交性让你的代码保持解耦42曳光弹使用曳光弹找到目标用户能够及早看到能工作的东西开发者构建了一个他们能够在其中工作的结构你有了一个集成平台你有了可以演示的东西你将更能够感觉到工作的进展曳光代码原型制作曳光弹使用曳光弹找到目标曳光代码原型制作43估算时长报出估算的单位1-15天天3-8周周8-30周月30+周努力思考一下再回答检查需求分析风险设计,实现,集成向用户确认我等会回答你!估算时长报出估算的单位1-15天天3-8周周8-30周月3044源代码控制总是应该使用源代码控制源代码控制总是应该使用源代码控制45按照合约进行设计(DBC)前条件后条件类不变项按照合约进行设计(DBC)前条件46死程序不说谎要崩溃,不要破坏(早崩溃)如果它不可能发生,用断言保证它不会发生这绝不会发生!死程序不说谎要崩溃,不要破坏(早崩溃)47接耦和得墨涅尔法则关注“正交”和“按照合约设计”如果N个对象全都互相了解,那么对一个对象的改动就可能导致其他n-1个对象都需要改动接耦和得墨涅尔法则关注“正交”和“按照合约设计”如果N个对象48靠巧合编程它也许不是真的能工作-它也许知识看起来能工作你依靠的边界也许只是一个偶然,在不同的情况下,它的表现或许就不同。没有计入文档的行为可能会随着库的下一次发布而变化多余的和不必要的调用会使你的代码变慢多余的调用还会增加引入他们自己的新BUG的风险靠巧合编程它也许不是真的能工作-它也许知识看起来能工作49重构在什么时候开始重构?重复非正交的设计过时的知识性能早重构,常重构重构在什么时候开始重构?50面向对象设计的原则单一职责原则(SRP)开放-封闭原则(OCP)Liskov替换原则(LSP)依赖倒置原则(DIP)接口隔离原则(ISP)重用发布等价原则(REP)共同封闭原则(CCP)共同重用原则(CRP)无环依赖原则(ADP)稳定依赖原则(SDP)稳定抽象原则(SAP)面向对象设计的原则单一职责原则(SRP)51易于测试的代码单元测试针对合约进行测试(提示:为测试而设计)使用测试装备测试文化(你的软件可以这样吗?Maketest)易于测试的代码单元测试52全都是写内部文档(注释)错误的注释比没有还可怕如果有歧义?代码才最要紧。全都是写内部文档(注释)53参考资料人月神话软件测试方法和技术程序员修炼之道-从小工到专家代码大全敏捷软件开发-原则、模式与实践参考资料人月神话54谢谢!谢谢!55如何提高我们的软件质量研发中心软件室-王丁2008-6如何提高我们的软件质量研发中心软件室-王丁56主题什么是软件质量?软件质量的过去和将来!我们遇到了什么?或者即将遇到什么?怎么办?参考资料主题什么是软件质量?57什么是质量?质量具有三个维度:•

符合目标。目标是客户所定义的,符合目标即判断我们是不是在做需要做的事情。•

符合需求。即产品是不是在做让它做的事情。•

符合实际需求。实际的需求包括用户明确说明的和隐含的需求。ISO关于质量的定义表示如下:“一个实体(产品或服务)的所有特性,基于这些特性可以满足明显的或隐含的需要。”什么是质量?质量具有三个维度:58什么是软件质量?外部用户要求:正确,高效,健壮,易用和可靠内部维护人员要求:可维护(代码易读,易读,易Debug,注释清晰,容易扩展)内部测试人员要求:可测试,易用,易理解企业产品化要求:可扩展,可移植,可配置,灵活,重用性高,模块和组件化

什么是软件质量?外部用户要求:正确,高效,健壮,易用和可靠59代码大全怎么说因此《代码大全》将软件质量特征分为内部质量特征和外部质量特征:

外部质量特征包括:

+正确性。整个系统受说明、设计和实现的错误影响程度。

+可用性。用户学会和使用系统的难易程度。

+效率。对系统资源的最小利用,包括存储和执行时间。

+可靠性。在一定条件下执行特定功能的能力。

+完整性。防止非法或不适当地访问。完整性思想包括:限制非法用户访问,同时确保证数据恰当访问;并行数据表进行并行修改;数据段仅含有有效数据等等。

+适应性。系统在应用或其它环境下不作修改就能使用的能力。

+精确性。系统不受错误影响的程度,尤其是数据输出方面。精确性和正确性是不同的。精确性是对系统完成其工作性能良好的衡量,而不是它设计得是否正确。

+坚固性。系统对无效输入或压力环境中能继续执行其功能的能力。

代码大全怎么说因此《代码大全》将软件质量特征分为内部质量特征60代码大全怎么说内部质量特征包括:

+可维护性。修改一个软件系统,提高其性能或修正其错误的能力。

+灵活性。修改系统使其能适应于不同的用途或环境的能力,而不必对系统进行特定的设计。

+可移植性。能修改所设计的某一系统使其能在其它环境下运行的能力。

+可重用性。能将系统的一部分用于其它系统的难易程度。

+可读性。能读懂或理解系统源代码的能力,尤其是在细节说明这一级上。

+可测试性。对整个系统进行单元或系统测试以证实其满足所有需求性能的测试难易程度。

+可理解性。能从整个系统水平或细节说明这一级上理解整个系统的难易程度。可理解性要比可读性从更一般的水平上讨论系统的紧密性。

代码大全怎么说内部质量特征包括:

+可维护性。修改一个软件系61我们把影响软件质量的因素分成三组,分别反映用户在使用软件产品时的三种不同倾向或观点。这三种倾向是:产品运行、产品修改和产品转移。信息系统作为一个产品,也可以参照这三种倾向来定义。

我们把影响软件质量的因素分成三组,分别反映用户在使用软件产品62我们需要注意的几个数据1、在项目发布后发现和修复Bug的成本是需求和设计阶段所需的一百倍!2、80%可避免的重复劳动源自于20%的缺陷,其中两大主要来源包括草率的需求定制和象征性的案例设计和开发。3、大约80%的缺陷来自20%的模块,而约半数的模块是几乎没有缺陷。4、90%的软件的停工期最多来自于10%的缺陷。我们需要注意的几个数据63总结一下上面四条原则说明了两个问题,一是错误越早发现成本越低,而且大部分的错误都是在软件开发的前面阶段引入的。二是大部分的错误都集中在少数的模块。总结一下上面四条原则说明了两个问题,64缺陷代价曲线缺陷代价曲线65软件质量的过去20世纪60年代中期,美国的首次金星探测计划,因为在FORTRAN语言程序的DO语句中漏掉一个逗号,惨遭失败。1996年,欧洲航天局首次发射阿丽亚娜5号火箭失败,其直接原因是火箭控制系统的软件故障,导致直接经济损失5亿美元,还使耗资80亿美元的开发计划延迟了三年。1986年3月到1987年1月,由加拿大原子能有限公司生产的Therac25放射治疗机造成两人死亡、数人受伤。软件质量的过去20世纪60年代中期,美国的首次金星探测计66软件质量的过去1992年,法国伦教由于救护派遗系统全部崩溃,导致多名病人因为抢救不及时而失去生命。1991年海湾战争期间,美国爱国者导弹由于软件计时系统累计误差造成拦截失败,造成人员无辜伤亡。1990年美国电话系统中新投入使用的软件发生失效,导致主千线远程网大规模崩溃,给运营商造成了重大的经济损失。1991年,由于一系列局域电话网因软件错误而中断,造成了数以千计依靠电讯公司运营业务的公司遭受巨额的资金损失。软件质量的过去1992年,法国伦教由于救护派遗系统全部崩溃,67软硬件产品的不同点特征软件硬件存在形式虚拟、动态固化、稳定客户需求不确定性相对清楚度量性非常困难正常生产过程逻辑性强流水线、工序逻辑关系复杂清楚接口复杂多数简单、适中维护复杂、新的需求、可以不断打补丁多数简单、适中、没有新的需求软硬件产品的不同点特征软件硬件存在形式虚拟、动态固化、稳定客68软硬件开发过程的比较软件

硬件54-56%质量缺陷来自需求不清楚需求分析《=》调研分析质量控制的主要阶段之一25%质量缺陷来自设计和编程设计、编程《=》设计阶段质量控制的主要阶段之一

测试《=》设计审查

发布《=》设计完成

这里不是软件质量管理的主要阶段软件拷贝《=》制造、检验生产的主要过程,质量控制的重点不仅支持原有功能,解决以前就存在的问题,而且增加新特性、加强新功能维护《=》维修支持原有功能,解决运行中出现的问题,一般比较容易预测软硬件开发过程的比较软件

硬件54-56%质量缺陷来自需需69我们遇到了什么?项目没有被很好地理解;计划不周,最终导致进度拖延。没有充分的文档资料。人与人的交流比写程序困难得多。软件可靠性缺少度量的标准,质量无法保证。软件难以维护、不易升级,问题越改越多。我们遇到了什么?项目没有被很好地理解;计划不周,最终导致进度70如何改进我们的软件质量的思考从一个企业的长远发展来看,首先应当从流程抓起,规范软件产品的开发过程。这是一个软件企业从小作坊的生产方式向集成化、规范化的大公司迈进的必经之路,也是从根本上解决质量问题,提高工作效率的一个关键手段。如何改进我们的软件质量的思考从一个企业的长远发展来看,首先应71瀑布模型编程设计需求分析测试维护瀑布模型是应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。遗漏的需求或者不断变更的需求会使得该模型无所适从。然而,对于那些容易理解但很复杂的项目,采用瀑布模型会是比较适合的,因为你可以按部就班的去处理复杂的问题。在质量要求高于成本和进度要求的时候,该模型表现的尤其突出。瀑布模型编程设计需求分析测试维护瀑布模型是应用的最为广泛的一72RAD模型(V模型)RAD模型(V模型)73螺旋模型(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程:实施软件开发和验证;(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋型项目从小的规模开始,然后探测风险,制定风险控制计划,接着确定下一步项目是否还要继续,然后进行下一个螺旋的反复。该模型的最大优点就是随着成本的增加,风险程度随之降低。然而螺旋模型的缺点是比较复杂,且需要管理人员有责任心,专注以及有管理方面经验。螺旋模型(1)制定计划:确定软件目标,选定实施方案,弄清74RUP(RationalUnifiedProcess)RUP工作流程示意图RUP(RationalUnifiedProcess75IPD(IntegratedProductDevelopment)IPD流程示意图IPD(IntegratedProductDevel76目前主要的一些软件开发过程模型瀑布模型原型模型快速应用开发(RAD)模型螺旋模型喷泉模型增量模型和迭代模型构件组装模型并发模型目前主要的一些软件开发过程模型瀑布模型77流程与技术流程和成功不是等价的。没有流程就成功是不可能得到保证,但有了流程并不意味着肯定能够成功。这恐怕是很多迷信于流程的人所不能接受的。但这的确是个事实。记得有个做了将近30多年的需求分析专家说过:即使是一个已经达到CMM4级的公司,也完全有可能做不好需求分析。为什么?技术,技术是成功的另外一个必要条件总之流程很关键,技术也很重要,我的观点是:鱼和熊掌,两者都不能放。流程与技术流程和成功不是等价的。没有流程就成功是不可能得到保78我们的遇到的问题对于软件开发来说,要保证软件的质量,需要掌握多方面的技术,包括分析技术设计技术、编码技术测试技术在国内有一个普遍的非正常现象,就是大家觉得只有编程能力才是玩电脑的真正技能。就好像造一套房子,其它都不重要,只要砖瓦匠有高超的技能就行了。尽管这个比喻会打击很多程序员的自尊心,但这的确是一个事实。我们缺少系统级的工程师,在分析和设计方面的工作做得很不扎实。我们的遇到的问题对于软件开发来说,要保证软件的质量,需要掌握79我们需要做好的地方UML代表软件建模的发展趋势需求分析的能力学习好《设计模式》测试技术程序员也要有扎实的文档编写能力良好的编程习惯我们需要做好的地方UML代表软件建模的发展趋势80关于软件测试软件测试是软件质量控制中的关键活动。业界的统计数据表明,测试的成本大约占软件开发总成本的50%左右。软件测试的目的是要发现软件中的错误。一个好的测试是发现至今没有被发现的错误。传统的软件测试专注于动态测试范畴,如:单元测试,集成测试和系统测试。而测试工程的发展已经进入到了全流程的测试,包括开发过程前期的静态测试关于软件测试软件测试是软件质量控制中的关键活动。业界的统计数81关于测试的一些介绍白盒测试

黑盒测试单元测试

集成测试

系统测试

关于测试的一些介绍白盒测试82改善软件质量的技术软件质量目标明确定义质量保证工作测试策略软件工程指南非正式技术复查(review,walk-through)正式技术复查外部审查改善软件质量的技术软件质量目标83缺陷检测率缺陷检测率84如何提高软件质量课件85国际上流行的质量标准(CMM)软件能力成熟度模型是目前国内软件企业中非常受欢迎的一个质量标准。并且该标准已经成为业界一个事实上的标准。CMM为软件组织提供了一个指导性的管理框架。在这个框架的指导下:•

软件组织可以对其软件开发、维护过程获得控制。•

软件组织可以推进其软件工程更为科学、推进软件过程管理更为卓越。•

CMM通过确定当前软件过程管理的成熟度,通过标识软件的质量和过程改进中关键的、要害的问题,可以指导软件组织选择正确的软件过程改进策略。•

CMM将其焦点,聚焦在一系列具体的软件过程活动上,并以侵略方式(Aggressively)达到这些活动。一个软件组织就可以稳定地、持续地改进其整个软件组织过程,使得其软件过程管理能力取得持续地、持久地不断争长提高。国际上流行的质量标准(CMM)软件能力成熟度模型是目前国内86CMM的五个等级在CMM中,把软件工厂分为五个等级:初始级可重复级已定义级管理级优化级CMM的五个等级在CMM中,把软件工厂分为五个等级:87软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。也许,有些企业制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策、资源等方面的保证时,那么它仍然被视为初始级。初始级可重复级人们根据多年的经验和教训,总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,可重复的过程才能逐渐改进和成熟。可重复级的管理过程包括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面;其中项目管理过程又分为计划过程和跟踪与监控过程。通过实施这些过程,从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。

已定义级要求制定企业范围的工程化标准,并将这些标准集成到企业软件开发标准过程中去。所有开发的项目需根据这个标准过程裁剪出与项目适宜的过程,并且按照过程执行。过程的裁剪不是随意的,在使用前必须经过企业有关人员的批准。

CMM的等级说明软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。88CMM级别与软件质量关系表格每千行软件的缺陷数目软件过程成熟度等级软件准时提交的百分比每人每月生产的程序行数软件需要返工的百分比平均软件失效时间(近似)大于10初始级<=50Z>=452到60分钟小于10可重复级901.5Z201-160小时小于1已定义级992.5Z10不确定小于0.1管理级降低开发时间到1/25Z5不确定小于0.01优化级降低开发时间到1/410Z<=2近似完全可靠CMM级别与软件质量关系表格每千行软件的缺陷数目软件过89改进我们的软件质量吧根据不同业务特点可以选择瀑布模型,迭代模型等,并在这些模型上进行适当的变化以适应于短平快的产品开发特点

实施简洁的开发过程体系提高需求分析和设计方面的技术,例如:原型法技术,分析模式,设计模式,面向对象设计,UML等;

提高需求分析和设计方面的技术改进我们的软件质量吧根据不同业务特点可以选择瀑布模型,迭代模90改进我们的软件质量吧加强编程规范工作

进行适当的测试工作,建议进行单元测试和系统测试

实施配置管理工作,加强版本控制

开展走读、评审和检视活动,尤其要加强代码走读,建议进行每日交叉走读活动进行简单的度量分析获得质量数据改进我们的软件质量吧加强编程规范工作进行适当的测试工作,建91给软件开发人员的一些忠告我的源代码给猫吃了!?1在所有弱点

温馨提示

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

评论

0/150

提交评论