当前位置:文档之家› 软件复用

软件复用

第十章软件复用10.1软件复用概述10.1.1 软件复用目的软件复用使得应用系统的开发不再采用一切从“零”开始的模式,可以充分利用过去应用系统开发中积累的知识和经验,从而可以高效、高质地开发和维护软件系统,主要表现在以下几个方面:1、缩短软件开发和维护的时间;2、降低软件开发和维护的成本;3、保证软件的可靠性;4、保证软件的一致性;5、保护投资者的利益。

10.1.2 软件复用的类型软件复用可以分为横向复用和纵向复用两种类型。

横向复用是指复用不同应用领域中的软件成份,如数据结构、算法、人机界面构件等。

纵向复用活动的关键在于领域分析:根据应用领域的特征和相似性,预测软件成份的可复用性。

一旦确认了软件成份的可复用价值,便进行开发,然后将开发得到的软件制品存入可复用构件库,供未来开发项目使用。

10.1.3 软件复用的内容软件复用的内容,除了源程序代码外,还有许多其它软件制品,甚至特定的分析建模方法、检查技术、质量保证过程等,均可以被复用。

C.Jones定义了10种可能复用的软件制品:(1)项目计划:软件项目计划的基本结构和许多内容,如SQA计划,均可以跨项目复用。

(2)成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。

(3)体系结构:即使应用论域千差万别,但程序和数据的体系结构很少有截然不同的情形。

因此,有可能创建一组类属的体系结构模板,如事务处理结构,将这些模板作为可复用涉及的框架。

(4)需求模型和规格说明:数据流图、类模型等均可以复用。

(5)设计:系统和对象设计等是常见的复用成份。

(6)源代码(7)用户文档和技术文档:即使特定的应用不同,也有可能复用用户文档和技术文档中的大部分内容。

(8)用户界面:用户界面可能是最广泛地被复用的软件制品。

由于它可能占一个应用软件的60%的代码量,所以复用的效果最明显。

(9)数据:在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。

(10)测试用例:一旦设计或代码被复用,相关的测试用例应该“附属于”它们。

10.1.4 针对复用的过程模型针对复用的过程模型强调并行的工作方式。

领域工程执行一系列工作,以建立一组可以被软件工程师复用的软件制品。

领域工程创建应用领域的模型,以用作在软件应用工程流中分析用户需求的基础。

软件体系结构为应用软件的设计提供基础。

最后,在可复用软件制品被构造好后(作为领域工程的一部分),它们可以在软件建造活动中被软件工程师所用。

领域工程和应用工程是并行的10.1.5 软件复用成功实施的关键软件复用的实施除了建立和使用可复用制品库外,还需要在软件开发方法、工具、度量等方面为复用提供支持。

除非一个组织明确地和正式地实施复用,否则它不可能重复地利用在多个软件项目中的复用机会。

实施复用是困难的,有大量的工作要做,但如果成功地实施复用,那么复用带来的回报是巨大的,下面是成功实施复用的关键。

1. 管理者的支持获得管理者的支持对于保证成功实施复用是非常重要的。

向公司引入复用必须得到各级管理者的积极配合,因为它影响了企业的组织结构、文化和软件技术等方面。

2. 复用组织的支持要成功地实施复用,必须建立一个正式的复用支持组,以承担可复用软件制品的建立、获取、验证、分类和管理。

3. 复用库的支持可复用软件制品除了应有较高的质量外,还应容易被快速找到、易于理解,并且能被安全地修改等。

复用库就是用来对可复用软件制品进行分类、组织、存储和管理。

4. 复用驱动的方法支持与复用有关的活动和技术必须加入到有关开发方法中,一方面指导可复用制品的建立人员识别复用机会和侯选的可复用制品,并建立一个可复用制品,另一方面指导应用软件开发人员寻找可复用制品,并利用它们组装成新的应用。

