1、代码打靶铁三角的体系化实践2023 深圳站张晓龙中兴通讯云平台资深架构师,2020年到2022年公司十佳教练,Go 语言知名打桩框架 gomonkey 作者,具有十多年软件架构和开发经验。近年来专注于 PaaS 和 5G 等大型平台软件的设计与开发,尤其对于TDD、DDD 和微服务具有深刻的理解,对于大型软件的重构具有丰富的实战经验。曾作为演讲嘉宾或出品人多次参加ArchSummit、CppSummit、SDCon、TiD 和 DDDChina 等技术大会,广受好评。资深架构师 公司十佳教练 gomonkey作者2023 深圳站目录CONTENTS背景01 代码打靶的体系化建设02 运营与成效
2、03 2023 深圳站01背景2023 深圳站某项目开发痛点地图维度方案设计故事拆分UT设计(TodoList)UT开发业务代码开发UT执行Gerrit同行评审架构度量(含治理)性能度量流程PP2:架构设计方法不明显质量PP2:方案设计内容缺失/异常场景缺失PP3:用户故事与开发任务混淆PP4:TodoList 只是功能列表,不可指导UT开发 PP5:开发自测有效性差,功效分配比率低PP8:架构耦合(重复度高/复杂度高)PP7:评审意见有效性差,偏业务,设计类、CC类很少,异常驳单普遍PP8:可维护性和扩展性分数偏低 效率PP6:开发速度慢 UT ROI低PP6:执行速度慢,最长1分钟 PP是
3、PainPoint的缩写 PP7是针对Gerrit同行评审在质量维度的痛点2023 深圳站探索最佳实践代码评审效果不佳急需提升代码评审能力孵化代码打靶实践 由编码原因导致的故障泄漏占比高,但代码评审发现的相关问题少 各研究院都在积极探索如何提升代码评审能力的最佳实践,帮助降低因为编码问题导致的故障泄露 代码打靶实践脱颖而出,很好的弥补了编码培训以外的实战环节,以练补学,学练结合,是一项很好的编码规范学习和常见缺陷练习活动2023 深圳站代码打靶穿刺维度ilearningiCentergerrit易用性对照缺陷分类模板,手工填写对照缺陷分类模板,手工填写对照缺陷分类模板,手工填写安全性 申请考试
4、管理权限,设置考试以及批阅人等流程,较繁琐为保证保密性,逐一设置打靶人员可见权限,较繁琐设置评审人员效率手工阅卷,周期长,人力投入大,效率低下手工阅卷,周期长,人力投入大,效率低下 手工阅卷,周期长,人力投入大,效率低下规模受限于人工阅卷,开展大规模代码打靶活动比较困难受限于人工阅卷,开展大规模代码打靶活动比较困难受限于人工阅卷,开展大规模代码打靶活动比较困难A研究院穿刺B研究院穿刺2023 深圳站契机-起点1、专职团队忙于交付,无人力承接;2、公司大,技术氛围好;3、共创共建已形成一种文化。1、领导重视;2、教练组支持;3、个人影响力较大。天时人和地利1、虽然代码打靶实践很好,但成本太高,项
5、目投不起,需要找到一条路径,大大降低规模化推广的成本;2、研发能力的数字化,需要结合项目实战,用一个工具来统一呈现。2023 深圳站02代码打靶的体系化建设2023 深圳站代码打靶铁三角平台规范内容代码打靶规范实例化:缺陷分类体系内容实例化,靶子&靶场建设平台实例化,代码打靶服务实例规范不依赖于其他两者内容依赖于规范,规范越好内容的质量越高平台依赖于内容,内容越好平台的用户越多价值规范是基础,让代码打靶标准化内容是根本,让代码打靶高质量平台是支撑,让代码打靶自动化关系2023 深圳站规范:缺陷分类体系(类似知识体系)缺陷分类:包括缺陷大类、缺陷小类和缺陷细项,将缺陷记录标准化多语言:Go、C&
6、C+、Python、Java、Scala和前端规范组成:通用+语言特色主要内容更加抽象更加体系化从静态的文档变成动态的可活用的编码参照物与编码规范的区别2023 深圳站规范:缺陷分类演进规范 v1规范 v2以业界标准为主以经验为主实体值对象缺陷小类 缺陷细项 2023 深圳站规范:多规范多版本公共规范:通用语言标准的缺陷分类私有规范:用户定制的缺陷分类多规范通用规范缺陷细项的定制业务规范的建设DSL规范的建设文档类规范的建设规范有严格的版本管理每个规范对应一个工作空间在工作空间中可以同时生效规范的多个版本每个靶子可以灵活选择某规范的一个版本多版本2023 深圳站规范:自治还是复用根据应用过程中