软件复用
《软件复用》PPT课件

⑶ OpenDoc开放式文档接口
OpenDoc是IBM、Apple、Novell等公司推出 的关于复合文档和构件软件的标准。
支持方便的、友好的用户管理和使用界面。
涉及两个基本问题: 构件分类
构件检索
构件的分类
大多数的构件分类模式可以归纳为以下三种类型: (1)枚举分类
通过定义一个层次结构来对构件进行分类。构件库中的可复用构件按照某种标 准被分成了若干个大类,而每个大类中的构件再被划分成若干个小类,依此类推, 这样就形成了一个构件分类的层次结构,
▪ 软件复用的基本概念 ▪ 领域工程 ▪ 基于构件的软件开发 ▪ 面向对象与软件复用
软件复用的基本概念
软件复用的定义 1983年,Freeman对软件复用给出了
这样的定义: “在构造新的软件系统过程中,对 已存在的软件人工制品的使用技 术。” 开发伴随复用,开发为了复用
领域 工程
领域分析
软件结构开发
领域分析的步骤:
技术文件
领
已有应用
域 知
客户考察
识 源
专家提议
领 域 分 析
目前/未来的需 求
类的分析
复用标准
领
域
功能模型
知 识
模
型
需求规约
⑴ 选择特定的领域 ⑵ 抽取具有最优复用的功能 ⑶ 标识该功能 ⑷ 建立领域分析模型 ⑸ 定义需求规约,得到由需求规约构件和子配置构成的领域模型
领域分析
领域分析是对特定应用领域中共同的特征、知识、需求的标识、分析和规约。 领域分析是特定领域内软件重用的基础,它的目标就是:发现和挖掘在特定领域 内可以被复用的构件。领域分析活动中输入和输出如图所示:
软件工程中的软件复用技术分析

软件工程中的软件复用技术分析在当今快速发展的信息技术领域,软件工程面临着越来越高的要求和挑战。
为了提高软件开发的效率、质量和降低成本,软件复用技术逐渐成为软件工程中的重要手段。
软件复用,简单来说,就是在软件开发过程中,重复使用已有的软件资源,包括代码、设计、文档等。
这就好比在建造房屋时,不是每次都从制作砖头开始,而是可以直接使用已经生产好的砖头,从而节省时间和精力。
软件复用技术具有诸多显著的优势。
首先,它能够显著提高软件开发的效率。
通过复用已有的成熟组件和模块,开发人员无需从头开始构建每一个功能,从而大大缩短了开发周期。
想象一下,如果每次开发一个新的应用程序都要重新编写登录模块、用户管理模块等常见功能,那将是多么耗时费力的事情。
而有了软件复用,这些常见的功能模块可以直接拿来使用,或者在其基础上进行少量的修改和定制,就能满足新的需求。
其次,软件复用有助于提高软件的质量。
被复用的软件组件往往经过了多次的测试和优化,其稳定性和可靠性相对较高。
使用这些经过验证的组件,能够降低新开发软件中出现错误和缺陷的风险。
再者,软件复用还能降低开发成本。
由于减少了重复开发的工作量,相应的人力、时间和资源投入也会降低,从而使软件开发的成本得到有效控制。
在软件工程中,常见的软件复用形式多种多样。
代码复用是最基本的一种形式,开发人员可以直接复用他人编写的函数、类或者模块。
设计复用则是在更高层次上的复用,例如复用软件的架构设计、算法设计等。
还有一种是组件复用,这就像是在搭积木,将各种预定义好的组件组合在一起,构建出复杂的软件系统。
然而,要实现有效的软件复用,并非一帆风顺,也面临着一些挑战和问题。
首先是复用资源的查找和评估问题。
在庞大的软件资源库中,如何快速准确地找到符合需求的复用资源,并且评估其质量和适用性,是一个难题。
这需要建立有效的检索机制和评估标准。
其次,复用资源的适应性和兼容性也是需要考虑的。
不同的软件项目可能有不同的需求和环境,复用的资源可能需要进行一定的修改和调整才能适应新的情况。
简述软件复用的几个级别

