软件外包指将企业未搭建软件开发技术团队,下放给专门做软件开发服务的第三方公司,原因是为了节省成本,减少试错成本,利用软件公司的专业服务提高工作效率。
下面讲一下软件外包项目的开发流程:
1、收到客户意向后,第一步需要弄清楚客户的需求,有些客户的需求是一两句话,有的客户的需求是参照XXX应用,有的客户专业一点会给出一个大概的需求说明,还有极少一些客户会给出很详细的需求说明文档(有可能是从别的地方询价拿的,或是公司本身有专业人员)。我们希望得到一个比较详细的需求说明,但大部分的客户给不出来,尤其是传统行业的客户,对软件领域了解不多。所以第一步我们要通过各种渠道去了解清楚客户的真实想法。
对于始终说不清楚自己想要什么,我们各种了解后也仍然搞不清楚的客户我们一般都会拒绝。
2、通过第一步的了解,基本上会清楚客户的背景、想做什么。这个时候我们会判断客户做项目的意愿有多少,有一些客户只是随便询一下价,意愿并不强,另外我也会大概了解一下客户的大概预算,对于我们判断意愿不强的客户,如果需求不复杂,或者有提供略详细的需求,我会大概评估回复一个价格和工期。对于预算差别很大的客户,我评估做不了的也会告知客户。
另外如果判断项目里面有一些技术点是我们没有把握的,也会很谨慎,尽量不接。
对我们判断有意愿而且有希望成单的客户,根据客户给的需求情况,如果客户没有比较详细的需求我会帮整理列出来,并且附上比较详细的评估结果,工期、价格。
3、报价单给到客户后等待客户回复,有意向的客户会联系进一步的沟通,有时候可能会有几轮,要看客户的需求情况,在这个过程中根据谈的结果会对需求列表做一些更新。到双方达成口头协议后,我会拟好合同,附上需求列表,双方签字盖章。
合同中需要说明双方权利和义务,项目工期、价格、付款方式,以及双方违约责任,处理方式等。更详细一点会将项目的技术要求、技术标准等列出来。合同写得越详细越好,对双方来说都是一个保障,避免项目后期双方纠纷。
对接包方来说,非常害怕在开发过程中,需求方的需求不断变动,这会导致开发团队一直陷在里面,项目迟迟不能结项,项目本身成本提高,也影响其它项目。
需求方也害怕开发方不负责任,做的时候不用心,因为软件这东西有特殊性,又不可能一行一行去查代码,只能通过不断测试来测试软件质量。很大程度上项目的质量跟开发团队的技术实力、项目管理 、认真程度有关。
4、合同签订后,我们会开始做开发准备工作,等客户首付款到账即启动项目,项目开发流程大体为:需求列表细化–>制作需求原型–>原型确认–>UI设计–>UI确认–>编码–>交付测试版本–>验收修改–>结项。
根据项目流程有时候会略有变化,但大体上是这样,越是复杂的项目流程要越严谨,前期需求分析的时间也要更长,尽量避免到开发后再来修改,越大的外包公司流程也会越严格,对于小一些的公司为了提高效率流程上会更敏捷一些,但在输出物上面可能没有大公司那么严格。不过不管怎么样,最终结果是把项目按期做出来,并保证质量让客户可以正常使用,这是最重要的。
5、项目结项后,还会关系到后期维护的问题,我们一般会提供半年或一年的质保期,质保期对于软件本身的BUG或功能缺失是免费修改。但对之外的维护会跟客户协商维护费用。对于一些工作量不大的事情我们一般也会帮忙搞一下。软件外包本身就是一个服务行业。但有时候也要适可而止,有些客户不太懂,会觉得这个事情这么简单搞一下就好了。我会跟他们说明会有工作量会产生费用。公司毕竟要生存。
这是一个大致的流程,在具体执行过程中,会根据项目有所变通,在各个流程中也还会有一些要注意的事项,一般项目开发过程中也都会有需求变动,双方本着诚意合作、我们也本着认真负责的态度能帮客户解决尽量解决。总之一切以项目为重。