让程序开发也来个三权分立

news/2024/12/23 8:55:46

   让程序开发也来个三权分立

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

 

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=428261

 


http://www.niftyadmin.cn/n/3152731.html

相关文章

文件下载的4种方式

转自:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载 public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件的路径。File file new File(path);// 取得文件名。String filename…

学习bash第二版-附录四 语法

**保留字 下面关键字为保留字,在它们没有被引起来时对shell具有特殊的含义: if then else elif fi case esac for while until do done function in select ! { } time **bash的BNF 以下为bash 2.0的Backus-Naur Form(BNF…

hdu折线分割平面 递推

折线分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 37707 Accepted Submission(s): 25240Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化&#xff0…

这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!

这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享! owen1944 原创 (参与分:208,专家分:760) 发表:2003-7-28 下午10:04 版本:1.0 阅读:3762 次 1.字节和unicode …

学习bash第二版-附录五 获得示例程序

可通过FTP和FTPMAIL方式得到本书的一些例子。如果连接了Internet,可使用FTP。如果未连接Internet但可以发送并接收电子邮件到Internet站点上,可使用FTPMAIL。 **FTP 如果你具有Internet连接(永久或拨号),最简单的…

response.setContentType()与response.setHeader()

1、一秒刷新页面一次 response.setHeader("refresh","1"); 2、二秒跳到其他页面 response.setHeader("refresh","2;URLotherPagename"); 3、没有缓存: response.setHeader("Pragma", "No-cache"); r…

ejb3.0 数据源配制

1. 首先在JBOSS的\server\default\deploy目录下建立XML文档&#xff0c;此文档的名称一般根据所使用的数据库而定&#xff0c;如mysql的为mysql-ds.xml &#xff0c;db2的为db2-ds.xml。文档的内容一般如下&#xff1a;<?xml version"1.0" encoding"U…

git仓库的bare方式

git提供一种对外发布&#xff0c;供开发者克隆的一种空工作目录的bare方式。这种方式的优点在于节省存储空间。 1.要从头开始创建bare方式的git仓库&#xff0c;步骤如下&#xff1a; 注&#xff1a;假定要创建的git仓库位于/home/chen/sw目录&#xff0c;源文件位于/home/zh…