简述软件复用的几个级别软件复用是软件工程中一个非常重要的概念,也是一种重要的软件开发技术。
它允许开发人员编写出可重复使用的代码和模块,以改善软件的开发效率、简化维护和改进过程,并减少项目的开发成本。
软件复用可以分为几个级别:第一级复用:最基础的复用,能够使用代码重复使用,比如常用功能函数。
这种复用有时也被称为“纯应用”,因为它们不需要任何特定的软件设计原理来优化软件的表现。
第二级复用:这是更高级的复用概念,它建立在引入软件设计原则的基础上,可以改善代码的结构使得其可以更加容易地维护、扩展和重复使用。
第三级复用:最高级的复用概念,它引入更多的软件架构设计,使得模块可以被更好地组合起来,从而有效地实现了跨越系统和组件间的模块复用和容易维护。
此外,还有一种复用技术叫做“应用程序框架”,它可以为应用程序提供一个结构框架,从而使开发人员可以简化开发过程,并在时间和成本方面更加有效地实现软件复用。
从上面可以看出,软件复用是软件工程中重要的概念,它提高了软件的开发效率,减少了开发成本,简化了维护和改进程序的过程,具有重要的实用价值。
目前,软件复用已经成为软件工程的关键技术,他们的正确使用和应用将发挥重要的作用,帮助开发人员提高工作效率,提高软件质量,实现软件系统的可维护性、可伸缩性和可扩展性。
通过正确使用软件复用技术,可以增强开发人员的软件开发管理能力,充分发挥软件工程的潜力,使软件能够实现价值的最大化,从而实现软件全面可靠的发展。
总之,软件复用是软件工程领域中重要的技术,具有重要的实际应用意义。
未来,会有更多关于软件复用的相关讨论,也会有更多关于如何更有效地使用软件复用技术的研究。
在软件领域,软件复用会成为研究和应用的热点,会有更多技术不断在开发和改进,以更好地满足软件开发和维护的需求。
软件工程中的软件复用

软件工程中的软件复用软件复用是指在软件开发过程中,重复使用已有的软件组件、模块、库或其他可重用的资源来构建新的软件系统。
它是提高软件开发效率和质量的重要手段之一。
本文将从软件复用的定义、优势、实施方法以及存在的挑战等方面进行讨论。
一、软件复用的定义软件复用是指在软件开发过程中,通过合理组合已有的软件组件、模块、库等可重用资源,使得新的软件系统能够更高效、更快速地开发出来。
软件复用旨在降低开发成本、加快开发进度、提高软件质量和可靠性。
它可以通过不同的方式实现,如通过代码重用、组件复用、模块复用等。
二、软件复用的优势1. 提高开发效率:软件复用可以避免从头开始编写相同或相似功能的代码,减少了开发时间和工作量,提高了开发效率。
2. 提高软件质量:通过复用已经经过测试和验证的软件组件,可以减少错误和缺陷的可能性,提高软件的质量和可靠性。
3. 降低成本:软件复用避免了重复开发相同功能的成本,节约了开发资源和时间,并且可以通过合理的复用策略降低软件维护的成本。
4. 加快上市时间:软件复用可以减少开发周期,使得软件能够更快速地上市,占领市场先机,增加竞争力。
三、软件复用的实施方法1. 代码重用:通过将已经编写好的代码模块作为库文件或软件包,供其他项目重复使用,实现代码的复用。
2. 组件复用:将可独立使用的业务组件打包成可重用的组件库,由多个项目共享使用,避免重复研发相同的组件。
3. 模块复用:将软件系统中的功能模块抽象出来,形成独立的模块,供多个系统复用,实现模块级的复用。
四、软件复用存在的挑战1. 适用性问题:不是所有的软件都适合进行复用,有些软件需求特殊或定制化程度高,不适合直接进行复用。
2. 维护问题:复用的软件组件可能需要进行维护和升级,需要投入额外的人力和时间进行支持和维护。
3. 版本管理问题:多个项目同时复用同一个软件组件时,版本管理可能成为一个挑战,需要具备良好的版本管理机制。
4. 知识和沟通问题:开发团队需要具备相应的知识和技能才能进行有效的复用,同时需要加强团队间的沟通和协作。
软件复用性——精选推荐

