构件化软件工程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
构件的管理
构件的分类描述 对构件库中的构件进行合理的分类和组织,帮助软件 开发人员方便地找到所需要的构件 大多数的研究都建议使用图书馆科学索引方法进行构 件分类 构件库管理系统:主要用于构件的储存、检索、浏览和 管理
31
常用的构件分类模式-1
枚举分类(Enumerated Classification)
与面向对象范型相比,构件将多个细粒度的对象组 织成强内聚、松耦合、粒度更大的实体,以提高对象 的复用性 特别地,由于构件没有从认识论的角度提出一套新 的软件模型,因此,构件可以兼容此前的各种编程语 言,即,这些编程语言写出来的程序可以封装/转换成 构件从而得以复用
面 向 复 用 的 软 件 过 程 和 资 产 管 理
4
影响软件复用成败的因素
管理和组织层面
项目管理者的支持和经验 面向复用特点的软件过程模型 专门的小组搜集、维护和提供可复用的构件 程序员的心理因素 支持复用的方法和技术还存在许多困难 需有一个组织和管理良好的构件库 改编已有的软件或者构件,提取可复用的构件 开发可复用的构件的代价较高
11
构件(Component)的概念
构件是:
已被封装的、具有良好接口定义的软件包 可以被独立地开发和部署,可由第三方来组合 能够与其它构件组合 具有清晰的接口和文档,并定义了复用的情景
注:构件不是对象,也不一定使用对象技 术实现。从粒度上,构件一般都比对象类 大,面向对象的构件一般实现为一组类的 集合
对比:汽车工业的生产模式
在已有的部件基础上通过组装进行生产:有专门的部件生产工 厂,汽车设计者在设计中选择市场上已有的合适的部件 避免了大量的重复劳动,提高了产品质量和生产效率,促进分 工合作
我们的目标:将制造业中的组装式生产模 式引入到软件开发中
8
面 向 复 用 的 软 件 过 程
面向复用的 软件开发
客观事物(问题空间) 自然语言 Agent 新型语言 面向对象 的语言 非面向对象 的高级语言 汇编语言 机器语言 计算机(解空间) 构 件 模 型 Aspect Service 语 言 鸿 沟
从编程语言的发展看构件化软件
与面向对象等软件模型不同,软件构件的目标是解 空间而不是问题空间。其主旨是通过凝练共性并复用 之以解决软件开发的效率与质量的问题,而不试图解 决语言鸿沟的问题
对质量的影响:随着长期的测试和使用, 构件能够保证很高的质量,因此可以使系 统开发的质量得到保证 对生产率的影响:一般来说,大约30%~ 50%的复用可使生产率提高25%~40% 对成本的影响
与复用相关的成本应由多个采用复用技术的项目来分担 通常要经过2~3个采用复用的生产周期(大约3年左右)复用 才能带来显著的效益
应用系统工程的步骤
建立应用系统的体系结构模型 寻找候选构件 评价和选择合适的构件 构件的修改(modify)和特化(specialize) 开发未被复用的部分 构件的组装 集成测试 评价被复用的构件,并推荐可能的新构件
22
应用系统工程的步骤-1
建立应用系统的体系结构模型:可以使用构件 生产者提供的领域特定的基准体系结构经裁剪 和/或扩充而获得 寻找候选构件:根据应用系统的体系结构模型, 从构件库或其它可利用的构件源中寻找候选构 件 评价和选择合适的构件:评价候选构件以判断 是否适合于待开发的软件 构件的修改(modify)和特化(specialize):在复用 时对构件进行特化以满足特定应用的需要
12
构件的要素
规格说明:建立在接口概念之上,作为服 务提供方与客户方之间的契约 一个或多个实现 受约束的构件标准 包装方法 部署方法
13
3C构件模型:一个指导性模型
构件由三个不同方面的描述组成
概念(concept):关于“构件做什么”的抽 象描述,可以通过概念去理解构件的功能。 概念包括接口规约和语义描述(和每个操 作相关联,一般表示为前后置谓词形式) 内容(content):概念的具体实现,描述构 件如何完成概念所刻画的功能 情境(context):描述构件和外围环境在概 念级和内容级的关系,刻画构件的应用环 境,为构件的选用和适应性修改提供指导
高级软件工程
构件化软件开发
陈宁江
1
背景
手工作坊式软件开发
应用 系统
软件构件技术 软件工业化生产
应用 系统
应用 系统 中间件
操作系统
终 端 用 户 编 程
模 型 驱 动 开 发
随 需 即 取
●●●
操作系统 裸机 裸机 裸机
网 络
2
软件生产方式的变革
手工作坊式
工业化生产技术
工程化开发方法
支撑环境与工具 标准规范体系
5
技术层面
经济层面
复用的一般过程
复用评估
软件组织了解和评估实施复用的能力,分析复用所带来的收益 和所付出的代价 分析已有软件,寻找、评价和选择可复 用的软件构件 了解防碍复用的问题,减少复用的风险和 代价
复用启动
复用实验
确定项目复用过程中各个 复用扩展 参与者的职责,扩展或者 整合可复用构件库 建立系统性的复用过程, 领域分析 标识某一领域多个应用的 根据复用需要调整组织结 共同需求 构和软件开发过程,建立 复用整合 制度性的复用
工业化生产
突破 软件工业化生产 关键技术
软件复用与软件构件技术 需求工程技术 可信计算技术 领域特定的语言-终端用户编程技术 协同计算与环境构造技术 标准化与开放系统技术
软件再工程技术 领域工程技术 面向对象技术 质量评估与优化技术 软件过程技术 …
3
软件复用的优点
改善软件质量 减少工作量 快速构建系统原型 帮助程序员获得经验和知识
20/41
领域工程步骤-2
重建构件:在泛化和可变性分析的基础上, 重建构件,使它成为可复用构件 构件的测试:对重建的可复用的构件要严 格测试,以提高其可靠性 构件的包装:经测试的构件应根据构件库 的要求,对它进行包装,以便构件库对它 分类储存和检索 构件入库:包装后的构件即可存入构件库
21/41
构件的存在形式:源代码,可执行代码 使用范围:在单个项目中使用,整个产品线中使用,多个产 品线使用 查询表示方法:功能说明,关键字列表,设计模式,行为样 例 构件表示方法:功能说明,源代码,执行代码,关键字 检索目标:精确性,功能近似性,结构近似性 30 匹配标准:正确性,关键字的相等性和包容性,自然语言分
6
复用的层次
复用:应用 (COTS) 复用:框架 (半完成应用) 复用:微结构 (设计模式,协作关系)
复用:类,方法,代码
7
基于构件的软件开发目标
长期以来的软件开发状况
多数软件都是针对某个具体的应用系统从头进行开发的 导致:出现了大量的同类软件重复开发,造成大量人力、财力 的浪费,而且软件的质量也不高
构件接口应该清晰、标准 开发过程模型 : 以接口为中心 ;独立于编程 语言 ;组合性 ;分离性 集成能力
商业方面
构件市场和标准 市场的范围、规模和标准化
28
29
基于构件的开发活动 (1): 构件选择
在构件库中浏览和检索构件
检索的效率 检索的精确性
构件存储和分类的标准
Pressman:构件是某系统中有价值的、几乎独立的并 可替换的一个部分,它在良好定义的体系结构语境内 满足某清晰的功能 Brown:构件是一个独立发布的功能部分,可以通过 其接口访问它的服务 “计算机科学技术百科全书” :软件构件是软件系统 中具有相对独立功能,可以明确标识,接口由规约指 定,与语境有明显依赖关系,可独立部署,且多由第 三方提供的可组装软件实体;软件构件须承载有用的 功能,并遵循某种构件模型;可复用构件是指具有可 复用价值的构件
资产库 基于复用的 软件开发
构件化软件设计的核心思想是如 何基于可复用构件设计出满足功能 和非功能需求的软件体系结构; 构件化软件实现则是按照软件体 系结构、利用各种语言或中间件机 制、将可复用构件组装起来。 特别地,构件化软件不仅复用 了构件,还复用了构件运行支 撑平台的若干能力,因此,构 件化软件的实现往往延伸到了 传统软件开发阶段之后的部署 和运营阶段。
26
基于构件的软件开发中的关键活动(续)
(4)创建构件
所选择的构件不能完全满足应用需求,这时 必须开发和创建新的构件 组装和集成构件的过程。工作量取决于构件 的性质
(5)组合构件
(6)替换构件
替换构件的过程与产品的维护有关,构件升 级及其版本管理
27
构件化开发中值得注意的问题
技术方面
面向复用的需求建模 软件体系结构分析与设计 构件组装(含构件开发) 构件化软件部署 构件化软件运行管理
构 件 化 软 件 设 计 与 实 现
从软件工程方法看构件化软件设计与实现
构件化软件的设计集中于软件体系结构
构件化软件通过组装而不是编程来实现
实现工作持续到了软件部署和运行管理阶段
10
构件(Component)的典型定义
COM+/DCOM
EJB:基于Java的构件
15
构件化软件开发(CBSD)
16
构件化软件开发的比较
传统的软件过程 Analysis Design Implementation Unit Test 构件化软件开发过程 Analysis Component Acquisition
Component –Oriented Design Component Composition
23/41
应用系统工程的步骤-2
开发未被复用的部分:对新系统中未复 用的部分进行开发 构件的组装:将特化和修改后的可复用 构件和新开发的部分组装成一个新的软 件系统 集成测试:对组装后的软件系统进行集 成测试 评价被复用的构件,并推荐可能的新构 件
24/41
CBSD对质量、生产率和成本的影响
25/41
基于构件的软件开发中的关键活动
(1)查找构件
发掘待开发应用中的核心构件,用文档描述构件;通 过领域分析、自行ຫໍສະໝຸດ Baidu发、逆向工程或者商业购买等途 径来获得所需构件;创建构件库 从构件库中挑选合适的构件。选择过程通常与构件库 的检索技术及算法相关
(2)选择构件
(3)适配构件
改编或者定制化所挑选的构件来满足新的应用需求, 使其能与其它构件或者底层框架集成
将构件组织成分类层次结构,构件库中的构件按某些性 质分成若干大类,每个大类又分成若干较小的类,经过 若干次分解,形成构件分类的层次结构,实际的构件位 于层次结构的最低层,其它层次则表示构件的类或子类 枚举分类模式的分层结构易于理解和检索,但是,在建 立层次结构之前,必须进行领域分析,寻找合适的供分 类的性质。 为所有构件定义一组属性,每个构件都具有一组属性值, 开发人员通过指定一组属性值对构件库检索
Integration Test
System Test
Integration Test System Test
17
基于构件的软件开发过程
18
领域工程步骤
领域分析 建立领域特定的基准体系结构模型 标识候选构件 泛化(generalization)和可变性(variability)分析 重建构件 构件的测试 构件的包装 构件入库
14
常用的构件标准
CORBA(Common Object Request Broker Architecture)
OMG发布的构件标准 核心是ORB(Object Request Broker),定义了异构环境下对象 透明地发送请求和接收响应的基本机制 微软开发的一个构件对象模型,提供了在运行于Windows操 作系统之上的单个应用中使用不同厂商生产的对象的规约 提供了让客户端使用远程的分布式对象的框架 EJB规约规定了EJB构件如何与EJB容器进行行交互
19
领域工程步骤-1
领域分析:首先要进行领域分析,收集领域中有代表性 的应用样本,分析应用中的公共部分或相似部分,抽取 该领域的应用体系结构 建立领域特定的基准体系结构模型:在领域分析的基础 上,构造该领域的基准体系结构,这个基准体系结构应 是可以裁剪和扩充的,并可供该领域的应用复用 标识候选构件:在领域分析和领域基准体系结构模型的 基础上标识该领域的候选构件 泛化(generalization)和可变性(variability)分析:提高其 通用性,同时寻找候选构件在不同应用中的变化点 (variation point),通过设置参数、继承或其它手段,使 可变部分局部化