热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【华为云技术分享】如何度量前端项目研发效率与质量(上)

DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师。欢迎来这里和我们一起打造优雅高效的人机设计研发体系

DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师。欢迎来这里和我们一起打造优雅高效的人机设计/研发体系。

官方网站:devui.design

Ng组件库:ng-devui(欢迎Star)


引言

在DevOps,有个很流行的说法是XX项衡量DevOps是否成功的指标。通过对研发流程各个阶段的关键数据进行度量,来判断一个项目是否完成DevOps转型。

这个思路非常正确,因为要想改进它,就要度量它。

而对于前端项目大部分也可以套用DevOps的部分衡量指标,我基于本身的项目实践,结合前端项目研发流程的特殊性和差异点,梳理出更适合判断前端项目是否高效高质的衡量指标。而衡量指标大部分都是可以通过工具实现自动化采集,从而可以很容易建立出适合团队本身的交付看板,用于日常项目管理改进。

本文适合前端项目leader,和尝试前端工程实践的工程师们。


前端研发流程

我将前端研发流程分为:设计、开发、个人验证、版本验证、线上验证5个阶段。下面我分别解释下这几个阶段的含义与区别。

设计:前端研发流程最特别的阶段,由于前端业务特点,前端工程师不可避免的将会与设计师和产品尽力进行协同。无论是产品设计的技术可行性评估还是产品体验的讨论,产品设计的阶段将决定业务的实现方式,这是所有需求的源头。与设计师和产品经理的协同效率越高,前端团队的交付效率也会越高。

开发:前端工程师的核心编码输出阶段,这个阶段的代码质量、开发效率、协同联调效率都将决定后续版本的质量和返工成本。在这个阶段有非常多的自动化工具或cli,来协助开发者提升效率和编码质量。但这也是最不好控制得阶段,因为他与个人开发环境和个人技术水平与习惯息息相关。

个人验证:前端工程师开发完成后,在正式提交前,都会有个人验证的阶段。也就是自我验证确保无问题后,再提交入库,启动版本验证阶段。虽然每个开发工程师都会自我验证,但因为开发者思维的存在,这往往是最容易忽视的一个环节。我们需要在这个环节加入很多的自动化验证能力,来帮助开发者在个人开发阶段完成质量的提升。因为,在整个研发流程中,越在前面环节发现问题,其修复成本越低。

版本验证:在前端团队中,各个开发人员完成自我验证后,提交至版本分支后,将启动版本验证阶段。在这个阶段,优秀的前端团队会通过自动化的流水线完成编译打包、静态检查、质量门禁、用例测试等一系列自动化的版本验证动作,完成版本的质量与安全的保障。这个阶段应该是整个研发流程中自动化率最高的环节。效率高、自动化程度高、执行速度快的流水线,将极大提升前端项目的质量和效率。

线上验证:前面四个阶段都是站在开发团队的视角,最后一个阶段是站在用户的视角。也就是说,当你完成了版本发布后,你的产品真实表现如何,用户是否按照期望的方式在使用,有无漏测,有无在开发阶段忽略的质量漏洞,能否先于用户发现问题,能否快速定位到问题。这些都需要在线上验证阶段进行监控与拦截,在该阶段,前端监控,还有各种告警、拨测等工具的应用,都是比较好的优秀实践。

那么到此,整个前端研发流程也就完整闭环。


衡量指标

说完了前端研发流程。那么,在这个流程的各个阶段,我们用哪些可度量的指标来判断每个阶段是否做到了最好,是否还有改进空间?度量指标体系的建立,不仅帮助你了解目前项目的基线情况,更大的价值是能够根据客观的度量数据,牵引团队往达标的方向改进,方向清晰,效果明显。


设计