10.1.6 复用成熟度模型在IBM的RMM(Reuse Maturity Model,缩写为RMM)中,将软件复用水平分为五级。

10.1.7 针对复用的软件项目组织针对复用的软件项目组织必须有两个职能,并由两个部门分别承担。

一个职能是创建可复用制品,相应的部门是创建者或领域工程部门。

另一个职能是利用可复用制品来建立系统,相应的部门是复用者或应用工程部门。

10.2 领域工程10.2.1 领域工程与应用工程在单个应用系统工程(简称应用工程)的开发过程中,软件开发人员的任务是在特定的条件下,针对一组特定的需求产生一组特定的设计和实现。

与应用工程相比,领域工程处于一个较高的抽象级别上,对领域中相似系统的共同特征进行抽象,并通过领域模型和领域构架DSSA表示了这些共同特征之间的关系。

领域工程和应用工程是相互联系的。

一方面,领域工程的主要信息来源是通过应用工程得到的现有系统,包括需求规格说明、设计、实现等。

另一方面,领域工程和应用工程需要解决一些相类似的问题。

不过,领域工程要适用于一族系统,而不只是一个系统。

因此,领域工程比应用工程要复杂,往往不能事先设计划好,也很难实施管理。

10.2.2 领域工程过程有关领域工程的基本活动和任务如下:1)领域分析领域分析的目标主要是获得领域模型。

领域模型描述了领域中应用系统之间的共同需求。

2)领域设计领域设计的目标是获得领域构架DSSA。

领域构架DSSA描述了在领域中表示的需求的解决方案,它不是单个应用系统的设计,而是能够适应领域中多个系统需求的一个高层次的设计。

3)领域实现领域实现的主要目标是定义将需求翻译到由可复制品创建的系统的机制。

领域工程是一个反复的、逐渐精化的过程,在实施过程中都可能返回到以前的步骤,对以前的步骤得到的结果进行修改和完善后,再回到当前步骤。

10.2.3 领域工程参与人员领域工程的人员可以划分四种角色:领域专家、领域分析员、领域设计员和领域实现员。

1)领域专家在领域工程中,领域专家可能包括该领域中应用系统有经验的用户。

2)领域分析员领域分析员由应具有知识工程背景的有经验的系统分析员来担任。

3)领域设计人员领域设计人员应由有经验的软件设计人员来担任。

4)领域实现员领域实现员应由有经验的程序设计人员来担任。

10.2.4 领域模型领域模型描述了领域中一些基本的概念,如功能、特性、数据、对象类和需求,以及这些概念间的相互关系,是领域内系统的通用和差异属性、属性和领域概念的意义以及差异属性之间的依赖性的明确表示。

一般情况下,领域模型包括以下成分:1. 领域定义2. 领域字典3. 概念模型4. 特征模型10.2.5 领域架构领域构架是使用可复用制品来构造领域中应用系统的高层设计模型。

它可以采用过程交互模型,模块结构图等形式,这取决于选择何种类型的模型来表示系统设计。

软件构架描述了构建系统的元素、元素间的交互、指导元素组合的模式以及对这些模式的限制。

管道/过滤器模式和层次体系结构模式是两种典型的软件构架模式。

在管道/过滤器模式的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。

在层次体系结构模式中,每一层为上层服务,并作为下层客户。

许多现有的软件系统是两层的体系结构,也称为客户机/服务器体系结构。

三层模型则可以明显地改善系统的可扩展性和可复用能力。

10.2.6 FODA方法FODA(Feature-Oriented Domain Analysis)方法是由卡内基·梅隆大学的软件工程研究所提出的领域工程方法。

它支持对某领域中系统共性和个性的发现、分析和文档记录。

FODA方法的有关步骤如下:1)上下文分析2)领域建模3)构架建模10.3 组件技术概述10.3.1 组件的定义与复用组件(Component),亦称构件,是指语义完整、语法正确和有可重用价值的单位软件,它是语义描述、通信接口和实现代码的复合体。

