没人能写出没有Bug的程序,Bug是软件

软件可能在使用过程中没有任何问题,但不符合产品的预期

下图源自“Howprojectsreallywork?”,很形象的突出了客户需要的产品和最终得到的产品不一致。

因为文字具有二义性,每个人对相同文本会不同的理解,客户、项目经理、分析师、程序员对需求理解的不一致,导致了产品上线运行后不符合预期。这算是一个最大的Bug,有经验的开发公司会从沟通流程上尽量规避这种可能性,但也没有办法完全避免。

另外在软件开发途中也会出现各种各样的Bug。

这种情况有点像装修房子,设计公司根据客户房子的尺寸和结构、朝向、生活习惯等等设计工程图和效果图。客户看到设计工程图和效果图后感觉很满意,马上水电工、木工、瓦工、油漆工等陆续进场按照设计工程图和效果图施工。

施工完后看起来所有都很正常,验收的过程中就会暴露很多问题,比如少了一个插座、油漆涂抹不均匀、有的瓷砖没有贴好等。

当客户真正入住的时候,可能还会发现各种当初对设计不满意的地方,一旦真正使用的时候,就会发现当初应该这么设计。

客户在使用软件的时候,并不会按照操作流程使用

这种情况就好比使用“高压锅”,使用说明上明明指出先得放气,才能掀开锅盖。使用的人非得先掀开锅盖,意外便发生了。

软件是按照开发流程一步一步设计的,软件崩溃了,程序员对外行解释软件中出现的Bug是不现实的,只有老老实实地去设置阻断或者更改程序的流程。

另外软件使用过程还会出现一些黑天鹅事件,比如网线断了、服务器故障、机房网络拥堵等等。这种情况除了在软件的架构上做冗余,没有其他更好的办法。

用户能正常使用,但在用户看不到的地方有各种异常

一个软件有许多的功能模块,并且这些模块并不是同一个人设计的。一个功能模块几乎不可能独立运行,必然牵扯到其他模块。对于一个程序员设计的其中一个模块所依赖的其他模块没有办法保证是%可用的。

这时虽然有错误,不影响主要的流程,也不影响用户的正常使用,用户也不会察觉到,甚至软件开发人员也没有察觉到。但指不定用户使用软件实现某个功能的时候,软件就会抛出错误或者崩溃。

所以软件想要变得成熟,Bug收集和处理机制是非常有必要的,比如:会影响客户使用的优先级高的Bug要优先修复。

Bug是软件的影子,也是程序员的噩梦

实际上不能存在没有bug的软件,Bug和软件如影随形。就像我们使用的Windows,穷尽无数优秀的软件工程师来设计给用户优秀的桌面体验,但也有各种层出不穷的bug。

程序员对Bug有多爱就有多恨,Bug无处不在,即使再牛逼的程序员也逃脱不了Bug的魔掌。想要完全避免Bug几乎是不可能的,所以也不在一次性就写好的程序。




转载请注明:http://www.xxcyfilter.com/zyjn/zyjn/15738.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了