构件技术“应用”先行

2008-04-09 04:08:06来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  以面向对象为基础而发展起来的软件构件技术,摆脱了面向对象的理论束缚,目前理论上还未完善,但实际应用却有较大进展。本文基于软件构件技术,从认知体系出发,提出了应用软件开发模型和方法。文中还讨论了构件的定义、分类、支持语言和环境、技术特征以及实际应用效果。

原则

  软件开发是一门综合性学科,它包括哲学、基础科学、技术科学、工程管理四个知识层次。哲学决定着整个学科建立的指导思想、认识论和世界观。认识论就是人们认识客观世界的规律和方法,我们称它为认知体系。
  应用软件开发时,有自己必须遵循的哲理和认知观,对基础理论、研究方向以及采用的技术措施起着指导作用,符合学科就能发展,否则就会遇到各种问题,甚至导致失败。从软件发展的几个里程碑中可看出,认知观起到了决定性的作用。
  软件开发的初期阶段,我们称为程序设计时代,软件开发处于小作坊个体生产方式水平。到了60年代中期,出现了一些大型复杂的软件系统,人们认识到以个人的能力难以完成一个大系统的任务。W.E.Dijkstra 首先提出了一种解决方案,采用结构程序设计方法,就是把软件开发看作数学求解,沿用数学上的枚举、抽象、归纳、类比等思维方式,把问题简化。用工程的概念、方法、原理和技术来开发和维护软件,产生了结构化分析和设计的方法。这种开发方法长期左右着我国的软件开发,无疑起到了重要作用,然而它仍然存在着认知上的缺陷,如开发周期长、成本高、质量差,特别是所开发的软件不能适应系统的不断演化。
  到70年代,人们认识到,仅从软件结构上脉络清晰是远远不够的,这只是"表",不是"里",软件在结构上还应该适应客观世界的自然结构。M.A.Jackson认为应用软件应该忠于现实、高于现实,提出JSD系统开发方法,其指导思想是"仿真客观世界",采用自底后上的设计步骤。JSD方法第一次揭示了客观世界与软件系统之间的关系,因而所开发的软件悟性好、实用性强。然而JSD方法也存在着固有的缺陷:如何仿真要确定系统的实体和活动,它没有给出准则可循;没有区分客观世界的模型和软件系统模型,不能直接映射过去,其结果是系统结构混乱、效率低,软件成份复用性差。
  到了80年代,面向对象重新崛起,面向对象的认识论是将系统看成由多个对象组成,通过对象之间的通信形成了系统,为客观世界过渡到软件系统提供了途径和编程的思维方法。其主要特征是:(1) 类和封装性,实现数据抽象和信息隐蔽,给出了对象类型和参数化,通过生成实例后组装成系统,提供了实现复用的手段。(2) 继承性,提高了代码复用性。(3) 多态性。
  面向对象给出了软件系统的体系结构,引入了软件复用的思维方法。近年来引起了越来越多的人关注,提出了多种对象模型、语言,设计了各种基类型库,使得面向对象程序设计逐步成为热点。

问题

  面向对象技术虽然被大家接受,公认为当前的发展主流,然而在实际应用时,还存在着一系列问题。
  (1) 模型和概念尚未统一,不同的人对系统和对象的理解不一致,导致了各种对象语言均有很大差异,且语言自身与纯面向对象理论有许多不一致的地方,就难以形成统一的标准和开发规范。
  (2) 要求使用面向对象技术的人员素质较高,要掌握的东西很多,如要熟练掌握C 必需了解大量的MFC类库,且要了解每个类的细节。
  (3) 面向对象复用仅仅是处于初级阶段,未提出任何模式和规范以及相应的管理机制。
  (4) 工程上难以实施。目前面向对象能很好应用的领域有限(如VB的界面设计、多媒体软件设计),真正用纯面向对象技术来开发大型软件的并不多,其原因有:如何提炼对象类,采用OOA是不可行的;实际应用领域中的可复用领域专用构件缺乏;由于对象无统一标准,因此还停留在程序员自己复用,很难共享,更谈不上分布式情况下复用;纯面向对象要摒弃原有的许多技术等。产生上述问题的根本原因是由于认知体系上的不完整。由此基于面向对象的构件软件应运而生。

概念

  构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架(framwork)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。构件分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件。
  经过几年的发展,构件本身的模型及其规范已经提出,较有影响是OLE的COM及CORBA的SOM。目前已发展到分件式构件规范,主要有CORBA、OLE/ActiveX和JaveBeans,其发展日趋明朗,最终将会趋向统一。

分类

  为了更好地了解构件的性质,我们把它按多个侧面进行分类:(1) 按开发过程构件分为分析件、设计件、程序件和数据件。(2) 按功能分,分为三层:基础层为基本数据类构件和系统支撑构件;中间层为各种通用的中间件,顶层为针对领域的专用构件或子系统构件,从粒度上看,通常底层的粒度为较小,而顶层的粒度为较大。(3) 按使用方式分为动态和静态两种。(4) 按构件的结构分为原子构件及由多个构聚集的组合构件。

语言

  构件是为了复用,就必需遵循一定的规范,通过语言的功能来实现规范是一种极好手段。按照应用软件开发过程,可以提供下述语言。
  (1) 构件描述语言,用来描述构件的规格说明,即描述设计件;也可用来检索已有的可复用构件,是设计构件检索语言的依据。
  (2) 构件编程语言。可以采用现在流行的各种编译程序,如VC、VB、Java等。
  (3) 过程控制语言和系统集成。通过过程控制来制作专用构件、子系统构件和应用软件,要提供连接和嵌入的功能,还要包括面界开发功能、构件库的管理和实例生成,要提供数据库设计和数据库连接的功能,还提供大量的基本构件、中间构件及APL。如PB、Delphi等。由于PB易于掌握,除提供上述功能外,又能用于编程和构件管理,它通过不断版本更新,能紧跟新技术的发展,因此普遍受到软件开发者的青睐。

模型

  研究构件软件的两个核心是:如何提取可复用构件以及如何组装成系统并能实现互操作。目前讨论的软件体系结构、构件模型,均是为解决构件之间的接口、实现互操作。近年国际已提供了各种构件库,如MFC、PBL、VBL等等。但是这类类库绝大多数属于基本数据类库,制作界面的控件、各种中间件、支撑件及系统件等类库。但是离要集成应用软件所需要的构件还有很大距离。虽然国际上各种软件公司正在开发各种中间件产品或领域构件,但常常是不能拿来就用,如开发MIS系统时的Form操作构件、查询统计构件以及报表生存构件,特别是一些与领域有关的专用构件,必须要我国自己开发。那么如何提取领域构件,国际上还没有一种可循的办法,也就是说我们在开发应用软件的同时,难以形成相应的领域构件,以便适应系统自身演化或可复用到同领域中的不同系统的开发中。针对基于构件的应用软件开发过程,我们提出三个阶段的生命周期,即软件开发模型。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:基于组件的开放式CAD系统模型

下一篇:软件复用为软件开发提速