软件开发外包管理

 

如何选择外包商

1.公司规模

a)     具有一定规模的公司才有可能具有全面的软件开发能力,有客户需要的各类技术高手。

b)     接触过的企业比较多,才有可能接触过很多的项目,积累丰富的经验。可以将其他公司行业知识或是系统架构方面的经验进行分享。

c)     公司的声誉,财政状况,招工吸引力等,以保证项目期间无经济困扰,在软件人才频繁进出的情况下,有能力招募高手,有钱不断培训新人,从而力保高水平完成外包项目。

d)     后续服务的保障性。基本上,我们希望的厂商都是要能够长期合作的,毕竟默契跟关系是需要长期培养的,万一厂商规模太小,忽然有一天消失了,重新找厂商以及试运行项目又会是一个不太愉快的过程,更别说以前项目的维护工作可能没法得到保障了。

2.规范化。

a)     如果一个企业做得比较规范,我们会认为他们更可信。

b)     项目管理能力:

l      厂商使用的方法论是否完整;

l      是否经历过大量项目的检验;

l      是否运用数字化的管理工具;

l      是否有明确的KPI;

l      是否取得国际级的认证,如 CMMI;
比如说获得CMMI 的认证,在国内好像也没听说过谁是真的过不去的,毕竟这个对培训机构来说也是一种商品化后的服务项目,我的回复一向是:“是的,但是过了总比没过的好,总是多加了一份保障。”

3.价格:至于价格当然是越少越好,但不是要考虑的第一要素。Total cost 的概念,包括项目的整体成本,以及后续需要维护的人员成本,是否有加值服务的提供(技术领域以及行业领域)。最早开始的时候,我们在议价的时候,更多的是考虑每个人天的单价,合作过几家厂商之后,发现如果从 Total 开发成本的角度来看,其实大家能提供的价格还是差不多的,单价低的可能项目周期会比较长,或是项目质量不如单价高的厂商,我们后续需要的测试以及维护成本加起来,其实成本是非常接近的,所以,还是建议找质量比较好的厂商,不要完全以人天单价或是项目总体价格来当作唯一的考虑点。毕竟省下来的钱是公司的,项目搞砸的 Credit 是自己背的。

4.人员素质

沟通能力;

英语能力;

文档编写能力;

是否对他专一,有资源一心一意压在他的项目上,而不要撤东墙补西墙。

5.地域性因素。这点随着互联网的普及以及各式沟通工具越来越多,倒是没有那么强的影响了,可以考虑在最后才使用这个指标衡量。

6.对你所在企业的认识。我们的经验是,对你越了解的合作伙伴,越容易培养默契,在项目的合作上也越容易体现出弹性,说的再虚一点的话,最好连合作伙伴的企业文化也能跟我们比较接近是最好的了,因为不管对方的老板答应你什么,真正干活的还是下面这批人。


 

管理外包商的要点:

1.需求管理

在软件项目开发的早期,最主要解决的问题就是明确软件需求,但是现实中开发商往往很难理解企业的业务需求,加上业务需求会随着时间的推移而发生变化,造成软件需求一直在发生变化;另一方面,开发商提供的需求文档也很难被业务部门所理解,造成双方沟通上的障碍。

在软件外包项目的开发过程中,可以采用以下方法来保证甲乙双方进行软件需求的开发和需求管理,以此提高需求质量:

• 获取定义业务词汇
• 从用户角度出发,准确描述软件的功能需求
• 利用原型准确把握用户界面技术,使系统达到最佳的可用性
• 对需求进行多角度分析,实现量化管理
• 记录需求变化的历史,交流需求修改的意见
• 维护需求的追踪性,分析变更造成的影响
• 控制需求的变更,防止需求蔓延

2.开发过程监控

在传统的软件外包项目开发中,从需求工程开始到开发商交付最终软件系统,其中只有一次验收,很多问题要到最后的验收阶段才会暴露出来;同时也难于控制项目的进度,经常导致项目延期。造成这些问题的主要原因是外包项目开发过程不透明,企业很难监控开发的进展情况。