组件是具有一定的功能,能够独立工作或能同其它组件装配起来协调工作的程序体,其使用同它的开发、生产无关。

组件可分为源代码组件和二进制代码组件。

组件复用有白盒和黑盒两种方式。

黑盒是指不作修改的直接引用;白盒指进行适应性修改的引用。

随着对软件复用理解的深入,组件的概念不再局限于源代码和二进制代码,而是包括一切对开发活动有用的信息,如需求规约、软件体系结构(构架)、文档、数据等。

本书将广义的组件用软件制品(简称制品)来称呼,而组件则仍是指源代码和二进制代码。

10.3.2 组件模型组件模型通常由基于各种语言开发工具、组件嵌入机制和相关服务(事务、安全、认证、负载均衡等)组成。

目前,比较成熟的组件模型有OMG的CORBA、SUN的EJB(Java Bean)和Microsoft的COM/DCOM/COM+。

10.3.3 组件获取与描述组件获取:(1)从现存组件中获取得符合要求的组件,直接使用或作适应性修改,得到可复用的组件;(2)通过遗产工程,将具有潜在复用价值的组件提取出来,得到可复用的组件;(3)从市场上购买现成的商业组件,即COTS(Commercial Off-The-Shelf)组件;(4)开发新的符合要求的组件。

在获取组件时,为便于复用者使用,应对组件进行描述,其主要内容包括:(1)属性。

描述了组件的特征。

属性值对外可以读出,也可以修改。

(2)功能接口。

即组件向外提供的服务。

(3)依赖关系。

指出组件在实例化时所依赖的其它组件的特定接口,是组件完成其任务所必需的。

组件获取后,可对它进行结构化组织并放入可复用组件库,以备复用。

10.3.4 组件分类为了便于组件的复用,需要对收集和开发的软件组件进行分类并置于可复用组件库的适当位置,便于组件的存储和检索。

(1)关键词分类方式(2)多面分类方式①多面分类机制②同义词库③概念距离图10.3.5 组件检索可复用组件库的检索方法与组件分类方式密切相关。

(1)基于关键词的检索(2)多面检索多面检索方法基于多面分类组织方式,由三步组成:①构造查询②检索组件③排序组件10.3.6 组件使用(1)理解组件(2)修改组件(3)合成组件组件合成技术大致有三种:①基于功能的合成技术②基于数据的合成技术③面向对象的合成技术10.4 公共对象请求代理体现结构10.4.1 CORBA的组成1. ORB核/ORB接口2. IDL及静态/动态调用3.对象适配器(Object Adapter, OA)对象适配器是ORB与对象实现间的接口,其主要的工作如下:①对象实现的注册②生成及管理对象引用③服务器进程激活④对象激活⑤对象撤消⑥对象向上调用10.4.2 ORB运行机制ORB运行机制描述如下:⑴开始;⑵客户获取特定对象实现的对象引用;⑶如果对象以静态方式实现,则通过IDL存根向对象实现发出请求,然后转⑥;⑷将请求发给ORB提供的DII;⑸DII根据接口库的信息将请求传递给对象实现;⑹ORB传递请求;⑺ORB内核在请求到达后做一定的处理,然后将其送给对象实现登记的对象适配器;⑻对象适配器接收请求;⑼如果不是本ORB域登记,则转⒁;⑽如果有相应的IDL骨架存在,则对象适配器通过IDL骨架调用对象实现中的方法,并转(18);⑿对象适配器通过DSI调用对象实现方法;⒀转⒅;⒁将请求传给DSI;⒂DSI产生一个代理对象;⒃代理对象将请求转成中间协议表示形式传给目的ORB;⒄目的ORB将中间协议表示形式转换成本地DII请求,以实现对对象实现中的方法进行调用;⒅将结果按原路返回给客户;⒆结束。

相关主题