在软件开发的过程中,不可避免的会引入软件缺陷。从软件特征、研发人员和研发环境等方面分析,就可以了解造成软件缺陷的主要原因。
软件特征是软件内在属性的外在体现。以不同的视角看,软件有不同的软件特征。比如从开发语言角度看,软件特征有c、c++、java等语言等。从整体来说,由于各语言的成熟程度、适用场合各不相同, 各语言发生缺陷的整体概率是不一样的。就具体缺陷来说,使用某种语言开发的软件是根本不会发生的,而使用另外一种却可能会发生。比如双重释放仅仅在c和c++语言中会出现,而在java中不会出现。从是否会在线应用角度,软件具有在线、离线特征。在线软件自然会更容易出现安全漏洞及渗透方面的缺陷,而离线软件显然不会。可见缺陷产生的原因同软件特征密切相关。
研发人员是软件的设计者和搭建者。他们的技术水平、经验、责任心、精神状态等很多方面都同软件缺陷息息相关。其实,不仅仅是软件,任何需要人来完成工作,其质量都受到具体实施人员的因素的影响。另外,软件通常是由多个研发人员共同来完成,软件缺陷不仅仅同每个研发人员关系紧密,还同研发团队的整体状态不可分割。
研发环境包括既包括具体环境也包括抽象环境。具体环境包括场所、设备、工具等。抽象环境包括软件过程管理、组织架构、企业文化等方面。
软件特征、研发人员和研发环境三个方面相互作用,共同导致了缺陷的产生。