软件开发中的防错设计与网络经济的未来 2024-12-27 作者 C3P00 一、软件开发中的防错设计 (一)拼写错误检查器与自动纠错程序 在软件生产中,拼写错误检查器就像螺栓剩余提示操作人员漏装螺栓一样重要。它不允许程序员输入任何拼写错误的命令,甚至非法(非逻辑)命令也无法输入。这有助于从源头上避免一些低级错误的发生🧐。随着技术的发展,程序员们有了更多可供选择的非常精巧的“自动纠错程序”软件。这些软件可以检查正在编写中的程序,以防止典型错误的出现。 例如,有一种顶尖的研发工具能够对程序的逻辑进行分析和评价。当发现程序中存在无意义的步骤时,它会及时指出,从而在逻辑错误刚冒头的时候就将其清除。据一本软件业的交易杂志报道,现在有近百种检错和改错工具在市场上待售。其中最精致的一种还能像优质的拼写检查软件那样,为程序员提供合乎逻辑的改错选择。这对于提高软件的质量有着不可忽视的作用💪。 (二)模块化的优势 另外一种重要的防错方法是对复杂软件进行模块化。根据1982年发表在IEEE《软件工程汇刊》上的研究显示,在其他条件相同的情况下,将代码总行数相同的程序拆分为子程序后,错误数量会有所减少。比如一个1万行的程序,如果是一整块,会有317个错误;而拆分为三个子程序后,错误数则减少到265个。这种减少大致符合线性方程,虽然模块化不能完全解决所有问题,但它是一种有效的手段。 IBM为其IMS系列编写的代码就是一个很好的例子。这些代码采用模块化的方式编制,其中有3/4的模块达到了完全没有缺陷的状态。具体来说,在425个模块中,有300个完全没有错误。而在剩下的125个有错误的模块中,超过一半的错误集中在仅仅31个模块上。这表明程序编制的模块化就是程序的“可靠化”。 (三)面向对象编程(OOP) 在软件设计领域,目前最热门的前沿是面向对象的软件。OOP实际上是一个相对去中心化、模块式的程序。对于OOP来说,它的每一个“碎片”都是一个独立成立、保持自身完整性的单元。这些单元可以和其他的OOP“碎片”整合在一起形成一个可分解的指令结构。“对象”限制了程序漏洞所能造成的损害。 与传统程序不同,OOP有效地对功能实行了隔离,把每一个功能都限制在一个可掌控的单元内。这样即使一个对象崩溃了,程序的其他部分也能够继续运转。就像汽车换刹车片一样,程序员可以把坏掉的单元换掉。而且,软件销售商可以购买或者销售各种事先编制好的“对象”库给其他的软件研发人员,后者基于这些库里的对象可以快速组装起大型软件,而不必重新一行一行地编写新代码。到了升级大型软件的时候,只需要升级旧的对象或者加入新的对象即可。 OOP中的“对象”就像是乐高积木中的小块,不过这些小块可能带有微小的智能。例如,一个对象可以类似于苹果电脑显示器上的文件夹图标,这个图标知道自己是一个文件夹,并且能够响应某个程序要求所有文件夹列出内容清单的请求。OOP也可以是一张税表、某个雇员在公司的数据库或者某个电子邮件信息等。对象知道自己能干什么不能干什么,同时也在与其他对象横向交流。 (四)错误扎堆现象与应对策略 软件有一个特性——错误总是扎堆出现的。零缺陷运动的圣经《零缺陷软件》提到:“你发现的下一个错误,极有可能出现在你已经找出了11个错误的模块里,而那些从未出过错误的模块,则可能会一直保持不败金身。”这种被称为“魔鬼定律”的错误扎堆现象在软件中非常普遍。 针对这种情况,《零经》中给出的补救方法是:不要把钱花在错误百出的代码上,抛弃它!重写一段代码的代价和修补一个错误百出的模块的代价相差无多。如果软件的某个单元的错误率超过了一定的阈限,就把它扔掉,另找一个开发人员来重写代码。如果正在编写的代码显示出某种容易出错的倾向,就放弃它,因为在前期出现错误就意味着后面还将不断地出错。 二、网络经济的未来 (一)分布式核心与适应性技术 在网络经济的未来,公司边界变得模糊。任务,包括财务和制造这样的核心任务,都会通过网络分包给合同商,他们再进一步分包出去。这就使得所有的公司,无论规模大小,变成了一个个由所有权和地理位置分散的工作中心组成的社会。 同时,适应性技术也是关键因素。如果不能达到“实时”要求,企业就会面临失败。条形码、激光扫描仪、手机等各种设备都在操控着商品生产。例如,生菜的价格如同机票价格一样,在杂货店货架的液晶屏上闪烁变化着。 (二)灵活制造与批量化的定制 需求量更少的商品可以利用更小的机器在更短的周期内生产出来。以前照片冲洗需要在全国少数几个中心花费数周时间,而现在可以在街角的小机器上完成并立等可取。模块化的设备、消失的常规库存以及计算机辅助设计使得产品研发周期从几年缩短到几周。而且,流水线上生产的都是个性化定制的产品,如适用于特定地区气候的汽车、按照个人习惯设定的录像机等,这些产品虽然是按照大批量生产的价格销售的,但却满足了个人特定需求。 (三)工业生态学与全球会计 工业生态学追求闭合回路、无废料、零污染的制造业,产品的可拆解回收以及向生物兼容技术的过渡。在全球会计方面,即使是小公司也具有全球性。没有未开发的经济“前沿”,博弈之局从那种“每一个胜利都意味着有人失败”的零和游戏变成了正和游戏。只有那些能够把系统看成统一整体的玩家才能获得回报,结盟、伙伴关系、协作将成为行业根本和规范。 (四)共同进化的消费者与以知识为基础 公司培训和教育消费者,而消费者又反过来培训和教育公司。网络文化中,产品变成可改进的连锁经营店,随着消费者的不断使用而得到改进和进化。联网的数据会让所有工作都能更快、更好和更容易地完成,但数据是廉价且大量的,优势体现在如何将知识运用到数据上。 (五)免费的带宽与收益递增 接入是免费的,但接入与不接入的选择却很昂贵。网络的价值增长速度超过其用户增加的速度。数字货币也将取代纸币成为日常使用的货币形式。 (六)隐性经济与网络意识 隐性经济在创造性的边缘区域扩展,以一种不可见的方式联结到加密网络中。网络经济所哺育的可能是一种新的灵魂,即全球意识。这种全球意识是计算机和自然的统一体,没有中心的“我”,它脱离我们的控制并超出我们的理解能力。 随着这张庞大的网络渗透到人造世界的各个角落,我们看到了新生物文明的一些端倪。从网络文化中涌现出的全球意识将是电话、人脑等多种元素的结合体,拥有巨大的复杂性和独特的行为模式,它将在未来的经济和社会发展中发挥重要作用。
一、软件开发中的防错设计
(一)拼写错误检查器与自动纠错程序
在软件生产中,拼写错误检查器就像螺栓剩余提示操作人员漏装螺栓一样重要。它不允许程序员输入任何拼写错误的命令,甚至非法(非逻辑)命令也无法输入。这有助于从源头上避免一些低级错误的发生🧐。随着技术的发展,程序员们有了更多可供选择的非常精巧的“自动纠错程序”软件。这些软件可以检查正在编写中的程序,以防止典型错误的出现。
例如,有一种顶尖的研发工具能够对程序的逻辑进行分析和评价。当发现程序中存在无意义的步骤时,它会及时指出,从而在逻辑错误刚冒头的时候就将其清除。据一本软件业的交易杂志报道,现在有近百种检错和改错工具在市场上待售。其中最精致的一种还能像优质的拼写检查软件那样,为程序员提供合乎逻辑的改错选择。这对于提高软件的质量有着不可忽视的作用💪。
(二)模块化的优势
另外一种重要的防错方法是对复杂软件进行模块化。根据1982年发表在IEEE《软件工程汇刊》上的研究显示,在其他条件相同的情况下,将代码总行数相同的程序拆分为子程序后,错误数量会有所减少。比如一个1万行的程序,如果是一整块,会有317个错误;而拆分为三个子程序后,错误数则减少到265个。这种减少大致符合线性方程,虽然模块化不能完全解决所有问题,但它是一种有效的手段。
IBM为其IMS系列编写的代码就是一个很好的例子。这些代码采用模块化的方式编制,其中有3/4的模块达到了完全没有缺陷的状态。具体来说,在425个模块中,有300个完全没有错误。而在剩下的125个有错误的模块中,超过一半的错误集中在仅仅31个模块上。这表明程序编制的模块化就是程序的“可靠化”。
(三)面向对象编程(OOP)
在软件设计领域,目前最热门的前沿是面向对象的软件。OOP实际上是一个相对去中心化、模块式的程序。对于OOP来说,它的每一个“碎片”都是一个独立成立、保持自身完整性的单元。这些单元可以和其他的OOP“碎片”整合在一起形成一个可分解的指令结构。“对象”限制了程序漏洞所能造成的损害。
与传统程序不同,OOP有效地对功能实行了隔离,把每一个功能都限制在一个可掌控的单元内。这样即使一个对象崩溃了,程序的其他部分也能够继续运转。就像汽车换刹车片一样,程序员可以把坏掉的单元换掉。而且,软件销售商可以购买或者销售各种事先编制好的“对象”库给其他的软件研发人员,后者基于这些库里的对象可以快速组装起大型软件,而不必重新一行一行地编写新代码。到了升级大型软件的时候,只需要升级旧的对象或者加入新的对象即可。
OOP中的“对象”就像是乐高积木中的小块,不过这些小块可能带有微小的智能。例如,一个对象可以类似于苹果电脑显示器上的文件夹图标,这个图标知道自己是一个文件夹,并且能够响应某个程序要求所有文件夹列出内容清单的请求。OOP也可以是一张税表、某个雇员在公司的数据库或者某个电子邮件信息等。对象知道自己能干什么不能干什么,同时也在与其他对象横向交流。
(四)错误扎堆现象与应对策略
软件有一个特性——错误总是扎堆出现的。零缺陷运动的圣经《零缺陷软件》提到:“你发现的下一个错误,极有可能出现在你已经找出了11个错误的模块里,而那些从未出过错误的模块,则可能会一直保持不败金身。”这种被称为“魔鬼定律”的错误扎堆现象在软件中非常普遍。
针对这种情况,《零经》中给出的补救方法是:不要把钱花在错误百出的代码上,抛弃它!重写一段代码的代价和修补一个错误百出的模块的代价相差无多。如果软件的某个单元的错误率超过了一定的阈限,就把它扔掉,另找一个开发人员来重写代码。如果正在编写的代码显示出某种容易出错的倾向,就放弃它,因为在前期出现错误就意味着后面还将不断地出错。
二、网络经济的未来
(一)分布式核心与适应性技术
在网络经济的未来,公司边界变得模糊。任务,包括财务和制造这样的核心任务,都会通过网络分包给合同商,他们再进一步分包出去。这就使得所有的公司,无论规模大小,变成了一个个由所有权和地理位置分散的工作中心组成的社会。
同时,适应性技术也是关键因素。如果不能达到“实时”要求,企业就会面临失败。条形码、激光扫描仪、手机等各种设备都在操控着商品生产。例如,生菜的价格如同机票价格一样,在杂货店货架的液晶屏上闪烁变化着。
(二)灵活制造与批量化的定制
需求量更少的商品可以利用更小的机器在更短的周期内生产出来。以前照片冲洗需要在全国少数几个中心花费数周时间,而现在可以在街角的小机器上完成并立等可取。模块化的设备、消失的常规库存以及计算机辅助设计使得产品研发周期从几年缩短到几周。而且,流水线上生产的都是个性化定制的产品,如适用于特定地区气候的汽车、按照个人习惯设定的录像机等,这些产品虽然是按照大批量生产的价格销售的,但却满足了个人特定需求。
(三)工业生态学与全球会计
工业生态学追求闭合回路、无废料、零污染的制造业,产品的可拆解回收以及向生物兼容技术的过渡。在全球会计方面,即使是小公司也具有全球性。没有未开发的经济“前沿”,博弈之局从那种“每一个胜利都意味着有人失败”的零和游戏变成了正和游戏。只有那些能够把系统看成统一整体的玩家才能获得回报,结盟、伙伴关系、协作将成为行业根本和规范。
(四)共同进化的消费者与以知识为基础
公司培训和教育消费者,而消费者又反过来培训和教育公司。网络文化中,产品变成可改进的连锁经营店,随着消费者的不断使用而得到改进和进化。联网的数据会让所有工作都能更快、更好和更容易地完成,但数据是廉价且大量的,优势体现在如何将知识运用到数据上。
(五)免费的带宽与收益递增
接入是免费的,但接入与不接入的选择却很昂贵。网络的价值增长速度超过其用户增加的速度。数字货币也将取代纸币成为日常使用的货币形式。
(六)隐性经济与网络意识
隐性经济在创造性的边缘区域扩展,以一种不可见的方式联结到加密网络中。网络经济所哺育的可能是一种新的灵魂,即全球意识。这种全球意识是计算机和自然的统一体,没有中心的“我”,它脱离我们的控制并超出我们的理解能力。
随着这张庞大的网络渗透到人造世界的各个角落,我们看到了新生物文明的一些端倪。从网络文化中涌现出的全球意识将是电话、人脑等多种元素的结合体,拥有巨大的复杂性和独特的行为模式,它将在未来的经济和社会发展中发挥重要作用。