对软件研发项目管理的深入探讨
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对软件研发项目管理的深入探讨
第一章简介
1.1研究背景
我之前曾在厦门一家中等规模(合计开发人员50人)的软件公司担任项目经理,开始由于对软件工程的不怎么重视,些失败的软件项目给我留下了极深的映象。在失败和困惑中,我们开始反思,也总结了一些经验教训。后来,我们在开发过程中引入了
MSF(Microsoft Solutions Framework)软件开发模型,并结合公司的具体情况进行了裁减。实践证明,我们的软件工程过程管理能力大为提高,软件的质量也有较大程度的提高,软件的交付期也得到了基本保证,已经没有再发生那种永远也完不成项目”的情况。
1.2研究动机
在这篇文章中,主要谈论了在产品开发中的项目管理问题,此处的产品开发”是指做一个通用的软件产品或者一些具
体的领域性系统集成项目。下面我主要结合我们公司实施MSF的情况,谈谈自己对软件工程的一些初步看法。
第二章MSF概要介绍
MSF主要由几个模型构成,其中包括:组队模型、开发过程模型、应用模型、风险管理模型。下面只对组队模型进行较详细的介绍,其他模型则简要说明,更详细的资料请查阅[2]。
2.1组队模型
MSF把软件开发分成了六个小组,分别是:程序管理组、产品管理组、开发组、用户培训组、测试组、安装管理组。
组队的原则是小队(一般3-8人)、多侧面;角色交叉、目标一致;人员技术、业务精;关注能力和交货期;对项目的前景认识一致;人人参与设计;善于总结经验;共同管理、共同决策,项目人员同地工作等。
程序管理组的工作是:
①推动开发过程;
②负责产品规范说明;
③沟通和协调各组关系;
④管理项目进度,报告项目状态;
⑤把握总体决策。
产品管理组的工作是:
①代表客户(customer);
②描述项目产品轮廓
③负责需求定义;
④平衡功能和进度要求;
⑤负责市场、宣传、公共关系等。
开发组的工作是:
①概要、详细设计;
②完成产品开发;
③准备安装的产品。
测试组的工作是:
①制定测试策略和计划;
②尽可能发现问题。
用户培训组工作是:
①代表终端用户(end user);
②负责用户需求定义;项目管理者联盟文章
③把握可用性和用户性能指标。项目管理培训
安装管理组工作是:
①负责产品安装;
②把握可管理性和可支持性。项目管理培训
各组的地位同等,非领导关系,并充分授权,保证目标清晰一致,由各组的负责人共同管理项目。项目管理者联盟
2.2过程模型项目管理者联盟文章
MSF过程模型主要确立了四个重要的里程碑:前景范围确认、项目规划确认、开发完成、对外发布,通过控制这四个里程碑来分解管理项目过程。
2.3应用模型项目管理论坛
MSF应用模型是分层次的应用模型,大体可分为三层,用户层、业务层和数据层,各层次通过标准组件进行封装,互相通讯调用来完成系统任务。项目管理论坛
2.4风险模型
MSF风险管理过程主要包括:风险识别、风险表述,通过分析、计划、跟踪和控制过程,最终解除风险。
第三章MSF在项目中的具体应用项目经理圈子
3.1组队模型裁减
在中小软件企业中,一般项目的规模不会太大,通常是十几个人,少的只有几个人,所以必须对MSF的组队模型进
行简化。通常的做法是划分成三个组,程序管理组:一般对应于原来的项目经理,通常就项目经理一个人,如果需要还可以给他配个组手,通常称为项目秘书”产品管理和测试组:一般包括MSF中的产品管理组,测试组、用户培训和安装
管理,主要代表用户确定软件需求并测试产品是否满足需求;开发组:和MSF的开发组相同。这样的组队,比较符合中
小项目的需要,在实践中也证明是比较合理的。
首先,确立项目经理角色,符合一般公司的管理模式,比较容易被接受。如果有多人同时负责的话,容易产生责权理
不清楚,互相扯皮的现象。有一个项目经理对项目完全负责,遇到问题容易很快得到解决;他作为项目组代表,负责向上
级汇报工作,能使其他人全力投入到项目中,而不至于在日常的事务中耽误太多时间,从而在某种程度上也提高了工作效率。项目管理者联盟
在原来的很多项目中,大多都没有设置产品管理角色,他的工作一般由项目经理兼任。这样的做法已证明存在很多问题,会使项目经理精力分散,而且产品管理的任务和项目的日常管理工作也不大相同,如果叫一个人负责,怕两头都顾不上搞不好。在产品管理组中,根据项目的大小,可以设置两个负责人,一个代表用户确定需求,另一个主要负责测试,但由前一个负总责。因为只有用户代表认可了的产品品质,才是真正可以交付的品质。
产品管理经理(以下简称产品经理)是项目中非常重要的角色,他可以对技术不是很精通,但是必须对产品所服务的领域非常熟悉,最好是领域专家,在他的带领下,项目才不至于偏离预先设定的前景范围。他必须对产品的需求能作出很好的把握,在适当的时候能进行流程重组,对产品的可用性和易用性有最终决定权。根据我们的经验,通过设定产品经理,主要的感觉是产品受用户的欢迎程度增加了,无用的特性少了,因而也更容易成功。
根据我们的经验,这样组建的开发团队既有助于提高工作效率,又能保证有良好的产品质量。没有设置产品管理角色的团队最容易产生的问题是开发人员往往喜欢凭他们的主观臆想来设定产品的某些功能,最终导致产品易用性极差,不容易为用户所接受。
3.2软件过程管理
MSF开发过程总的来说是一个基于里程碑的,迭代的,风险驱动的过程。一般遵循如下原则:
①进度计划留有余地;项目管理培训
②通过风险管理减少不确定性因素;
③通过快速原型法尽可能使产品稳定和可预测;
④缩短生命周期;
⑤重视创新使资源和性能效率最大化;
⑥拆分大项目等。