03-开发领域实践
分支模型
分支模型是配置管理的核心,是团队协作管理不可或缺的一部分
分支模型通常可以分为主干分支开发模型和特性分支开发模型
团队需要根据业务特点、团队规模以及现状阶段来选择分支模型,形成最佳实践
没有绝对好的分支模型,只有适合团队现状和上下文环境的分支模型
本地开发
高效本地开发旨在提高开发者编码效能,关键是让开发者不受阻碍,不受不必要的干扰
建立规范化、自动化的研发流程是高效开发的关键,也是持续投入改进的重点
高效开发环境构建原则:建立适合自己团队的研发规范;利用资源换区时间;服务化、自助环境的获取;环境一体化、一致性的建立与保证
云端开发
云端开发是解决本地资源不足、开发环境差异和云原生环境下开发困难的有效手段
云端开发涉及共享云端环境、基于K8s Namespace 的隔离开发环境和基于 Istio Mesh 的逻辑隔离开发环境
容器应用热加载是实现云端开发编码实时生效的有效解决方案
代码评审
代码评审是质量内建的核心实践之一,是工程师文化的基石
代码评审实践有多重可操作的类型,类型之间具备不同特点,适用于不同上下文
代码评审既要关注业务价值正确交付,同时还需要考虑代码长期的可维护性
单元测试
单元测试是测试左移的关键实践之一,是高质量测试策略的基础
应该将单元测试代码与业务代码同等对待,提升其可维护性、增加其测试有效性、优化其执行时间、保证其稳定性
单元测试的推进是一项长期投资,应该结合团队现状,循序渐进的持续提升
代码扫描
代码扫描是能够在早期发现代码问题,越早发现,解决成本就越低
修正代码扫描所发现的问题,与修复代码缺陷时类似的,也需要通过回归测试去验证
代码扫描应该是灵活和因地制宜的,而不是机械和教条的
盲目引入代码扫描,往往会大幅增加团队负担,效果反而大打折扣
编译构建
优秀的团队每天都应该自动化地完成最新的代码构建并发布到测试平台
传统的本地编译构建问题很多,业界发展出分布式构建、编译缓存、云端构建等技术
编译构建平台需要关注介入成本,尽量实现无侵入介入
编译构建的优化是不断迭代的过程,编译过程的可视化为持续优化提供了数据基础
架构设计
需求、开发、测试、运维等大部分研发效能领域的提升都依赖于架构设计本身的质量
架构设计并不是为了满足模式和原则,而是在理解分析业务目标后,设计或选取和目标高度关联的最优解
架构设计不是“一锤子”买卖,在整个软件生命周期内都需要守护和持续演进
低代码应用
低代码是一种可视化的软件开发方式,能够缩短研发周期,降低研发成本
可视化表单和可视化流程是地代码中的常用方法
在可视化流程节点中植入与配置质量卡点,是推动质量左移和右移的关键实践
测试驱动开发
测试驱动开发实一种测试在先,编码在后的开发实践
测试驱动开发客观、全面地确保了代码的微观质量,真正实现了质量内建的目标
测试驱动开发原则一:先写测试代码,再写产品代码
测试驱动开发原则二:只允许编写刚好能够导致失败的单元测试
测试驱动开发原则三:只允许编写刚好能够导致一个失败的单元测试通过的产品代码
解读
代码分支的原理是一个分支包含一种性质,比如 master 分支就是生产环境的分支,dev_xxx 就是在开发中的分支,feature/xxx 就是包含某种特性(win/linux 等特性)。
代码扫描的因地制宜指的是,不要纠结开源组件中的问题,重点应关注影响安全性和性能的问题(诸如未关闭的流等)
编译构建的软件 Java ee 项目上基本都是从 ant 到 maven / gradle
所谓测试驱动开发的先写测试代码,再写产品代码,可以参考软件 cucumber robotframework
所谓架构设计的持续演进,是由于业务发展,外部环境变化,导致的应用系统原有的架构设计适应力(性能,容量等)不足,所以架构需要调整。