基于“构件”的开发意味着,我们把应用划分成许多小的构件,而这些构件不必自己开发,可以购买第三方的产品-构件,而这些构件,可靠性较高,由于产品化而成本较低。这也意味着将来会产生许多“生产构件的公司”。
1、概 述
1.1 研究背景
在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的问题CONTROL ENGINEERING China版权所有,如操作系统的多样性,繁杂的网络程序设计、管理,复杂多变的网络环境,数据分散处理带来的不一致性问题、性能和效率、安全,等等。于是,有人提出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件这类的软件。
面向对象技术虽然被大家接受,公认为当前的发展主流,然而在实际应用时,还存在着一系列问题。
(1) 模型和概念尚未统一,不同的人对系统和对象的理解不一致,导致了各种对象语言均有很大差异,且语言自身与纯面向对象理论有许多不一致的地方,就难以形成统一的标准和开发规范
(2) 要求使用面向对象技术的人员素质较高,要掌握的东西很多,如要熟练掌握C++必需了解大量的MFC类库,且要了解每个类的细节。
(3) 面向对象复用仅仅是处于初级阶段,未提出任何模式和规范以及相应的管理机制。
(4) 工程上难以实施。真正用纯面向对象技术来开发大型软件的并不多,实际应用领域中的可复用领域专用构件缺乏;由于对象无统一标准,因此还停留在程序员自己复用,很难共享,更谈不上分布式情况下复用;纯面向对象要摒弃原有的许多技术等。
经过二十多年的研究和实践,人们形成了这样一个共识控制工程网版权所有,对象并不是解决所有设计问题的灵丹妙药,软件工程必须超越面向对象方法,形成以体系结构为中心的新方法。
1.2 国外和国内的现状及发展趋势
软件业是目前最有发展前途的产业,其营业额均以每年20%的速度递增,预计软件业将成为世界第一大产业。
软件构件技术在一、二年内将轰轰烈烈地开展起来。目前国内许多大工程、大项目都纷纷采用这项技术,如863计划近一半的项目、通信方面许多大项目的投标、金融行业的业务处理系统等,都在朝这个方向走。 而国外早就将构件技术应用到实践中去。
美国国防部高级研究项目署建立了"用于易修改的可靠系统的软件技术"项目,研究领域特定的、基于复用的软件工程技术,并建立了三个示范工程项目。美国空军电子系统中心与美国航空航天局合作建立了"可复用防务软件的中央档案库"项目,以促进国防项目中的软件复用。
据预测,今后,软件开发商必须了解主要系统集成商和应用软件开发人员所需要的基本构件,因为他们在引导着构件技术的需求和功能走势。到2003年,所有新开发的应用至少有70%将是基于构件的组装,开发商的市场应变能力也因此得到提高。
2、软件开发的成本模型
2.1 软件开发的目标
在过去的二十年中,为了适应软件项目不断增加的复杂性,软件行业一直不屈不扰探索新的开发方法。我们已经目睹了太多的演讲,改革以及成功与失败的循环往复。虽然软件技术、流程和方法在飞速地发展,但软件本身却依然停留在劳动力密集型的间断,因此,管理人员,工艺,资源和风险的管理技术就具有及为重要的意义。
成功地把握软件项目的成本计划,进度计划,质量计划,是项目取得高利润的关键。我们的目标,就是应用我们的知识CONTROL ENGINEERING China版权所有,是软件开发组织在软件项目上的投入产出和组织能力方面有明显的改善。
2.2 软件开发的成本模型
软件项目中,软件成本是软件项目的根本,如今www.cechina.cn,正在使用的软件成本很多,最常用最开放的便于记录的模型Constructive Cost Model(COCOMO),已经在行业中广泛使用了二十年。
COCOMOⅡ成本模型包括大量的参数和技术,可以对各种类型的软件开发项目进行评估,这些参数可以抽象为四个基本的函数:
复杂性:软件开发解决方案的复杂性,通常依据人工生成构件的大小来衡量(源代码和功能点的数量),这些构件用于开发可用产品的功能。
流程:指的是用于生产最终产品的流程控制工程网版权所有,特别是指帮助开发人员避免非增值活动的效果。
团队:指的是软件工程团队的能力,特别是指解决计算机科学领域和手头项目应用领域问题的能力。
工具:指的是团队用于开发的软件工具,也就是流程自动化的程度。
在对工作量进行估计的模型中这些参数的关系可以表示为:
工作量=(团队)*(工具)*(复杂性)(流程)
项目进度可以直接由工作量估计和流程计算得到,工作量的减少通常导致项目进度的缩短,从而减少成本。
2.3 软件开发的构件化趋势
软件工程一直由脑力劳动主宰,集中解决竞争中复杂性不断增长和其