软件复用
软件复用
浙江大学计算机系软件所
吴明晖
Email: minghuiwu@
1
软件复用
• 人们开始认识到,要真正实现软件的工业化生 产方式,保证软件生产的高效率和高质量,软 件复用是一条现实可行的途径 • 软件复用的概念是在1968年NATO软件工程会 议上由Mcllroy第一次提出的 • 所谓软件复用是指在开发新的应用系统时使用 以前开发的软件资源,如设计、代码、文档 等,从而提高系统开发效率及软件质量
17
复用带来了软件开发过程的变革
• 由于复用活动的存在使得传统的软件生 存期模型不再适用,软件开发过程分为 两个相互关联的过程,即开发可复用资 源的过程和根据可复用资源开发应用系 统的过程,REBOOT计划中将其称为 DEVELOPING FOR REUSE 和 DEVELOPING WITH REUSE
7
过程复用
• 过程复用指通过采用自动化技术,复用关于软 件系统生成或变换的知识,从而使得可以从需 求描述出发,通过生成或变换,自动生成最终 所需的系统,应用生成器、程序变换器和可执 行规约语言均是过程复用的例子。 • 完全通用的过程复用意味着软件生产的自动 化,这在目前还是不现实的想法,因此过程复 用难度大、投资大、不易实施。 • 当前过程复用的实践大多和领域相关,如特定 领域的应用生成器。过程复用是非常理想的软 件复用方式,但在目前技术发展水平下,仍是 难以企及的目标,产品复用成为主要的研究课 题。
• 概念:关于“构件做什么”的抽象描述,可以通过概念 去理解构件的功能。概念包括接口规约和语义描述两 个部分,语义描述和每个操作相关联(至少表示为前 后置谓词形式)。 • 内容:概念的具体实现,描述构件如何完成概念所刻 划的功能。 • 语景:描述构件和外围环境在概念级和内容级的关系。 语景刻划构件的应用环境,为构件的选用和适应性修 改提供指导。语景进一步可分为:概念语景 (Conceptual Context)描述构件间接口和语义方面的 关系;操作语景(Operational Context)刻划构件中被 操作数据的特征(如类型和操作);实现语景 (Implementation Context)描述构件间在实现方面的依 赖关系。
18
青鸟III型系统的体系结构
19
规范
• 规范包括:
– – – – – – 青鸟可复用构件制作指南 青鸟领域工程方法指南 青鸟构件模型 青鸟构件描述语言 青鸟构件库概念模型 基于复用的软件开发过程
20
青鸟构件模型设计原则
1. 2. 3. 4. 5. 6. 7. 8. 表达能力足够强 简单性 支持构件的复合 模型和方法学关系的考虑 一致性和完备性 实用性考虑 扩展性考虑 对软件开发过程的考虑
25
模型和方法学关系的考虑
• 构件模型的确立和具体的软件方法学有 着密切关系,不同范型的方法学必然导 致不同的模型。 • 青鸟构件模型遵循OO范型,其构件结构 符合OO风范。如此考虑是因为OO技术 能对软件复用提供更有力的支持。对于 基于传统范型的构件,如模块类构件, 可考虑将其通过再工程封装成OO类构件。
28
扩展性考虑
• 模型的可扩展性是指在保持模型本身的一致性 和完备性的前提下,模型可以随着应用需求的 增长而演化。为此,在模型设计初期,能适应 扩展的设计考虑是必需的。 • 青鸟构件模型目前主要考虑工程实用性,进一 步的考虑是结合形式化规约技术,给出构件的 形式化功能规约,一方面可用于支持基于形式 化功能规约的构件分类和检索策略,通过规约 匹配查找所需的构件;另一方面支持更有效、 更自动地复用非代码类构件,通过形式规约变 换技术,实现产品复用和过程复用在一定程度 上的结合
23
简单性
• 简单性是各种模型必须予以考虑的重要 性质,简单意味着易于掌握和理解。简 单性和强的表达能力是一对矛盾,必须 合理权衡。 • 青鸟构件模型应在具有足够强的表达能 力的前提下尽可能简单,因为构件被很 好地复用的前提是必须能够被充分的理 解。
24
支持构件的复合
• 构件模型仅仅作为构件的抽象和描述是不够 的,必须能够描述构件间的关系及构件的复 合,这样才有实用的价值和完整性。 • 青鸟构件模型考虑了直接复用构件的复合问 题,在源代码级上提供了构件复合的机制。同 时,也支持目标码级构件的复合,当前的考虑 是将青鸟构件转换为符合某种规范的目标码构 件(如OLE构件),通过相应的构件互操作机 制来实现复合。
26
一致性和完备性
• 模型必须具有对内的一致性和对外的完 备性。 • 所谓一致性是指构件作为一个封装体必 须具有一致的对外接口、一致的组成结 构以及一致的交互方式。 • 完备性是指不存在模型所不能描述的构 件(在OO范型内)。
27
实用性考虑
• 实用性是青鸟构件模型所考虑的主要因 素之一。 • 从实用性角度来看,构件模型应易于理 解、支持复合、方便分类和检索。 • 青鸟构件模型应作为青鸟构件库概念模 型的核心。
• Caldieri和Basili提出了一种工厂化的软件 生产方式
12
青鸟工程简介
• 青鸟工程是国家重点支持的科技攻关课题,已 有十余年的发展历程。“七五”、“八五”期间, 青鸟工程面向我国软件产业基础 建设的需求, 以实用的软件工程技术为依托,研究开发具有 自主版权的软件工程环境,为软件产业提供基 础设施—软件工具、平台和环境,建立工业化 生产的基本手段,促进我国软件开发由手工作 坊式转向用计算机辅助开发,以提高软件开发 效率,改善软件产品质 量。大型软件开发环境 青鸟系统便是这一阶段攻关工作的成果。
• 青鸟构件模型从三个不同的、相互正交 的视角来看待构件,每个具体的构件都 是形态、层次和表示构成的三维空间中 的一个点。
31
构件的形态
• 构件呈现不同的形态(Form),形态的差异体 现在构件的结构组织方式和依赖的方法学范型 上。青鸟构件可分为如下几种形态:
– 类(Class):以类为单位进行封装而得到的构件, 这是最基本的构件单元 – 类树(Class Tree):以一个抽象类为根,若干继承 该抽象类的具体子类(也可能有抽象子类)为节点 的一棵类树。这样的一棵类树被封装为构件,对外 实现了具体子类的隐蔽,抽象根类提供了该类树的 对外接口规约,对具体子类的操作(删除或增加) 以及子类对象的创建均由抽象类控制,该类树的客 户无需知道类树结构和具体子类。
14
青鸟III型(JB3)系统
• 作为研究成果之一,青鸟工程开发了基于异构 平台、具有多信息 源接口的应用系统集成(组 装)环境青鸟III型(JB3)系统。青鸟III型系统研 制的目标是针对软件工业化生产的需求,完善 并初步实现青鸟 软件生产线的思想,制定软件 工业化生产标准和规范,研究基于“构件—构 架”模式的软件工业化生产技术,研制支持面 向对象技术,支持软件复用的,基于异构平台、 具有多信息源接口的应用系统集成(组 装)环境。 其最终目标是要构造如下图示意的软件生产线 系统。
3
面向对象技术对软件复用的支持优势
• 面向对象技术对软件复用的支持优势在 于:
– – – – OO模型比传统过程型模型更为稳定; OO分析更适合于领域工程; OO构件具有更好的封装性; OO方法学支持无缝的工程,可实现分析、 设计、编码的一致复用。
4
日常生活中的复用概念
• 在人们的日常生活中,复用概念的存在随处可 见。 • 传统工业如机械、建筑等行业中,标准规格的 零部件、设计模式等无不体现了复用的思想。 计算机产业虽然是年轻的产业,其成功同样是 由于实现了将标准的集成电路芯片、插件板、 主板、外设等直接组装的工业化生产方式。可 以说,符合标准的构件、基于标准构件的产品 生产(组装)是产业工程化、工业化的必由之 路,而其中构件是核心和基础,复用是必需的 手段。这种成功的模式是软件产业发展的良好 借鉴,有许多有益的启示
10
基于复用的软件开发方式
• 对照传统的成熟产业,我们可以发现, 专业性的分工是社会化、工业化生产的 基本前提,专业化的零部件生产和使用 零部件的整机生产是主要的生产方式。 • 我们有理由认为理想的软件生产方式是: 专业化的构件生产,基于构件复用的应 用系统集成(组装)。
11
一种工厂化的软件生产方式
21
表达能力足够强
• 模型是对客观对象的抽象,合适的抽象 层次是十分重要的,必须既能抓住本 质,又不陷入细节。从表达能力考虑, 青鸟构件模型首先必须遵循3C模型 • 3C模型由构件的三个不同方面的描述组 成,即概念(concept)、内容(content) 和语景(context)三个方面
22
3C模型
8
产品复用分类
• 产品复用可分为直接复用和间接复用两类 • 直接复用是指对那些可表示为某种程序设计语 言代码的构件的复用,这类构件的复用及其通 过一定机制的复合(组装)可直接产生可执行 的应用程序,这是我们开发软件的最终目标。 • 间接复用是指对需求规约、功能规约、设计思 想、测试计划等文档型知识的复用,这类非代 码构件的复用虽然不能直接得到最终可运行的 系统,但可以对系统开发的效率和质量带来极 大的好处,这类构件的复合(组装)缺乏形式 化和机械化的机制,通常只能有开发者在分析 理解后进行手工复合。
29
对软件开发过程的考虑
• 软件复用可以发生在软件开发过程的任 意阶段,各个阶段的产品均是可复用的 目标,越早阶段的复用可带来更好的效 益。 • 青鸟构件模型描述的对象是多层次、多 阶段的构件,层次刻划构件的抽象程度。 层次和开发阶段是密切关联的,开发阶 段越态、层次和表示
5
软件构件技术
• 软件构件技术已成为研究的热点,其研究内容 包括构件标准和模型、构件的生产和获取、构 件的规约和描述、构件的分类和组织、构件的 检索和组装、基于构件的价格分析,以及软件 体系结构、软件复用支持工具和管理手段、基 于复用的软件开发过程等方面。 • 研究工作有很大进展和众多成果,而且还出现 了一些产业构件标准,如Microsoft的OLE- COM、OMG的CORBA/OM等。这标志着软件 复用已进入蓬勃发展的时期