Software Reused and Component Technology Overview
Abstract: The idea of software reused is originally presented in the paper “Mass Produced Software Components” by Mcilroy in 1968.Since then people have done lots of researches and practice on it. Much research interest in this field of software reused technology based on component along with the Object-Oriented technology development. This paper summarizes the concept of software reused and the component technology, introduces some main component model and development of business component technology. The software developed approach and procedure based on components reused is described in it.
Key words: Component technology, Object-Oriented technology, Software Reuse, Business Component1 引言
随着计算机技术的飞速发展,人们对软件开发的速度和质量都提出了更高的要求。然而,通过多年的研究和实践活动,人们已经认识到在基于非形式化的不完备、不一致的用户需求和快速多变的软件环境(SEE)下开发可运行信息系统,软件开发自动化将是短期内难以实现的目标,软件复用是比较现实可行的解决方案。近年来,由于得到了面向对象等新技术的支持,软件组件复用技术已经成为软件复用技术研究的重点。在组件模型的支持下,通过复用已有的组件,软件开发者可以“即插即用”地快速构造应用系统。这样不仅可以节省开发时间和经费,提高工作效率,而且可以产生更加规范、更加可靠的应用软件。因此,组件复用技术被视为解决软件危机、提高软件生产效率和质量的有效途径。
2 软件复用与组件
2.1 软件复用与面向对象技术
软件复用(又称软件重用,Software reused),顾名思义,就是在软件的生产过程中的“一次开发、多次使用”现象。20世纪80年代以来,软件复用已经成为现代软件工程的一个重要目标,过程与函数的复用是软件复用的最初形式,面向对象技术的发展和应用对于提高软件复用起到了积极的推动作用。面向对象技术把现实世界中的事物抽象为“对象”,把数据以及相关的方法(对数据的操作)封装在一起,使用继承的特性并利用已有对象的功能来构造新的对象,有效地提高了软件的开发效率。但是,面向对象的软件开发设计并没有发挥出它应有的最大力量。首先,它支持的软件复用是源代码级别的,某一面向对象语言的类只能用于同一语言中;其次,在开发大型软件系统时,它的粒度粗细难以有效控制;另外,不同软件开发商所提供的对象(指语言的类)不易交互合作,难以支持系统的集成。因此,从理论上讲,面向对象技术是应能支持软件的复用和集成,但在实际上,面向对象技术只是可以作为一种基础。
2.2 组件的基本概念
组件技术是从面向对象技术发展而来的,组件(又称构件,Software Component)在不同上下文中有不同含义,例如,功能模块、类、对象或一组相关函数;另外的定义还包括标准类库、框架、CASE模型,以及任何可复用的软件制品等等不一而足。通常人们所提到的组件具有以下特点:组件是具有一个或一组定义良好的接口的一段相对独立的自包含软件,具有二进制可复用性,遵从某种组件规范,可以与其它组件组合成一个系统并是可替换的。它具有运行时和开发时的两个内涵,即既有运行时可访问的接口;又具有开发时可独立提交与安装的特性。
面向对象技术常常把重点放在封装以及代码复用方面,而软件组件技术支持二进制复用,侧重于组件的可插入性(Plug-ability)。组件技术将封装运用到了极限,它通过只暴露公用接口来实现这一点,组件的实际实现被隐藏起来。于是,首先,它可以独立于实现语言:一个Java客户不会感觉到所使用的组件是用C++来实现的;其次,它可以是位置透明的:客户不会感觉到所使用的组件是运行在相同的进程中,还是运行在不同的进程中,甚至是位于不同的机器上。使用高层次的封装,对于外界的好处在于,设计合理的组件可以插入到不同的客户程序中,而客户程序无需关心组件的实现。组件的客户只需关心该组件所提供的接口(即约定)。在理想的设置中,支持相同接口的不同组件可以互换使用。可互换组件的可插入性是基于组件系统的目标。
2.3 组件复用的基本方式
依据复用的对象,可以将组件复用分为产品复用和过程复用。产品复用是指复用已有的组件,通过组件集成(组装)得到新系统。过程复用是指复用已有软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需的系统。
依据对组件进行复用的方式,可以分为黑盒复用和白盒复用。黑盒复用是指对已有的组件不作任何修改,直接进行复用。白盒复用指已有组件并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可以使用。
2.3 组件复用技术研究内容
组件复用包括两个基本过程:可复用组件的开发和基于可复用组件的应用系统的组装与集成。研究的内容主要有:组件获取技术,组件模型技术,组件描述语言,组件分类与检索,组件复合组装,组件标准化。
实现组件复用的关键技术主要包括:软件组件技术、领域工程、软件架构、软件在工程、开放过程、CASE技术等技术因素以及诸多非技术因素,其相互之间的关系如图1所示。