《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-07 项目质量(Quality)管理

简介:

本节书摘来自异步社区《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》一书中的第2章,第02-07节,作者 邱毅凌,更多章节内容可以访问云栖社区“异步社区”公众号查看。

02-07项目质量(Quality)管理

screenshot

把项目在预算内准时完成,并不代表就可以顺利结项。如果质量不符合要求,在改善之前,客户是不会愿意当冤大头验收的。

嵌入式系统包含软件与硬件,硬件的质量比较容易理解,例如:结构接缝是否密合、各零件的功能是否正确运行。但软件是逻辑实体,不容易描述其质量等级,软件问题基本上是由人为差错所引起,且问题隐藏在千变万化的逻辑组合中,若等到开发告一段落后才想要去一一找出所有问题,困难度会非常高。软件质量管理的关键是预防重于治疗,尽可能在规划阶段就要做好‘质量计划’,不能全靠事后检查。

一般以研发为主的公司,虽然都知道质量对产品的重要性,但在实际运行时,往往又无视质量单位应发挥的作用。PMI注意到了这件事情,因而在项目管理知识体系中特别提到:在项目运行的过程中,质量单位应该全程参与,不只具有发言权,面对攸关项目的决策,甚至应该具有否决权。

在软件开发项目里更是如此。道理很简单,研发单位根据流程执行产品开发,但最终产品的质量(甚至可上推到项目的成败)却应该是质量单位的责任1。唯有如此,才能避免研发单位陷入‘球员兼裁判’的盲点。

投影片中列举了不少项目质量的思想,无论你是项目经理、工程师或测试人员,只要身为项目的一员,都请务必了解质量的精髓。质量管理必须贯穿整个项目,没有质量观念的团队,将会在项目后期付出沉重的代价。

质量系统是门大学问,市面上有不少体系复杂的质量系统,但我一向认为只需要弄清质量系统的基本概念即可,实际上则必须根据项目的实际状况来制定该项目的质量策略。

screenshot

一般公司或项目团队总是弄不清楚QA、QC、Testing-Team这些名词的定义,所以老是会把团队冠上名不副实的名字。最常见的就是称呼只负责测试的团队为QA,但实际上,公司内部根本没有任何单位负责执行真正QA该做的事。

质量保证(QA)主要目的就是确保产品在既定进度与预算下,能圆满达成预期质量水平与可靠度目标。QA单位的工具就是稽核(Audit),任何项目流程中的工作,从计划拟定、模块设计、Code Review、测试计划、测试涵盖率、生产流程、备料计划等,QA单位都可以进行稽核。特别是项目团队完成了某个里程碑、提出了某项变更请求,或是项目即将进入下一个阶段时,QA单位都应该主动介入稽核,避免问题被拖延到项目后期,将会变得更棘手。

我们知道工程师都是很爱面子的,所以QA单位在执行稽核时一定要注意态度,不能自以为是RD的上级单位,造成团队彼此的冲突。PM更必须注意RD与QA间的关系,并尽可能参加所有Audit Meeting。

很可惜,本公司中并没有‘真正’的QA,但项目里不能没有QA,所以我的项目就只能由PM及其他主管包办代替。因为由主管来执行Audit(请注意,Audit和Review是不同的概念,前者主要关注的是流程与结果,而Review则较为技术性,关注的是detail),工程人员也较容易配合。本公司因人力资源不足,项目执行者也只能从权。

PMP提到了许多QA的工具,基本上和软件工程提到的SQA概念一致,各位有兴趣可以找来看一看。

screenshot

QC和QA的职责完全不同,QA是专注在流程的正确性,而QC则必须确定项目结果与质量标准是否相符,同时确定消除不符的原因和方法。以软件开发来说,QC就是根据质量标准,设法找出某软件版本的所有bug,并持续追踪每个bug被处理的状态。

软件测试有其方法论,QC必须有系统、有方法、有计划地执行测试工作,绝对不是乱枪打鸟。当找到bug后,必须利用bug管理工具妥善管理,每个bug的处理流程都必须记录下来。此外,bug管理软件也能自动产生报表,让项目经理可以判断各个版本间质量水平的趋势。

最后再强调一次,项目团队不能过度依赖QC的测试,如同RD无法写出没有bug的程序,测试团队也无法找出所有的 bug。质量工作一定要在项目前面执行,如果等到后期才来做,势必得付出相当可观的成本。

并非所有公司都能言行一致,虽然口头上说质量第一,但组织中却无法落实质量系统。我们在业界工作,还是要让自己的项目尽量可以站在质量的保护伞下,以下是我的经验和建议。

  • 质量活动必须经过规划,同时符合项目需求,并明文公布
  • 推广‘提高质量,就是尊重客户’的理念
  • 质量活动必须尽早启动
  • 质量小组尽量可以独立存在
  • 质量人员必须经过培训
  • 工程人员必须能够理解,质量人员也是为了项目成功而努力着,并非存心挑剔或找麻烦
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
28天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
3月前
|
数据库
什么是计算机软件开发领域的 verbose 代码和日志
什么是计算机软件开发领域的 verbose 代码和日志
32 0
|
4月前
|
负载均衡
|
4月前
|
运维 监控 关系型数据库
百度搜索:蓝易云【MYSQL四种管理日志详细介绍】
这四种管理日志对于MySQL服务器的性能监控、故障排查以及主从复制等方面都非常重要。在使用这些日志时,应根据具体需求来选择开启和配置,并定期清理和维护日志文件,以免占用过多磁盘空间。
58 0
|
4月前
|
调度
kettle开发篇-写日志
kettle开发篇-写日志
98 0
|
2月前
|
XML Java 开发者
【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging
【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging
37 1
|
3月前
|
供应链 Java 测试技术
开发Java应用时如何用好Log
开发Java应用时如何用好Log
77 3
|
5月前
|
Java Maven
maven 项目配置日志打印以及异常日志打印问题
maven 项目配置日志打印以及异常日志打印问题
72 0
|
5月前
|
SQL Java 数据库连接
SpringBoot项目中Mybatis不打印日志怎么办?
SpringBoot项目中Mybatis不打印日志怎么办?
195 0
|
5月前
|
存储 文件存储
【云备份|| 日志 day5】文件热点管理模块
【云备份|| 日志 day5】文件热点管理模块