构件与基于构件的软件开发

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:runnerups
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:软件复用技术是提高软件开发效率和质量的有效途径,可复用的构件在软件复用技术中作用重大。本文阐述了构件的概念和类别,讨论了一种实用的基于构件的软件开发流程,并分析其优势。最后对构件的技术发展作一展望。
  关键词:软件重用;构件;实现;部署;基于构件的软件开发(CBSD)
  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31350-02
  Component and Software Development Based on Component
  JIA Qian
  (Computer College of Wuhan University,Wuhan 430079,China)
  Abstract:Software reuse is an effective way to improve the efficiency and quality of the software development,
  Reused component take an important part in software reuse. This article elaborated the component concept and the category, discussed one kind practical flow about component software development, and analyzed its superiority. Finally makes a forecast to the component technological development.
  Key words:Software reuse; Component; Implementation; Deployment; Component based development
  
  1 引言
  
  从软件产业诞生以来,软件从业人员无不面临着以下困境:如何开发软件,以满足不断增长,日趋复杂的需求;如何维护数量不断膨胀的软件产品。
  软件的发展成为制约计算机系统发展的主要因素,摆脱作坊式的开发模式提高软件的生产效率和软件质量成为当前的研究重点。解决这些问题最好的办法是从过去的项目中吸取经验,抽象出公共的部分,并在以后的项目中重用它们,即软件重用。软件重用可以提高软件生产率,缩短开发周期,降低软件开发和维护费用,生产更加标准化的软件,提高软件开发质量,增强软件系统的互操作性。做为软件重用的一种有效手段,软件构件技术成功地完成了系统开发的重点从程序设计到对已有的构件的选取,调整,组装和升级的转换。在构件模型的支持下,通过重用已有的构件,软件开发者可以“即插即用”地快速构造应用系统,从而提高工作效率,产生更加规范可靠的应用软件。
  
  2 构件
  
  构构件是指模块化的、可部署、可替换的软件系统组成部分,它封装了内部的具体实现并对外提供一组接口。它由以下三大要素构成:
  (1)接口(Interface):接口告诉我们构件能完成什么功能。
  (2)实现(Implementation):实现就是让构件得以运作的代码。一个构件可以有多个实现,如一个构件可以同时处理XML文件的实现和处理关系型数据库文件的实现。
  (3)部署(Deployment):部署是构件的存在形式,一般即为二进制代码和可执行文件。
  构件解决两个重要问题: 一是重用性,即构件具有通用的特性,所提供的功能能为多种系统使用; 二是互操作性,即不同来源的构件能相互协调、通信,共同完成更复杂的功能。
  构件的功能均由标准接口定义,通过接口调用完成。这样不仅可以容易的重用构件,而且由于标准接口的存在,不同操作系统,不同语言,不同结构的构件之间既可以完成互操作又保证了构件之间相互独立,最大限度降低耦合。构件的范围非常广泛,可以是函数、过程、对象,也可以是他们的集合,甚至可以是软件架构和软件系统。
  (1)构件的最重要的特性是可重用性。构件的提出就是为了解决软件中的功能模块的可重用,提高开发效率,增强系统的可维护性、可扩展性和可升级性。
  (2)构件还具有互操作性。由于标准接口的存在,如CORBA,COM,EJB等,使得构件具有很好的互操作性,让系统的开发人员拥有更大的选择空间。
  (3)构件还具有封装性。构件对外提供标准的访问接口,具有良好的封装性,即内部功能模块的实现发生变化,不影响外界对它的调用。这样有利于bug的定位,版本的升级。
  
  3 构件的分类
  
  (1)商业构件(COTS)
  在90年代早期就产生的一种可以在市场上购买的构件,又称为开放市场构件。
  (2)Web服务构件
  在局域网成为因特网的分布式环境下,网络服务被提出作为未来的简单扩充。应用构件已经从域网扩展到因特网上。
  (3)黑白盒构件
  白盒构件即原代码构件,可读,程序员在使用时可以直接修改。黑盒构件则是已编译成二进制格式,独立且不能直接修改。
  在我们的DAO构件的实现中,充分体现了我们对构件的理解。
  我们确定了一种数据访问的模型——DAO(Data Access Object)模型,它是与业务逻辑分离的独立存取数据资源的数据访问模型。DAO模型只实现数据访问,在要求修改数据访问的时候,只需要更新DAO的模型。
  我们的构件产生的目的就是为了帮助开发人员快速开发出运行高效的数据访问代码。基于这两个目的,我们先是封装高效的数据库访问操作,提供简单的接口供开发人员使用,又开发了图形界面供开发人员配置数据库和要操作的数据表。
  
  4 基于构件的软件开发(CBSD)
  
  基于构件的软件开发(CBSD)通过整合已有的构件来完成大型软件系统的开发,其核心就是构件级的可重用。CBSD通过提高系统的可扩展性和可维护性来减少软件开发的费用,更快的整合系统,并能有效的降低大型系统的维护和升级压力。
  CBSD的理论基础是在大型软件系统中有相当的部分会重复出现,这些共同的部分应该通过构件组合起来,而不是一遍一遍的重写。
  在CBSD中,通过写代码来构建系统让位于使用已有的构件来装配和整合系统。在传统的软件开发模式中,系统整合往往是系统实现的收尾阶段的任务。在基于构件的软件开发中则相反,整合处于整个开发过程的核心地位。正因如此,决定构件的获得、重用和使用的关键在于它能否与其它构件整合在一起。
  如图1所示,在基于构件的开发过程中有四个主要的活动构件的选取;构件的调整;使用构件组成系统;系统的升级。
  图1
  4.1 构件选取
  构件选取是将过去开发的组件按照适合新系统的原则选取出来的过程。也可以是在构件交易中购买合适构件的过程。这个过程甚至延伸到开发构件和维护构件的质量保证。
  构件选取包括两个阶段:发现阶段和评估阶段。在发现阶段,构件将会被明确属性。如构件的功能(能提供什么样的服务),构件的接口(使用的方法)。这些属性还应包括一些不能孤立看待的要求,如构件的可靠性、可用性、可扩展性。在有些情况下也要考虑构件的非技术特性,如提供者的市场占有率,构件开发组织的过程和成熟度等。
  在评估方面,现在已经有了好多种成熟的评估方法。例如Standards Organization (ISO)描述的产品评估的通用标准,以及IEEE的特定域的构件评价技术,还有适用于特定问题域的技术。这些方法都是基于一定的构件研究理论产生的解决构件质量评估的方法。但就构件评价技术本身来说是不确定的,这是使用难以互相比较的标准,不明确的系统期望,不精确的评价方法以及构件的快速修改造成的。这意味着构件的评价带有一定的错误。所以开发者应该针对性选择对自己有用的评价方法。
  4.2 构件的调整
  由于单个的构件是为了完成特定的需求,基于不同的上下文假设。因此构件在应用于新系统之前需要调整。必须将构件之间的冲突降低到最小。常用的方法包括(1)白盒法。用户可以通过修改构件的源码使构件能与其他构件相互作用。该方法可以对构件的特性进行细致的控制,但修改源码可能会导致维护和升级问题。(2)黑盒法。用户可以得到构件的二进制可执行形式,构件没有提供扩展机制或API。(3)灰盒法。源码不可以修改,但提供了构件自身的扩展机制或可编程接口(API)。
  4.3 构件的组装
  单个构件要想发挥作用还应和其他构件整合起来,共同融入一个定义良好的架构之中。这个架构能够将完全不同的构件组合在一起。构件必须符合系统其他部分的要求。将符合应用环境的构件组装到系统的构架中,装配成系统的功能模块。一般是将原子构件尽量绑定成较大的复合构件,再根据构件的接口进行装配。
  组装构件时,有时必须编写粘接代码。这些代码消除构件间接口不兼容问题,同时为系统提供统一的异常处理机制。
  4.4 系统升级
  你也许凭感觉认为基于构件的系统很容易扩展和升级,因为可以以构件为单位进行升级。为了修复系统的某个错误,你可以用新的构件来替换有缺陷的构件;同样的,对于新增的功能上的需求也可以以构件的形式添加到系统中。这只是一个非常乐观的想法。用一个构件替换另一个的是一个费时费力的过程。因为两个构件不是完全一样,必须有全面的测试,包括孤立的功能测试和整合后的系统测试。
  
  5 结论
  
  虽然目前构件重用还没有在软件设计领域得到全面推广,真正的软件工厂还未形成。仍然存在一些问题,如大的构件库的建设,构件的分类和检索,构件的装配与集成等,使得构件的重用仍处在较低的水平。但构件由于其本身的诸多特性,正在成为软件开发的一个热点,基于构件的软件开发方法被视为解决软件危机,提高软件生产效率和质量的一条现实可行的途径。构件重用的目标是达到需求、分析、设计、编码、测试的重用。在不同层次上, 构件均可以将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统,使模块的重用从代码级、对象级、架构级到系统级都可能实现,从而使软件像硬件一样,能任人装配定制而成。
  
  参考文献:
  [1]A.W.Brown,K.C.Wallnau,The Current State of CBSE [J].IEEE Software,1998,15(5):37-46.
  [2]Dr Mark R Vidger,John C Dean.An Architectual Approach to Building Systems from COTS Software Technology Review.http://www.sei.cmu.edu.
  [3]傅音翔,王直杰,张钰 一种基于构件的软件开放方法[J].微计算机信息,2006(22,1-3).
  [4]CLEMENTS P C.From subsystems:component basedsoftware development[J].American Programmer,1995,(11):3-6.
  [5]WHIT B,LE T.Models and languages for component description and reuse[J].Software Engineering Nodes,1995,20(2):76-86.
  [6]何国斌,马世龙.基于构件的软件开发的方法与实践[J].计算机工程与应用,2000.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
