现在的位置: 首页 > 综合 > 正文

识别算法中的漏洞问题

2013年09月19日 ⁄ 综合 ⁄ 共 1144字 ⁄ 字号 评论关闭

识别算法中的漏洞问题

 

       软件研发是一件非常艰辛的工作,程序和BUG就象孪生兄弟一样,是程序就一定会有BUG,有时甚至BUG成了程序的代名词,我们会发现程序员大部分的工作时间是在解决程序中的BUG。同样地,识别算法中的漏洞,即BUG,也是一个让人头疼的问题,在这里,结合本人在识别算法中的研发经验,对于识别算法中的漏洞问题浅谈如下几点看法:

 

1、首先,不要想当然地认为我的算法没有BUG了,由于现实问题的复杂性,导致算法漏洞不可避免,算法越复杂,则BUG越多,这个需要我们去正视它,但是也不要惧怕它,我们唯一能做的是努力去找BUG,然后努力去解决BUG,努力去使BUG的出现概率降到最小。

 

2、正是由于漏洞不可避免,所以在研发过程中需要测试持续进行,需要耐心地去解决算法中的漏洞问题,在解决问题的过程中,要努力使算法保持稳定,避免在性能上的波动,因此,大量的测试数据准备是非常必要的,它是使得算法能够保持稳定的数据基础。

 

3、前期的可行性分析非常需要,前期的工作越充分、越慎重,则研发风险越小,算法上的选择要结合所要解决问题所处的条件限制和要求,尽量选择自己所熟悉的算法,很多较新的、看上去很先进的算法对于你所要解决的问题并不一定合适,当前的识别算法通用性差、适应性不好是众所周知的。在前期的研发中会有大量的BUG,但是只要这些BUG大部分是可以解决的,则不用担心算法设计方向是否正确的问题,一个好的、正确的算法在后期的研发中产生的漏洞会是逐渐收敛的,当你发现是这种趋势时,则可以放心地做下去了。

 

4、在解决算法漏洞的过程中,会遇到算法取舍的决策问题,当两种算法无法调和时,则以出现BUG概率的大小为原则,去掉小概率的算法,保留大概率的算法,这里概率的大小也许无法精确计算,只能去估计,甚至凭经验做出概率大小的判断。

 

5、对于致命的漏洞是一定要避免的,如程序崩溃、数据错乱、数据无法处理等等,这类漏洞在分类等级中一般是属于最高级,是需要优先解决的,这类BUG一般在研发前期会较多出现,在研发后期经常是因修改程序而导致的。

 

6、要做好版本控制,可以单独为算法设置一个版本号并备份每个版本的代码和相应文档,版本号记录了算法的升级过程,在研发后期尽量避免频繁升级版本,在经过充分测试后再来确定是否要升级版本,对于小概率的BUG,可以累积到一定程度后再来升级版本,以减轻测试的工作量,但是对于严重的BUG,则一定要及时升级版本。

 

我们最近开发了一个新识别产品,误识率由最初的百分之一,逐渐降低到千分之二、千分之一、万分之五,最新测试降低到了万分之三,这是一个艰难的过程,我们为此曾经忧虑过、彷徨过,但终于走过来了,回首这段历程,总结了如上几点心得,希望对于开发新软件识别产品的人有所帮助。

抱歉!评论已关闭.