离岸开发-最重要的东西-质量

在项目管理中,质量被视为最重要的因素。文章详细探讨了如何通过定期举行DP会议、制定必要规则以及定期检查来提高和保证项目的质量。通过分析根本原因、避免常见错误并坚守规则,实现项目的高质量交付。

 对于客户来说,什么东西最重要?质量是最重要的。

不管你的工作速度有多快,如果你总是犯错,你的速度还有意义吗?
不管你的思路有多新颖,如果你的系统总当机,客户会买你的帐吗?   
打个比方,你购买了一个云计算的服务,可是三天两头服务就连不上,或者十天半个月数据就丢失。就算它再怎么便宜,功能升级的再快,你会用它吗?

对于离岸开发来说,质量更是重中之重。如果offshore无法保证质量,onshore自然也不会把活交给你做。

说到质量,就不得不说另一个东西:交付期限。

每个任务都不是无限期的,那么就出现了这个矛盾:为了在期限内完成,经常需要加班加点,这时就很难再保证质量了。那么到底质量和期限哪个更重要?

假如你买了一个期房,按照合同一年后交房。开发商这材料供应出了问题。如果换符合质量的材料,那么要延期半年交房,如果就用现在质量有问题的材料,

那么可以按期交房。你选择按期还是延期?

大多数人应该都选择延期--谁会要质量不好的东西呢?从这个角度看来,质量应该排在第一位。
可见,在质量面前,期限并非是那么的无可调整。

但是不是质量一定大于期限呢?也并非如此。例如某个产品,一年后预计上市。各种宣传,广告已经开始了,这种时候延期就不太可能了,即使有一些缺陷,
也必须按时交付。

质量大于期限的,著名的代表当数暴雪娱乐。相信所有的暗黑迷都经历过不断跳票的感觉吧。
期限大于质量的,记忆犹新的当属苹果公司的地图软件。推出时错误极多,但是仍然上线了。
 
质量和期限相比,到底谁更优先,固然需要客户去决定,但是对于离岸开发中的offshore来说,如果客户没有特殊的要求,一定要把质量放在第一位。
正所谓“人的名,树的影”。offshore凭借什么来博得onshore的信任,进而得到更多的项目呢?质量就是最好的招牌。如果你能保证系统一年都不出一次事故,
那offshore队伍的壮大也仅仅是时间的问题。
 
相信每个人都清楚质量的重要性。但是如何提高和保证项目的质量?每天开会进行强调?还是制定赏罚制度,犯错的人严厉惩罚?
质量的管理,一定要找到行之有效的方法。

一、定期举行DP会议
所谓的DP,就是Defect Protection,就是缺陷预防的意思。DP会议的重要意义在于在事故还没有发生的时候,事先发现了事故的苗头,及时制定预防措施,
避免严重的事故发生。也就是所谓的“防患于未然”。

DP会议如何进行,也必须要讲究方法。如果只是随便的讨论,就很容易变成走形式的会议。

我们在工作中都会进行review。review中发现的问题一定会记录在一个地方,通常叫review form。每经过一段时间,review form中都会有一些问题的记录。
那么DP会议中就可以拿这些review form来进行讨论。
 
review form的格式也非常重要。可以参考下面的格式:
 
review时间
review者
问题分类
问题内容
是否发生过
修改者
修改时间
修改内容
确认者
确认时间
2013/12/01
张三
内容不正确
漏掉了一个条件判断
李四
2013/12/02
增加了出货时间的条件判断
张三
2013/12/01
 
对于问题分类,也需要根据项目的情况仔细制定。例如,问题分类可以为如下几种:
>记述内容不正确
>违反既定的规则
>单纯的错误(例如丢字,漏字)
>格式不正确
等等。
 
通过“是否发生过”,可以判断哪些错误是经常出现的,这可以带来一些警示,这样的错误有可能带来更大的问题。
 
在DP会议上,我们可以把一定期间内(例如2个星期)的review form汇总一下,按照问题的分类,看看哪些错误的数量占的比重多;
按照修改者,看看谁犯的错误比较多;按照“是否发生过”,看看哪些错误是经常发生的。
 