采用^60Co-γ射线对岑软2号、岑软3号、岑软11号3个普通油茶(Camellia oleifera)无性系种子和连州1号普通油茶优树种子进行0、1000、2000、3000rad剂量辐照处理,研究辐照对油茶
从广东省广州动物园病死海南坡鹿病变器官中分离出1株大肠埃希氏杆菌,对细菌进行形态学观察、生化试验、血清型鉴定、药敏试验,PCR扩增测序分析,结果显示该分离株血清型为O78,该
2017年,笔者有机会赴美国深入洛杉矶地区的几所中小学参观学习,在此,主要记录其中一些有关阅读与写作的课堂教学片断,以及无处不在的小组合作学习与分层教学,希望可以体现美国中小学教育的一些特别之处。  一、阅读教学  在佩卓小学(Per-dew Elementary School),阅读占有较大比重,这从四年级一间教室的课程表中可看出,每天上午和下午使用Wonders系列教材阅读的总时长达2小时(见
通过实地调查,以浙江省湖州市安吉县的一条重要县级公路——刘彭线路为目标,采用春季、夏季和秋季开花型品种花卉对道路主干线绿化带、道路节点花坛、道路沿街、沿线花箱和宅
本文以“C语言程序设计”为例,结合现代多媒体技术和网络开发技术,提出了多媒体网络教学系统的设计要求。通过实际的需求分析,探讨了多媒体网络教学系统的主要功能和总体的设计
对清远26个巨桉(Eucalyptusgrandis)无性系早期人工林生长性状进行调查。结果表明:2a生林分中,不同无性系之间胸径生长和材积生长呈极显著差异(P〈0.01),而树高生长呈显著差异(P〈0.05);
本文探索整币兑零程序设计,给出常规穷举设计求解及其两个改进,进而给出优化的递推程序设计,对一般无序可重复拆分问题的求解有指导意义。