第10章软件复用与构件技术

合集下载

软件复用与构件化

软件复用与构件化

2.相关技术与标准概述-组装
构件组装技术
基于架构的构件组装.如北大ABC 基于框架的构件组装. 基于工作流的构件组装 动态组装 …
36
2.相关技术与标准概述-方法与过程
基于构件的软件工程(CBSE/CBD/ABD)
可复用资产库 需求分析 系统需求 项目可交付品 确定领域 领域需求 分析领域 领域模型 设计领域架构 领域架构 构建领域 领域构件 构件设计 详细设计 设计应用架构 系统架构 系统分析 概要设计
7.生存周期组织过程
7.1管理过程 7.2基础设施过程 7.3改进过程 7.4人力资源过程
7.7领域工程过程 7.5资产管理过程
7.6重用大纲管理过程
42
2.相关技术与标准概述-方法与过程
ISO/IEC 12207:2008
43
该部分与前一版本内容上的区别?
2.相关技术与标准概述-方法与过程
重构与再工程技术 设计模式(Design Pattern) AOP(Aspect Oriented Programming) 本体(Ontology)技术 述
架构的视图模型:
Kruchten “4+1”视图 (1995): RUP “4+1”视图 RM-ODP(开放式分布处理 参考模型):
企业视角,信息视角,计算视角 ,工程视角,技术视角
34
2.相关技术与标准概述-架构描述标准
任务
完成 1..*
环境
影响 栖息于
系统
必要性:
服务化的要求 市场竞争的压力 …
好处很多:
提高软件生产率与软件质量 降低开发成本,缩短开发周期 降低人员流动的风险 推进产业内专业化分工和产业链形成 …
21

软件工程课件第十章

软件工程课件第十章