我们会从中发现很多有价值的问题,例如:
· 有些问题经常出现。如果不改善,今后有可能造成重大的问题。
· 有些问题经过分析,发现不是个人的问题,而是工作流程的问题。我们需要去改善流程。
· 我们会发现一些问题是由于个人的工作态度导致的,我们要想办法去改变他的工作态度。
· 我们会发现一些人的质量有问题,需要重点关注一下。 

发现了问题,如果想要解决它,一定要分析问题的根本原因。何为根本原因的分析?
举个例子:某个人给客户做报告,结果写错了一个数字,遭到了客户的指责。
那这个人犯错误的根本原因是什么呢?
有些人会说:太马虎,不仔细。
其实这并非根本原因。马虎只是表面的现象。根本原因是这个人没有self review的习惯。做完的东西,自己不会去仔细的检查的一遍,所以会把错误流转到客户那里。 

为什么要进行根本原因的分析?因为如果不分析出来根本的原因,那么针对问题所制定的对策,一定不是行之有效的对策。

例如上面的例子。如果认为原因是马虎粗心,那么解决的方案是什么呢?恐怕也只能是不断强调他不要马虎,要仔细。
毫无疑问,这种强调是没用的。相信具有多年工作经验的人更是有深刻的感受。

接下来看看真正的根本原因的对策:如何避免他不做self review?
制作一个checklist,让他每次进行交付时,都必须提交一个checklist。
这样他是不是一定会做self review了?
什么?他实在太懒惰了,虽然有 checklist,但是他基本不看,全部check OK。
那么就在他交付之前,坐在他旁边,看他一项一项地填写checklist。坚持一段时间,相信他会养成这个习惯。
或者我们就不用电子版了,改用手抄版的checklist。让你没那么容易写OK。
衍生的各种情况不深入的讨论了,总之要铭记一点:如果没分析出来根本原因,那么对策一定是无效的。

其实DP会议主要做的也就是两件事:分析根本原因以及寻找对应策。  

二、制定必要的规则
正所谓国有国法,家有家规,一个项目若想保证好质量,必须要制定必要的规则。例如:遇到自己不了解的情况,不要自己判断,一定要报告联络;
向onshore交付之前,一定要进行内部review。
这些规则其实主要来自DP会议:分析根本原因,制定对策。有些对策就必须通过制定规则来实施。
 
坚守这些规则非常重要,既是保证项目的质量,也是保护自己的一种方式。
例如,项目中有这么一个规则:登录进产品环境的服务器时,必须要得到leader的承认。
某个人在调查一个数据的时候,需要登录进产品环境的服务器。不过他觉得要leader承认有点费时间,而且只是一个简单的检查,就在没有承认的情况下
登录进了产品环境的服务器。结果运气非常不好,虽然是一个简单的检查,但仍然造成的其他的错误。
这个时候,onshore首先要看的是,整个过程中是否遵循了既定的规则。
结果发现他没有遵循既定的规则。这个时候,onshore会问一个简单的,但是让你十分难以回答的问题:为什么你不遵守既定的规则?
onshore的另一个问题更加让人难以回答:其他既定的规则是否也真的在遵守?
 
规则就是这样的东西,你遵守它,没有犯错误的时候,就没有任何问题。一旦你不遵守它,犯了错误,那么它就出现了,而且会让你很难以对付。

三、定期检查
规则是制定了,但是否真正有效的实施了,在实施过程中是否发现了问题而需要改进?这些都离不开定期的检查。
如果没有定期检查,大部分的规则都会在一定时间后消失得干干净净。 

质量的改进和保持是一个持续的过程,它没有终点,只有从一个阶段到另一个阶段的过程。  
 
