|
楼主 |
发表于 2011-4-14 08:46:41
|
显示全部楼层
回复 15# 袜贩
拜读过你的贴子,十分欣慰。
为何十分欣慰恶?因为总算明白了什么叫夜郎自大。呵呵
你所谓的大规模软件工程,正是我以为的小规模软件工程。
此外,就来源而言,软件有两种:自己开发的,买来的。
生产软件的公司不是使用软件的公司。
生产软件的公司无法知道使用的公司的使用规模有多大,自然无法按照使用公司的生产规模测试。
自己开发的软件,就理论而言,可以在上production 之前,按照production 的实际规模测试。
就实际而言,则往往行不通。我在电话公司干过N年,之后又在IBM consulting 部门干过N年。
电话公司的数据规模之大,众所周知。
我在IBM consulting 时参与的项目的使用客户也都是就规模而言世界第一流的公司, 包括IBM自己在内。
从来不曾见过测试与生产环境相同的情况。测试环境往往比生产环境小不知凡几。
原因很简单,不可能有充分的人力、财力、物力、精力复制与生产环境相同的测试环境。
看几个例子:
前 att 更新一软件,小规模测试之后,即分批投入生产。分批的目的就是逐步试探。
先在小城市试行,没问题,然后在中等城市试行,没问题,然后在大城市试行,也没问题。
最后上LA,立马死火。
赶紧换回原软件。
sbc ( 如今的att 的前身)买了 微软出的连接 Unix DB2的ODBC client. 微软一向自作聪明,这client 也不例外。
一旦连接数据库,不由用户下达指令,立即download metadata.
微软的软件上市之前,当然做过自以为充分的测试。
结果在sbc 却立即砸锅。好几个小时过去了,metadta 还 download 不下来。
我给sbc 开发过一个multiple database 的 gateway.
在UnixDB2 server 的开发时遇到一个问题。
如果你懂 RDBMS, 当知道server 那边有一个接受sql statement 的 buffer.
像 Sybase, Informix, Oracle 等等, 你可以先 define a pointer,等到sql statement 来了,知道size 之后,
dynamically allocate memory。
DB2 的设计比较笨,它使用一个 structure, 里面包括两项,一是int, define size,另一是根据这size 确定的buffer.
我在 R&D做,从来没接触过application。问负责app的人,size 得多大才行。
人家说也不大清楚,因为sql statement 通常是由程序在运转时及时编写的,人看不见。大约2000-3000.
这size 已经令我一惊,呵呵,足够写篇论文了嘛。
为保险起见,我设置为5000.
我也没那功夫写什么几千字的sql。
随便写几个测试之后就上 production了。
几个月过去了,没问题。
然而,某日,buffer终于overflow。
结果改成8000.
不出数月,我就跳槽了。是否一直够用,不得而知。
总之,大规模的软件,从研发到生产,绝对不是如你想像的那样,经过全面的、与生产状况完全相同的测试。
以为能,纯粹是纸上谈兵。
至于为何拿软件说事?
很简单,鄙人就一搞软件的电脑民工,别的都不如软件熟悉。
至于简雍与刘备那事,那是历史,不是我编撰的故事,合理与否与我无干。
当时想必视通奸为有罪。
那例子只是说明“能有动机”不等于“有动机”,通奸是否应该定罪,无涉。 |
|