《软件工程化和CMM.ppt》由会员分享,可在线阅读,更多相关《软件工程化和CMM.ppt(49页珍藏版)》请在三一办公上搜索。
1、软件工程化和CMM,解决软件危机的一种方法,2,软件危机的产生,1.正在运行的计算机软件的数量正以惊人的速度急剧膨胀,软件规模庞大,耗资巨大。2.微电子技术的进步,计算机软件已经成为限制计算机系统发展的关键因素。3.在计算机系统开发早期时代所形成的一些错误观点和做法,已严重的影响了计算机的开发,更严重的是用错误的方法开发出来的许多大型软件几乎根本无法维护,只好提前报废,造成大量人力、物力的浪费。,3,软件危机的具体表现,1.对软件开发成本和进度的估计常常很不准确。2.用户对“已完成的”软件系统不满意的情况经常发生。3.软件产品质量往往靠不住。4.软件常常是不可维护的。5.软件通常没有适当的文档
2、资料。6.软件成本在计算机系统总成本中所占的比例逐年上升。7.软件开发成本生产率提高速度远跟不上计算机应用迅速普及深入的趋势。,4,由于软件所引起的后果,海湾战争中,一枚飞毛腿导弹刺入爱国者反导弹的外壳中,打中了位于沙特的一座军营,造成28名美国军人死亡,98人受伤,其原因是爱国者导弹的软件包含一个累加计时故障,其导弹在设计时规定运行几小时,时钟将复位。该故障从未产生重大影响,因而没有被发现,而在战争中,此导弹的电池连续运行100多个小时,这使累计时间差变的太大,导致系统错误。在战争期间,美军将爱国者导弹运往以色列,防卫飞毛腿导弹。以色列军队8小时就发现了此错误,立即向美国导弹生产商报告。后者
3、以最快的速度修正了错误,但新软件在军营被飞毛腿导弹击中后一天才到达。,5,软件工程的基本原理,1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚的审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性,6,软件生命周期模型,1.边做边改模型2.瀑布模型3.快速原型模型4.增量模型5.螺旋模型,7,软件工程研究的新领域,1.CASE2.CMM3.软件构件技术4.面向对象技术5.UML6.XML7.可移植软件系统的开发,工程化软件的开发与研究,9,软件工程化产生的背景解决软件危机的有效途径传统建模方法的弊端软件工程化研
4、究的内容,软件工程化的研究意义,10,失之毫厘,谬之千里,由于软件开发过程中存在错误而导致的积累与放大效应,原始要求,11,软件危机的形成,软件危机的形成,12,传统建模方法面临严重困境 三条难以逾越的鸿沟,13,软件产业自身的特点我国软件产业的现状解决传统的软件开发的弊端解决软件危机的需要,软件工程化产生的背景,作用,14,软件复用技术工程环境技术软件实用技术软件规范化技术软件过程化技术,软件工程化的研究内容,典型应用,CMM,软件能力成熟度模型,16,软件能力成熟度模型,概念产生的背景研究CMM的意义国外的发展现状国内的发展现状,17,国外发展现状,CMM分为五个等级,目前世界上通过CMM
5、认证的软件企业共有400多家,其中通过二级认证有243个三级认证的有100个四级认证的有60个五级认证的有13个,返回,18,国内发展现状,目前,我国的软件企业通过CMM二级认证的软件企业不超过10家,而通过三级认证的企业仅有1家(由IBM公司和清华大学共同支柱的鼎新软件开发公司),同印度的软件企业相比,我们虽然比他们早起步了10年,但是目前我国的软件产品出口仅为印度的1%。印度有7家软件企业通过了五级认证。,返回,19,产生的背景,CMM在1996年由Carnegie-Mellon大学软件工程研究所SEI的Watts Humpherey提出的。CMM的基本思想是:由于许多的软件开发过程中的问
6、题是由管理软件过程方法引起的,所以新软件的技术的运用不会自动提高生产率和利润率。,20,1987年诞生于美国;5层的分层进化结构;使用过程成熟度的概念来标志软件组织开发软件产品的能力;,返回,21,引进CMM的目的,1.在软件生命周期的维护阶段花费的比例接近70%。(HP公司大约有60%-80%的研究人员和开发人员都涉及到维护工作)2.软件产品的特殊性。3.目前世界范围内的的软件开发现状(维护费用高、软件开发周期过长、软件产品不能按期的交付使用),返回,22,软件能力成熟度模型的概念,CMM(Capability Maturity Model)。它与传统的软件生命周期模型不同,它不是一个软件生
7、命周期模型,而是一种改进软件过程的策略。它与实际的使用的模型无关。,23,1.CMM明确的定义了五个不同的成熟的等级。(国外的情况)2.CMM 的软件过程完善是不可能在一夜之间完成的。(尤其是从第一级到第二级的过度)3.CMM是以增量方式逐步引入变化的。,返回,24,意义,自从人类发明数字计算机以后,计算机软件的开发一直是广泛应用计算机的瓶颈。研究新的软件开发方法和技术以提高计算机软件的生产率和质量一直是软件工程研究的焦点。大约在1987年前后,美国工业界和政府部门开始认识到,在软件开发过程中,最关键的问题是软件开发组织不能很好的定义和管理其软件过程,从而使一些好的开发方法和技术都得不到所期望
8、的作用。而CMM是一个分级的模型,其分层结构基于已有60多年历史的产品质量原理建立起来的。该框架为软件过程的定量控制建立了项目管理和项目工程的基本原则,这是软件过程得以不断改进的基础。,返回,25,200000行的数据处理产品由CMM的第一级到第五级的组织开发时的数据,26,CSCMM能力成熟度模型,0.初始级(Initial)1.基本级(basic)2.可重复级(Repeatable)3.已定义级(Defined)4.已管理级(Managed)5.优化级(Optimizing),27,CMM的内部结构CMM的相关概念CMM的关键过程域运用CMM进行软件过程改进时的注意事项,CMM的相关知识,
9、28,CMM的内部结构,29,关键过程域:每个关键过程域只与特定的成熟度等级直接相关,它指明一组相关的实践活动,当这些活动全部完成时,就能达到对增强过程能力至关重要的若干个目标。关键实践:一个关键过程域的关键实践表示,实施这些关键实践是实现该关键过程域目标的必要条件关键实践类:制定方针政策、确保必备条件、实施软件过程和检查实施情况,相关概念,30,CMM的关键过程域,31,过程改进时需要注意的事项,1、对改进模型的充分理解(能力成熟度模型和包括于每一个关键过程域中的关键实践);2、理解自己组织的实际的实践活动和模型所要求的实践活动之间的差异;3、定义满足改进目标的必要过程;4、确保改进过程被实
10、施并且能够持续的改进。,32,不断改进的软件开发过程是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一;目前软件过程改进技术有三大流派;CMM得到了学术界和工业界公认;用工程化的思想推动软件产业发展;达到与世界软件水平同步的目标;,研究基于CMM软件过程改进的意义,特点,33,建立了软件过程改善组织提出了基于CMM的评估剖面图提出了环境对过程改进的影响模型和支持工具模型设计了基于CMM的教务系统方案形成了与传统的开发方法不同的教务系统改进框架利用PSP设计了详细的开发流程制定了保证软件过程改进顺利实施的条件,CMM在教务系统中的应用,34,建立教务系统软件过程改善组,35,环境
11、因素对软件过程改进的影响,36,基于CMM教务系统软件过程改进设计,37,形成教务系统软件改进框架,38,利用PSP所形成的软件开发流程,39,教务系统改进过程中的支持工具,40,首先必须对当前系统的过程改进进行评估,找出当前系统的弱点,从而作为软件过程改善的基础。评估可以依据CMM所提供的标准来进行,由管理委员成员和软件过程改善组的成员组成评估组对当前的系统进行评估。我们可以通过填写的CMM提问单的来对当前的系统进行分析和响应,根据响应和分析的结果,召开座谈会、对文档资料进行复审,以便进一步了解软件开发所遵循的软件过程,在这个过程中应当以CMM中的关键过程域和关键实践作为基础,以便更好的确定
12、所考察的实践与CMM之间存在的差异,同时形成文档作为今后过程改进的基础和理论依据。另外评估组成员也可以根据评估结果制作KPA剖面图,标明该软件开发组织以满足和未满足的其目标的关键过程域,同时在评估的过程中我们也可以聘请一些有经验的软件过程改进人员来参与软件组织的评估活动,进而能够确定过程改进中关键过程域和关键实践的优先级。,基于CMM的软件过程评估过程,41,关于CMM调查单形式,42,教务系统的评估结果,43,保证软件过程改进顺利进行的措施,44,制定严格的时间管理的相关事项,进度管理,45,时间跟踪日志,46,根据以往时间来进行估算,47,软件产品质量保证,利用质检比进行预测,48,A/FR的估算结果和结论,相关结论,49,CMM的未来发展趋势,集成的CMM即CMMI,