让程序开发也来个三权分立
我想说的是,这里是三权分立,不是指政治体制里面的立法、行政、司法,而是指程序开发中的系统设计、系统开发、系统测试。在这里,系统设计有点类似于立法,系统开发有点类似于行政,而系统测试有点类似于司法。
系统设计包括需求文档、设计文档的撰写,也包括系统架构、编程规范、界面风格等。这一切都是为进行系统开发所做的一些准备,使得进行开发有一定的依据,不同的人在这些文档指引下,能够开发出比较统一的系统(这里的统一包括界面风格的统一和编程风格的统一)。
系统开发是指开发人员在需求文档、设计文档等各种文档的支持下,开始按照规范进行开发,开发出来的结果能够跟文档的要求一致。系统开发是三权中最重要的一权,离开的这个,其它的东西显得都没有意义了。
系统测试是对开发的一种检验,它能保证系统的不断完善、健壮。离开了测试,就好像三权中没有了司法,那么一个政治体制就会开始出现问题,政府就会开始腐败,而行政人员就会显得肆无忌惮,体制中就会出现一个一个的漏洞,这些东西不断的积累的,等到有一天,它开始爆发了,那么,这个体制也就会瘫痪、崩溃,而这一切,也许就在一霎那间发作,等到你开始省悟,准备去挽救的时候,发觉已经太迟了。
在现实的开发过程中,我们经常发现,在很多公司里面,系统的设计者也就是系统的开发者。这样会出现的问题包括下面几个方面,一是设计者缺少开发者的监管,系统设计者在设计出文档出来后,往往自以为他们的想法思路没有一点缺陷,当他们沿着他们设计的文档进行开发的时候,他们逐渐的发现了他们设计的文档存在的问题,当他们开始对文档的设计进行修改的时候,他们会发现,这时候修改设计的话,那么原来开发的东西又有很多需要修改,因为他们既是设计者,又是开发者,这个时候他们就会陷入一个两难的境地,是要修改原先的设计,还是原来的设计继续开发下来?现在很多公司都有一个开review(评审)会议的做法。系统设计文档出来都,往往要开个review会议,讨论里面的设计是否合理,是否存在缺陷等。事实上,假如设计者又是开发者,找那些对系统无关的人士来开个review作用有多大?即使找来的人在技术、设计上都是前辈,在一个短短的review会议中,他(她)能看出设计中的缺陷的几率有多少?能总共看出几个问题?况且,因为跟他们关系不大,很多人可能根本不想认真的来开这个会议,有些人可能根本就不想提出什么问题来。二是开发者缺少设计者的监管。在开发的过程中,开发者可能会发现某些功能如果按照文档的设计进行开发的话,会变得很难实现,或者说开发起来更加麻烦。因为开发者又是设计者,在这个时候,他们可能就会很轻易的修改原先的设计文档,而不理会原先的设计是否更加合理。
在有些公司里面,可能就没有测试这个概念,或者说开发者本身就是测试者。这样就造成了很多开发者根本不仔细的对自己开发的系统进行测试,或者理所当然的认为自己的系统没有问题。即使开发人员进行了仔细的测试,因为系统本身是他们开发的,他们可能没有意识到一些在其他人看来是比较容易发生的问题。从另外一个方面来看,因为开发者本身也是测试者,那么他们就缺少了测试对他们的监管,有些人可能就缺乏一种动力对系统问题进行认真的处理,比如说,开发人员在开发过程中发现了一个问题,但是排查了三天都搞不出个所以然来,这个时候他们可能就会放弃继续对这个问题进行跟踪排查,而如果开发人员跟测试人员不是同一组人的话,在测试中发现了这个问题,那么开发人员就不得不对这个问题进行跟踪排查,给出一个最终的解决方案。在另外一种情况,假如现在开发人员的开发任务非常繁重,安装目前开发情况来看可能无法如期完成任务的话,因为没有测试人员进行监管,这时开发人员可能就会采用弄虚作假的行为,在系统里面或者是在数据上做一些手脚,使得界面看上去的结果跟预期的结果一致(我想这可能是中国程序员的一个特色之一吧)。
让程序开发也来个三权分立,这样能使得设计、开发、测试相互监督,共同促进。当然,软件公司的老总可能出于钱的考虑,而拒绝采用这种方法。那么作为软件(系统)的使用者来说,你们在付钱给开发商的时候,也应该把这些因素考虑进行,毕竟,这些方法的直接收益者可能就是软件的使用者了。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=428261