⑴ 选择特定的领域
⑵ 抽取具有最优复用的功能
⑶ 标识该功能 ⑷ 建立领域分析模型
⑸ 定义需求规约,得到由需求规约构件和子配置构成的领域模型
开发可复用构件
– 构件应具有的特征
⑴ 通用性 ⑵ 可变性
在建造构件时,应该提供构件的特化和调整机制。
⑶ 易组装性
• 构件的组装分为同构件的组装和异构件的组装。 • 构件应有良好的封装性和良好的接口。 • 构件间应有松散的耦合度 • 应提供便于组装的机制
收集和分析用户的需求,设计并实现需要另 加的构件,对所提供的可复用构件进行必要 的修改,建造和测试整个应用系统。
面向对象与软件复用
面向对象技术的核心概念是“类”,而类的主要特征 封装、继承和多态,都十分有利于复用。
面向对象方法对软件复用的支持
⑴ OOA模型
OOA模型分基础模型和详细模型,基础模型体现更 高层次的抽象,更容易复用。
软件复用的基本概念
领域工程 基于构件的软件开发 面向对象与软件复用
软件复用的基本概念
软件复用的定义 1983年,Freeman对软件复用给出了 这样的定义: “在构造新的软件系统过程中,对 已存在的软件人工制品的使用技 术。” 开发伴随复用,开发为了复用
领域 工程
领域分析
软件结构开发
可重用构件开发 可复用 构件库
领域模型
结构模型
基于构件 的开发
构件选用 构件调整 构件组合
构件更新 应用 软件
分析
结构设计
构件工程
测试
软件复用的重要性
软件复用的目的是能更快、更好、成 本更低地生产软件产品。 实现软件复用应解决的问题
– 建立支持复用的基础设施(如构件库)。 – 培训工程师和管理者使用复用软件。 – 采用促进软件复用的开发方法(如面向

最新整理软件复用与构件技术简介.ppt

最新整理软件复用与构件技术简介.ppt

• 时序:传输速率匹配和先后顺序。
• 通信时间
学而时习之 —— 网络协议
“你好” “你好”
“几点?”
TCP 连接请求 TCP 连接响应
Get
“3:00”
time
网络协议: 控制实体间数据通信的规则和约定的集合。
如何利用协议实现通信 ?
如何把信息转Ge换t 为比特流? 如何保证比特流的正确传输? 如何选择网络的传输路径?
链路层
物理层协议
物理层
邮件传输示例
应用层 表示层 会话层
传输层 网络层 链路层 物理层
使用信件 信件加密 联系对方
快递公司 调度员 运输队 搬运工
使用信件 信件加密 联系对方
快递公司 调度员 运输队 搬运工
应用层 表示层 会话层 传输层 网络层 链路层 物理层
•• ➢➢逐协协下 特层议议层 定服栈实 系务体 统为 通上 信层所实使体用实提的体供一服组务协;议
• 附的加集信合息
服务
实体 系统
• ➢➢网协等通 网络议实过 络体体“ 通系之附 信间加 功结的信 能构协息的议”层通的次实信方构体;式成实、现各对层 • 底的层通连信接协议和相邻层的接口规范
➢的在集底合层模建型立。物理连接
快递公司
使用信件 信件加密 联系对方
快递公司
应用层 表示层 会话层 传输层 网络层 链路层 物理层
ISO/OSI 七层协议模型
应用层协议
应用层
表示层协议 • 主要功能:
表示层
传会输话层层➢传协协路输议议由的—路如径何。选会择话数层据 • 典型问题: 传输层
网络层➢协路议由选择 ➢ 拥塞控制
链路层协议
表示层
会话层➢协组议织信息帧使其正确、 快速传输。 会话层

第十章软件重用和构件技术PPT课件

第十章软件重用和构件技术PPT课件

(2)人的因素 喜欢自己创造而不喜欢使用别人的东西。
.
7
10.1.3 软件重用的困难 重用具有许多明显的优点,目前应用不广泛的主要
原因是:
(3)管理因素 把重用构件和一般软件构件同等看待,把重用看
作可有可无的事。
(4)教育因素 软件科学技术的教育与培训中,缺乏关于软件重用
的内容,缺少专门教材和课程。
领域工程
领域分析
设计软件 体系结构
开发可重用 的软件成分
领域 模型
结构 模型
软件工程
用户 需求
系统分析
规格说明 与设计
系统规 格说明
建造
分析与 设计模型
中心库
可重用软件 成分/构件
应用 软件
重用的. 过程模型
10
6.2.1 可重用构件
一个软件只有在多个系统中被使用才可称为“可重 用构件”,必须具备的条件:
协同的模型和使构件能够交互并完成共同任务的的特定服务。
.
25
二、基于构件的软件开发特点 1、开发的质量
基于构件的软件开发的一个明显的优点就是提高了软件的质 量。
可重用的构件在开发过程中,都经过严格的测试。
改进构件检索的其它措施:
(1)记录用户使用构件库的经验,并根据这些经验改经构 件检索系统;
(2)对每个构件给出一段文字的简要介绍;
(3)提供较强的人机对话功能;
(4)引导用户对自己需求的表达不断精化。
.
24
10.3.4 基于构件的开发
基于构件的开发是使用可重用构件组装开发新的应用系统。
一、开发过程
构件进行检索。
.
19
刻面分类法(Faceted Classification):

软件复用与构件技术简介

软件复用与构件技术简介

软件复用与构件技术简介李 戈北京大学 信息科学技术学院 软件研究所 2008年10月16日北京第三届优秀软件构件评选支持单位: 北京市科学技术委员会 主办: 北京软件行业协会 北京软件与信息服务业促进中心 北京软件产业基地公共技术支撑体系 承办: 北京软件产品质量检测检验中心 北京大学北京第三届优秀软件构件评选z提升北京市软件企业的核心竞争力 –帮助企业提高软件开发技术与研发能力,提 高软件开发效率,降低软件开发成本 推动以企业为主体、产学研相结合的技术创新体 系的建设 促进北京软件产业的变革,使软件产业走上工程 化、工业化的发展轨道zz软件企业的现状与问题z现状:– 软件系统的规模和复杂度不断提高 – 对生产效率和产品质量的要求不断提高z问题 问题:– 如何提高软件生产的效率? – 如何掌控软件产品的质量? – 生产效率 与 产品质量 怎可得兼?为什么需要软件复用z应用软件系统的一般开发模式设计 实现 测试 运行需求分析z基本特征:应用系统的开发总是从头开始– 每个应用系统的开发均涉及大量的重复劳动¾ ¾ ¾ ¾ ¾用户需求获取的重复 需求分析、设计的重复 编码实现的重复 测试工作的重复 文档工作的重复为什么需要软件复用z应用系统的构成成分分类– 探讨应用系统的本质,其构成成分可分为:¾ ¾ ¾特定于计算机系统的构成成分 应用系统所属领域的共性构成成分 每个应用系统的特有构成成分系统专用的构成成分 软件系统的 构成成分 领域共用的构成成分 通用的系统构成成分什么是软件复用z避免重复劳动的解决方案--软件复用 避免重复劳动的解决方案 软件复用– 应用系统的开发不再采用一切“从零开始”的模式 – 充分利用过去应用开发中积累的知识和经验: 充分利 去应 发中 的知¾需求分析结果、设计方案、源代码、测试计划及 案例等– 以已有的工作为基础,重点关注应用的特殊性z软件复用– 重复使用“为了复用目的而设计的软件”的过程 复使 为 复 的 计的软件 的软件复用的历史z软件复用概念的提出– 1968年NATO软件工程会议z之前 子程序的概念也体现了复用的思想 之前,子程序的概念也体现了复用的思想– 目的,是为了节省当时昂贵的机器内存资源 ¾ 并不是为了节省开发软件所需的人力资源 – 然而,子程序的概念可以用于节省人力资源的目的 – 从而,出现了程序库——将一些通用子程序收集到程 序库中,供其他程序员在编程时使用 – 例如,数学程序库就是一个成功的子程序复用软件复用的历史z在其后的发展过程中– 有许多复用技术的研究成果和成功的复用实践活动 – 但是,复用技术在整体上对软件产业的影响却并不尽 如人意 ¾ 这有技术方面和非技术方面的种种因素 ¾ 其中技术上的不成熟是一个主要原因z近十几年来,面向对象技术的出现并逐步成为主 十几年来 面向对象技术的出现并 步成为 流技术– 为软件复用提供了基本的技术支持 – 软件复用研究重新成为热点 – 被视为解决软件危机,提高软件生产效率和质量的现 实可行的途径软件复用的历史z复用的发展反映出复用的不同层次– 低级的复用(被动的复用) – 高级的复用(主动的复用) 高级的复 主动的复z软件复用包括两个相关的过程 件 个– 开发可以复用的软件成分 – 利用可复用的软件成分构造新的应用系统z软件复用是必然– 实践证明,软件复用是解决软件危机,提高软件生产 效率和软件产品质量的现实可行的途径。

第10章软件复用与构件技术

第10章软件复用与构件技术

开发可复用的软件构件
(3)COM ·构件间的互操作基于指针,依赖于操作系统的API
· 对Windows的依赖性强,对其他操作系统的支持相对不足 · 构件运行环境的提供者仅限于Microsoft公司,但支持COM标准的开发工 具比较多(例如,VC++、VB等) 对象连接与嵌入(OLE)是COM的一部分,定义了可重用构件的标准结构
3 面向对象的软件重用技术
面向对象技术中的“类”是较理想的可复用构件,称之 为类构件;将面向对象的可复用构件库称为可复用类库(简 称类库) 1.类构件 (1) 实例复用 由于类的封装性,无需了解实现细节,就可以使用构造 函数创建类的实例。再向创建的实例发送适当的消息,启动 相应的服务。这是最基本的实例复用方式。 此外还可以用几个简单的对象作为类的成员,创建出一 个更复杂的类,这是另一种实例复用的方式。
开发可复用的软件构件
• 主要的公司和产业联盟已经提出了构件软件的一些标准。 (1)OpenDoc 该标准定义了为使一个开发者提供的构件能够和另一个开发 者提供的构件互操作,而必须实现的服务、控制基础设施和 体系结构。 (2)OMG/CORBA 一个对象请求代理(ORB)提供的一系列服务,这些服务使 得可重用的构件(对象)能够与其他构件通信,而不管它们 在系统中位于何处。
分类和检索软件构件
• 1.描述可重用的构件
分类和检索软件构件
• 2.重用环境
软件构件重用必须由相应的环境来支持,环境应包含:

构件库,用于存储软件构件和检索构件所需要的分类信息 库管理系统,用于管理对构件库的访问 软件构件检索系统(例如,对象请求代理),通过它客户应 用系统可以从库服务器中检索构件和服务 CASE工具,帮助把重用的构件集成到新设计或实现中

软件复用与软件构件技术

软件复用与软件构件技术

2018年第10期蓓e与电胭China Computer&Communication针其机工程袁用技术软件复用与软件构件技术王霞(沈阳职业技术学院计算机学院,辽宁沈阳110021 )摘要:近几年来,随着社会的发展与进步,科技发展迅速,软件技术逐渐得到认可并成为主流技术。

软件复用是 因在软件开发过程中的劳动重复,因此,利用软件复用的手段帮助提高软件开发的效率和质量。

软件复用和软件构件技 术一直受到行业内部的关注,笔者就对此进行了探究,分别研究了软件复用和软件构件技术,探讨了两者之间的关系,并对未来进行了展望,希望能够为软件行业发展提供有效思路。

关键词:软件复用;软件构件技术;软件工程中图分类号:TP311.52 文献标识码:A文章编号:1003-9767 (2018) 10-007-03Software Reuse and Software Component TechnologyWang Xia(Shenyang Polytechnic College,Computer Departement,Shenyang Liaoning110021, China) Abstract:In recent years,with the development and progress of society,technology has developed rapidly,and softwaretechnology has gradually been recognized and become the mainstream technology.Software reuse is due to the duplication of labor in the process of software development.In this regard,software reuse is used to help improve the efficiency and quality of software development.Software reuse and software component technology have been paid attention to in the industry all the time.The author explores this issue,studies software reuse and software component technologies,and explores the relationship between the two,and looks into the future,hoping to provide effective ideas for the development of the software industry.Key words:software reuse;software component technology;software engineering软件复用是当代社会不可或缺的重要技术,随着全球的 快速发展、科技的普及,软件的重要性不言而喻。

《软件工程》教学课件11软件复用和构件技术

《软件工程》教学课件11软件复用和构件技术

构件技术的概念和特点
1 概念
2 特点
构件技术是一种软件开发方法,通过将系 统分解为独立的模块(构件)来构建复杂 的应用程序。
高度可重用、独立可测试、易于部署和升 级。
构件的组织和管理
1
构件库
建立和维护一个集中的构件库,用于存储、组织和分享构件。
2
版本控制
使用版本控制系统来跟踪构件的修改,确保系统的稳定性和一致性。
3
构件文档
编写清晰的文档,描述构件的功能、接口和用法,以便其他开发人员能够使用和 理解。
构件的开发和测试
1
构件设计
根据需求和规范,设计构件的接口、功能和数据结构。
2
构件实现
使用合适的编程语言和工具,开发构件的源代码。
3
构件测试
进行单元测试和集成测试,确保构件的正确性和可靠性。
结论和总结
通过软件复用和构件技术,我们可以提高开发效率、降低成本,同时增加软 件的可维护性和可重用性。构件技术是现代软件工程中的重要方法之一。
重复使用已重用已开发的独立模块,如界面组件和业务逻辑组件。
3 框架复用
利用通用的软件框架来构建应用程序,如Web框架和移动应用框架。
软件复用的优点和挑战
优点
• 提高开发效率 • 提高软件质量 • 降低开发成本
挑战
• 找到合适的复用组件 • 解决兼容性问题 • 维护和更新复用组件
《软件工程》教学课件11 软件复用和构件技术
在本节课中,我们将探讨软件复用和构件技术,了解其定义、分类、优点和 挑战,以及构件的组织、管理、开发和测试。
软件复用的定义和意义
软件复用是指在开发过程中使用已有的软件组件来构建新的应用程序,以提 高效率、降低成本并增加可靠性和可维护性。

软件复用与软件构件技术

软件复用与软件构件技术
而且也有可 能是 为了” 非复用 目的” 软件 的重 复使用 而设计的软件 , 抑或是 在某个应用系统的新旧版本之间进行重复使用代码 的行为与过程。一般来 讲, 在重复软件的不断更新发展中, 重复使用 的行为大概可 以总结为在三个 维上发生 , 即时间维、 平 台维和应用维。 其 中, 时 间维是指使用 以前 的软件版本作为新版本的基础, 加入新功能, 适应新需求, 即软件维护: 平 台维是指以某平台上 的软件为基础, 修改其和运 行平台相关的部分, 使其运行 于新平台, 即软件移植 ; 应用维是指将 某软件用 于其他应用系统 中, 新系统具有不 同功能和 用途, 即真正 的软件复用。 这三种 行 为中都 重复使 用了现 有的软件, 但 是, 真正的复用是为 了支持 软件在 应用
科 学 发 展
铖 鸯与 蟪寓
软件复 用与软件构件 技术
崔 振 宇
摘 ( 沈 阳汽 车工业学 院) 要: 本文主要论述 了在软件开发 的过程中 , 为 了减少 因重复劳动而增 大的工作量 而使 用的软件 复用 的有关 问题 , 并就软件 复用的主要形式一软
件构件技术 的概念与 构架做 出了简要概述 , 指 出了在当前 的软件 开发过程 中, 有效 使用软件复用 技术能够很好 的提 高软件的开发效率 , 促 使软件产业 更
加快速 的发展 。 关键词 : 软件复用 软件 构件 软件 构架 技术方法
自第三次产业革命 以来 , 计算机技术就得到 了迅速而广泛的应 用, 极大 了促进 了社会的生产力 , 提高 了工作中的计算效率与应用能力。与此 同时, 支撑其快速发展的软件技术也在不断的更新与发展 ,从而增大和完善 了计
造成一定影响 。
Байду номын сангаас

《软件工程》教学课件11软件复用和构件技术

《软件工程》教学课件11软件复用和构件技术
2005.01.10 SOFTWARE ENGINEERING
基于构件的开发
基于构件的开发是指使用可复用构件组 装开发新的应用系统. 装开发新的应用系统. 基于构件的开发由构件的鉴定, 基于构件的开发由构件的鉴定,构件的 调整和构件的组装组成. 调整和构件的组装组成.
2005.01.10
SOFTWARE ENGINEERING
基于构件的开发
构件的鉴定: 构件的鉴定:对打算用于软件开发的构件能 否满足应用的需要, 否满足应用的需要,能否达到应用所需要的 性能,可靠性, 性能,可靠性,质量的要求而进行的相应考 察和鉴别工作. 察和鉴别工作. 构件的调整:根据构件使用的环境, 构件的调整:根据构件使用的环境,对构件 进行必要的调整和修改以满足软件, 进行必要的调整和修改以满足软件,硬件环 境和具体应用的需要. 境和具体应用的需要. 构件的组装: 构件的组装:将经过鉴定和调整的构件集成 到应用系统中去. 到应用系统中去.
2005.01.10 SOFTWARE ENGINEERING
软件复用
把复用的思想用于软件开发,称为软件 把复用的思想用于软件开发, 复用. 复用. 据统计,世上已有1000亿多行程序,无 据统计,世上已有1000亿多行程序, 1000亿多行程序 数功能被重写了成千上万次, 数功能被重写了成千上万次,真是极大 的浪费. 的浪费. 面向对象( Oriented) 面向对象(Object Oriented)学者的 口头禅就是" 口头禅就是"请不要再发明相同的车轮 子了" 子了" .
2005.01.10 SOFTWARE ENGINEERING
软件构件技术的技术规范
工业界中最具有代表性,使用最为广泛 工业界中最具有代表性, 的构件技术规范主要有三种: 的构件技术规范主要有三种: 微软公司的构件对象模型(DNA) 微软公司的构件对象模型(DNA) 对象管理组织(OMG)的公共对象请 对象管理组织(OMG) 求代理体系结构(CORBA) 求代理体系结构(CORBA) SUN公司的EJB(Enterprise Java SUN公司的EJB( 公司的EJB Bean) Bean)

软件复用与软件构件技术.pptx

软件复用与软件构件技术.pptx

快速开发 用户产品
体系结构 式的复用
特定领域 复用驱动 组织结构
软件复用与软件构件技术的挑战性问题
软件复用方法与实践中的挑战
• 如何精确度量和评价软件复用的成本、效果和效益 • 如何实现大粒度(需求、高层设计等)的软件复用 • 如何通过方法、技术和工具支持软件开发知识(设计
知识、技术经验等)的复用 • 如何弥合软件资源复用中消费者与生产者之间认知
• 软件构件 – 软件资源的基础单元,企业的基本资源/资产表现形式 – 软件产业资源共享和复用的核心
的业界实践
• 在产业中已得到广泛应用
• 中间件技术的支持
• –领域提平供台了的领研域发的企业服务体系结构 ()
• –复用提的供应了用一(组超支过持5应0%用的的企构业件有意识地 – 提供了领域的构件管理平台( 引入)和复构用件过组程装)工具( )
5软件复用与软件构件技术
内容摘要
• 软件复用及软件构件 • 基于构件的软件开发 • 构件组装技术 • 软件构件模型 • 软件构件库
内容摘要
• 软件复用及软件构件 • 基于构件的软件开发 • 构件组装技术 • 软件构件模型 • 软件构件库
软件复用
• 软件复用:利用已有软件的各种有关知识 来建立新的软件(白盒、黑盒) – 复用对象:领域知识、开发经验、设计经验、设计决定、
会员管理
构件推荐
策 法



描 述
构件平台


/

预登记(分类)形式认定
构件封装(产品化)
库管理系统(构件增 、删、改、取)
构件浏览和检 索系统
运行规则/
运行服务信息
构件技术资源
术 标

软件体系结构---软件复用与构件技术

软件体系结构---软件复用与构件技术

Part 1:软件构件 P1-1、软件构件的概念
构件的理解

对象
实现 定义了对象怎样工作,同一 类对象共享同一个实现
标识 每个对象都有一个 唯一标记,通过它 来访问这个对象
实现
实现
对象 封装了数据和 操作的实体
对象
接口 定义了对象的功能, 很多对象可以共享同 一个接口,一个对象 可以提供很多接口
对象 接口 接口
对象
可替换性 对象的使用者只关心接口,不关心实现, 客户代码可以和具有相同接口而具有不同 实现的对象一起工作
Part 1:软件构件 P1-1、软件构件的概念
构件的理解(续)
实现 对象 对象 对象 接口 接口 构件 构 件接口 构件环境 接口
构件和对象
实现
构件可认为 是包装对象 实现的简便 方法,可以 使它们组装 成更大的软 件系统。
Part 1:软件构件 P1-1、软件构件的概念
构件接口(续)

接口是构件之间进行交互作用的通道
是与外界交流的唯一的途径 它代表构件在不同环境下的交互内容和与外界传递 的信息 它定义了构件承担的系统责任 环境不应对构件作任何与接口无关的假设,如实现 细节等


构件接口可分为两类:
构件供外部使用的接口即功能规约(function specification) 构件用到的外部接口即接入点(entry point)
构件
构件 构件 没有中介层
构件
构件 构件
构件
构件 构件 有中介层
构件
构件 构件
0-5:软件复用的原则

在一个整体的概念和框架下,而不是在随意的方式下 定义一个构件,以便增大复用的机会 构件设计的上下文无关:构件在新的环境中被使用时,无须将

第10章 软件复用技术(10.3-10.6)

第10章   软件复用技术(10.3-10.6)
10.3 组件技术概述
我们能如此开 发软件吗?
10.3.1 组件的定义与复用


组件(Component),亦称构件,是指语义完 整、语法正确和有可重用价值的单位软件,它 是语义描述、通信接口和实现代码的复合体。 简单地说,组件是具有一定的功能,能够独立 工作或能同其它组件装配起来协调工作的程序 体,其使用同它的开发、生产无关。 组件可分为源代码组件和二进制代码组件。
10.5.1 COM标准
目的是提高软件的 交互协同工作能力,而不受开发语言和方法、运行环 境和地点的限制。 在Windows系统平台上,一个COM组件或是一个DLL 文件,或是一个EXE文件。 一个组件程序可以包含多个COM对象,每个COM对象 可以实现多个接口。
10.4.3 基于CORBA的软件开发
①编写OMG定义的IDL接口规范说明文件,描述服务对象所支持的 操作和类型; ②编译IDL规格说明文件,生成客户端存根和服务器端骨架; ③编写对象实现程序; ④编写服务器和客户主程序结构; ⑤将对象实现程序,服务主程序和生成的服务器骨架编译连接成 服务端可执行程序; ⑥将客户端主程序和生成的客户端存根编译连接成客户端可执行 程序,且若服务器端是基于 Web和浏览器方式的,则相应地编 写HTML超文本文件,链入编写的客户方Java Applet小程序; ⑦分别运行服务器端和客户端程序。
OMA(层次结构)
Objects Objects Objects Objects
Domain Objects Facilities
Services ORB OS
10.4.1 CORBA的组成
客户程序(Client) 对象实现(Server)
动态调用接口
静态IDL 存根

软件复用与软件构件技术

软件复用与软件构件技术

软件复用与软件构件技术X杨芙清梅宏李克勤(北京大学计算机科学技术系,北京100871=提要>软件复用是在软件开发中避免重复劳动的解决方案.通过软件复用,可以提高软件开发的效率和质量.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径.它通常可分为产品复用和过程复用两条途径.基于构件的复用是产品复用的主要形式,也是当前复用研究的焦点.同时,在分布对象研究领域,软件构件技术也是一个重要内容.当前软件构件技术被视为实现成功复用的关键因素之一.软件复用技术的广泛应用将促进软件产业的变革,使其重组分工,软件构件生产必将成为独立的行业而存在.这种变革对我国软件产业的发展将是一个很好的机遇.本文将对软件复用技术的发展作一全面综述,介绍软件复用的基本概念及关键技术,同时介绍国内外在软件复用方面的成功的研究和实践活动,包括我国政府支持的国家重点科技攻关项目青鸟工程,并对我国如何加强相关技术研究和应用,推动软件产业发展提出一些思路.关键词:软件工程,软件复用,软件构件技术,计算机辅助软件工程(CASESoftware Reuse and Software Compon ent Techn ologyYang Fuqing,M ei Hong,Li Keqin(Dept.of Computer Science&T echnology,Peking U niversity,Beijing100871Abstract:Software reuse offers a solution to eliminate r epeated work and improve efficiency and quality in the software development.In the recent ten years,object-oriented technology has appeared and become a mainstream technolog y,thereby providing fundamental technology suppor t for software reuse.Software r euse regains more attention in softw ar e engineer ing research and is consider ed a pratical and feasibleapproach to solving the software crisis.Software reuse i s gener ally classified into tw o catalogues:pro duct reuse and process r euse.Reuse based on software components is the important form o f product reuse and i s the major area of software reuse resear ch.A t the same time,softw are component technology plays an important role in distr ibuted object research.T herefore,software component technology is regarded as a key factor of successful software reuse.T he development and application of software r euse technology w ill facilitate the revolution of software development and reor ganize softw are industry.As a result,the dev elopment o f software components w ill become an independent and insepar able industr y.T he r evo lution offers a good chance for Chinese software development.T his paper i s a summarizat ion on the develop-ment of software reuse technology.It presents fundamental concepts and key techniques of software r euse.After introducing sev eral successful resear ch and pr actice in software reuse,including Jade Bird Project,a Chinese national key project suppor ted by the go ver nment,it proposes some ideas on how to reinforce research and application of related techniques and facilitate t he development of software industry in China.Key words:Softw ar e Engineering,Softw ar e Reuse,Softw ar e Component T echnology,CASE一、引言11为什么要复用通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、测试、维护等.当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复、需求分析和设计的重复、编码的重复、测试的重复和文档工作的重复等.探讨应用系统的本质,可以发现其中通常包含三类成分:¹通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中;º领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;»应用专用构件:是每个应用系统的特有构成成分.应用系统开发中的重复劳动主要在于前两类构成成分的重复开发.第2期1999年2月电子学报ACT A ELECTRONICA SINICAVol.27No.2Feb.1999X1998年6月收到,1998年10月修改定稿.国家/九五0科技攻关项目及863高技术计划资助课题软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切/从零开始0的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分.通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量.21复用的基本概念软件复用是指重复使用/为了复用目的而设计的软件0的过程[22].相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用/并非为了复用目的而设计的软件0的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用.以下的类比有助于进一步说明软件复用的概念.在软件演化的过程中,重复使用的行为可能发生在三个维上:(1时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护.(2平台维:以某平台上的软件为基础,修改其和运行平台相关的部分,使其运行于新平台,即软件移植.(3应用维:将某软件(或其中构件用于其他应用系统中,新系统具有不同功能和用途,即真正的软件复用.这三种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应用维的演化,使用/为复用而开发的软件(构件0来更快、更好地开发新的应用系统.复用概念的第一次引入是在1968年N AT O 软件工程会议上,M cIlroy 的论文/大量生产的软件构件0中.在此以前,子程序的概念也体现了复用的思想.但其目的是为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源.然而子程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程时使用.例如,数学程序库就是非常成功的子程序复用的例子.在其后的发展过程中,有许多复用技术的研究成果和成功的复用实践活动.但是,复用技术在整体上对软件产业的影响却并不尽如人意.这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径[12].分析传统产业的发展,其基本模式均是符合标准的零部件(构件生产以及基于标准构件的产品生产(组装,其中,构件是核心和基础,/复用0是必需的手段.实践表明,这种模式是产业工程化、工业化的必由之路.标准零部件生产业的独立存在和发展是产业形成规模经济的前提.机械、建筑等传统行业以及年轻的计算机硬件产业的成功发展均是基于这种模式并充分证明了这种模式的可行性和正确性.这种模式是软件产业发展的良好借鉴,软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因.软件复用可以从多个角度进行考察[18].依据复用的对象,可以将软件复用分为产品复用和过程复用.产品复用指复用已有的软件构件,通过构件集成(组装得到新系统.过程复用指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统.过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊的应用领域.产品复用是目前现实的、主流的途径.依据对可复用信息进行复用的方式,可以将软件复用区分为黑盒(Black -box 复用和白盒(White -box 复用.黑盒复用指对已有构件不需作任何修改,直接进行复用.这是理想的复用方式.白盒复用指已有构件并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用.而在大多数应用的组装过程中,构件的适应性修改是必需的.31如何实现复用软件复用有三个基本问题,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象.软件复用包括两个相关过程:可复用软件(构件的开发(Development for Reuse和基于可复用软件(构件的应用系统构造(集成和组装(Dev elo pment with Reuse.解决好这几个方面的问题才能实现真正成功的软件复用.与以上几个方面的问题相联系,实现软件复用的关键因素(技术和非技术因素主要包括:软件构件技术(Software Component T echnolo gy、领域工程(Do main Eng ineering、软件构架(Software Architecture、软件再工程(Softw are Reeng-i neering、开放系统(Open System、软件过程(Software Pro -cess、CASE 技术等以及各种非技术因素.二、实现软件复用的关键因素实现软件复用的各种技术因素和非技术因素是互相联系的.如图1所示,它们结合在一起,共同影响软件复用的实现.图1 实现软件复用的关键因素11软件构件技术构件(Component是指应用系统中可以明确辨识的构成69第 2 期杨芙清:软件复用与软件构件技术成分.而可复用构件(Reusable Component 是指具有相对独立的功能和可复用价值的构件.可复用构件应具备以下属性[22]:¹有用性(U sefulness:构件必须提供有用的功能;º可用性(U sability :构件必须易于理解和使用;»质量(Quality:构件及其变形必须能正确工作;¼适应性(A daptability:构件应该易于通过参数化等方式在不同语境中进行配置;½可移植性(Por tabilit y:构件应能在不同的硬件运行平台和软件环境中工作.随着对软件复用理解的深入,构件的概念已不再局限于源代码构件,而是延伸到需求、系统和软件的需求规则约、系统和软件的构架、文档、测试计划、测试案例和数据以及其他对开发活动有用的信息.这些信息都可以称为可复用软件构件.软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支.其主要研究内容包括:(1构件获取:有目的的构件生产和从已有系统中挖掘提取构件;(2构件模型:研究构件的本质特征及构件间的关系;(3构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题;(4构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系统,支持构件的有效管理;(5构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装;(6标准化:构件模型的标准化和构件库系统的标准化.21软件构架软件构架是对系统整体结构设计的刻划,包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等[9].研究软件构架对于进行高效的软件工程具有非常重要的意义:通过对软件构架的研究,有利于发现不同系统在较高级别上的共同特性;获得正确的构架对于进行正确的系统设计非常关键;对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不同的软件构架之间作出选择;从构架的层次上表示系统,有利于系统较高级别性质的描述和分析.特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义.软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联.其中主要包括:软件构架原理和风格,软件构架的描述和规约,特定领域软件构架,构件向软件构架的集成机制等.31领域工程领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动[22].领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域.领域工程包括三个主要的阶段.(1领域分析:这个阶段的主要目标是获得领域模型(Do -main M odel.领域模型描述领域中系统之间的共同的需求[17].这个阶段的主要活动包括确定领域边界,识别信息源,分析领域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,哪些是可变的,从而建立领域模型.(2领域设计:这个阶段的目标是获得领域构架(Domain -Specific Software Architecture,缩写为DSSA .DSSA 描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计[17].建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA.由于领域模型中的领域需求具有一定的变化性,DSSA 也要相应地具有变化性.(3领域实现:这个阶段的主要行为是定义将需求翻译到由可复用构件创建的系统的机制.根据所采用的复用策略和领域的成熟和稳定程度,这种机制可能是一组与领域模型和DSSA 相联系的可复用构件,也可能是应用系统的生成器.这些活动的产品(可复用的软件构件包括:领域模型、领域构架、领域特定的语言、代码生成器和代码构件等.在领域工程的实施过程中,可能涉及的人员包括[5]:(1最终用户:使用某领域中具体系统的人员;(2领域专家:提供关于领域中系统信息的人员,他应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向;(3领域分析员:收集领域信息、完成领域分析并提炼出领域产品(可复用软件构件的人员,他应该具有完备的关于复用的知识,并对分析的领域有一定程度的了解.(4领域分析产品(构件、构架的使用者:包括最终用户、应用系统的需求分析员和软件设计者.领域工程的主要产品和人员如图2所示.图2 领域工程41软件再工程软件复用中的一些问题与现有系统密切相关,如:现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?现存大量的遗产软件系统(Legacy Software由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命70 电子学报1999年期,充分利用这些可复用构件?等等.软件再工程(Software R eengineering正是解决这些问题的主要技术手段.软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式[7].再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解.但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解.再工程的主要行为如图3所示.图3 软件再工程51开放系统技术开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现.这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统间的互操作提供了保证.开放系统技术具有在保持(甚至是提高系统效率的前提下降低开发成本、缩短开发周期的可能.对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步[8].当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术.开放系统技术为软件复用提供了良好的支持.特别是分布对象技术使得符合接口标准的构件可以方便地以/即插即用0的方式组装到系统中,实现黑盒复用.这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业.61软件过程软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合.一个良好定义的软件过程对软件开发的质量和效率有着重要影响.当前,软件过程研究以及企业的软件过程改善已成为软件工程界的热点,并已出现了一些实用的过程模型标准,如CM M 、ISO 9001/T ickIT 等.然而,基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同,探讨适应于软件复用的软件过程自然就成为一个迫切的问题.71C ASE 技术随着软件工程思想的日益深入人心,以计算机辅助开发软件为目标的CASE(Computer Aided Software Engineer ing 技术越来越为众多的软件开发人员所接受,CA SE 工具和CASE 环境得到越来越广泛的应用.CASE 技术对软件工程的很多方面,例如分析、设计、代码生成、测试、版本控制和配置管理、再工程、软件过程、项目管理等等,都可以提供有力的自动或半自动支持.CA SE 技术的应用,可以帮助软件开发人员控制软件开发中的复杂性,有利于提高软件开发的效率和质量.软件复用同样需要CASE 技术的支持.CA SE 技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等.81非技术因素除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题等等.这些因素超出了本文的范围,这里不再详细讨论.三、复用的研究与实践活动11领域工程研究实践表明,软件复用在特定领域内更容易获得成功.因此,领域工程受到高度重视,已有许多研究成果.这里将介绍三个有代表性的工作.卡内基#梅隆大学的软件工程研究所(CM U /SEI提出了面向特征的领域分析方法(F eature -O riented Domain AnalysisM ethod,缩写为FODA 方法[8].它支持对某领域中系统共性和个性的发现、分析和文档记录.FODA 的过程分为三个阶段:上下文分析(Context A nalysis、领域建模(Domain M ode-l ing、构架建模(A rchitecture M odeling.(1上下文分析:上下文分析的目标是定义领域的范围.在这个阶段要分析领域与外部元素间的关系,例如不同的操作环境,不同的数据需求等,还要对可变性进行评价.上下文分析的结果是上下文模型.(2领域建模:领域的范围确定后,领域建模阶段提供了一些步骤来分析领域中的应用的共同性和差异,并产生领域模型.领域建模阶段主要包含三种行为:#特征分析(F eature Analysis.在特征分析阶段,要获得客户或最终用户对一类系统的一般能力的理解,即特征.特征描述了领域应用的上下文、需要的操作和属性、以及表示的变化.#信息分析(I nformation A nalysis.在信息分析中,要定义和分析为实现领域中应用所需的领域知识和数据需求.信息分析的目标是用领域实体及其相互之间的关系表示领域知识,并使它们在操作分析和构架建模中可以用来派生对象和数据定义.#操作分析(Oper ational A nalysis.在操作分析中,要识别领域中应用的行为特性,例如数据流和控制流的共同性和差异、有限状态自动机模型等.(3构架建模:这个阶段为领域中的应用提供软件解决方案.在这个阶段中开发出构架模型,即领域中应用的高层设计.这个阶段的焦点是识别并发进程和面向领域的共同模块.这个阶段中定义进程,并将定义在领域模型中的特征、功能和数据对象分配到进程和模块中.F ODA 方法已成功地应用于美国空军运动控制等领域.71第 2 期杨芙清:软件复用与软件构件技术在美国国防部高级研究项目署(AR PA 资助下,W ill T racz 提出了领域构架方法(Domain -Specific Software Arch-itecture,缩写为(DSSA 方法[22].在最高的级别上,该方法有五个阶段.每个阶段可以进一步划分为一些步骤或子阶段.每个阶段包括一组需要回答的问题,一组需要的输入、一组将产生的输出和验证标准.该方法的领域工程过程是并发的(con -curr ent、递归的(recursive和反复的(iterativ e.或者可以说,它是螺旋型的(spiral.完成该过程可能需要对每个阶段经历几遍,每次增加更多的细节.该领域工程过程的五个阶段是:(1定义领域范围:重点是确定领域中包含哪些元素以及领域工程过程到何时结束.这个阶段的一个主要输出是领域中的应用需要满足的一系列用户的需求;(2定义领域特定的元素:目标是制订领域字典和领域术语的同义词词典.在领域工程过程的前一个阶段产生的高层次块图中增加更多的细节,特别是识别领域中应用间的共同性和差异性;(3定义领域特定的设计和实现需求约束:目标是描述解空间中的特性.不仅要识别约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论;(4定义领域模型和构架:目标是产生DSSA,并说明构成它的模块或构件的语法和语义;(5产生、搜集可复用产品:目标是为DSSA 增加构件使得它可以被用来产生问题域中的新应用.ST AR S 领域分析过程(Domain A nalysis Process分四个阶段,每个阶段用结构化分析与设计技术描述,使用SADT 图[22]:(1准备领域信息:定义领域,按自顶向下方式完成高级功能分析;(2分类领域实体:按自底向上方式识别和描述对象及操作,并构造领域字典;(3导出领域模型:结合上述信息,构造基于可复用构件的类属功能模型;(4扩展模型并分类:应用并确认模型.21产品线系统产品线系统(Product L ine System是CM U /SEI 提出的产品开发的组织方式.产品线集中体现了软件复用思想.经验表明,单靠技术方法并不能保证成功的产品线生产能力,经济、组织、管理和过程在建立和维护产品线中起到了关键作用.一个产品线是共享一组共同设计及标准的产品族,从市场角度看是在某市场片断中的一组相似的产品.建立产品线是根据生产的经济学,使产品族可复用构件能达到最大限度的复用目的.产品线方法可以通过各种可复用软件构件,如需求、需求规约、构架、代码构件、文档、测试策略和计划、测试案例和数据、开发人员的知识和技能、过程、方法及工具等,支持最大限度的软件复用.产品线也是基于在相同产品价格条件下提高竞争力的商业考虑.产品线系统已有成功的应用实例.图4和图5分别是瑞典CelsiusT ech System 公司和美国空军电子系统中心(ESC的产品线系统[3、6].这两个产品线系统的共同特点是构架组、构件组和集成组的分离.构架组负责产品线系统构架的定义和演化.构件组负责根据产品线系统构架,生产和管理可复用构件.集成组则根据具体客户的需求,利用产品线系统构架和可复用构件进行具体的系统集成。

软件复用和构件技术

软件复用和构件技术
呈面可以描述构件执行的功能所操作的数据构件应用的周境或仸何其它特征一个构件系统是提供一组可复用特性的系统产品这些特性由相互依赖和相互连接的众多构件来体现构件系统比应用系统更具有通用性构件系统面向开发人员应用系统面向客户构件系统的生产成本高于应用系统构件系统用于实现应用系统也可用于实现其它的构件系统构件是语义完整语法正确有可重用复用价值的独立的可交付的对一系列软件操作的包装这种包装可用来构造应用程序或更大的构件构件提供了对一个或多个对象实现的包装担当一个部署单元的作用基于构件的软件开发cbsdcomponentbasedsoftwaredevelopmentcbsd指在软件系统开发中使用己有软件构件的方法和技术cbsd是由领域工程和软件工程组成的domainengineering和softwareengineeringcbsd的一种过程模型领域分析软件结构开发可复用构件开发领域模型结构模型可复用构件库分析结构设计构件选用构件调整构件组合构件工程测试构件更新应用软件领域工程构件的开发计划风险分析用户通信产品开发与发布用户评估将新构件存入库中候选构件在构件库中查找构件进行下一次迭代构造构件是否存在构件
实现复用的关键因素
应用系统 领域 遗产软件 系统
领域工程
软件再工程 软件构架技术 开放系统技术
软 件 过 程
构件、构架 获取
构件标准 化与描述
构件分类、 存储与检索
构件组装
软件构件技术 CASE技术
非 技 术 因 素
复用相关技术-软件构件技术 复用相关技术 软件构件技术
软件构件技术主要研究内容包括 构件获取:有目的的构件生产和从已有系统中挖掘提取构件 构件模型:研究构件的本质特征及构件间的关系 构件描述语言:以构件模型为基础,解决构件的精确描述、 理解及组装问题 构件分类与检索:研究构件分类策略、组织模式及检索策略, 建立构件库系统,支持构件的有效管理 构件组装:在构件模型基础上研究构件组装机制,包括源代 码级的组装和基于构件对象互操作性的运行级组装 标准化:构件模型的标准化和构件库系统的标准化LINUXW Nhomakorabeandows
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10.2.3分类和检索软件构件 10.2.3分类和检索软件构件
1.描述可重用的构件
10.2.3分类和检索软件构件 10.2.3分类和检索软件构件
2.重用环境
软件构件重用必须由相应的环境来支持,环境应包含下述元 素: 构件库,用于存储软件构件和检索构件所需要的分类信息。 库管理系统,用于管理对构件库的访问。 软件构件检索系统(例如,对象请求代理),通过它客户应 用系统可以从库服务器中检索构件和服务。 CASE工具,帮助把重用的构件集成到新设计或实现中。
10.2基于构件的软件开发 10.2基于构件的软件开发
10.2.1开发可复用的软件构件 10.2.1开发可复用的软件构件 10.2.2 软件构件的组织 10.2.3分类和检索软件构件 10.2.3分类和检索软件构件
10.2.1开发可复用的软件构件 10.2.1开发可复用的软件构件
当开发一个新软件时,应该对描述需求的分析模型进行分析, 当开发一个新软件时,应该对描述需求的分析模型进行分析, 以发现模型中那些指向现有的可重用的软件成分的元素。 以发现模型中那些指向现有的可重用的软件成分的元素。为 应该使用能够导致“规格说明匹配” 此,应该使用能够导致“规格说明匹配”的方式从需求模型 中抽取信息。 中抽取信息。 为了重用的设计同样要求软件工程师应用已有的设计概念 和原理,但是,也必须考虑应用领域的特征, 和原理,但是,也必须考虑应用领域的特征,特别是应该考 虑下述的一系列关键问题。 虑下述的一系列关键问题。 (1)标准数据。 (2)标准接口协议。 (3)程序模板。
10.3 面向对象的软件重用技术
面向对象技术中的“类”是较理想的可复用构件,称之为类 构件;将面向对象的可复用构件库称为可复用类库(简称类 库)。 1.类构件 (1)实例复用 由于类的封装性,使用者无需俩届实现细节,就可以使 用适当的构造函数按照需要创建类的实例。再向创建的实例 发送适当的消息,启动相应的服务。这是最基本的实例复用 方式。 此外还可以用几个简单的对象作为类的成员,创建出一个更 复杂的类,这是另一种实例复用的方式。
10.3 面向对象的软件重用技术
(2)继承复用 面向对象方法特有的继承性提供了一种对已有的类构件 进行裁剪的机制。当已有的类构件不能通过实例复用完全满 足当前系统需求时,继承复用提供了一种安全地修改已有类 构件的手段,以便在当前系统中复用。 (3)多态复用 利用多态性不仅可以使对象的对外接口更加一般化(基类 与派出类的许多对外接口是相同的),从而降低了消息连接的 复杂程度,而且还提供了一种简便可靠的构件组合机制。
10.2.2 软件构件的组织
对收集和开发的软件构件进行分类, 对收集和开发的软件构件进行分类,并放入可服用构件库的 适当位置。可服用构件库组织应当便于存储和检索, 适当位置。可服用构件库组织应当便于存储和检索,要求如 下: (1)支持构件库的各种维护操作。增、删、更新构件库的操 作应当不影响构件库的结构。 (2)不仅能支持精确匹配,还应支持相似构件的查询。 (3)不仅能进行简单的语法匹配,而且能查找在功能、行为 上等价或相似的构件。 (4)对应用领域(族)有较强的描述能力和较好的描述精确 度。 (5)便于构件库管理员和用户的使用。 (6)具备自动化的潜力。
10.2.2 软件构件的组织
可复用构件库的组织方法有枚举分类法、关键词分类法、 可复用构件库的组织方法有枚举分类法、关键词分类法、多 面分类法、超文本组织法、模型法等。 面分类法、超文本组织法、模型法等。 超文本是一种非线性的网状信息组织方法,以结点作为基本 单位,链作为结点之间的联想式关联。 超文本组织法与基于全文检索技术,其基本思想是:所有构 件都必须辅以详细的功能或行为说明文档,说明中出现的概 念和构件以网状链接方式相互连接。检索者在阅读文档的过 程中可按照联想思维方式任意跳转到包含相关概念或软件构 件的文档中去。全文检索系统将用户给出的关键词与说明文 档中的文字进行匹配,实现软件构件的浏览式检索。
10.2.1开发可复用的软件构件 10.2.1开发可复用的软件构件
当重用在应用系统开发中占据主导地位时, 当重用在应用系统开发中占据主导地位时,就把这样的开发 方法称为基于构件的开发或构件软件。 方法称为基于构件的开发或构件软件。领域工程为基于构件 的开发提供了所需要的可重用构件库, 的开发提供了所需要的可重用构件库,这些可重用的构件中 的一部分是内部开发的, 的一部分是内部开发的,另一部分是从现有的应用系统中抽 取出来的,还有一部分是从第三方获取的。 取出来的,还有一部分是从第三方获取的。 为了实现基于构件的开发,应该使用下述4 为了实现基于构件的开发,应该使用下述4个“体系结构要 素”。 (1)数据交换模型 (2)自动化。 (3)结构化存储。 (4)底层对象模型。
10.1.1 软件复用的定义
(2)成本估计:由于不同的项目中经常含有类似的功能, (2)成本估计:由于不同的项目中经常含有类似的功能,所 成本估计 以有可能在极少修改或不修改的情况下,复用对该功能的成 以有可能在极少修改或不修改的情况下, 本估计。 本估计。 (3)体系结构:某些应用软件的体系结构往往非常相似, (3)体系结构:某些应用软件的体系结构往往非常相似,因此 体系结构 有可能创建一组公共的体系结构模板( 有可能创建一组公共的体系结构模板(如,事务处理体系结 ),并将那些模板作为可复用的设计框架 并将那些模板作为可复用的设计框架。 构),并将那些模板作为可复用的设计框架。 (4)需求模型和规约:类和对象模型及其规约是明显的复用候 选者,此外,用传统软件工程方法开发的分析模型(如数据 流图)也是可复用的。
10.1.1 软件复用的定义
(5)设计:用传统方法开发的体系结构、数据、 (5)设计:用传统方法开发的体系结构、数据、接口和过程 设计 化设计都是复用的候选者,系统设计和对象设计也是可复用 化设计都是复用的候选者, 的。 (6)源代码:经验证的程序代码是复用的候选者。 (6)源代码:经验证的程序代码是复用的候选者。 源代码 (7)用户文档和技术文档:即使特定的应用有所不同,但经 常可复用部分用户文档和技术文档。 (8)用户界面:这是最广泛被复用的软件制品,如图形用户 界面(GUI)软件经常被复用。由于用户界面部分约占一个应 用软件的60%的代码量,因此其复用效主极高。
10.2.1开发可复用的软件构件 10.2.1开发可复用的软件构件
(3)COM COM标准具有下述特点。 · 构件间的互操作基于指针,依赖于操作系统的API。 · 对Windows的依赖性强,对其他操作系统的支持相对不足。 · 构件运行环境的提供者仅限于Microsoft公司,但支持COM标 准的开发工具比较多(例如,VC++、VB等)。 对象连接与嵌入(OLE)是COM的一部分,其定义了可重用构 件的标准结构。OLE已经成象语言,因此JavaBean标准比较简洁 、完备。JavaBean具有下述特点。 · 构件模型比较完备。 · 仅支持Java语言。 · 构件运行环境主要由Sun公司提供,其他厂商也可提供运行环 境具较多(例如,Visual Cafe,Visual Age for Java等)。
软件复用( 软件复用(software reuse)是指通过对已有软件的各种 reuse) 有关知识来建立新的软件,这些知识包括:领域知识、 有关知识来建立新的软件,这些知识包括:领域知识、开发 经验、设计经验、设计决定、体系结构、需求、设计、编码、 经验、设计经验、设计决定、体系结构、需求、设计、编码、 测试和文档等。 测试和文档等。软件复用的目的是降低软件开发和维护的成 提高软件开发效率,提高软件的质量。 本,提高软件开发效率,提高软件的质量。 Caper Jones定义了可作为复用候选的10种软件制品: Jones定义了可作为复用候选的10种软件制品 定义了可作为复用候选的10种软件制品: (1)项目计划:软件项目计划的基本结构和许多内容( (1)项目计划:软件项目计划的基本结构和许多内容(如进度 项目计划 风险分析)都可以跨项目复用, 表、风险分析)都可以跨项目复用,以减少用于制定计划的 时间。 时间。
第10章 软件复用与 10章 构件技术
内容介绍
10.1 软件复用 10.2 基于构件的软件开发 10.3 面向对象的软件重用技术 10.4 小结
10.1软件复用 10.1软件复用
10.1.1 软件复用的定义 10.1.3软件复用的过程
10.1.1 软件复用的定义
10.2.1开发可复用的软件构件 10.2.1开发可复用的软件构件
主要的公司和产业联盟已经提出了构件软件的一些标准。 主要的公司和产业联盟已经提出了构件软件的一些标准。 (1)OpenDoc 该标准定义了为使一个开发者提供的构件能够和另一个开发者 提供的构件互操作,而必须实现的服务、控制基础设施和体系 结构。 (2)OMG/CORBA 一个对象请求代理(ORB)提供了一系列服务,这些服务使得 可重用的构件(对象)能够与其他构件通信,而不管它们在系 统中位于何处。
10.2.3分类和检索软件构件 10.2.3分类和检索软件构件
1.描述可重用的构件
可以用很多种方式描述可重用的软件构件,但是一种理想的描 述方式是Tracz提出的3C模型——概念(concept)、内容( content)和语境(context)。 软件构件的“概念”是对构件做什么的描述,应该完整地描述 构件的接口,并在前置条件和后置条件的语境中标识构件的语 义。 构件的“内容”描述实现概念的方法。 “语境”把可重用的软件构件置于其应用领域中,也就是说, 通过指定概念的、操作的和实现的特征,语境使得软件工程师 能够找到适当的构件以满足应用需求。
10.1.3软件复用的过程 10.1.3软件复用的过程
软件复用的一般过程如下: 软件复用的一般过程如下: (1)抽象:即对已有软件制品的简要描述, (1)抽象:即对已有软件制品的简要描述,从中抽取该制品的 抽象 本质信息(即可复用部分),摒弃那些细节; 本质信息(即可复用部分),摒弃那些细节; ),摒弃那些细节 (2)选取 即用户根据已有软件制品的抽象,寻找、 选取: (2)选取:即用户根据已有软件制品的抽象,寻找、比较和选 择最适合他需要的那个制品(可复用件); 择最适合他需要的那个制品(可复用件); (3)特化 即对已有制品(可复用件) 特化: (3)特化:即对已有制品(可复用件)的修改或形成它的一个 实例(例化后的复用件); 实例(例化后的复用件); (4)集成 将例化后的复用件集成为应用系统。 集成: (4)集成:将例化后的复用件集成为应用系统。
相关文档
最新文档