构件神话

来源:互联网 发布:sql 随机选取 编辑:程序博客网 时间:2024/05/01 15:35

构件神话

2009.7(道仑软件)

计算机自出现以来,软件开发技术经历了从汇编语言、面向过程、面向对象、到面向构件。

面向构件开发是九十年代提出的一种软件开发新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。由于以分布式对象为基础的构件实现技术日趋成熟,它已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一,是解决软件问题的银弹

面向构件开发概念的提出虽然有一段时间了,但一直没有形成产业化。认真思考一下,事情恐怕没有想象的那么乐观。

首先,面向构件开发并不能解决软件开发的根本困难:

1.软件系统的主要难度就在于概念和整体结构的合理性,先要有整体结构的设计,才有构件,构件是由整体结构决定的,而不是反过来。构件丝毫没有减少概念和整体设计的难度,反而可能会增加难度。

2.由于企业的需求不断变化,软件的结构也需要跟着改变,由于变化的粒度有大有小,构件本身也很可能需要改变,一个构件的改变很可能导致其它与之相关的构件的改变,而构件的开发、组装和调试都是需要时间的,所以很难跟上快速的变化。

3.开发一个软件系统时,在用户需求与软件实现(构件)之间存在着一个很大的鸿沟。用户需求的准确表达和组织,以及如何正确地转化成软件构件,都存在很大的困难。构件开发并不能解决这个问题。

4.用户希望复用的是业务,而不是构件,这一点构件化的方法做不到。

其次,关于构件的产业化,我们认为,作为信息时代的软件生产,自有其自身的特点,把它与工业时代的大规模生产方式简单类比,认为软件产业也会复制工业时代的生产方式是不切实际的,理由是:

1.标准化问题,现在软件产业的标准基本都是底层技术级别的标准,如通信、组件、数据库访问等,高级应用层的构件标准能否制定出来,由谁来制定,是个很大的问题。目前关于软件构件的标准远未出台,如果各构件平台厂商推出的构件互不兼容,不能够实现复用,将又造成资源浪费。

2.可靠性问题,机器(如汽车)的性能是由少数几个主要零部件(如发动机)决定的,而软件系统则要复杂得多,将很多符合“标准”的构件组装起来,是否就能组成整体上满足要求的软件系统,实在是个问题。

3.经济问题,构件组装的可靠性问题即使能找到解决办法,其耗费的时间和成本必定是惊人的,很可能得不偿失,完全有违当初构件产业化的初衷。

4.应对变化的问题,一个构件的改变很可能导致其它与之相关的构件的改变,如果由于需求的变化而需要新的构件,是向构件的供应商求助,还是自己解决?时间来得及吗?

5.商业模式问题,对于构件的生产者来说,构件的开发成本基本是由第一个合格的版本决定的,后面的复制基本不需要成本,所以,最大的风险在于,花费巨大成本开发的构件能卖多少份拷贝?如果只能卖少数几份拷贝,则肯定亏本,而这是事前很难预计的。对于构件的购买者来说,也存在着同样的问题,即购买多少份同样的构件合算?如果购买大量的拷贝,这比自己开发更合算吗?所以,无论是构件的生产者,还是构件的消费者,都面临很多不确定的问题,很难下决心走上这一条路。

在可以想象的将来,这些问题尚看不到解决的希望,构件的产业化不太可能成为现实。

这种基于标准化构件开发软件的思想,实际上是照般工业时代大规模工业化生产的思想,把软件当作机器生产。然而一台机器执行的是设计好的简单任务,一旦出厂后不需要什么变化,而现在企业管理软件面对的是快速变化的环境,需要的是随需应变。在当代企业面对高度不确定性的环境情况下,“标准化构件”开发已很难适用,我们必须寻找新的手段。

 

 

原创粉丝点击