软件复⽤性软件复⽤介绍软件复⽤,即使⽤已存在的软件部件(softwaare components)来实现或者更新软件系统。
软件复⽤有两种视⾓:⼀是创造,⼆是使⽤。
创造即⾯向复⽤编程,开发可复⽤的软件。
使⽤即基于复⽤编程,利⽤已有的可复⽤软件搭建应⽤系统。
复⽤是现代软件编写中最重要的概念之⼀。
它具有很多优点,如:适应性,⾼可靠性,能够降低成本和开发时间等优点。
复⽤的花销1. 可复⽤的组件应该使⽤清晰的定义、开放的⽅式、简洁的接⼝以及简洁明了的⽂档。
在设计时,也要为未来的更新留⾜余地。
2. 复⽤的代价是很⾼的,它包括了有组织性的、有技巧的设计,复⽤中出现的多种变化,以及⽀撑这些变化的⼯具的开销与让⼈们适应新⼯具与新变化的开销。
同时,可复⽤的软件⼀般也具有⼀定缺陷,它的性能会稍稍差⼀些,针对更加普适的场景,缺少⾜够的针对性。
如何定义软件的可复⽤性可复⽤性通常涉及到软件的构建、打包、分发、安装、设置、应⽤、维护以及更新等问题。
⼀个具有⾼可复⽤性的软件应该⼩⽽精、与现⾏的多种标准相兼容、灵活可变、具有优良的可扩展性、使⽤泛型参数、具有模块化、在变化中维护较好的局部性、具有良好的稳定性,并且能提供丰富的⽂档以及帮助。
复⽤的层次软件复⽤具有多种层次,分别是:代码层⾯:包括实现的⽅法,对变量的定义等模块层⾯:最基本的就是类与接⼝运⾏库层⾯:各种API的设计与实现架构层⾯:使⽤各种框架,例如:springboot等现⾏的流⾏框架在这其中最主要的复⽤是在代码层⾯,它与程序员息息相关,这是最底层的复⽤。
代码复⽤1. ⽩盒复⽤:源代码可见,可修改与扩展。
它的可定制化程度⾼,需要对代码进⾏更加深⼊的了解,对它的修改会增加软件的复杂度。
2. ⿊盒复⽤:源代码不可见,并且不能修改。
我们可以调⽤API接⼝来使⽤内部的⿊盒代码,但是⽆法修改。
使⽤代码复⽤,在⼤多数情况下,我们都需要对源代码进⾏修改,以满⾜新的应⽤需求。
模块复⽤模块复⽤与类和接⼝有关,⼀个类是模块复⽤的基本单元,我们可以不必知道其中的代码,只需使⽤jar包导⼊该类,只需将其添加到classpath中,我们可以使⽤javap⼯具来得到⼀个类的公共⽅法的headers。
软件的复用技术及开发方法

