课程介绍
内容简介
持续变化的需求已成为当下软件质量管理的核心挑战。如何让变化成为管理的核心要素?又如何利用高阶管理模型更加合理地管理软件质量?
数字化正逐步深化发展。软件作为数字产品的核心已经渗透到了各行各业。然而软件质量管理仍然存在诸多挑战。完善的软件质量管理体系还有待更多努力。软件质量管理当下的核心挑战在于持续变化的需求。这一变量的引入改变了整个质量管理的格局。本文通过对比分析揭示了变化带来的软件质量管理挑战,并通过一个高阶管理模型帮助大家理解如何更加合理地管理软件质量,让变化成为管理的核心要素。
讲师简介
肖然
ThoughtWorks 创新总监
- 数字化转型专家,DDD China及China Agile Coach创始人
- 致力于推动敏捷精益的工作方式,持续探索更好的思维和协作方法,帮助更多的人迎接数字化时代的挑战。
学习笔记
为什么软件质量管理那么难?
- 技术债,在一定程度上不可完全消除和避免,深层原因是由于内部代码及架构无法适应外部需求的变化,这属于客观规律。但这不表示全部技术债都属于这个范畴,我们应致力于消除人员能力不足、工作方法不科学等主观问题。
- 不同产品形态、产品不同阶段下适用的工作模式是应该不同的,没有最好的,只有最适合的。相关书籍:《跨越鸿沟》
- 软件质量管理难在软件的时间属性,变化是必然的。
- 软件质量在度量的时候需要加上“时间”这个维度,也就是要尽量不留下任何“债务”,无论是技术债还是设计债。
如何在变化中管理软件质量?
- 响应变化,而不是避免变化,响应力=容易改变。
- 没有度量就没有管理。度量是为了改进,不度量就无法改进,最终结果需要度量,中间核心环节更需要度量。
- 管理变化应关注趋势胜过关注现状。管理变化的核心在于持续度量以获取趋势,进而持续改进,这与公司目前推行的持续改善完全一致。
- 软件质量四个重要方面:外部质量、内部质量、过程质量和安全可靠。
- 内部质量:
- 可读性:代码首先是给人看的。度量方式包括代码评审(会)、代码检查工具(推荐使用SonarQube)。
- 可测性:不可测就不可修改。度量方式包括单元测试覆盖率。JUnit去年已经开始推广,后面还需要不断加大用例粒度。
- 模块化:分而治之,强调高内聚。度量方式可以通过CodeCity模型评估。
- 变更影响范围:强调低耦合。与“模块化”原理相似。
- 过程质量:加强各环节的合作,消除对立。
- 转变行为才能促使转变思维。
- 应对变化的一个思路:如果不可预测就不断探索。
软件质量管理的行动建议
- 质量内建:措施包括组织结构优化、人员能力培养、加强质量分析而非单纯的验证。
- 敏捷管理:敏捷三角,围绕价值、质量和约束开展工作。
- 持续改进:尊重客观规律,强调保持行驶在正确的道路上,而不是急切到达目的地,因为很多事情都无法达到立竿见影的程度,而需要一个过程。
答疑
- 如何度量外部价值?比如:活跃度、交易频率、交易速度。总而言之,用户行为背后的东西。
- 如何预防缺陷?比如:测试左移,让客户或者测试人员尽早参与到设计中来;测试右移,灰度发布,线上试用,应该更适合于互联网应用,而不适合企业级应用。我个人认为根本还是在于科学的工作方式。