在大多数软件项目中,缺陷源自需求、设计、编码和缺陷更正。根据我的经验,大多数缺陷都源于编码阶段。
我有兴趣了解软件开发人员使用哪些实用方法来降低缺陷注入(inject)率。
我已经看到以下方法的使用取得了不同程度的成功和相关成本
- 代码检查
- 单元测试
- 静态代码分析工具
- 使用编程风格
- 同伴编程
最佳答案
根据我的经验,导致缺陷的原因一直是过程的错误,而不是开发人员的错误。参见 They Write the Right Stuff关于该过程如何影响错误。
竞争性测试
软件开发人员应该立志防止测试人员发现他们编写的软件存在问题。发现软件问题的测试人员应该得到奖励(不一定是经济上的)。
签字
任命一名对确保软件没有问题具有既得利益的软件负责人。在该人满意之前,软件不会发货。
要求
避免更改需求。从开发人员处获取实现需求所需时间的估计。如果时间与要求的交付时间表不匹配,则不要雇用更多的开发人员。相反,消除一些特征。
任务切换
允许开发人员在将他们分配给其他人之前完成他们正在处理的任务。回到新任务后,要花很多时间熟悉任务被放弃的地方以及完成任务所需的剩余项目。在此过程中,可能会遗漏某些技术细节。
指标
尽可能多地收集指标。每个方法、每个类、依赖关系等的代码行数。
标准
确保每个人都遵守公司标准,包括:
- 源代码格式化。这可以自动进行,而不是讨论。
- 命名约定(变量、数据库实体、URL 等)。尽可能使用工具,并每周进行代码审查以强制执行。
- 代码必须在没有警告的情况下编译。注意并审查所有异常(exception)情况。
- 一致(重复)使用内部和外部开发的 API。
独立审查
聘请第三方执行代码审查。
称职的程序员
聘请您负担得起的最好的程序员。放开那些逃避公司标准的程序员。
传播信息
举行审查 session ,开发人员可以在 session 上(与整个团队)分享他们对框架的最新更改。允许他们自由弃用代码的旧部分以支持更高级的方法。
任务跟踪
让开发人员记录每项任务花费的时间(在 15 分钟以内)。这不是用来衡量绩效的,必须强调它与审查或薪水无关。它只是衡量执行某些技术任务需要多长时间的方法。通常,您可以从那里看到在系统的不同方面花费了多少时间。如有必要,这将允许您更改焦点。
评估流程
如果许多问题仍然存在于软件中,请考虑重新评估软件开发过程。指标将有助于查明需要解决的领域。
关于unit-testing - 降低大型软件开发项目中的缺陷注入(inject)率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056206/