无论是国内还是国外,软件开发失败的比例都非常高,部分软件系统即使上线使用,它的生命周期也非常短,为什么软件开发失败,大部分归纳起来以下几个方面:
1、项目预算不足(开发和维护成本太高)
2、需求不明确(无法满足业务需求)
3、没有整体架构设计(后续无法迭代改进)
4、开发人员能力不足(代码写得太烂,不好维护)
。。。
不可否认,以上的是项目开发失败的原因之一,作为一个IT领域从业人员,曾经历过无数个大小项目的失败,架构过多个大型项目,我认为软件系统开发失败最主要的原因是数据库设计太差(无数据库的系统不讨论),数据库设计不好项目注定会失败,而数据库设计恰恰是最难的。
以下是本人的观点,如有不同欢迎留言交流讨论:
1、项目预算不足(开发和维护成本太高)
一般我们在规划项目的时候会根据项目的需求评估开发周期,根据开发周期和人员角色及人员成本计算总的项目预算,如果做的比较规范的,一般预算是合理的,导致预算不足也是其他原因使开发成本增加,如需求不明确、人员技术差等。
2、需求不明确(无法满足业务需求)
可以说大部分的项目开始做的时候需求不是完全明确的,经过需求调研、需求分析、需求评审等这些环节,需求逐步清晰,但也不可能达到100%。根据不是完全明确的需求做的数据库设计一定只是满足现有需求的设计,如果最后用户改了需求,可能还需要修改数据库设计。既然需求不能完全确定,那如何避免以后出问题呢。
本人认为数据库设计一定要请高手设计,有多年项目开发经验及数据库知识的高级技术人员,首先仔细研究需求和客户探讨需求,把非常明确的需求设计好业务表,不明确的需求尽量设计灵活,有时一张表能满足设计,二张表也能满足设计,这个就需要仔细斟酌,预判未来可能的情况,尽量灵活甚至可以字段冗余(暂时不用的也可以设计),这样未来修改的风险和成本就非常低,系统上线后再修改数据库设计的代价是非常高的。表名和字段名一定要规范,设计人员要具备一些英文基础。尽量避免让实习生或刚开始工作的没有任何实践经验的人员设计。
3、没有整体架构设计(后续无法迭代改进)
本人认为架构设计是方便人员开发,提高开发效率的,架构设计也可以提高系统性能和方便维护,好的架构设计可以让整体系统层次清晰,但是架构设计即使不好,用老技术还是新技术并不影响业务的正常运行,有也是性能差一点,慢一点,不至于导致业务无法正常运营。最坏的打算就是几年以后系统重构一下采用新技术再开发。但是如果数据库没设计好,几年积累的大量业务数据你要整合和调整数据库那这个代价就是非常大了。
4、开发人员能力不足(代码写得太烂,不好维护)
开发人员能力不足这个我觉得最没有影响,某个开发人员能力差也只是影响其开发的某个模块而已(一般不会让一个技术差的写核心模块),只要他写的代码能测试通过运行,代码写的再乱都没问题,影响的只是一小部分,最坏就是以后把这部分代码重写一下就行。
另外数据库设计字段命名非常重要,不要写错的单词或毫无意义的字符,开发人员喜欢用数据库字段名在代码中命名属性,这样导致代码的可读性、维护性非常差。
请大家一定要重视数据库设计,让你的软件系统生命周期更长久,数据库设计好了即使开始业务进行不下去,过一段时间还是可以重新把项目启动起来。数据库设计差以后在系统迭代更新,性能优化等方面都是问题。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!