我们为什么不多做点预防错误的工作

上一篇 / 下一篇  2007-10-09 23:01:20 / 个人分类:自动错误预防(AEP,Automated Error Prevention)

我们为什么不多做点预防错误的工作51Testing软件测试网[^]i^W0|0g

 51Testing软件测试网eI0RY!y

陈能技51Testing软件测试网Wf@m`:Im

2007-10-951Testing软件测试网3T'}f1{:z%y6|D

 51Testing软件测试网f!r;v0OTM

原文:Why aren’t we doing more to prevent Errors? - Adam Kolawa,Parasoft Corp51Testing软件测试网$M v-M#CZ8p6x'k H

 

~P6kx/k#d-p6Wb3F0

软件行业经常抱怨低质量的烦恼。我听到过很多关于不好的软件产生的理由:外包开发、需求变化、过于复杂等等。而最流行的借口是:糟糕的软件就是无法改变的事实,就像周期潮汐一样。51Testing软件测试网gNu"aP `]

 51Testing软件测试网1{!Pa;D%?}%b*S(F

这些观点真是太错误了!糟糕的软件不是我们必须忍受的。我们必须停止专注于很差质量的产品,并开始修正我们的制造过程。没错,我说的是“M”(manufacturing)。软件与其它制造产品一样。汽车、烤箱、咖啡杯和计算机都是从生产线制造出来的。如果在生产线的最后发现了缺陷,一项一项地修改那些产品是无济于事的。生产线本身应该检查和修正它们。软件也一样。软件缺陷也必须被防止,不是简简单单地被发现而已。

!B9^` ^ NRqCa0

 

B M5W?[(`0

我们有很多时间从汽车行业学习怎样处理缺陷。日本人是第一个学会零错误生产线的。德国人和瑞士人紧跟其后。后来,美国人也开始生产出更高质量的汽车和卡车。我们从汽车行业发现什么?错误预防过程。51Testing软件测试网;bVrd/~

 51Testing软件测试网3h!c r&N8Y(js

定义错误预防

J.m\N `)u/Ji2x0

让我们看一下这是什么意思。可以遵循5个特定的步骤来防止制造错误:

BK6T8JL_&Y^0

1、 识别错误51Testing软件测试网@!\3H"Q#a/D

2、 找出错误的原因

3?:sh,{;R8u:\ r@0

3、 定位产品产生错误的地方

6iX-P4|Pc)|!FNpm|0

4、 执行预防措施来确保相同的错误不再出现

0S~7J-tcYv6j0

5、 监视这个过程51Testing软件测试网 r7` C5p&t*N}2N

 51Testing软件测试网Z~f;X9D2`;D(K){6_T

例如,检查者发现生产线上的座位螺钉没有被很好地拧紧。造成这种错误的原因是用于拧螺钉的工具不是很精确地配合。纠正措施是提供合适的工具给安装座位的生产线。监测过程是由检查座位螺钉的紧密来完成的。监测同时提供关于使用正确的工具后所节省时间的数据。51Testing软件测试网a@:ag0A'C{!v-J-h

 51Testing软件测试网5C+F"YRq

错误预防与错误检查是很不一样的。错误检查是在一个应用程序完成后,去找出它的错误并修正的过程;产生那些错误的过程仍然没有得到纠正。在上面的例子,错误检查的结果只是简单地把座位螺钉拧紧。这个动作确保了座位螺钉安装正确,但是保留了产生问题的根源-制造的过程。问题还会重现,因为问题的根源没有得到纠正。

@(?/BP |9K mb n)pV0

 51Testing软件测试网i(WeTjz

错误检查是当前软件行业处理bug的方法,只是“头痛医头,脚痛医脚”而已。进行错误检查并不能治愈错误的根源,我们必须要问,为什么我们的行业没有充分利用错误预防?为什么在错误预防方面不能像其它行业一样?这是至关重要的问题,因为现在软件已经成为我们日常生活中的一部分。

dL mXG6Wl0

 51Testing软件测试网[M_"J9Ou}!I"o;U

每当我问起这个问题,有人指出像ISO9001CMM和六个西格玛就是关于错误预防的。虽然很有价值,但是这样的方法不能直接进行错误预防;它们只是为了防止错误而对流程进行控制。没有自动化,质量提高缺乏目标,因为它们不能应用能真正强化和支持所编写的过程的最佳实践。51Testing软件测试网2@4x u6f!b.K

 

'H;{L/D:M0

自动错误预防51Testing软件测试网~ Y&T/w e!W

在软件行业,制造高质量应用程序的唯一方法是通过自动错误预防(AEPAutomated Error Prevention)。AEP的概念与上面列出的5个错误预防步骤是一致的,外加自动化。把错误预防与自动化结合在一起是个困难的任务,很多失败的尝试。

fCB\\\t'E0

 

%E K7F4m%bU0

那么它是如何工作的呢?首先,定义和应用实用的技术来在开发过程中帮助阻断错误。可以把代码标准检查、单元测试、集成测试、压力测试、连接检查、监视等放到软件开发周期中并自动化。就像下图所示,让AEP贯穿软件开发的四个核心阶段。AEP是个全寿命周期的错误预防。51Testing软件测试网YW/Tl~9@y w(}t

 

Q3p9^n9v2l r0

Z?[k{0

 

L m6x:gRk v0

在开发过程中的任何阶段发现的错误都可以与前面一个阶段相关联;需要做的是修改上游的过程并防止错误重新出现。这样,从个别实践获得的信息可以灵活地被应用到过程改进并防止将来的错误出现。

]-LY!V5v#a*x&G0

 

@D*y0t/{4I(bf0

当这样的过程被自动化后,它能每天都给软件开发过程带来益处。AEP的概念适合任何开发过程,包括传统的瀑布模型、迭代方法、最近兴起的极限编程等。更重要的是,AEP正是质量改进模型ISO9001CMM和六个西格玛尝试实现的。AEP应该被整合到任何质量改进模型它是唯一被证实的能强化那些所编写的质量改进过程的方法。

;~{:r;mM*d0

 

5w4~7VK%kC8j0

实现AEP

R Kd7L$x0

在识别出需要自动化的错误预防技术后,下一步是如何成功地实现它们。其中一个重要的问题是团队行为。经验告诉我们这些实践必须融入使用它们的软件开发组。这意味着开发组中的每个人都必须明白他的角色开发人员、架构师或项目经理并明白如何把那些实践适当地结合到角色。例如,明白谁创建代码标准,这些标准在哪里保存着,谁使用它们,什么时候使用。最重要的是,定义团队行为,确保实践被采用并保持,而不会随着时间淡化。

7UIUI,[vwE8m0^0

 51Testing软件测试网5n3B&f^u/I5V0U.D4r

AEP另外一个关键的问题是改进过程的能力。这是通过反馈循环来达到的。例如,我们在开发一个N层架构的系统。为了知道系统能处理怎样的通信量,你需要执行压力测试。不幸的是,你发现系统在压力面前垮掉了。原因是中间件在与数据库的连接存在内存泄露。51Testing软件测试网`aS ~"@5p U

 51Testing软件测试网+R mm O5r

通常,修正这个bug很简单,但是不能防止类似的错误发生。在AEP,你希望纠正错误的根源,从而防止内存泄露问题的出现。错误的根源是当连接打开后没有被关闭。因此你能怎样防止它的出现呢?假设发生错误的中间件是用Java写的,你需要确保每个类的打开方法都有一个finalize()方法来关闭连接或者有finally块。代码标准是一个很好的方法简单地创建一个规则来检查这个配对,确保每一个open方法都有一个close方法。通过创建这个规则,你从压力测试错误游到上游,并建立一个代码标准强制要求所有的连接都应该关闭。51Testing软件测试网6xoi{SrD {

 51Testing软件测试网G~ |W8xj

下一步是自动地实现这个改变。应该使用代码标准扫描工具来确保规则被用在开发组中。这才是真正的AEP实现。你不仅改变了确保错误不再重现的做法,而且自动化了这个过程,并使用它的结果来度量改变如何有效地被整个开发组遵循。这使得判断你的改变是否有效成为可能,或者判断是否需要在过程中实现进一步的改变。51Testing软件测试网5[;l\G^5[h,cf

 

@Qjj j8Q\0

这里描述的过程是细致和很难执行的。它需要经验和耐心去正确地实现。随着你的AEP经验的丰富,你会发现实现预防方法变得容易达成。幸运的是,已经有现成的代码标准可以帮助你减少实现AEP的初始工作。这些现成的规则是最有效和最简单的开始使用AEP的方式。与其在每个错误寻找的循环中来回,简单地对你的代码采用一组现成的代码标准检查会更有效。这让你可以利用那些花费了数不清的时间来分析大量的代码的行业专家的辛勤工作成果,而不用自己来在测试过程中发现。

hYm%sUFN G0

 

M;c j*Ks(K0

最后的话

5pPs0{m0

软件行业必须成熟起来。缺少了有效的错误预防和过程改进是不可能成熟的。我们没有其它的选择我们必须这样做。如果我们不这样做,我们的行业会给我们深刻的“回报”,就像美国汽车产业在上世纪60年代和70年代时一样,失去了几乎一大半的市场给那些知道如何预防错误,从而制造更高质量产品的国外竞争对手。

r*h6}'?G|/Lp0

 51Testing软件测试网 U@o"p&w

 

O g!g} H)K [0

 51Testing软件测试网(fUA'Ox ]5L^\


TAG: error 自动错误预防 AEP Automated Prevention

侧视浮生 引用 删除 photon   /   2007-10-14 21:52:13
辛苦了。
 

评分:0

我来说两句

Open Toolbar