第十一章 网络经济学 11.4 与错误打交道

尽管我很网络经济,但是仍有许令人担忧的方,些问题同存在其他的型、中化的 系统中。

它很难被理解

它不太容易受控制

它并非最优化的

各公司取消实体进入某巴洛式的赛博空间,它就具有了某类似软件的特点。无污染、无重量、快速、有、移动且有趣。但同变非常复杂,充满了人查明的烦人的毛病。

果未的公司产品就跟现在的软件一,那意味着什?破碎的电视机?突熄火的汽车?爆炸的烤面包机?

型软件程序是人类现在所制造的最复杂的东西了。微软的新操系统有4百万条代码。,在7万Beta版本的测试点进行测试,比尔盖茨肯定说,现在软件有漏洞了。

那,我是否制造那超级复杂又有任何缺陷(或者,有很少几缺陷)的东西呢?网络式经济底是帮助我创造一有缺陷的复杂系统,是我建立一有漏洞的复杂系统?

不管各公司己不变更像软件,至少,它所生产的越越的产品肯定依赖愈加复杂的软件,所说,创造有缺陷的复杂系统是绝必的。

在仿真领域,验证一仿真的真伪,与测试一型复杂软件是否有缺陷是同一类问题。

加拿计算机戴维·帕那斯 曾经根的星球战计划提了8条批评意见。他的观点基超级复杂软件内在的不稳定,星球战计划恰恰就是一超级复杂的软件。戴维·帕那斯的观点中,最有趣的一是指存在两类型的复杂系统:连续的非连续的。

通汽车公司在测试新车应急弯的,让辆车在不同的速进行测试,譬50、60、70英。显,随速的变化是连续的。果一辆汽车够在速50、60、70英的候通测试,无需测试我就知,在各中间速度——比每55或者67英——的候,它肯定通测试。

他不担辆车每55英的速度行驶突长翅膀或者翻底朝。它在速度的,基本就是它在50英60英的某插值。一辆汽车就是一连续的系统。

计算机软件、分布式网络及绝数的活系统是非连续的系统。在复杂的适应系统中,你根本不依赖插值函数判断系统的行。你的软件已经平稳运行了几年,突在某些特定的值点(比,每63.25英),轰隆一声系统爆炸,或者,突变某全新的东西。

断点始终存在着,你已经测试了所有的邻近取值,却有测试特别的一组环境值。情生,你一目了什故障导致系统崩溃,甚至明白指什人本该找隐患。不,是诸葛亮。在一拥有海量的系统中,根本不所有的进行测试。更糟糕的是,你不依靠抽的方式系统进行测试,因它是非连续的系统。

一超级复杂的系统说,测试者有任何握说那些测试的值就一定抽的数据间呈现一连续关系。不,尽管此,现在是现了一旨在达“零缺陷”软件设计的运动。不,运动肯定又是生在日本。

程序说,“零缺陷”的零就是0.000。但是那超型的程序说,“零”指的就是等0.001。是指每千行代码允许的错误值,是产品质量的一概标准。些旨在编写零缺陷软件的方法,量借鉴了日本工程师新乡重夫的零缺陷生产的创工。,计算机科声称,“软件不一”。软件被完复制,因此需保证最始的那一份是“零缺陷”就了。

在网络式经济中,研新产品的费主源生产流程的设计,非产品设计。日本人擅长生产流程的设计改进,国人擅长的是产品的设计改进。日本人软件一生产流程不是产品。在渐露端倪的网络文化中,我所生产的越越的东西——是我越越的财富——与符号处理流程密切相关,些流程所装配的是代码非实物。

软件靠师C.K.曹曾经告诫业界人士,不软件产品,它便携式工厂。你卖的,或者说,你给予客户的是一工厂(程序代码),在客户需的候他制造一答案。你的难题是制造一生产零缺陷答案的工厂。建造够生产完靠器件的工厂的方法,轻易应创建给完靠答案的工厂。

通常,软件的编制遵循三中化的关键步骤。首先设计一全景图,代码实现细节,最,在接近项目尾声,将其互的整体进行测试。在零缺陷质量的设计流程中,整软件编制程不再是几的关键步骤,是被分散千步骤。软件的设计、编写测试工每在百工间进行着,每工间有一人在忙碌着。

些零缺陷的传者有一概括网络式经济的口号:“公司的每人有一客户”。通常言,所谓的客户,就是你的工伙伴,你将工依次转给他。你必须首先你的那循环(设计-编写-测试)做,才它付给你的工伙伴——就像你在销售商品一。

你你的工果付给你的客户/工伙伴的候,他/就立刻它进行检测,并其中的错误反馈给你,让你进行修改,让你知你的份工完的底怎。从某意义,软件的向的展程与罗德尼·布鲁克斯的那包容结构本质并无不同。每步骤是一的代码模块,确保身的正常运行,在此基础,人叠加测试更复杂的层级。

单靠些步骤并不零缺陷的软件。“零缺陷”的目标隐含着一关键的概念区分。所谓缺陷,是指被付的错误;在付前被修正的错误,不算是缺陷。按新乡重夫的说法,“我绝不避免错误,但是我避免错误缺陷”。因此,零缺陷设计的任务就是尽早现错误,尽早改正错误。

不,是显易见的情。真正的改进在尽早现产生错误的原因,并尽早清除产生错误的原因。果一工人总是插错螺栓,那就设置一防止插错螺栓的系统。犯错的是人,处理错误的则是系统。

日本人在防错领域的经典明是一称Poka-Yoke的防错系统 ——它使情人所犯的错误具有“免疫力”。在装配线设置一些巧妙简单的装置就防止错误的生。比,在放螺栓的托盘每一螺栓设定一特别的孔位,,果托盘有螺栓剩,操人员就知己漏装了一。在软件生产中,有一防错设计是“拼写错误检查器”,它不允许程序员输入任何拼写错误的命令,甚至不允许他/输入任何非法(非逻辑)命令。软件研人员有越越供选择的非常精巧的“动纠错程序”软件,检查正在编写中的程序,防止典型错误的现。

有那些顶尖级的研工具程序的逻辑进行分析评价——它说,“嘿!一步根本意义!”,从在逻辑错误一现的候就将其清除。有一本软件业的易杂志最近列了近百检错改错工具,沽价待售。其中最精致的一像那些优质的拼写检查软件一,程序员提供合乎逻辑的改错选择。

另外一非常重的防错方法是复杂软件进行模块化。1982年表在IEEE的《软件工程易》的一研究显示,在其它条件完全相同的状况,代码总行数相同的程序拆分子程序,错误数量是何减少的。一1万行的程序,果是一整块,它有317错误,果它拆分三子程序,那总数是1万行的程序,错误数则略有减少,265。每拆分一次所减少的错误量,致符合一线方程,所模块化虽不完全解决问题,但它却是一有效的手段。

进一步说,程序某阈限,就达完全有错误的状态。IBM它的IMS系列所写的代码,就是模块化的方式编制的,其中有四分三的模块达了完全有缺陷的状态。具体说,就是在425模块中,有300是完全有错误的。在剩的125有错误的模块中,有超一半的错误集中生在仅仅31模块。从意义说,程序编制的模块化,就是程序的“靠化”。

在软件设计领域,现在最热的前沿就是所谓“面向象”的软件。

(本章未完)

11.3 信息工厂目录+书签-->