简介 :在软件开发的所有阶段中,快速,早期的反馈是质量和生产率的关键因素。 上一章中提到了一些关键示例。
您如何衡量软件质量? 您仅查看测试人员发现的缺陷数量吗? 您的客户报告了多少个错误?
如果真是这样,您就会错失软件质量和生产力背后的驱动原理。 两者都被这一原则紧密地结合在一起。
通过仔细研究生产率可以澄清这一点。
软件开发速度与一种类型的速度无关。
该组件太小,无法在产品达到其用户价值所需的总时间中被检测到。 剩下的是所有(共同的)智力努力。 这可以分为获取知识,共享,创建,观察和过滤。
就当前的日期和年龄而言,前两个也需要有限的时间和精力。 在创建-观察-过滤周期中花费了大量时间,并且将在大多数错误处发生。
它类似于两个众所周知的概念:
a)反馈回路,
b)假设检验的原则。
增量软件开发中有一系列层叠的阶段。 在每个阶段,都会进行此创建-观察-过滤循环。 它们在这里描述:
- 集思广益
创建 :数据分析,想法,主张,报告
观察 :分享,合作,利益相关者的反馈
过滤条件 :优先排序,投票,删除 - 精制
创建 :假设,用户案例,需求,草图
观察 :专家会议
过滤条件 :合并,拆分,投票,删除 - 设计中
创建 :用例,分解,非功能性需求
观察 :设计评论,研讨会
筛选器 :返工注释,重构设计 - 编码
创建 :生产代码
观察 :IDE反馈,代码审查,Linters,编译器,探查器
过滤器 :重构代码,修复缺陷 - 测试与整合
创建 :单元测试,自动和手动验收测试
观察 :测试结果
筛选器 :报告缺陷 - 产品用途
创建 :产品互动
观察 :预期结果与观察结果,观察到的产品价值
筛选器 :报告缺陷,请求更改
与观察和过滤效果不佳相关的成本随其阶段呈指数增长:
如果客户遇到缺陷,则功能值的下降是无法预测的,但范围可能从某个百分比到100%(功能无法使用),甚至更高(客户赔钱)。
从报告问题的客户到为该客户带来的修复,需要大量的精力和时间。
相反,一个坏主意的成本在早期就可以忽略不计。 如果这样一个坏主意遍历所有阶段,却发现不是客户想要的东西,则会造成可观的浪费。
如果将质量定义为在底层发现多少无价值的产品,则可以将生产率视为早日发生反馈的程度以及在每个级别的反馈情况。
因此,这两个因素的改善归结为a)将反馈带到上游,即将其带到较早的阶段,以及b)在每个级别上改善反馈,c)在每个级别上加强反馈回路,即尽可能快地获得可观察到的结果。
- 代码审查和结对编程:至少有另外一组眼睛观察代码,不仅可以提高质量,而且还可以促进知识共享和快速建立经验。
- TDD:测试驱动开发将测试代码创建放在生产代码创建之前。 这导致反馈循环非常短,并且代码覆盖率很高。 此外,您还可以得到计算机可读的书面要求,这些要求都能告诉您事实。
- 待办事项优化会议:“预优化”或“预修饰”是产品所有者与利益相关者的协作。 “精加工”或“修饰”是产品所有者与专家/开发团队的协作。 定期召开这些适当的对齐会议可节省大量时间。
- A / B测试:将部分beta功能提供给选定的一组客户,收集数据,并确定是否可以增加价值。
- 基于风险的优先级:确保您回答最重要的问题,因为将时间花在大部分低风险工作上。
- 尖峰:小型内部实验,无法与内部利益相关者讨论。