软件复用与构件技术简介
- 格式:pdf
- 大小:3.67 MB
- 文档页数:53
软件复用和构件技术软件复用的研究和实践表明,特定领域的软件复用活动相对容易取得成功。
领域工程是软件复用的关键,即可复用软件资产(包括体系结构和构件等)的生产阶段,主要包括领域分析、领域设计和领域实现这三个活动。
领域分析是对特定的领域进行需求工程的活动。
它覆盖了对领域需求的获取、分析,规约和检验/验证的整个过程。
现有的一些领域需求分析方法如FODA、RSEB、FeatuRSEB等基本都是以特征作为需求空间内的一阶实体,通过对特征的分析建立领域模型。
近几年来,面对日益复杂的软件系统,人们开始认识到,要真正实现软件的工业化生产方式,达到软件产业发展所需要的软件生产率和质量,软件复用是一条现实可行的途径。
软件复用可以避免重复劳动,其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验。
基于构件的复用是产品复用的主要形式,同时构件技术也是成功的软件复用的关键。
软件复用相关研究目前主要关注于商用第三方构件(COTS: Commercial off-the-shelf)以及特定领域的复用式开发。
软件复用可分为产品复用和过程复用两种途径。
产品复用,即复用已有的软件构件,通过构件集成(组装)得到新系统,是目前现实可行的主流途径。
构件是指应用系统中可以明确辨识的构成成分,可复用构件是指具有相对独立功能和可复用价值的构件。
随着对软件复用理解的深入,构件的概念已不再局限于源代码级构件,而是延伸到系统和软件的需求规约、构架、文档、测试等对开发活动的有用的信息。
高抽象层次构件的复用更为重要和更有价值,它所带来的收益将明显大于低抽象层次构件的复用。
代码构件的复用仅仅是软件复用的初级阶段。
软件构件技术是支持软件复用的核心技术。
主要研究内容包括:构件获取、构件模型、构件描述语言、构件的分类与检索、构件的复合组装、标准化等方面。
基于构件的复用中,构件的获取、管理和组装是三个重要的环节,而其中构件的获取是最基本的前提。
NATO软件复用标准简介摘要实践证明,软件复用可以有效地提高软件的质量和生产率,它包括开发可复用软件构件和基于可复用构件的开发两个生命周期。
在这两个生命周期中,采用一个适当的标准以识别和开发可复用软件将大大促进软件复用的实践。
为此,NATO(北大西洋公约组织)制定了一整套软件复用的指导性标准,以帮助NATO及其参与国和承包商的项目管理部门进行有效的软件复用。
这套标准包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别从软件生命周期的各个阶段对软件复用进行了指导和帮助。
关键词:NATO,软件复用,可复用构件开发,构件库管理,复用过程一、前言1.背景与目的自从McIlroy在1968年的NATO软件工程会议上正式提出软件复用的概念以来,软件复用已有了近三十年的发展历程,复用的对象也从早期的代码复用扩展到对软件开发过程中一切有价值的信息的复用,包括需求、需求规约、设计、源代码、测试计划和测试案例等。
近三十年的实践证明,软件复用可以有效地提高软件的质量和生产率,是解决当前“软件危机”的一条比较现实可行的途径。
软件复用包括开发可复用软件构件和基于可复用构件的开发两个生命周期。
在这两个生命周期中,采用一个适当的标准以识别和开发可复用软件将大大促进软件复用的实践。
为此,NATO(北大西洋公约组织)制定了一整套软件复用的指导性标准,以帮助NATO及其参与国和承包商的项目管理部门进行有效的软件复用。
这套标准包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别从软件生命周期的各个阶段对软件复用进行指导,以便最大限度地减少复用代价和增加复用收益。
青鸟工程是国家“九五”重点科技攻关项目,其中研究的主要内容之一便是软件复用和软件构件技术。
为了吸收和利用国外软件复用的最新研究成果,我们对国际上相关研究和实践工作进行了深入分析,以期能拓宽思路,取长补短,使我们的工作能和国际主流接轨。
构件技术一、构件构件定义构件是软件的基本构成成分,也是软件体系结构的基本构成元素,无论是在概念上还是实现的技术上,目前都有很大的发展,已经比较成熟。
1、构件是指语义完整、语法正确且具有可复用价值的单位软件,是软件复用过程中可以被明确辨识的成分。
结构上,它是语义描述、通信接口和实现代码的复合体。
简单的说,构件是具有一定的功能,能够独立工作或能同其他构件装配在一起协调工作的程序体,构件的使用同它的开发、生产无关。
从抽象角度来看,面向对象技术已经达到类级复用,它以类为封装单位,但这样的封装粒度还太小,不足以解决异构互操作和效率更高的复用。
2、构件是指一个可单独开发和交付的软件单元,其设计和实现都封装在一起,具有相对独立功能和可复用价值,通过其接口向外界提供服务。
3、构件就是如同制造业中相对独立的、有一定功能的零部件,在产品组装过程中可以通过接口来使用它,并且不同的产品可以调用同一接口的零部件,从而实现构件的复用。
构件分类根据软件的3层结构框架分类根据软件的3层结构框架(表示层、业务逻辑层和数据访问层),将构件分为表示层构件、业务构件和实体构件,如图 1。
图1软件的3层框架与构件的对应关系根据构件测试的需要分类构件可分为白盒构件、灰盒构件和黑盒构件等。
构件技术分析构件是由本地代理、服务器代理、接口定义和通讯单元四个部分组成。
本地代理用于传递服务器的接口指针,相当于CORBA 规范中的Stub 。
服务器代理用于传递客户程序对接口的调用,相当于CORBA规范中的Skeleton。
接口定义用于定义对象接口,描述对象的名称和方法以及每个方法的参数、类型和输入输出方式,客户程序通过使用它与CORBA服务器交互,相当于CORBA规范中的IDL文件。
通信单元用于构件内部的本地请求与服务器间以及构件间的通信,采用定义于TCP/IP 之上的IIOP(Internet Inter ORB Protocol)协议。
构件内部的通信机制如图2.图2 构件内部通信机制其中,ORB提供客户—对象实现的透明通信方法,它可以屏蔽对象实现位置、实现方法、状态和通信机制等细节。
软件复用与构件技术简介李 戈北京大学 信息科学技术学院 软件研究所 2008年10月16日北京第三届优秀软件构件评选支持单位: 北京市科学技术委员会 主办: 北京软件行业协会 北京软件与信息服务业促进中心 北京软件产业基地公共技术支撑体系 承办: 北京软件产品质量检测检验中心 北京大学北京第三届优秀软件构件评选z提升北京市软件企业的核心竞争力 –帮助企业提高软件开发技术与研发能力,提 高软件开发效率,降低软件开发成本 推动以企业为主体、产学研相结合的技术创新体 系的建设 促进北京软件产业的变革,使软件产业走上工程 化、工业化的发展轨道zz软件企业的现状与问题z现状:– 软件系统的规模和复杂度不断提高 – 对生产效率和产品质量的要求不断提高z问题 问题:– 如何提高软件生产的效率? – 如何掌控软件产品的质量? – 生产效率 与 产品质量 怎可得兼?为什么需要软件复用z应用软件系统的一般开发模式设计 实现 测试 运行需求分析z基本特征:应用系统的开发总是从头开始– 每个应用系统的开发均涉及大量的重复劳动¾ ¾ ¾ ¾ ¾用户需求获取的重复 需求分析、设计的重复 编码实现的重复 测试工作的重复 文档工作的重复为什么需要软件复用z应用系统的构成成分分类– 探讨应用系统的本质,其构成成分可分为:¾ ¾ ¾特定于计算机系统的构成成分 应用系统所属领域的共性构成成分 每个应用系统的特有构成成分系统专用的构成成分 软件系统的 构成成分 领域共用的构成成分 通用的系统构成成分什么是软件复用z避免重复劳动的解决方案--软件复用 避免重复劳动的解决方案 软件复用– 应用系统的开发不再采用一切“从零开始”的模式 – 充分利用过去应用开发中积累的知识和经验: 充分利 去应 发中 的知¾需求分析结果、设计方案、源代码、测试计划及 案例等– 以已有的工作为基础,重点关注应用的特殊性z软件复用– 重复使用“为了复用目的而设计的软件”的过程 复使 为 复 的 计的软件 的软件复用的历史z软件复用概念的提出– 1968年NATO软件工程会议z之前 子程序的概念也体现了复用的思想 之前,子程序的概念也体现了复用的思想– 目的,是为了节省当时昂贵的机器内存资源 ¾ 并不是为了节省开发软件所需的人力资源 – 然而,子程序的概念可以用于节省人力资源的目的 – 从而,出现了程序库——将一些通用子程序收集到程 序库中,供其他程序员在编程时使用 – 例如,数学程序库就是一个成功的子程序复用软件复用的历史z在其后的发展过程中– 有许多复用技术的研究成果和成功的复用实践活动 – 但是,复用技术在整体上对软件产业的影响却并不尽 如人意 ¾ 这有技术方面和非技术方面的种种因素 ¾ 其中技术上的不成熟是一个主要原因z近十几年来,面向对象技术的出现并逐步成为主 十几年来 面向对象技术的出现并 步成为 流技术– 为软件复用提供了基本的技术支持 – 软件复用研究重新成为热点 – 被视为解决软件危机,提高软件生产效率和质量的现 实可行的途径软件复用的历史z复用的发展反映出复用的不同层次– 低级的复用(被动的复用) – 高级的复用(主动的复用) 高级的复 主动的复z软件复用包括两个相关的过程 件 个– 开发可以复用的软件成分 – 利用可复用的软件成分构造新的应用系统z软件复用是必然– 实践证明,软件复用是解决软件危机,提高软件生产 效率和软件产品质量的现实可行的途径。
如何进行软件复用z软件复用的基本原则– 必须有可以复用的对象 – 要复用的对象必须是有用的 复 的对象 有 的 – 需知道如何去使用被复用对象z需要解决的问题:– 可复用的对象是什么? – 如何构造具有良好可复用性的复用对象? – 如何管理可复用对象?如何管理软件开发的过程?如何进行软件复用z传统工业的复用方式– 如汽车 如汽车、飞机、船舶制造业,建筑业 飞机 船舶制造业 建筑业 – 其成功的基本模式是 ¾ 符合标准的构件生产 ¾ 基于标准构件的产品生产(组装) – 其中构件是核心和基础,复用是必需的手段 其中构件是核心和基础 复用是必需的手段阶段1:符合 标准的零部件 (构件)生产阶段2:基于 标准零部件的 产品生产软件产业的工业化生产模式z实践 明 实践证明– 这种模式是产业工程化、工业化的必由之路 – 是软件产业发展的良好借鉴 – 这正是软件复用受到高度重视的根本原因z借鉴传统产业的工业化生产模式,被认为是解决“软件 危机”,提高软件开发效率和质量,实现软件产业工业 化生产方式的重要途径软件复用过程:阶段1:可复 用软件资产的 生产 阶段2:基于可 复用软件资产的 应用系统开发基于构件的软件开发zCBSD– Component Based Software Developmentz基于构件的软件开发– 生产具有良好可复用性的构件 – 利用已有的构件资源进行组装z软件复用的有效途径– 重复使用“为复用目的而开发的软件构件” – 生产模式:从传统的软件编码工作转换为以软件构件为基础的 系统集成组装z软件工业化生产的必然– 软件的复杂性、构造性、演化性使之成为必然软件复用相关技术z基于构件的软件复用支持技术领域工程 软件再工程 软件构架 开放系统技术 非 技 术 因 素软 件 过 程构件、构架 构件 构架 获取构件标准化 与描述构件分类、 存储与检索构件 组装软件构件技术CASE技术什么是软件构件z概念的由来– 1968年NATO软件工程会议,Mcllroy的论文 “大量 生产的软件构件”提出了“ 生产的软件构件 提出了 Software Component p ”一 词。
– “Component”一词的翻译:“构件”与“组件”z软件构件(Software Component)– 应用系统中具有相对独立性 应用系统中具有相对独立性,且可以明确辨识的构成 且可以明确辨识的构成 成分。
可复用软件构件( 件 件 Reusable Software Component p ) – 可复用构件是指具有相对独立的功能和可复用价值的 构件z对软件构件概念的理解z狭义的构件– 软件系统中具有相对独立功能、可以明确辨识、接口 由契约指定、和语境有明显依赖关系、可独立部署、 且多由第三方提供的可组装软件实体。
且多由第三方提供的可组装软件实体 – 既包括以EJB,COM/DCOM,ActiveX,Web Services 等形式存在的可运行二进制程序 也包括经过封装的 等形式存在的可运行二进制程序,也包括经过封装的 源代码程序。
z广义的构件– 随着对软件复用理解的不断深入,软件构件概念的外 延也在扩展。
– 从构件实体到需求规约、系统构架、设计文档、测试 案例等各种具有复用价值的软件资源都可称为构件。
做什么样的构件z构件模型– 对现实构件世界(问题空间和设计空间)的抽象 – 研究构件的本质特征及构件间关系 – 实现系统化复用的第一个关键因素 – 标准化工作的基础 软件复用是一项复杂的系统工程。
要建立系统化的复用 计划,建立合适的构件模型是第 步。
计划,建立合适的构件模型是第一步。
系统化复用的实施涉及众多不同人员,不同的人员对对 构件的关 角度不同 很难建 统 的模型来满足不同 构件的关心角度不同,很难建立统一的模型来满足不同 方面的需求,需要从不同的角度、在不同的抽象层次上 看待构件,需要一组构件模型来满足不同的需求zzWill Tracz 的3C模型z概 ( 概念 (Concept) p) – 关于“构件做什么”的抽象描述¾ 可以通过概念去理解构件的功能 ¾ 概念包括接口规约和语义描述两个部分z内容(Content) – 概念的具体实现¾ 描述构件如何完成概念所刻划的功能z语境(Context) – 构件和外围环境在概念级和内容级的关系¾ 语境刻划构件的应用环境 ¾ 为构件的选用和适应性修改提供指导关于构件模型的讨论z学术界讨论的构件模型:– Unicon:支持 支持Unix环境下的系统组装、内定的连接子( 环境下的系统组装 内定的连接子(Connector)类 型及组装机制 – Wright:以进程代数(CSP)描述构件交互,强调体系结构风格 (Style)的表达与应用,支持系统验证 的表达与应 支持 统 – C2:特定的层次的、基于消息总线风格 – Rapide p :基于事件,并支持描述并发和分布系统模型,将计算和交互 基于事件,并支持描述并发和分布系统模型,将计算和交互 建模为偏序事件集,构件接口通过事件集定义 – Darwin:支持定义系统的动态配置 – Reboot:面向构件库系统的构件模型 – Resolve ……..z工业界成熟的构件实现模型:– EJB,COM/DCOM,ActiveX,Web Services……软件构件的典型形态之一软件构件的典型形态之Web Services 与软件构件z Web Services–Web Services完成相对独立的功能–Web Services具有由契约指定的接口W b S i–通过组装的方式集成到应用系统中–在系统中可以被明确地辨识z Web Services 的构件特性–接口与实现的区分更加明确–对实现体进行的封装更加有效–具有较强的平台无关性–更加易于在Internet上发布相应培训课程名称:SOA & Web Services 培训时间:2008-12-11z什么是软件体系结构–长期以来,CMU-SEI在其网站上公开征集SA的定义,至今已有百余种.z较有影响力的定义包括:–软件系统的结构包含软件元素、软件元素外部可见的软件系统的结构包含软件元素软件元素外部可见的属性以及这些软件元素之间的关系;包含构件构件之间构件与环–软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则等.共同特性z共同特性:–一般都将构件以及构件之间的连接作为SA的基本组成部分.z什么是软件体系结构–对系统结构的总体设计与说明是种高层设计–是一种高层设计–关注三方面问题:构件、构件间关系、关系约束构件z构件:–软件系统由哪些部分构成构件间的关系z构件间的关系:–这些部分之间的交互关系是什么z关系的约束:–这些关系有什么约束体系结构示例z体系结构示例:z软件体系结构风格–描述某一特定应用领域中系统组织方式的惯用模式z软件体系结构模式–描述了软件系统基本的结构化组织方案,–是对设计模式的扩展,可以作为具体SA的模板z常见的体系结构风格:–Pipes and FiltersPipes and Filters–Layered Organization–Distributed Processes–Repositories–Event-based, Implicit Invocation–Main Program/Subroutine, Explicit InvocationMain Program/Subroutine Explicit Invocation–Client/Serverz软件体系结构的延伸–需求分析阶段¾提供解空间试图,便于设计人员与用户交流–软件设计阶段利用多视角展现有利于问题的分解¾利用多视角展现,有利于问题的分解–软件开发阶段明确关联关系有利于保持系统的一致性¾明确关联关系,有利于保持系统的致性–软件运行阶段通过系统运行态的动态视图便于运行监控¾通过系统运行态的动态视图,便于运行监控–软件维护阶段体系结构的演化体现软件的不断演化¾体系结构的演化,体现软件的不断演化基于体系结构的构件组装(ABC)z体系结构刻划系统整体结构–全局组织与控制结构,构件间通讯、同步和数据访问–着重于软件系统自身的整体结构和构件间的互联。