软件外包技术的开展为非互联网企业开发软件提供了极大的便当,不只是大型企业其中还有许多中小公司,初创企业,想要开发制作一款app应用的时候,都愿意找专业的app制作定制外包公司合作,或是把整个项目外包出去,或是自己做UI外包出去,这都表现了人们对于软件外包这种方法的认可。成本降低30%到50%不是为数不多因素软件外包近几年呈几何级数增长。据技术服务研究企业Gartnerg公司估计,2018年底全球软件外包项目价值达到5000亿美元。选择外包的公司可以降低大约30%到50%的成本。但是节约成本不是选择外包的为数不多原因,而且近年来这个因素变得越来越不重要了。
IT研究企业Diamond Cluster近的一项研究指出:软件外包的一个好处就是可以节约公司内部的资源。通过软件外包服务,发包公司可以安排内部人员从事核心的业务;第二个重要因素就是可以使用本公司内部不擅长的技术。相比之下,运营成本已经是企业外包所考虑的第三个因素。选择外包可能基于以上所有益处,但是如果外包关系出现问题,那么所有收益都不会得到。而如果风险因素没有认清的话,问题是很有可能发生的。
基本上,在外包项目开发中的风险和下面3个因素有关:人、流程、政策。通过鉴别哪里容易发生风险,可以在早期采取措施减轻风险。外包时常见的风险根据近对数十个企业的调查发现,他们对软件外包主要担心在以下几个方面:沟通困难、提供的开发产品的质量、无法近距离接触开发团队、知识产权的保护。很多时候,我们实际得到的东西和我们期望的差距很大。一开始你就要让外包公司知道你的要求,从终产品到开发工具。这也是为什么我们一直认为项目需求的沟通是所有风险中重要的。
制作公司有哪些错误的理解需求在进行外包时,终收到的却是糟糕的代码或者是我们无法读懂的文档。但在大多数情况下,没有达到预期效果的原因不是因为app外包公司的自身能力问题,而是他们误解了需求。app外包的一大风险就是不能有效的定义项目需求。公司的项目经理可能要求开发团队迅速完成,特别是项目交货时间比较紧张的时候,对需求分析不够重视。但是如果忽略初期的项目需求文档,那么后期就可能产生问题,数量居多且解决起来花费巨大。如果能很好的描述需求,那么开发团队就能做出满意的产品。一个庞大,过分详细,可能要花费数月时间的项目说明和只有一页纸大小,一点也不充分的项目概念之间是有明确界限的。但是通常,项目在开始的时候对项目说明的定义越清晰,项目经理就越能够理解你想得到什么,你怎么样得到,并且完成它。这一步骤有多重要呢?根据卡耐基梅隆大学的软件工程研究所(SEI)的一项研究发现糟糕的需求定义或者不清晰的项目需求是软件项目失败或者延迟的主要原因。应对措施:不要逼迫app外包公司去猜你要做的东西是什么?有许多不同的方法来完成一个产品,但是并不是所有的你都可以接受。为了避免失望,你应该定义明确的需求。要想减少由于误解项目需求而产生的风险,一个重要的方法就是在开发正式开始之前就要把需求分析作为一个重要的阶段来做。这需要一系列的讨论。当然这些时间花费是值得的。项目经理在以下3个阶段收集信息提出项目需求:1)收集初的用户需求:在创建系统用例之前,项目经理要会见用户,询问他们对系统期待的特性以及功能。他们需要了解完整系统的商业需求,从客户公司搜集高层系统需求和系统包括的用户界面。2)分析系统需求:包括预期系统的可接受性、可实施性、可测试性。3)检查需求:包括预期系统需求的综合考虑,目的是为了明确需求中发现的由于模棱两可或者是不一致而导致的问题或者错误。这份文档还包括问题追踪以及在问题产生后如何处理的计划。
2:质量保证即使是较好的开发团队也不能保证写出的代码没有错误,这就是为什么质量保证外包企业是非常重要的。当把项目外包给一个不知名的厂商时,一个大的风险就是这个厂商是否有充分的质量保证和测试流程。与其等到产品问世后去找各种错误,不如花时间检查一下供应商做的质量保证流程,以减少风险。质量保证没有完成或者完成的不充分主要有以下3个原因:
1)外包企业自己没有质量保证及测试团队
2)项目的完成日期非常紧,质量保证测试完成的非常快以保障开发进度
3)厂商没有完全理解需求,质量保证测试没有覆盖整个系统应对措施:首先你要做的是在选择app外包公司的时候要确定他们是否有恰当的质保流程,要检查以下几个问题:
1)是否有系统实现对问题/错误或者系统改变的跟踪
2)是否有修改错误的流程
3)是否有合适的监控标准和质量遵守规则
4)app外包公司是否对每个模块都进行标准单元测试和回归测试
5)软件是否经过安装,性能及完整性测试,实际运行情况如何测试实例对任何开发项目而言都非常重要。实例可以看出开发出来的项目是经过测试的稳定版还是错误百出的测试版。一旦开发完成,质量保证团队就马上跟进。他们根据搜集的系统需求制定初的检查计划,依据该计划来检测功能性,可扩展性,安全性等问题。要测试两个方面,一方面是系统回归,装载和容量测试,另外一方面是用户接受测试,每个方面都要有详细的测试标准。改进已完成系统的质量的另一个方式就是检查工作成果。检查是对软件设计或者实现的详细回顾。
花在质量保证活动上的每一个小时可以节约项目后期的时间是3到10小时。也可以让承包商在开发的每一个阶段都采用成果检查方法。通过这种方式,厂商可以快速的检测并纠正错误。通过定期进行回顾式的检查,在产品开发初期阶段就可以迅速地发现并纠正缺陷。这样在开发过程中这可以更好的控制成本并且避免延期。比如,若是到产品构建或者维护阶段才发现缺陷,所花费的成本将是初期的50到200倍。
风险3:知识产权保护产品的知识产权是公司的重要的资产,进行外包时采取措施保护是非常必要的。有些不道德的公司偷窃你的技术或者数据在市场上出售。但大多数情况下,这些问题通过仔细的厂商评估和采取应对措施可以避免。首先提供给厂商完成项目所需的尽可能少的核心技术与数据,评估选择的承包商以确保承包商有适当的政策可以保护数据安全。应对措施:要制定政策,同时也要签署一份保密协议,一份同业禁止协议以避免app外包公司未经授权盗版你的技术。
比如,app外包公司可能会利用他们的私有技术或者是开源技术开发新产品,而这种新产品是以后的应用中可能会用到的。在这种情况下,提前定义好哪些源代码属于公司,哪些属于app外包公司,哪些属于客户并阐明授权问题,这是非常重要的。在开发工程中,一定要使项目开发工程中产生的代码文档化,这样代码才能变成公司的财产,并受到法律保护。比较好的app外包公司,比如有些APP外包公司,会主动告知项目的进展情况,并且每个客户都可以审查该公司。需要检查的项目包括:公司的设备安全性如何、开发团队的所有人是否都和你们公司签署了保密协议。发现上述问题并予以解决,那么你就在保护知识产权上迈进了一大步。