在设计阶段,我们需要考虑的是如何提升前端人员的效率。这个阶段在很多团队如果设计师与产品经理比较专业,通过设计平台的协同,都能达到很高的效率。但是如果设计师与产品在设计阶段的混乱,可能会导致需求不清晰、设计反复、一句话需求,所以在这个阶段,更多的是衡量产品经理与设计师,通过指标反向约束,避免设计成本转移给前端开发人员。通过项目管理的工具,前端开发者很容易给对应需求打上标签和填写对应信息,从而度量相应指标。

前置时间(Lead time)

前置时间是供应链管理中的一个术语,也被应用于敏捷与devops中,在供应链管理中,是指从采购方开始下单到供应商交货所间隔的时间。而对应到敏捷和devops中,往往指用户提出需求到发布上线的时间。一般情况下,在交付人力稳定的情况下,交付效率都是恒定的,所以前置时间的缩短还要着重审视设计阶段的效率。也就是说,从用户提出需求,到最终设计稿定稿的时间是否存在优化空间。

需求修改频次

由于前端交付产品与交互体验息息相关,存在设计稿和原型频繁改变的情况。需求修改频次,可以记录前端产品需求被修改的次数,从而反应产品经理与设计师在产品设计的规范程度与协作效率。

需求规范度

提交的需求是否满足约定的规范。比如,复杂特性需要有详细的高保真标注图、杜绝一句话需求、杜绝描述不清楚的需求。在收到不满足规范要求的需求,开发人员有权打回需求,以避免后续的开发成本浪费。而规范度遵循度差的团队,应该审视相应角色的协作是否存在优化点。


开发

开发阶段是工程师核心编码输出阶段,在这个阶段,我们关注的主要是交付效率与质量。

迭代人均交付需求数

在单位迭代内,每个开发人员能完成的人均需求数。由于团队划分需求颗粒度习惯是延续的,可能存在个别迭代不同开发人员需求颗粒度不一致的情况,但放在一个较长的时间段内相关误差基本可控。所以平均迭代交付需求数越高,且呈上升趋势的团队,可以理解为团队交付效率高。

迭代人均问题数

而对应的,单位迭代内产生的现网问题数越多,也代表其交付版本质量较差。而如果该指标长期未成收敛趋势,那么也需要同步审视相应的质量保障体系是否存在优化空间。


个人验证

在个人验证阶段,主要是开发人员对自己编写的代码进行合入版本前的自我验证。主要包含功能测试与代码检视等一系列质量活动。当然,在一些优秀实践里,也会引入大量自动化工具和插件,辅助开发人员提前发现质量问题。

代码检查遵从度

良好的代码规范和基础的静态检查能够避免很多低级问题,在这方面基于eslint等一系列工具,可以很容易建立起代码检查的要求。而遵从度的指标,要求开发人员必须满足我们的代码检查要求,比如,严重问题清零,或者问题100%清零等指标。

自动化用例覆盖率

无论是单元测试用例还是E2E的测试用例,在个人验证阶段,开发人员应该编写对应的测试用例,并基于本次代码提交的影响范围,运行相关自动化用例,以确保新功能和历史功能的质量。尤其对于大型的前端业务系统,必须建立自动化用例体系保障长时间积累的大量特性得到质量保障。在此阶段,自动化用例覆盖率越高,越能保障版本的质量。

自动化用例成功率

而用例覆盖率对应的是,自行的成功率。频繁失败的测试用例,要么反应业务功能的不完善,要么反应测试用例的不严谨,从而影响版本质量的验收,应尽力避免。


总结

到个人验证结束,我们将进入版本验证的阶段。

版本验证阶段将是客观衡量指标最多,自动化程度最高,也是度量体系最核心的部分。整体衡量指标大部分都将在该阶段通过自动化的实践呈现,用于评估前端版本的质量与效率。而驱动项目改进,大部分可以基于版本验证阶段收集的度量指标,驱动整体项目改进。

相应内容,我将在第二篇详细展开。

未完待续,敬请期待。



推荐阅读
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
author-avatar
正好忍心_702
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有