质量管理,软件项目生命周期中的专属医生(上)----《定义和控制》

2018-02-02 16:12:00 浏览数 (1)

“鹅厂网事”由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网络与服务器领域,规划、运营、研发、服务等层面的实战干货,期待与您的共同成长。

网络平台部以构建敏捷、弹性、低成本的业界领先海量互联网云计算服务平台,为支撑腾讯公司业务持续发展,为业务建立竞争优势、构建行业健康生态而持续贡献价值!

作者简介:lindaxu(徐玲),高级工程师,网络平台部,服务器平台中心,研发管理组组长。

【写在前面】

QA是干什么的 “质量管理是做什么的?” “是做产品质检吗?” “质量管理的核心工作做数据度量,出报表吧?”

经常会在外部或内部的会议上,被不同公司、不同背景、不同岗位的人问起这样的问题。质量管理(QA)不象开发工程师,被大多数人家喻户晓,开发就是码农,典范自画像是:体型瘦弱,体恤牛仔裤,带着厚厚的眼镜,坐在屏幕前敲代码。而质量管理,大多数圈外人下意识浮出的画像:就是生产流水线上,拿着放大镜检查产品瑕疵的人。

VS

其实不然,质量管理即不是产品质检,也不是软件测试。质量管理是指确定质量方针、目标和职责,并通过质量体系中的质量策划、质量控制、质量保证、质量改进来使其实现的所有管理职能的全部活动。

如果把产品看成孩子,团队成员就是一个家庭,PM相当于爸爸或妈妈,质量管理工程师(下文统称为QA)就是这个家庭的专属医生,医生要结合家庭病史编制常见病治疗和预防方案,定期对孩子进行体检,分析检查结果,并治疗孩子疾病。同时将常见病的治疗、预防方案教给家长,让家长能独立带领孩子健康成长。所以对应的QA的工作可提炼成4方面的活动: • 负责软件研发质量体系和运营质量体系的定义、标准规范和模型建设—写医书; • 负责在流程体系框架指导下,实施第三方的检查和审计 –定期体检; • 负责度量建模并制定质量指标,实施质量评测,发现问题和短板—诊断疾病; • 负责聚焦核心矛盾和短板,实施改进和提升—治疗。 通过这四个阶段的质量闭环化管理,帮助项目不断提升效能,最终达成项目目标。

由于我鹅厂的业务领域广,产品形态各异,质量管理4阶段活动的侧重点也各不相同,所以从笔者最熟悉的网络平台部质量工作为基础进行讲解,如果有任何异议和见解,欢迎随时拍砖或跟贴讨论。

【定义】 资深的医师都会将自己行医过程中的各种疑难杂症表现、诊断、治疗和预防方案记录下来,编制成册,以便日后随时备查和使用,遇到同样的病症可以按经验流程操作,这个过程就是定义。

同样的,开展质量管理活动前,先要确定质量目标,要遵循的必要过程和相关资源。遵循的这个过程就是抽象出来的流程框架。

网络平台部经过5年的持续建设、优化和流程完善,基本搭建了一套成熟的软件流程管理框架,涵盖软件项目的全生命周期的流程步骤、规范标准和关键输出,实现从研发到运营过程的闭环化管理。

• 2009年完成部门研发流程框架,实现流程从无到有的突破; • 2010年推广敏捷思想和方法体系,并配套轻量化项目管理工具,实现流程一刀切,过程过重的问题; • 2011年推行差异化流程管理和敏捷工程实践,这一年code review,持续集成等实践在部门项目中落地,并得到快速发展; • 2012~2013年将过程管理拓展到软件运营阶段,建成运营管理流程和规范,实现产品质量的闭环化管理; • 2014年建设建设《网平软件系统能力成熟度模型》,区分不同项目类型,从8个维度定义软件架构能力和运营能力的成熟度标准。 网平软件流程整体框架

当然,流程体系框架的建设不是一蹴而就的,他是循序淅进的,由当时实施过程中的核心矛盾趋动不断完善的。

 举个例子:2012年的时候,网平的各大平台型项目蜂拥上线, 向业务部门推广运营,结果上线后各种问题频发,由于长期关注产品研发质量,忽略产品运营过程和质量,导致产品上线后出现各种操作和规范性问题,引发业务部门用户的抱怨,这种矛盾趋动下加速了IT运营管理过程的建设和落地,从而实现了整个软件生命周期研发到运营的闭环化管理。 有了体系化的流程架构指导,接下来就是在各项目中的差异化落地和执行了。