所以我们建议变一次验收为多次检验,在项目的开发过程中设置多个里程碑,在每个里程碑处 设有检验点。

可以要求开发商采用迭代化软件开发,这样每一个迭代的结束都是一 个技术上的检验点。最简单的过程监控可以在架构设计里程碑处设置中期检验点,要求开发商按要求提交中期交付系统原型,对原型系统进行中期验收,主要考查系统功能、性能指标等,并确认系统是否能与生产环境中正常工作,同时该原型也有助于收集业务部门的反馈意见。

3.软件系统验收

当软件外包项目开发完成之后,企业就要对开发商所提交的交付系统进行验收,验收主要包括 验证和确认两部分。

• 验证(Verification)主要是评估系统在功能上是否和需求定义相一致,检验系统在技术上是否达到一定质量标准(可靠性、性能等);


• 确认(Validation)主要是评估系统是否真正满足了生产环境和业务运作的需要,这需要将 系统部署到实际生产环境中去进行检验,并需要业务部门的参与。

任何一个企业都需要确定全面的软件验收标准,在定义需求和评估软件质量时,都需要从功能性、易用性、可靠性、性能和可支持性等多个维度来全面考虑,使用可以验证的质量标准并尽量使用量化的质量指标。

另外要注意的是除了验收软件系统本身之外,还应对系统开发过程中 所有的中间工作产品如需求文档、设计模型、测试计划/报告等进行验收。

从事软件项目外包的企业可以建立软件系统验收平台来保证系统验收的质量,该平台包括了相 关的验收流程、质量标准和工具平台。其中最重要的就是要建立附合企业实际情况的软件验收质量标准,并在软件项目外包过程中执行这一标准。为了支支撑验收标准的执行,必须使用一 些自动化的软件测试工具来辅助软件测试的进行,并产生一些客观的量化指标以便于质量标准的评判,如测试管理工具、压力测试工具、代码覆盖率工具等。

4.项目后续维护开发

在系统上线之后,项目团队面临的挑战在于如何快速响应业务部门的各种变更请求,一方面随着业务的变化业务部门会提出很多新的业务需求,另一方面在使用中发现的软件缺陷需要得到迅速修正。对于开发团队来说,他们需要同时维护多个软件版本,如不同地区的特殊业务要求系统有多个版本,不同的运行平台也要求系统支持多个运行版本,这些复杂的版本管理需求往往导致软件版本管理上的错误。


在这个阶段,我们必须全面管理软件维护过程中出现的各类对软件产生变化的因素,包括缺陷、需求变更、设计变更以及文档变更等。加强开发厂商和用户的沟通,随时供项目管理人员掌握项目最新进展状态,实现软件开发量化管理。另外,我们也要做好软件的统一版本管理,做好软件发布管理,避免版本错误以及重复开发。

如何管理外包商

1.一个中心,两个要素

l      一个中心就是企业内部的制度建设,这个制度就是项目管理的制度建设,怎么来管好外包项目应该是一套制度,不应该依靠某一个人,制度建设好的话,无论人怎么变化,都没有问题。

l      两个要素就是需求控制和过程管理,核心是流程的过程控制,包括在过程中设定质量目标,来对工作成果进行评估。

 

2.明确责任,做好分工

制定出项目计划;用户需求文档;技术要求文档;

文档的要求;

沟通的方式,汇报的方式;

质量控制:需要有责任的清楚定界,比如每十万行编程容许的bug数,第一次用户测试后接包方必须达到的合格百分率等等。

进程控制:基于Web的全天候24小时编程监测跟踪系统。

作业流程:

Contract:

合同需涉及三方面内容:用什么资源,质量和奖惩规定。什么技能的人员参加这个项目?

 

软件开发外包管理》有1个想法

发表评论

电子邮件地址不会被公开。