我将缺陷定义为:
“应用程序设计或代码中的某些阻止其按要求运行的功能。”
我正在寻找有关缺陷原因的想法,例如人为因素,缺乏测试,缺乏原型设计以及减轻这些缺陷的可能想法。
我将缺陷定义为:
“应用程序设计或代码中的某些阻止其按要求运行的功能。”
我正在寻找有关缺陷原因的想法,例如人为因素,缺乏测试,缺乏原型设计以及减轻这些缺陷的可能想法。
Answers:
软件缺陷的主要原因是解释。
客户对功能的解释与设计者的解释不同。
设计者的解释不同于程序员的解释。
大多数方法已经发明了应对这种影响的方法。但是最后,我们只是人类,我们并非完美无缺。此外,通常存在时间压力,大多数方法论魔术常常在压力下被跳过。
测试只能及早发现问题。但是,即使测试人员也是人类,不可能进行100%的测试。如果要在Universe结束之前释放。
缺陷的主要原因是管理不善 ;)
认真地说,一个工作状况良好的开发人员,而不是要求过度劳累,降低质量,拥有合适的工具,安静的工作条件等,所产生的错误要少于在压力下工作的人员。
此外,管理层雇用不良的开发人员还有助于增加错误的数量。
管理不善。
(免责声明:我应该雇用和管理开发人员)
在没有完全理解它们的情况下冲入事物。在不完全了解功能要求或技术架构的情况下开始编写代码。
编程应该几乎是自动的,只需写下不言而喻的想法就可以了。在实践中,我看到代码中有很多麻烦,试图确切地理解代码应该做什么。我本人对此一直感到内gui。
缺少检查“不可能发生”或不太可能发生的事情是一个很大的问题。有时候,完美是善的敌人。如果不值得考虑周全的异常层次结构,那么一些快速而肮脏的处理总比没有好。我很大热衷于快速失败,断言和留下断言对发布版本中的性能影响可忽略不计的人。即使在我控制所有输入数据的快速且肮脏的一次性脚本中,我也放置了一些快速/肮脏的错误处理程序,通常只是使用了一个等同于assert但始终存在的函数。我的经验法则是,如果它不太可能发生或您认为它不可能发生,则它不需要通过用户友好的错误消息来优雅地失败,但是它至少应该通过一条错误消息快速失败,该错误消息是给程序员一些有关出了什么问题的提示。
编辑:一种相关的有用策略是将断言用作主要的调试工具,并在调试会话结束后将其保留在其中。从那时起,您的代码库将具有一些内置的健全性检查,这使得相关错误很难再次发生。这对于难以进行单元测试的代码特别有用。
一方面,管理。但这不只是PHB。这是代码本身的管理,可能反映或可能不反映公司管理。
在整个“生命周期”需要参加者可以完全投资于质量和制造产品,只是不会死。给定适当的抽象可靠性,软件本身具有永不中断的希望。这仅仅是软件构造者是否对拥有这种完美操作感兴趣的问题。