【控制】 作为家庭的专属医生,是家庭以外的独立第三方,他参与到家庭里对成员安排定期体检,提前发现并预防可能会发生的疾病、隐患。

QA在现有流程体系框架指导下,对项目执行过程中的关键点和薄弱环节进行审核和检查,提前发现不合规问题和操作风险,这个检查根据项目成熟度情况设定,对于不同成熟度的项目团队,QA参与的力度和检查点都不一样。

案例一: 2009-2010年网平研发过程体系初建阶段,一切从无到有,新的研发团队、新的工作模式,项目成员对过程和规范的理解参差不齐。

团队要渡过艰难的磨合期,快速滚动起来,这个阶段不仅仅是按照研发流程去执行那么简单,还要让流程化、规范化操作快速落地,QA就必须参与到项目里和团队一起去执行: • 规划阶段跟PM一起制定时间窗,帮助团队找到适合自己的迭代节奏和输出; • 在需求管理阶段协助项目一起梳理需求,识别实现优先级,并指导需求的细化,拆分和评审; • 需求实现阶段协助开发一起拆分任务,评估工作量等。 … …

当按照既定的过程运作几个迭代后,团队有了默契,形成一定的规范意识和操作习惯后QA就可以跳出来,进行过程关键节点跟进和交付件的检查,去挖掘和发现其他过程的问题并不断优化。

案例二: 网平研发过程体系持续优落地和滚动推进,到2012年中时,各研发团队已基本形成规范化的操作习惯。这时新的矛盾出现了,软件上线后运营规范和运营质量突出。仅5月-7月期间,就发生7起运营故障,其中发布变更操作不规范导致的故障就有5起。显示出我们在运营管理规范上的缺失,以及运营过程审计方面的不足。

于是部门调整建设方向和跟进策略,由原有只聚焦研发过程管理,拓展至软件运营过程管理,QA梳理运营管理流程,并与团队一起落地执行,持续优化调整,帮助团队规范运营操作,提升系统运营质量。而对于研发过程的审查,进行关键节点审计,比如:需求评审,方案评审,测试报告以及发布准入等合规性,完备性检查。

2013年网络平台部实现了软件研发到运营过程的闭环化管理, QA对项目实行差异化审查,根据项目类型(平台项目、应用项目、单机项目)的不同,审查和控制的关键节点不同。下图为平台类项目的流程执行审计表节选。

这里还要罗嗦一句,关键节点的检查和审计只适用于成熟度比较高的团队,对于还在摸索磨合以及新组建的项目来说,这种审计会给项目组带来压力和负担,增加额外沟通和输出,让质量管理变成团队的对立面,执行起来很容易流于形式。这时最好的办法就是参与进去, QA和项目团队一起制定并细化遵循的流程和规范,参与到项目里跟团队一起执行和操作,发现一个问题就解决一个问题,当团队逐步良性自运转后,再实施关键节点审计。

再说控制手段,当跟进的项目多时,这种检查和审计需要投入的工作量是巨大的,而且人工跟进的效率低下,这时自动化系统的支撑就非常必要了。

网平的自动平台建设,旨在通过平台整合,功能定制,信息的聚合和展示,实现流程执行工具化,规范项目组过程操作并释放QA的投入人力。经过一年半的建设和优化,打通SVN、TAPD、研发质量管理系统电子流和管理平台,实现从软件研发到运营的线上流程管理。2014年中完成监控平台建设,将审计重点由事后解决补缺转移到事前发现和规避。下图是网平2014年的质量管理框架示意图,研发管理平台和研发质量管理系统的整合打通,支撑了整个研发流程管理和度量评估体系。

在过程跟进和审计阶段,QA除了指导和检查过程执行规范情况外,还需要推动团队结合自身需要尝试开展一些实践工程和活动,比如:自动化测试、Codereview、CI等,来不断提升项目的质量和效率。

【结束语】 软件过程执行的是否规范,需要有一套审计的框架和标准;规范操作和流程化是否能带来质量和效能上的提升?研发和运营结果是否达成项目目标和要求?如何衡量这些效果,有什么机制去保证衡量的完备性和有效性,这些内容将在下季《度量和改进》为大家揭晓。

0 人点赞