从需求入手建立并推广过程体系
从需求入手建立并推广过程体系
软件业在中国是一个年轻的行业,当前国内软件行业整体面临企业管理水平如何上层次上台阶的问题,而企业导入推广软件能力成熟度模型(CMM或CMMI)体系是提升管理水平的有效途径。为此,在各级政府的大力关心和支持下,国内大大小小的很多企业都准备进行、正在进行或已经完成了CMM或CMMI的评估。这其中大多数企业以切实提高质量管理水平及以提升国内国际竞争力为目的,当然也有少量企业存在跟风的现象。上海互联网软件有限公司(以下简称“上海互软”)深刻意识到CMM体系是代表软件行业“先进生产力”的,公司高度认同在分析了企业自身存在的问题后,通过CMM或CMMI的运行来改变现状的企业管理发展之路,根据企业目前实际,公司选择首先通过过程改进达到CMM L3水平,同时也提出了“强化内功,持续改进”的过程改进指导原则,力求CMM体系在提升公司管理水平方面发挥实质性作用。
众所周知,过程改进强调的是企业的管理和软件开发过程的管理,虽然它是一个持续的过程,是一条没有终点的道路,但是每一次所改进的目标和任务是明确的,因此非常符合一个项目所应具备的相关特征。因此,以项目的形式管理过程改进是最佳的选择途径。
一、需求分析
组织过程改进需求的获取方式与软件项目基本上一样,软件过程改进组(SEPG)通常采用访谈、问卷调查、头脑风暴等方式来了解当前状态与目标状态的差距,比如主任评估师的差距分析、中间检查等。需求获取后应及时的进行分析,并参照组织的年度商务目标制定过程改进目标(决定需要改进那些差距,需要改变到什么程度)。
1、当前状态
要找出什么是当前状态,就要进行对目前软件过程的评估。评估的方法有很多,最简单的就是一组熟悉本机构的日常开发运作的人员在一起讨论并总结出来。在这里,可借助SW-CMM的评估问卷办法。实质上,评估问卷中的问题,就是把各关键过程域的各细则内容,加上“有没有做到”、“有没有建立”、“有没有执行”等字段组成,并没有什么神秘之处。
2、目标状态
目标状态即组织“想要达到的状态”。具体是指软件过程的状态。如果一个机构决定采用SW-CMM框架为蓝本作参考的话,就可以基于它的各个关键过程域(KPA ),制定出符合自己机构及产品特点的目标状态。
3、决定要改变哪一些差距
对于差距要进行分门别类。例如:“最薄弱的环节”、“最需要改进的环节”,“最易做到而又有显著收效的改进”,在有人力,财力和时间等条件进行时各企业机构要按自己的实际情况决定先改进什么后改进什么。
4、要改变到什么程度
改进是在不断进行的不能一蹴而就,因此制定短期目标就是保证每一次的改进达到所要求的程度。
5、制定行动计划
计划是行动的指南,需求确定后,SEPG Leader应组织SEPG分析从公司各个层面获取的过程改进需求,并结合公司的商务目标制定本次过程改进目标,根据本次过程改进的目标制定一份详细的过程改进计划
二、体系设计
过程改进计划确定后,公司的过程改进组应根据制定过程改进计划来规划组织的过程数据库,即组织标准软件过程(OSSP)。OSSP的设计方法与一般的软件项目的设计方法一样:概要设计、详细设计、度量设计,分别输出三类文档:总体文档、过程文档、支持文档。三者的关系如下图所示。

