中企聚易
首页 > 资讯动态 > 正文

盘点一下软件的bug怎么产生,是故意留下的吗?

笔者是计算机科学与技术专业毕业的,毕业之后从事的是软件维护方面的工作。虽然不是程序开发,但是也总是会接触一些软件方面的问题。

在维护工作当中经常会有人给我反馈一些bug,就是说程序什么什么地方有问题,是不是有漏洞之类的。

有些人就会认为是不是我们的程序员故意留下的bug,不愿意修改或者是故意留下个后门什么的。

我们来看一下实际开发中的情况你大概就会了解bug为什么一直都有,真不是程序员不给力,而是很多原因造成的。

第一步、一个程序的开发首先是要有方案。

每个程序的开发都是先有需求或者是先有想法创意,然后才开始确定要开发一个什么样的软件。

简单来说软件的开发就好像一个命题作文,知道要做什么事情,为了解决什么问题,然后才开始作答。

这个时候项目主管(小一点的公司可能是老板)之类的就开始制作初稿,也就是程序应该是什么样子的。

这个过程当中还要和客户进行沟通,毕竟你的软件是需要卖出去赚到钱养活自己的。

(当然了,创意类的或许没有客户可以沟通,但是还是有部分测试人员的体验需要进行沟通的。)

这里会出现第一类bug,因为人与人之间的思维和经验不是完全一样的,而且客户只是使用的人,不了解程序的内核,什么功能怎么实现他们也不想知道,只要你完成就可以了。

那么就会出现沟通的时候出现一些差异,或许开发商的理解和用户的理解是有一些不同的,那么用户使用的时候自然觉得你的程序是不是有问题,是不是有“bug”,这个词语不知道什么时候也被人用来说程序不符合自己的要求了。

第二步、开始分工

而确立了程序初始的样子,那么就是分工了,写后台代码的写后台代码(可能还会顺带把数据库的表结构处理一下);后台代码的意思就是控制程序的操作内容或者说算法的,比如你点击了查询,那么就是调用查询的语句从后台调用结果传给前台。

写前台的写前台,其实这里简单来说就是展示页面,也就是客户看到的页面的样子,客户看到很多按钮和展示界面,不是直接的数据,比如你点击了查询,那么就是前台接受到查询的语句从后台调用的结果,然后展示在你的面前。

分工还根据不同的项目,不同的公司进行划分,越大的项目需要分的越细,因为一个人的精力是有限的,大量的工作一个人完成是不可能的。

而对应的是公司规模小又不同,可能一个人负责很多内容,毕竟因陋就简,小公司养不起那么多人。

这里就会出现第二类bug,大量人员开发的分块结合在一起,那么即便就是再高明的程序始终会因为不同的程序员的开发理念的思维不同出现一些结合上的漏洞,这是人为暂时无法避免的。

然后就是少量人员开发,甚至一个人开发也是会出现一些问题的,一个人承担了大量的工作,工作当中出现一些小的失误是很正常的,谁也不能保证自己不会犯错,这个其实在大量人员开发的时候还会被放大。

第三步、限定工期完成规定模块

每个软件的开发就好像是建筑一样的是有工期存在的,不可能让你慢慢开发,客户需要在指定的时间使用到产品,是为了解决某件事情,你很长时间不拿出成品软件来,或许那件事情都不要你的软件了。

那么客户和管理层是不会管你们下面的人怎么完成任务的,我给你时间,你完成就好了,而这个时间上客户给公司3个月,那么公司可能只会给下面程序员2个月甚至更短。

因为公司内部也需要对你的软件进行测试,并且如果是多个人开发,总要预留一部分时间来进行整合处理的,这些也是需要时间的。

这也是现在大部分程序员加班的原因,工期短,任务重,这一点在小公司尤其明显,人手本来就少,工期又短,只有压榨下层的劳动力了。

这里就会出现第三类bug,因为工期短,开发周期短,很多程序员的开发都需要依赖一部分原来写过的代码,修改原来的部分代码直接移植过来。

这样的搬运也让很多程序员戏称自己为码农,就好像农民一样做搬运。

而这样的搬运也容易出现一些问题,总有修改不到的地方,其次就是经常加班使得程序员的精神状态不是很好,也会比一般情况容易出现一些小的疏漏。

第四步、交到项目主管手里

程序员的任务完成之后公司也是需要进行测试的,这个时候如果有专业的测试人员可以排除掉一部分bug,毕竟测试也不是白测试的。

而程序的内容也会交给上层进行审核,但是有一部分公司其实上面的管理人员学的是管理,擅长的是经营,却总是喜欢指手画脚。

然后一个减少了很多bug的软件又要进行一些修改,这些修改有的是正面的,有的却增加了bug的出现。

这算是第四类bug吧,不过这样的情况现在来说少了很多,因为一个懂得经营的管理者其实还是会尊重专业的人员的,不会随意插足自己不擅长的领域。

第五步、客户初步使用

经过了长时间的开发,公司将软件交给客户使用。

客户一般都是不懂软件的,不过不影响他们使用。

而这个时候会出现两种类型的情况,第一就是软件和客户心里的想法不一致,于是就是说有bug;

另外就是是符合想法的,但是这段时间他不想用你的软件了,或者是部分人群抵触你的软件(以医院HIS软件为例部分“专家”不喜欢新的东西,就是不接受你的软件),也会说有bug,百般推脱这样不好那样不好。

第六步、正常使用之后

客户开始接受你的软件,正常使用过程当中,这个时候也会出现一些问题。

作为维护人员来说说我遇到过的bug好了。

1.部分数据没有传输,客户认为是bug;

其实可能是网络的问题,也有一些其他的原因,比如服务器过于老旧,使得一些数据的传输在抵达服务器的时候出现问题。

这个可以参考部分ATM机上取钱之后银行卡没有下账之类的情况,网络的突然卡顿是会造成数据传输异常的。

2.系统卡顿,客户觉得是bug;

这里解释一下死锁的概念,简单来说就是只有一锅饭(其实是一张表),大家都要吃这锅饭,但是勺子只有一把,一个人在添饭,那么另外的人只有等待。

而当那个人一直在添饭,但是就是不离开,其他人也吃不到饭,于是就形成了一个死循环,就是死锁。

系统的卡顿一般是数据量大,那个人在锅里找自己喜欢的东西一直找不到,然后就占据了勺子,其他人自然就卡在那里。

3.使用不当,但是就是认为有bug

这一点在很多客户身上都出现过,软件的逻辑思路是帮助客户更好的完成工作,简化工作。

但是有的人不按照你的步骤来使用,就会出现一些问题。

这里懂行的人会问为什么不加限制让他只能按照步骤来进行点击使用,这一点在软件里面其实是比较容易实现的。

但是每个地方的需要是不一样的,如果你限制死了某些功能,那么很多的用户又不愿意使用你的东西了。

使用不当的问题还是需要使用者自己进行协调。

好了,今天就讲到这里,其实软件里面bug很多都是因为不懂或者是没有沟通清楚而产生,没有谁会故意留下漏洞。


来原:http://baijiahao.baidu.com/s?id=1596160055191070162&wfr=spider&for=pc

微信扫一扫或长按关注"中企聚易"