软件过程改进,就是在
软件过程工程中为了更有效地达到优化软件过程的目的,同时改善或改变其软件过程的一系列活动。
简介
对于
软件企业来说,软件过程是整个企业最复杂、最重要的业务流程,软件产品就是软件企业的生命,改进整个企业的业务流程,最重要的还是要改进它的软件过程。多年以来,人们认识到要想高效率、高质量和低成本地开发软件,必须以改善软件生产过程为中心,全面开展
软件工程和质量管理手段。这是世界各国
软件产业都要走的路,中国软件产业之所以落后,不是因为技术落后,而是对软件生产的管理落后。
CMM就是结合了质量管理和
软件工程的双重经验而制定的一套针对软件生产过程的规范。由此可见,对软件
生产过程的管理在整个
软件企业的管理中起了决定性作用。因此,从这种意义上讲,软件企业的BPR和CMM软件过程改进在实施对象是一致的。
在世界范围内,软件项目需求正以非常快的速度增长,并且这种增长看起来还远未达到目的。这种增长已经导致软件开发活动急剧性的增长,已使得对用于构筑软件的过程,正确的说法是软件过程,得到更多的关注。软件过程可以定义为人们用来开发和维护软件以及相关产品(如:工程计划、设计文档、规章、检测事例及用户手册)的一组活动、方法、实践及转换。软件过程重要性的提高已经引起了对软件过程改进的要求,这就需要过程分析和评估的方法。
原则
SPI的五条核心原则分别是:
1·注重问题 2·强调知识创新3 ·鼓励参与 4·领导层的统一 5·计划不断地改进。
“问题的解决是过程改进的核心,实践不仅是SPI组的目标也是它的起点。”这条原则为过程改进人员指明了目标,明确了方法。SPI就是要在实践中发现软件过程中的问题,并在实践中寻找和找到解决问题的办法,可以说过程改进就是在不断发现问题和解决问题的过程中不断向前发展。
“改进是一种知识的创新,SPI是受知识的驱动的”。这条原则强调了知识创新在SPI中的作用,提醒了SPI人员在注重知识创新的同时更要注重知识的传播和扩散。
通常从事SPI工作的做法是,过程改进仅仅是过程改进人员的事情,其他人员只是被动地接受。而“合作促使改进产生”这条原则给予了我们很好的启发和提示。它告诉我们,过程改进不仅仅是一个人或几个人的事情,而是整个组织的事情。只有鼓励大家都积极参与,让这些人基于自身的经验和职业的判断力来实实在在地设计和开发新的过程,才能使设计出来的过程真正为他们所理解,为他们所用,从而实现过程的成功。这也是我们在过程改进工作中容易疏忽的地方。
“SPI的关键点在于改变软件开发的方式。然而,改变人的行为并不是件容易的事。”这条原则分析了我们在这项工作中可能会遇到的困难和阻力,本书中也不忘为我们提供了如何克服这些问题的可行方法、建议和实例。
“改进必须是综合了各个层次的人的力量。”SPI人员一定要保证SPI的目标与组织的整体目标是一致的,因为只有这样才能保证SPI工作得到各个领导层的赞同、支持和投入,才能综合利用各个层次的力量来推动SPI工作的前进。这是预防过程改进
项目风险的重要手段。
“改进应该是一个不断持续的过程。”这一原则进一步提示和告诫SPI人员一定要认识到改进的不断持续的特性。到达顶点并不重要,关键的是,你现在处在一个上升??达一个目标你就创造了另一个更高的目标,这个目标对我们的过程和环境都具有重要的意义。
必要性
SPI的最根本利益其实在于,他能够极大的提高项目成功的几率,这是大家都追求的。当然需要明确定义这里的“项目成功”的含义,不是客户要求三个月完工,最后按时交工,就是成功。而是综合平衡进度、交付后质量、成本等若干要素后所达到的最优状态。 ;在项目管理三要素中,
项目干系人通常会把进度当作第一目标,结果相当多赶进度完成的项目,在交付后面临者大量的后续修改,甚至推翻重来。如果把这部分开销算到项目中去,项目早已失败的一塌糊涂了。
对大量失败项目的统计结果表明,最大的原因在于缺乏过程或者没有很好的遵循已定义的过程。我们知道决定项目质量和生产率的要素有人、技术和过程,如果借用木筒的比喻,过程不见得是其中最宽的一条,但是当前它是最短的,所以它决定着木桶的盛水量。我们迫切的需要SPI,就是要把最短的木条尽快补上去。
只有基于良好的过程,人和技术才能发挥出最大的威力。
框架
软件过程改进的框架包括以下几个组成部分:
(1)软件过程基础设施
它包含组织管理基础设施和技术基础设施,可为软件过程改进的活动提供必要的条件和支持。
(2)过程改进路线图
它应提供表明有效软件过程特征的模型,以及逐步达到有效软件过程的途径,软件组织依靠路线图的指引可以朝着有效软件过程前进。事实上,
CMM(
软件能力成熟度模型)和SPICE提供的成熟度等级都属于这种路线图。当然,软件组织从自身的实际情况出发对这些模型所作的裁剪版本,只要是适用的也应看成是过程改进路线图。
(3)软件过程评估方法
它是评估软件组织现行和现用的软件过程、做法和基础设施的方法和技术。评估通常要对照过程改进路线图,评估的结果要能表明,从提高过程有效性方面看哪些是强项,哪些是弱项。改进措施应能导致过程成熟度沿着改进路线图提高过程成熟度。过程评估方法可以是公开适用的标准方法,例如
SEI评估方法即基于CMM估价的内部过程改进CBA—IPI(CMMfbased appraisal for internal process improvement)或BOOTSTARAP方法,也是按SPICE规定的准则进行内部评估。
(4)软件过程改进计划
评估后把发现的问题转化为软件过程改进的行动计划。这包括为改进过程基础设施以及提高其有效性必须采取的措施,过程改进应能使改进的过程规范化并提高过程的有效性。
改进方法
按照软件工程化的原则和方法实施软件过程管理是软件行业快速发展的一个重要原因。在这里,软件过程改进是指对软件过程管理进行不断改进和完善的活动。它是一项综合并且需要持续开展的活动,它所面对的既是软件开发的过程模型,同时也是针对每一个具体软件项目的过程实例。
根据过程改进的
驱动方式(目的)的不同,可以将软件过程改进划分为目标驱动和缺陷驱动两种方式。目标驱动的过程改进模式是指根据一个预定的目标,自顶而下制定过程评价和度量模型,有目的地开展相关改进活动的过程改进模式:缺陷驱动的过程改进模式是指根据实际产生的关于过程缺陷的反馈信息,进行有针对性的改进活动的过程改进模式。
目前软件行业实行的软件过程改进方法大多属于以上两种类型。
改进步骤
不断改进软件开发过程是软件工程的基本原理之一。也就是说软件过程需要不断完善,从非工程化的软件开发方式转变为工程化的软件开发方式,按照软件工程的系统方法进行软件的工程活动和管理活动,不断完善软件过程的各个环节,提高软件过程能力。随着软件过程能力的提高,一个软件机构在完成软件产品时在预算、进度、产品质量方面的风险能够不断降低。
无论哪一种软件过程改进方案的实施都要从已有的软件过程开始,改进工作需经历一系列步骤。过程改进的步骤需要反复进行。
(1)过程分析
考察和理解现有的过程,在一些情况下需要对过程的某些环节进行度量和定量分析,利用取得的数据来表明过程的状况。同时,这些数据可以用来与过程改进后的状况进行对比。
(2)确定改进
利用过程分析的结果,找出原有过程中质量、进度和成本的瓶颈。针对发现的问题,制定过程改进方案,提出需要采用什么规程、方法和工具的建议。
(3)过程变更
实施过程变更,把新的规程、方法和工具安置于合适的过程环节上,并且与其他的软件过程活动集成起来。
(4)培训
没有培训的过程变更在大多数场合注定要失败。有的单位在培训工作不够充分的情况下,强制推行过程变更,这样做不会收到好的效果。
(5)调整过程变更
在初步实施过程变更后,不可能立即收到圆满的效果,在过程修改后还可能会出现一些小的问题,这就需要进行适当的调整。此外,同时引入太多的变更是不切实际的。