Monday 18 May 2009

软件可靠性

一个具争议性的老话题。

原因之一是软件失效的概率模型跟过去的时间本身不相关,不具有随机性,而是系统性 - 归根到底,软件故障都是人为错误。当然执行时间可间接影响到软件可靠性,在软件执行周期内,运行时间越长,越有机会执行到可激发到软件潜伏故障的特定输入条件。学术研究上出了一大堆reliability growth models,和最近的context-based/conditional reliability growth models, 都是基于同一个假设:开发是一个逐步改善的匀质过程。现实中是很难实现,例如开发队伍中的人员变动,试想曼联替换一个球员,整个队伍的性能模型肯定有不同哦。其他因素如软件的需求变动等。

原因二,所有可靠性都是基于失效这个概念,而失效的定义是基于需求。和硬件不同,软件开发更灵活,任何人学过编程便可开发软件来实现多种功能,因而软件需求本质上可以很灵活。但这导致软件需求错误成为软件失效的主要来源。在系统工程,软件需求问题更多,因为涉及到特定的专业领域(如航空,铁路,医疗和石油化工)。而软件可靠性是不可能为需求错误而建立数学模型。

老生常谈。

No comments:

Post a Comment