软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。
软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。
软件复用包括构造可复用软件和用可复用软件进行构造。
构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。
Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。
这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。
实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。
设计层软件复用是指对已有的软件系统的设计信息进行复用。
而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。
可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。
面向对象的软件复用机制主要有两种:继承和对象组合。
(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。
作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。
作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。
这些面向对象的主要机制是:数据的抽象化、封装和多态性。
通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。
这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。
复用技术在软件工程领域中的应用

汇报人:文小库 2024-01-07
目录
• 复用技术概述 • 复用技术的分类 • 复用技术在软件工程中的应用
场景 • 复用技术面临的挑战与解决方
案 • 复用技术的未来展望 • 案例分析
01
复用技术概述
复用技术的定义
复用技术的定义
复用技术是一种在软件开发过程中, 将已有的代码、组件、模块等资源进 行重复利用,以提高软件的开发效率 和质量的技术。
详细描述
基于组件的复用技术使得软件应用程序的不同部分可以像乐高积木一样组合在一 起。这些组件具有明确定义的接口,使得它们可以在不同的应用程序中重复使用 。这种复用技术提高了软件开发的效率和可维护性。
基于框架的复用
总结词
基于框架的复用技术是一种将软件应用程序的结构和框架作 为可重用的资源,以减少开发工作量的方法。
区块链技术在软件复用中的潜在价值
版权保护
区块链技术可以用于记录软件的 版权信息和授权情况,保护开发 者的权益。
透明度与可信度
区块链的分布式特性可以提高软 件复用的透明度和可信度,降低 信息不对称的风险。
去中心化协作
区块链技术可以实现去中心化的 软件协作和复用,降低对中心化 机构的依赖。
06
案例分析
模块化开发
组件化开发
将软件组件封装为可重用的单元,通 过组件的组合和配置实现软件功能, 可以提高开发效率和软件的可扩展性 。
将软件系统划分为多个模块,每个模 块实现特定的功能,可以提高开发效 率和可维护性。
软件维护的复用
1 2
维护工具
使用自动化工具进行软件维护,如代码重构、代 码审查、测试工具等,可以提高维护效率和软件 质量。
软件复用名词解释

软件复用名词解释所谓软件复用,就是用某种相同的方法把几个程序或模块合并成一个新的,也就是在它们的组成、结构以及工作原理等基本要素不变的情况下进行重新组织,使之具有更好的适应性。
软件复用的定义:计算机系统中所谓的“复用”指的是将一个计算机程序模块从头到尾地执行完毕后,然后再把执行完的程序(包括中间结果)抽出来(如把结果存入磁盘),再把执行过程中所产生的一些文件加以分析和整理后,继续进行执行。
可见这里的“复用”就是指程序模块的运行。
4。
简单小型复用计算机的体系结构通常采用微型计算机作为主机,由许多功能部件如数据处理器( CPU)、控制器(或微控制器)、输入/输出设备和外围设备组成。
5。
系统软件与应用软件按照我国的计算机发展水平,目前系统软件、应用软件都属于开放型体系结构。
开放型体系结构的基础是标准化。
实现开放式体系结构的关键是代码级和语义级的标准化。
代码级标准化的关键是语法分析,语义级标准化的关键是统一编译器接口。
由于软件复用需要满足的条件太多,因此很难给出严格的定义,而且,软件复用往往需要根据特定的环境,利用各种有效的技术手段来实现,所以软件复用在实践中可以采取不同的复用形式。
常见的有:综合复用、产品复用、功能复用和项目复用等。
6。
分布式系统及其复用由多台计算机互联成的一种计算机系统称为分布式系统。
分布式系统是由若干台计算机通过网络互连而组成的大规模计算机系统,可以分布在不同地点的远程计算机上,每台计算机既可以独立工作,也可以协同工作,即分布式操作系统。
这样,每台计算机可以同时运行多个用户的程序,这就使得资源能够充分共享,从而提高了资源的利用率。
7。
分布式操作系统8。
计算机系统在设计、开发和使用过程中,由于种种原因必然会造成不同程度的各种浪费,诸如人力的浪费,计算机及其软硬件设施的浪费,材料和物质的浪费等。
有效的管理和合理的使用这些浪费,对提高整个计算机系统的使用效率和经济效益是非常重要的。
这些有效的管理和合理的使用,需要依靠管理信息系统(也称为管理软件)的支持,尤其是分布式管理信息系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章软件复用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请求,以实现对对象实现中的方法进行调用;⒅将结果按原路返回给客户;⒆结束。