缺陷产生的原因主要有以下方面

  * 项目期限的压力

  * 产品的复杂度

  * 沟通不良

  * 开发人员疲劳、压力过大或受到干扰。

  * 不了解客户的需求

  * 缺乏动力

  我们可以从软件自身特点、团队工作和项目管理等多个方面进行分析,找出导致软件缺陷更多的一些原因,这可以归纳为如下3个方面。

  1. 软件开发过程自身的特点造成的问题

  * 软件需求定义难以做到清清楚楚,导致设计目标偏离客户的需求,从而引起功能或产品特性上的缺陷

  * 软件系统结构非常复杂,而又无法构造一个完美的层次结构或组件结构,结果将导致意想不到的问题。

  * 新技术的采用,可能涉及技术或系统兼容性的问题,而事先没有考虑到。

  * 对程序逻辑路径或数据范围的边界考虑不周全,容易在边界条件上出错,或者超出边界条件后又缺少保护导致出错。

  * 没有考虑或处理好系统崩溃后的自我恢复、故障转移或数据的异地备份等情况,从而存在系统安全性、可靠性的隐患。

  2.软件项目管理的问题

  * 受质量文化的影响,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试等的时间,于是遗留的缺陷也会比较多。

  * 开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也不完整、不准确,错误较多;周期短,还给各类开发人员造成太大压力,从而引起一些人为的错误。

  * 开发流程不够完善,存在较多的随机性和缺乏严谨的内审和评审机制,容易产生问题。

  * 文档不完善,风险估计不足等

  3.团队工作的问题

  * 沟通不够、不流畅,导致不同阶段、不同团队的开发人员对问题的理解不一致。

  * 项目组成员技术水平参差不齐,或者新员工较多或培训不够等,也容易引起问题。