总体文档描述系统总体,指出系统设计依据、总体目标、方针、策略和系统概貌描述;在ISO9000体系中称为质量手册;过程文件描述具体的活动、谁、什么时候、做什么事,这是系统的主体部分;支持文档的种类非常多,提供具体的方法、规范、模板和工具。比如“编码规范”、“体系操作指南”、“软件开发计划模板”。
1、体系概要设计
体系概要设计主要是OSSP的体系架构设计,它可以极方便的让使用者快速把握系统概貌。结合本公司的具体特点,产品的生命周期(HLW_SLC模型)被划分为3个阶段,分别为:
² 商务提案阶段
² 生产部署阶段
² 系统维护阶段
在HLW_SLC模型中,软件项目的过程有三大类:项目管理过程、软件工程过程和机构支持过程。上述三类过程可以细分为19个主要过程域,分布在商务提案、生产部署、系统维护等三个阶段中。
项目管理过程包含7个过程域,分别为:
² 项目承接
² 立项管理
² 结项管理
² 项目规划
² 项目监控
² 风险管理
² 需求管理
软件工程过程包含8个过程域,分别为:
² 需求开发
² 系统设计
² 实现与测试
² 集成测试
² 系统测试
² 发布部署
² UAT验收
² 技术评审
机构支撑过程包含4个过程域,分别为:
² 配置管理
² 质量保证
² 培训管理
² 系统维护
HLW_SLC模型如图所示。HLW_SLC模型的主要特征和优点有:
² 直观的过程模型
HLW_SLC模型将项目管理、软件工程、机构支撑所包含的工作划分为相对独立的三类过程,各个过程域之间的关系直观明了。这样,机构领导、项目经理、开发人员、测试人员、质量保证人员等人根据HLW_SLC模型,很容易知道自己“应该在什么时候、按照什么规范做什么事情”。所以HLW_SLC模型有助于使机构内的各个职能单位有条不紊地开展工作。
² 容易裁剪与扩充
HLW_SLC模型的三类过程贯穿了产品的整个生命周期,19个最常见的过程域都合理地安排在产品生命周期中的某些阶段。用户可以根据自己产品的特征,适当地裁剪或扩充HLW_SLC的过程域,能够容易的制定出适合于其产品的过程模型。
HLW_SLC模型
2、体系详细设计
体系的详细设计阶段需要实现概要设计中所规划的一系列过程,它主要用来指导每项工作任务的具体操作流程。在每个具体的流程文件中会描述各角色在什么时间应该做什么事情,以及该事情应该如何具体的去执行。而且每个过程都有着非常标准的模板。
² 目的:制订过程的目的
² 适用范围:过程所适用的工作领域
² 术语:与文档有关或文档中涉及到的术语
² 角色和职责:所有涉及人员的角色和职责
² 进入准则&输入:进入过程所涉及工作领域的前提条件和所需工作产物
² 活动:过程所涉及的工作任务及其说明等。
² 退出准则&输出:退出过程所涉及工作领域的必要条件和应提交的工作产物
² 验证:通过某种方式的验证确保活动正确执行
² 度量:过程所要求的度量事项
² 裁减:过程所允许的按照项目管理级别裁剪的要求
3、度量设计
度量设计常采用所谓GQM方法,即goal-question-measurement,goal同样是从诊断得出的需求,通常需要优先采集的度量数据包括:代码缺陷、进度跟踪数据、开销跟踪数据。
以下两例显示GQM的使用方法:
² 样例一:有关缺陷的度量设计
G:能否有重点的消除缺陷
Q:缺陷数据是否被记录
缺陷数据是否被分析
M:文档:评审报告
代码:问题报告单
² 样例二:对SQA工作量度量的设计
G:了解SQA的开销,最终统计新增管理活动的费效比
Q:是否知道SQA过程审计的开销?
是否知道SQA参与评审的开销?
是否知道SQA进行培训的开销?
M:审计CHKLST
同行评审报告
培训签到表
度量设计的输出将体现在各类工作表单、过程数据库中,而度量总体的描述可以纳入总体文档中,方便阅读者把握全局。
组织标准软件过程(OSSP)中的每一份工作产物在经过体系设计并通过专家评审后,则标志着该项工作产物定制阶段的结束,即可进入该工作产物的试点推广环节。
三、体系推广
CMM推广实施的基础是质量管理体系的建设,但体系的建设应注重理论与实践相结合,并推动各级员工积极参与。质量管理体系的建设不是闭门造车的过程,必须从实践中来,到实践中去,只有这样才能更好地让过程改进发挥出其应有的作用,才能真正体现它的价值所在。
体系推广是一项非常重要的工作,它的目标非常明确就是要让公司里的各级员工接受并遵照OSSP的各项流程很好的协同工作。因此体系推广阶段过程改进工作组的工作就是交流、交流、再交流,培训、培训、再培训。
1、建立有效的沟通渠道
企业在实施改进的过程中,遇到的阻力来自方方面面。增强正向的推进力,弱化逆向的阻力,对于过程改进的成功至关重要。为了实现这一目标,企业各层面之间正确的沟通与协调起着决定性作用,这就需要对项目进行有效的沟通管理。
项目经理是沟通项目层和管理层的桥梁,是项目沟通的焦点所在。对于CMM的贯彻实施起着承上启下的作用。贯彻CMM不能奢望全体人员从一开始就一致拥护,但是项目经理的积极参与、并与各层面有效沟通,却是非常必要的,这在很大程度会增强企业整体推进CMM实施的动力。
CMM实施的内部动力主要来自两方面:高层经理和项目经理。高层经理通过资源和政策驱动,项目经理以实际问题驱动。项目经理首先应该明白过程改进的意义,认识到过程改进工作正是为项目服务的,是项目能够顺利进行的可靠保证。而不是单单被动的服从高层经理的安排和质量经理的规划,而且应该把这种认识通过正确的沟通方式,源源不断的传给项目层,并影响客户等其他层面。从而使项目层成为推进CMM实施的动力。
CMM实施的过程是打破旧平衡,建立新平衡的过程,在这期间体系会相对混乱,对正在进行的项目会产生某些负面的影响。最直接的表现就是会带来额外的工作量,产生很多事务性管理工作,这样容易使相关人员产生抵触情绪。有效的沟通就显得越发重要。项目经理应敏锐的发现项目进行过程中开发人员的这种现象,并及时地的沟通予以控制,并着重指出过程改进给项目、企业带来的益处,让成员看到希望,使其先坚持下去,最大程度地避免这种情绪的僵化和蔓延。只要是真正的实施过程改进,项目组成员会在潜移默化中体会到CMM的益处。随着时间的推移,当看到项目质量不断地提升、工作状态日趋规范和稳定,开发人员逐渐会发自内心地支持这种过程改进。
在CMM环境下,项目管理的目的同样是实现既定项目目标。在这个过程中,一般认为把计划做得详实、细致,在项目实施时严格控制,项目就能取得成功,这其实是项目成功的基本条件。据统计,在项目进行过程中,有70%以上的失败项目,不是因为计划不周详,也不是控制不到位,而是因为项目某些资源无法及时、充足利用。而这直接与沟通不利有关。项目经理在管理过程中一定要花至少75%以上的时间来与项目各方干系进行协调和沟通,得到他们的理解和支持。真正做到这一点,项目也就成功了一半。
总之,有效的沟通管理会不断地增加变革动力并消除阻力,是企业实施CMM过程改进的动力源泉。
2、充分发挥QA的作用
QA与项目的接触较为频繁,也是CMM体系运行的一个重要角色。QA承担着老师、医生、律师、警察等多种角色,也起着承上启下的桥梁纽带作用,充分发挥QA的作用对于CMM的成功实施具有重要意义。
因而QA人员的选择也对企业成功实施CMM有很重要的影响。一般来说,QA应熟悉企业的质量管理体系及标准,有项目实施经验,掌握QA的工作方法,并具有较强的沟通能力和良好的配合意识。SQA人员在日常工作中应注意深入项目,识别关键控制点,注意观察异常现象,提高预警能力,并根据实际需要开展质量工作,争取在局部先有所突破,进而一步步地扩大。采取灵活多样的方式密切接触开发人员,通过有效的沟通来开展质量宣传,多方了解反馈意见,促使自己的工作。
3、工具支持
一般企业在实施CMM的开始阶段,都会组织专门的人员按照CMM的要求制定本公司的方针、过程、规程、模板。然后进行评审和修订并将这些流程和模板对外发布,提供给项目组使用。对于规范类的内容在执行过程中通常会遇到一个问题,规范在制定以后往往得不到正确和有效的执行。解决这个问题,有些企业靠行政手段,有些企业靠项目经理、QA人员去监督。然而规范是死的,人的思想是千变万化的,如何让CMM真正深入人心,则不是一蹴而就的事情,要靠企业文化的沉淀。
而工具可以固化人的思想,约束个人行为,它可以辅助OSSP中的各项规范得到正确和有效的执行。软件过程管理的信息化是坚持持续过程改进的必经之路,否则便是一纸空谈。以下是软件过程管理的信息化给我们带来的各项好处。
² 提供了一个项目组协同工作的软环境,较少协调的工作量,可以大大提高项目组的工作效率;
² 起到强制实施CMM的效果。组织定义的规范的执行不靠开会督促,而是直接转化为项目进行过程中的自动操作和记录;
² 减少了人为管理、监督的工作量。项目经理的跟踪监督大部分基于工具提供的数据,减少了人为监督的活动;
² 便于数据采集。CMM强调项目数据的采集和积累,通过CMM辅助工具可以自动的进行过程数据的采集;
4、建立案例库
建立组织的案例库主要出于两方面考虑: 一是存储对组织内的项目可能有用的过程文档,特别是与组织标准软件过程相关的文档; 二是在全组织范围内共享所存储的文档信息。该库中包含一些实例文档和文档片断,对未来项目在裁剪组织标准软件过程时提供参考。由于能提供成功项目的例子作为起步点,该库可以帮助组织减小启动一个新项目所需要的工作量,因而该库是组织的一个重要资源。
案例库中通常包括组织的程序文件和项目的过程文档的优秀实例,还可以包括一些技术资料或培训资料等。为此,组织需要预先定义好文档库的内容结构,并在录入文档时,建立其索引和简要说明,指导后续项目进行参照和使用。对于项目的过程文档的收集,可在项目结束时推荐优秀文档,例如项目计划,里程碑评审报告等,经过审核后由相关负责人放入组织的文档库中。
建立健全的组织案例库是SEPG小组工作的一个重要组成部分。在组织标准软件过程中包括许多输出产品的模板,那么,如何正确有效地使用这些模板就成为推广工作的一个难点,除了培训和咨询工作外,如果能够提供一些优秀实例供项目人员参考就能达到事半功倍的效果。另外,还可以利用文档库存放组织的各种技术文档,积累组织的技术财富。
四、体系验收
在整个体系的推广过程中,过程改进组要定期组织评审组对体系的运行情况进行评测,检验是否完成预定目标,并根据评审的结果及时地调整改进策略及改进方向。验收的方式一般有两种:内部评审、正式评估。但正式评估的费用比较昂贵,建议一般的企业再拿到CMM的通行证后,尽量多的采用内部评审。
1、内部评审
定期组织公司内部的过程改进专家,严格、认真地按照CMM规范评估过程,对公司现有项目的软件过程进行评审,并找出软件开发过程中的不足。
2、正式评估
由SEI授权的主任评估师领导的评估小组,参考CMM框架来进行,主要审查正在使用和将来使用的文件/文档,访谈不同项目组成员,并找出软件开发过程中的不足。
内部评审或正式评估结束后,SEPG要及时的统计分析过程改进中搜集的各项数据,比如SPI本身数据、进度、开销、偏差等,并将分析的结果上报给公司管理层,以确定下一步的过程改进目标。
“痛并快乐着”,过程改进之路是一条艰辛之路,同时也是一条收获之路,只有好好把握,才能有效提高公司在企业管理和软件开发过程管理方面的管理水平,才能有效提升公司产品和服务质量,才能真正实现过程改进给企业带来的巨大效益。
以上是上海互软已走完和正昂首阔步的过程改进之路。当然每个企业所处的环境不同,解决问题的方式也会不一样,因此每个企业应根据自身特点,不断地进行阶段性的总结来使企业或各项工作发挥出更大的效力,从而使企业得到提升、发展和壮大。
SoftwareSnake 2006.3
浙公网安备 33010602011771号