为何软件定制开发的失败率这么高?

behuan 2019-10-30

据不完全统计,软件定制开发领域的项目失败率竟然高达30%,项目延期交付的竟然高达40%!

软件定制开发是一个对专业程度要求非常高的行业,在软件定制开发的任何一个环节如果没有做好的话,轻者可能会导致软件质量不高,交付延期。重者可能会导致项目失败,损失大量金钱。

所以今天闭环网络带大家来分析一下为何软件定制开发为何有这么高的失败率,以及闭环网络采取了什么样的措施来降低软件定制开发的失败率。

通常软件项目失败的原因有如下几点:

一、错误的需求分析

在软件定制开发之前,软件公司通常会向客户收集需求,整理并落实为需求文档,然后再向客户复述一遍,确保双方对将要开发的需求理解一致,没有出现歧义和遗漏。

但是目前国内大多数的软件公司都是小作坊形式,有的软件公司基本全是业务员,没有专业的方法来收集客户的需求。收集过来的需求只有一页或者几句简单的描述,导致收集的需求通常不准确或者不够详细,无法形成逻辑闭环。

通常一份好的需求文档有以下几个特性:

1.必要性,即该需求是用户所需要的。

2.无歧义性,即该需求的描述清晰,没有任何歧义。

3.可测性,即该需求是可以测试的。

二、错误的时间评估

软件开发时间评估也是一个技术活,如果在需求分析没有专业的需求文档以及对各环节技术实现难度的不了解,就会导致在评估开发时间时出现严重偏差。

举个栗子。在APP开发中,没有经验的项目经理通常只会评估APP技术开发所需要的时间,从而忽略了APP开发账号申请以及APP上架审核的时间。最终导致没有按照预计的时间进度进行项目交付。

又比如需求文档中的逻辑无法形成闭环,甚至出现错误。项目开发到一半时发现无法进行下去,此时再跟客户讨论之后,发现比之前预想的需求复杂太多,原本预定的开发时间完全不够。最后只能通过加班来弥补由于时间评估错误导致的进度延后。不过虽然加班赶工有时能追上进度,但是代码质量往往不会太高。

三、缺乏专业的测试

在传统制造业,企业通常都会花重金来打造自己的QA部门,会对企业的产品进行各种各样的测试,例如稳定性测试、可用性测试、安全性测试、防水性测试、耐摔性测试等等。

但是在IT行业,国内的软件公司通常都对测试环节不是特别重视,基本都是由程序员或者项目经理兼任。有时候因为之前的开发进度延后,所以不得不压缩测试的时间。最终导出的大部分软件公司出来的软件的质量都堪忧。

专业的测试通常不止功能测试,还有性能测试、兼容性测试、安全性测试、压力测试、易用性测试等等。非专业的测试人员通常只能做到功能测试、兼容性测试。如果需要评估一个软件的性能、安全程度、极限承载度等方面时,需要专业的测试人员借助一些专业的工具和专业的测试方法才能得到。

例如当我们需要评估我们开发的APP的性能时,我们可以借助例如Appium这样的工具,根据软件的功能设计一些测试用例,然后得到一份专业的性能测试报告。

所以测试的专业度也是衡量一个软件公司的实力因素之一。

四、零散的交付文档

软件开发完毕测试通过之后,通常还需要一些辅助的文档来让软件得到正确的实施与使用,如果软件公司交付的文档七零八落、零零散散、晦涩难懂,通常很难保证软件的使用与维护。

一般来说,好的软件公司至少会交付的文档有如下几样:

  • 《需求设计文档和交付原型》
  • 《UI设计稿》
  • 《架构说明书》
  • 《数据库设计说明书》
  • 《接口文档》
  • 《测试报告》
  • 《浏览器、手机、PAD等品牌与机型适配清单》
  • 《软件安装部署文档》
  • 《服务器软硬件环境配置参数说明书》
  • 《软件操作使用手册》

当有以上文档时,我们可以通过阅读相关文档来解答我们关于该软件的疑问,只有完善的文档说明才能保证该软件可以得到正确的部署、使用与维护。

闭环网络的解决方案

闭环网络从创立之初便认识到软件定制开发的痛点。在软件定制开发领域,客户很发愁找到一家靠谱的软件公司,通常的做法都是通过熟人介绍来信任一家软件公司。

我们通过深入研究国内和国外的软件外包行业,从服务模式、流程优化、交付标准、成本优化、技术提效五大方面提出了自己的解决方案。

同时也会软件开发的流程做一些优化,并建立了自己的一套贴合实际的交付标准来减少项目质量的波动幅度。

我们将过往的定制开发使用到的技术做了技术沉淀,复用到新项目的开发中。或者通过引入最新的技术,提高新项目的开发效率,从而提高生产力,降低项目定制开发的成本。

我们还创新的让整个项目的开发过程全部透明化,客户可以随时查看我们的工作进度和工作成果。

总结

软件定制开发的特征越到后期改动成本越高。需要在前期将双方的需求仔细的沟通清楚。需求是基石,只有清晰明确、无歧义的需求才能保证后期交付的软件成品达到双方的预期。

当然最重要的是甲乙双方要保持足够的耐心,掌握一定的沟通技巧,必要时可以当面沟通,如此才能完成一个有灵魂的软件作品。