




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于CMMI的软件工程第一章软件工程基础什么是软件? “软件(software)”一词,用于描述计算机中的非硬件成分,出现于50年代,1960年前后才广为流传,国内由中科院软件所最早定名。目前软件指计算机系统中的程序及其文档。什么是软件危机?
1968年NATO会议提出“软件危机”,今天仍然存在。表现为:(1)对软件的需求远超出现有的生产能力,一方面信息技术的爆炸性增长促进了对新软件的空前需求,另一方面软件系统的规模和复杂性不断增长,而用来开发这些软件的资源没有与上述需求保持同步;(2)人们依赖于脆弱的软件,目前的软件不可靠、缺乏安全性、性能下降、出错、难以升级,73%的软件项目被延迟、超资、取消或失败;(3)构造可靠、安全软件的技术能力不足,过去40年,硬件性能至少跨越了8个重要的阶段,但开发软件的能力未能与硬件提供的机会保持同步。以下给出几个应用需求不断增加和规模增大的例子:比如航天飞机有4000万行代码、空间站是10亿行代码,大家比较熟悉的Windows系统也有4500-6000万行代码(Windows95:1500万行;Windows98:1800万行;WindowsXP:3500万行;WindowsVista:5000万行)。
焦油坑-摘自《人月神话》焦油坑-摘自《人月神话》
史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统——不过,其中只有非常少数的项目满足了目标、时间进度和预算的要求。各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在了焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢。对问题的麻烦程度,每个人似乎都会感到惊讶,并且很难看清问题的本质。不过,如果我们想解决问题,就必须试图先去理解它。20世纪软件发展的回顾与启示 归纳软件在20世纪的发展,可以得到一些基本结论:(1)详细设计与编程实现基本成熟;(2)需求分析与质量保障难度较大;(3)高级自动化技术目前实行困难;(4)软件工程管理的作用日益突出。软件工程发展史上各个阶段的里程碑是:(1)70年代:程序设计方法学、结构化分析和设计、抽象数据类型、软件工具;(2)80年代:软件开发方法学、软件工程环境(CASE)、面向对象技术;(3)90年代:软件复用和软件构件技术、软件过程、需求工程。技术并不能唯一保证达到预期的目标和效果,开发单位过程的改善是达到目标的重要因素。但过程改善将导致企业组织、管理方式的改变,需要高层的承诺和长期的投资。21世纪初的软件开发技术20世纪的最后十几年,信息技术范围内最具有深远影响的技术进步是Internet的出现,并迅速发展成为当今世界上覆盖面最广、规模最大、信息资源最丰富的计算机信息网络,深刻地改变了传统的技术以及应用、业务和产业模式,也成为影响21世纪至少初期(前20年)的主要因素。
Internet计算平台具有开放、动态、多变的特征,体现出无统一控制的“真”分布性,节点的高度自治性,节点链接的开放性和动态性,人、设备和软件的多重异构性,实体行为的不可预测性,使用方式的个性化和灵活性,网络连接环境的多样性等特点,也对传统学科提出挑战:传统软件工程基于实体驱动和确定目标、有序控制的开发模式开始让位于Internet下智能软件工程基于协同驱动和动态目标、实体聚合的开发模式。软件开发技术将呈现如下特征:(1)基础平台:网络化(Internet化);(2)应用方式:开放化、服务化;(3)核心技术:主体化、协同化;(4)运行支撑:中件化、多样化;(5)开发方式:复用化、工程化;(6)用户界面:自然化;(7)发展趋势:用户主导。21世纪初的软件过程技术90年代后,随着软件规模日益增大和应用领域的日益广泛,工业化软件生产日益成为朝阳产业而在新的世界经济格局中占领重要一隅。工业化的软件过程技术和质量保障技术,已经成为发展软件产业的重要支柱。软件过程随着软件组织的特点不同和商业目标不同,经常处于动态的调整和定义与重定义状态。所以过程技术必须支持过程的动态定义和过程流的动态重组。软件过程流本质上由工作流组成。过程改善的关键:可以明确标识当前状态,并明确改进的方向。目前国际上软件过程方面代表性技术有:CMM(CapabilityMaturityModel)、PMBOK(项目管理知识体系)、CMMI(CapabilityMaturityModelIntegration);ISO9001(质量管理体系标准)等。软件过程的质量改进通常包括如下步骤:(1)了解开发过程的现状;(2)期望的开发过程的目标;(3)按优先级确定所需的改进工作;(4)形成完成改进工作的计划;(5)分配执行计划的资源;(6)执行和完成计划。以上循环。软件工程定义 虽然有很多作者都给出了软件工程的定义,但FritzBauer[NAU69]在NATO会议上给出的定义仍是进一步展开讨论的基础: 软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。 几乎每一个读者都忍不住想在这个定义上增加点什么。它没有提到软件质量的技术层面,也没有直接谈到用户满意度或按时交付产品的要求,它忽略了测度和度量的重要性,甚至没有阐明一个成熟的过程的重要性。但Bauer的定义给我们提供了一个基线。什么是可以应用到计算机软件开发中的“好的工程原则”?我们如何“经济地”建造软件使得其可靠性高?如何才能创建出能够在多个、而不是一个不同的实际机器上“高效运行”的程序?这些都是进一步挑战软件工程师的问题。 IEEE[IEE93]给出了一个更加综合的定义:
软件工程:(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)(1)中所述方法的研究。软件工程的主要环节软件工程的线性模型软件工程的渐增式模型软件工程模型 最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯,已不再适合现代的软件开发模式,几乎被业界抛弃。偶而被人提起,都属于被贬对象,未被留一丝惋惜。但我们应该认识到,“线性”是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的“非线性”问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。套用固定的模型不是程序员的聪明之举。第一章软件工程基础中国软件企业生命周期模型软件工程基本原理质量管理体系ISO9001项目管理知识体系PMBOK软件能力成熟度模型集成CMMI软件过程管理标准化国内动态软件企业发展趋势图到达A点的条件产品定位准确有一个创业团队最低的资金投入到达B点时的表现内部管理瓶颈创业团队的决策问题有限空间内的市场竞争加剧发展时间到达A点:一两年即可,可以叫创业期A->B点:3、5年,企业在B点很容易死掉,老板可能还不知道是怎么死的B点时重点解决的是内部管理问题,包括决策的流程化。第一章软件工程基础中国软件企业生命周期模型软件工程基本原理质量管理体系ISO9001项目管理知识体系PMBOK软件能力成熟度模型集成CMMI软件过程管理标准化国内动态软件开发中存在的问题硬件的发展一直超过软件,难以发挥硬件的所有潜能建造新程序的能力远远不能满足人们对新程序的需求,同时开发速度不能满足商业和市场的要求计算机的普遍使用对可靠性要求越来越高,如果软件出错,会造成巨大的经济损失,甚至可能给人类带来灾难拙劣的设计和资源的缺乏使得我们难以支持和增强已有软件为什么?为什么需要那么长时间才能结束开发?为什么成本如此之高?为什么我们不能在把软件交给客户之前就发现所有的错误?为什么在软件开发过程中难以度量其进展?从软件企业生命周期模型来看,这些为什么能否解决好,关系到一个企业生命的长短。软件的特征软件特征一
软件是由开发或工程化而形成的,而不是传统意义上的制造产生的。虽然在软件开发和硬件制造之间有一些相似之处,但两者本质上是不同的。这两者,都可以通过良好的设计获得高质量,但硬件在制造过程中可能会引入质量问题,这种情况对于软件而言几乎不存在(或是很容易改正)。软件成为产品之后,其制造只是简单的拷贝而已;两者都依赖于人,但参与的人和完成的工作之间的关系不同;两者都是建造一个产品,但方法不同。软件成本集中于开发上,这意味着软件项目不能象硬件制造项目那样来管理。软件特征二
软件不会“磨损隐藏的错误会引起程序在其生命初期具有较高的故障率。但这些错误改正之后(我们假设理想情况下改正过程中并不引入其他错误),曲线就趋于平稳。软件不会磨损,不过它会退化在其生命期中,软件会经历修改(维护),随着这些修改,有可能会引入新的错误,使得故障率曲线呈现为锯齿形。在该曲线能够恢复到原来的稳定状态的故障率之前,又需要新的修改,又引起一个新的锯齿。慢慢地,最小故障率就开始提高了——软件的退化由于修改而发生了。软件特征三
大多数软件是自定的,而不是通过已有的构件组装而来的。我们先看一看一个基于微处理器的控制硬件是如何设计和建造出来的。设计工程师画一个简单的数字电路图,做一些基本的分析以保证可以实现预定的功能,然后查阅所需的数字零件的目录。每一个集成电路(通常称为“IC”或“芯片”)都有一个零件编号、固定的功能、定义好的接口和一组标准的集成指南。每一个选定的零件,都可以在货架上买到。而软件设计者就没有上述这种荣幸了。几乎没有软件构件。有可能在货架上买到的软件,它本身就是一个完整的软件,而不能作为构件再组装成新的程序。虽然关于“软件复用”已有大量论著,但这种概念的成功实现还只是刚刚开始。软件工程7条基本原理1、按照软件生命周期的阶段划分制定计划,严格依据计划进行管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组的人员应该少而精7、承认不断改进软件工程实践的必要性软件过程概念:当开发产品或构建系统时,遵循一系列可预测的步骤(即路线图)是非常重要的,它有助于及时交付高质量的产品。软件开发中所遵循的路线图就称为“软件过程”人员:软件工程师及其管理人员根据需要调整开发过程,并遵循该过程。除此之外,软件的需求方也需要参与过程的定义、建立和测试重要性:软件过程提高了软件工程活动的稳定性、可控性和有组织性,如果没有过程约束,软件活动将失控并变得混乱。但是,现代软件工程方法必须是“灵活的”也就是要求软件工程活动、控制以及文档的编制适合于项目团队和要开发的产品。软件过程(续)步骤:采用的过程依赖于所构造软件的特点。工作产品:从软件工程师的观点来看,工作产品就是过程定义的一系列活动和任务的结果,即程序、文档和数据。质量保证措施:有大量的软件过程评估机制,开发机构可以评估其软件过程的“成熟度”。然而,评价所采用过程的有效性,最好的指标还是所构建产品的质量、适时性和长期生存能力。CMM——CapabilityMaturityModel,能力成熟度模型;CMMI——CapabilityMaturityModelIntegration,能力成熟度模型集成;PM——Projectmanagement,项目管理;PMBOK——(AGuidetotheProjectManagementBodyOfKnowledge——项目管理知识体系指南)三种产品质量管理的标准体系第一章软件工程基础中国软件企业生命周期模型软件工程基本原理质量管理体系ISO9001项目管理知识体系PMBOK软件能力成熟度模型集成CMMI软件过程管理标准化国内动态ISO9001简介ISO9001规定了企业质量管理体系的基本要求,它是通用的,适用于所有行业或经济领域,不论其提供何种类别的产品。最新版本是2000版。ISO9001质量管理8原则以顾客为中心。高层管理者推动。全员参与。采用过程方法。系统的管理。持续改进。基于事实的决策。互利的供方关系。建立和实施质量管理体系的步骤:确定顾客的需求和期望;建立企业的质量方针和质量目标;确定实现质量目标所必需的过程和职责;对每个过程实现质量目标的有效性确定测量方法;通过测量,确定每个过程的现行有效性;确定防止不合格项并消除产生原因的措施;寻找提高过程有效性和效率的机会;确定并优先考虑那些能提供最佳结果的改进;为实施已确定的改进,对战略、过程和资源进行策划;实施改进计划;监控改进效果;对照预期效果,评价实际结果;评审改进活动,确定必要的纠正、跟踪措施。ISO9001简介(续)过程方法任何“得到输入并将其转化为输出”的序列活动均可视为过程。为使组织有效运行,必须识别和管理许多内部相互联系的过程。通常,一个过程的输出将直接形成下一个过程的输入。系统识别和管理组织内所使用的过程,特别是这些过程之间的相互作用,称为“过程方法”。ISO9001标准鼓励采用过程方法建立和实施质量管理体系。ISO9001简介(续)质量体系文件的分层结构质量手册:质量体系文件中的纲领性文件。阐明公司质量方针、质量目标和质量策略;描述影响和参与质量活动的部门、岗位职责、权限和相互关系,同时概要描述了质量体系的主体文件即程序文件(规程)。程序文件:质量手册的支持性文件,具体描述质量活动各个过程、子过程以及各阶段中所采取的措施和必需遵循的流程。规范和指导书:结合公司的具体情况而颁布的各类技术规范、工作条例及其配套考核细则。表单模板:包括质量记录模板、文档模板等。某IT企业的质量体系示例第一章软件工程基础中国软件企业生命周期模型软件工程基本原理质量管理体系ISO9001项目管理知识体系PMBOK软件能力成熟度模型集成CMMI软件过程管理标准化国内动态项目基本属性 项目,是在限定时间内、利用有限的资源、为完成有一定质量要求的目标而进行的一系列有序活动的一次性组合。 充分认识项目属性,有利于做好项目管理。 项目的基本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津舞台喷泉施工方案
- 建筑施工方案分类
- 调料品税务知识培训课件
- 合同范例 购销合同
- 合肥搬家合同范例
- 只有金额合同范例
- 买卖他人按揭房合同范例
- 特殊学生支持与帮助方案计划
- 强化数据保护与隐私管理计划
- 全院综合评估与自查报告计划
- GB/T 26076-2010金属薄板(带)轴向力控制疲劳试验方法
- 2023年沈阳职业技术学院单招数学模拟试题附答案解析
- DSA室的手术配合教学课件
- 人教版四年级下册音乐第四单元《凯皮拉的小火车》优质教案
- 三调土地利用现状分类和三大地类对应甄选
- 房地产合约规划分类明细
- 八年级物理(上册)知识点整理 (2)
- 新冀人版小学科学三年级下册全册教案(2022年春修订)
- 高中物理万有引力定律知识点总结与典型例题
- 吊装平台施工方案
- 粱、柱、板截面取值原则最终
评论
0/150
提交评论