### 光流法C++源代码解析与应用 #### 光流法原理 光流法是一种在计算机视觉领域中用于追踪视频序列中运动物体的方法。它基于亮度不变性假设,即场景中的点在时间上保持相同的灰度值,从而通过分析连续帧之间的像素变化来估计运动方向和速度。在数学上,光流场可以表示为像素位置和时间的一阶导数,即Ex、Ey(空间梯度)和Et(时间梯度),它们共同构成光流方程的基础。 #### C++实现细节 在给定的C++源代码片段中,`calculate`函数负责计算光流场。该函数接收一个图像缓冲区`buf`作为输入,并初始化了几个关键变量:`Ex`、`Ey`和`Et`分别代表沿x轴、y轴和时间轴的像素强度变化;`gray1`和`gray2`用于存储当前帧和前一帧的平均灰度值;`u`则表示计算出的光流矢量大小。 #### 图像处理流程 1. **初始化和预处理**:`memset`函数被用来清零`opticalflow`数组,它将保存计算出的光流数据。同时,`output`数组被填充为白色,这通常用于可视化结果。 2. **灰度计算**:对每一像素点进行处理,计算其灰度值。这里采用的是RGB通道平均值的计算方法,将每个像素的R、G、B值相加后除以3,得到一个近似灰度值。此步骤确保了计算过程的鲁棒性和效率。 3. **光流向量计算**:通过比较当前帧和前一帧的灰度值,计算出每个像素点的Ex、Ey和Et值。这里值得注意的是,光流向量的大小`u`是通过`Et`除以`sqrt(Ex^2 + Ey^2)`得到的,再乘以10进行量化处理,以减少计算复杂度。 4. **结果存储与阈值处理**:计算出的光流值被存储在`opticalflow`数组中。如果`u`的绝对值超过10,则认为该点存在显著运动,因此在`output`数组中将对应位置标记为黑色,形成运动区域的可视化效果。 5. **状态更新**:通过`memcpy`函数将当前帧复制到`prevframe`中,为下一次迭代做准备。 #### 扩展应用:Lukas-Kanade算法 除了上述基础的光流计算外,代码还提到了Lukas-Kanade算法的应用。这是一种更高级的光流计算方法,能够提供更精确的运动估计。在`ImgOpticalFlow`函数中,通过调用`cvCalcOpticalFlowLK`函数实现了这一算法,该函数接受前一帧和当前帧的灰度图,以及窗口大小等参数,返回像素级别的光流场信息。 在实际应用中,光流法常用于目标跟踪、运动检测、视频压缩等领域。通过深入理解和优化光流算法,可以进一步提升视频分析的准确性和实时性能。 光流法及其C++实现是计算机视觉领域的一个重要组成部分,通过对连续帧间像素变化的精细分析,能够有效捕捉和理解动态场景中的运动信息
微信小程序作为腾讯推出的一种轻型应用形式,因其便捷性与高效性,已广泛应用于日常生活中。以下为该平台的主要特性及配套资源说明: 特性方面: 操作便捷,即开即用:用户通过微信内搜索或扫描二维码即可直接使用,无需额外下载安装,减少了对手机存储空间的占用,也简化了使用流程。 多端兼容,统一开发:该平台支持在多种操作系统与设备上运行,开发者无需针对不同平台进行重复适配,可在一个统一的环境中完成开发工作。 功能丰富,接口完善:平台提供了多样化的API接口,便于开发者实现如支付功能、用户身份验证及消息通知等多样化需求。 社交整合,传播高效:小程序深度嵌入微信生态,能有效利用社交关系链,促进用户之间的互动与传播。 开发成本低,周期短:相比传统应用程序,小程序的开发投入更少,开发周期更短,有助于企业快速实现产品上线。 资源内容: “微信小程序-项目源码-原生开发框架-含效果截图示例”这一资料包,提供了完整的项目源码,并基于原生开发方式构建,确保了代码的稳定性与可维护性。内容涵盖项目结构、页面设计、功能模块等关键部分,配有详细说明与注释,便于使用者迅速理解并掌握开发方法。此外,还附有多个实际运行效果的截图,帮助用户直观了解功能实现情况,评估其在实际应用中的表现与价值。该资源适用于前端开发人员、技术爱好者及希望拓展业务的机构,具有较高的参考与使用价值。欢迎查阅,助力小程序开发实践。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值