一个62岁的程序员由于植入逻辑炸弹被抓了,可能会面临10年的监禁和25万美元的罚款。
这个程序员叫Tinley,是美国西门子在宾夕法尼亚州门罗维尔市的一个合同工,2002年他用Excel和VBA开发了一个软件,管理公司的电气设备订单。 这个软件工作得很好,直到2014年,Tinley在其中植入了一个逻辑炸弹。
于是,每年这个Excel软件都会出点小故障:弹出一些错误消息,按钮的大小也会发生改变。这时候西门子只好把他给叫过来,付给他钱来Fix这些Bug。
Tinley是怎么改这个Bug的呢?非常简单!把那个“炸弹”的触发日期给重置一下,然后就可以等待明年继续收钱了。
事情如Tinley所愿,运转得非常良好,直到2016年5月,他出去度假了,但是西门子要下一个紧急的订单,非常着急,可是这个Excel软件又出问题了。
在西门子公司的强烈要求下,Tinley被迫交出了这个Excel软件的管理员密码,好让其他西门子的程序员去Fix Bug ,很快这个逻辑炸弹被发现了。为了确认就是VBA脚本中的逻辑炸弹引发了过去几年的问题,西门子还请律师和程序员一起工作,一共花费42000美元。
故事讲完了,不知道大家有什么感想?
首先,肯定是不能在软件中留这样的逻辑炸弹了,但是从一个程序员的角度来讲,有这么几点可以思考的:
1. 西门子在门罗维尔市的子公司IT管理能力堪忧啊!
同样的错误,一再出现,居然没有引起他们的重视!每次Tinley过来Fix Bug 的时候,难道都没有人问问root cause吗?为什么一到特定时间软件就会显示错误信息,界面按钮的大小发生变化?(Tinley在辩护中声称这是Excel升级导致的,实际上微软的Office向后兼容性是相当好的)
2. 肯定没有代码审查
根据特定日期触发炸弹,这样的逻辑在VBA脚本中应该是非常清楚的,而VBA脚本是解释执行的,代码就在那里,只要有代码审查,肯定会被发现。
3. 遗留系统的问题
有人对用Excel和VBA来实现一个核心的订单系统感到震惊,其实这可以理解。我在网上搜了一下,门罗维尔市是个小镇,人口才3万,这里可能是西门子的一个办事处。也许他们之前都是手工用Excel来记录这些订单,后来才雇佣Tinley把工作自动化了。
2002年开发,已经用了10多年了,这说明还是能满足他们的需求的,可能就是这个原因,他们一直没有找另外一个人来接手这个软件。
但是比较悲催的是,这个系统的逻辑只有Tinley知道,只有他一个人能维护,或者这么说,别的程序员也不愿意维护这样古老的系统,让我去我也不愿意啊,要是让我把它重写成Web系统还差不多。
这就是典型的遗留系统,出了问题就去找Tinley, 没想到Tinley在里边埋了一个炸弹。
4. 版权问题
在2011年的时候,西门子就问Tinley要那个Excel的密码,但是Tinley不给,他声称他要保护他的软件。这个订单系统真的是属于Tinley的吗?
我没见到Tinley和西门子的合同,大家可以看看自己和公司签的合同,看看有没有这么一条:在合同有效期内,员工的工作成果都归公司所有,包括专利,软件,文档。
Tinley很有可能没有所有权的。
总之,Tinley的所作所为已经严重违反了法律,希望大家能引以为戒吧。
【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】