10 第十章软件重用和构件技术 第十章 软件重用技术.

Slides:



Advertisements
Similar presentations
初级会计电算化 (用友T3) 制作人:张爱红.
Advertisements

UI(用户界面)集训班 Illustrator 高级班.
高级软件工程 Advanced Software Engineering
Oracle数据库 Oracle 子程序.
第四次大作业 登陆学校图书馆网站的电子数据库
第三篇 组织工作.
第一章 商品 第一节 价值创造 第二节 价值量 第三节 价值函数及其性质 第四节 商品经济的基本矛盾与利己利他经济人假设.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
Hadoop I/O By ShiChaojie.
SVN的基本概念 柳峰
面向对象建模技术 软件工程系 林 琳.
R in Enterprise Environment 企业环境中的R
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
What have we learned?.
化学品清单 类型.
数据挖掘工具性能比较.
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
Windows 7 的系统设置.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
何勉 新浪微博: Scrum框架及其背后的原则 原始图片 何勉 新浪微博:
编程作业3:网页正文抽取 (10分).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
$9 泛型基础.
PRESENTED BY OfficePLUS
2019/4/16 关注NE官方微信,获取更多服务.
VisComposer 2019/4/17.
WPT MRC. WPT MRC 由题目引出的几个问题 1.做MRC-WPT的多了,与其他文章的区别是什么? 2.Charging Control的手段是什么? 3.Power Reigon是什么东西?
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
iSIGHT 基本培训 使用 Excel的栅栏问题
数据集的抽取式摘要 程龚, 徐丹云.
PROJECT NAME 项目名称 张三 安徽xx文化传播有限公司.
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
Chapter 18 使用GRASP的对象设计示例.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
计算机绘图 AutoCAD2016.
OpenStack vs CloudStack
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
Python 环境搭建 基于Anaconda和VSCode.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第十七讲 密码执行(1).
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
质量控制(QC)模式 BrookFIELD.
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
Presentation transcript:

10 第十章软件重用和构件技术 第十章 软件重用技术

10.1 软件重用概述 可重用的软件成分,也称为可重用构件(Reusable Component)可从旧软件中提取,也可以专门为重用而开发。   软件重用就是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。   可重用的软件成分,也称为可重用构件(Reusable Component)可从旧软件中提取,也可以专门为重用而开发。   软件重用不仅是对程序的重用,它包括对软件生产过程中任何活动所产生的制成品的重用。如:项目计划、可行性报告、需求定义、分析模型、详细说明、源程序和测试用例等等。

10.1.1 软件重用的级别 三种方式重用: 从现有系统的分析结果中提取可重用构件用于新系统的分析; 高  从现有系统的分析结果中提取可重用构件用于新系统的分析;   用一份完整的分析文档作为输入,成生针对不通软硬件平台和其它实现条件的多项设计; 独立于具体应用,专门开发一些可重用的分析构件。  高 抽 象 程 度  低 主要包括测试用例(test case)的重用和测试过程信息的重用。 代码的重用 设计结果的重用 分析结果的重用 测试信息的重用 可被重用的分析结果是针对问题域的某些事物或某些问题的抽象程度更高的解法。 受实际环境影响小,可重用机会多,所需修改少。 包括目标代码,也包括文本形式的源代码。

重用级别越高,可得到的回报也越大,因此分析软件(Analysis Ware)和设计软件(Design Ware)的重用备受重视。   软件生产过程主要是正向过程,即软件产品从抽象级别较高的形态向抽象级别较低的形态演化,所以较高级别的重用容易带动较低级别的重用,反之则不然。 重用级别越高,可得到的回报也越大,因此分析软件(Analysis Ware)和设计软件(Design Ware)的重用备受重视。 软件重用的优点: (1)提高软件生产率,降低软件生产代价;  (2)提高软件质量; (3)互操作性好; (4)推动标准化; (5)支持原型开发。

10.1.2软件重用的形式 一、按照重用活动所跨越的应用领域的类型分   1.横向重用(horizontal reuse)也称为水平重用,是指重用活动的范围跨越了几个不同的应用领域,重用的软件产品主要包括数据结构、通用算法、人机界面等软件元素。  2.纵向重用(vertical reuse)也称为垂直重用,是指重用活动的范围限制在同一个应用领域或者是一类具有较多共性的应用领域内。

指建立、获取或者重新设计可重用构件的活动。涉及到的活动包括:重用的规划、领域分析、构件的开发、构件库的组织和管理。 二、基于软件重用的软件开发过程的角度分  1.生产者重用(product reuse)   指建立、获取或者重新设计可重用构件的活动。涉及到的活动包括:重用的规划、领域分析、构件的开发、构件库的组织和管理。  2.消费者重用(consumer reuse)   指使用可重用的构件建立新的系统的活动。涉及到的活动包括:应用系统的规划、构件的检索和选择、应用系统中非重用部分的开发、应用系统的组装。 建立构件 组装应用    生产者重用   消费者重用 (为重用开发构件) (使用构件开发应用) 生产者重用与消费者重用

构件要达到一定的规模,才能支持有效的重用; 发现合用构件的困难; 基于重用的软件开发方法和软件过程需要一些新的理论、技术及支持环境。 10.1.3 软件重用的困难   重用具有许多明显的优点,目前应用不广泛的主要原因是: (1)技术因素 构件与应用系统之间的差异; 构件要达到一定的规模,才能支持有效的重用; 发现合用构件的困难; 基于重用的软件开发方法和软件过程需要一些新的理论、技术及支持环境。 (2)人的因素 喜欢自己创造而不喜欢使用别人的东西。

10.1.3 软件重用的困难 (3)管理因素 (4)教育因素 重用具有许多明显的优点,目前应用不广泛的主要原因是:   重用具有许多明显的优点,目前应用不广泛的主要原因是: (3)管理因素  把重用构件和一般软件构件同等看待,把重用看作可有可无的事。 (4)教育因素  软件科学技术的教育与培训中,缺乏关于软件重用的内容,缺少专门教材和课程。

10.2 软件构件与构件工程 为了实现软件重用,基于软件构件的软件工程强调领域工程与软件工程同时进行。   基于软件构件的软件工程也称为构件工程,是以面向对象的方法为基础,实现软件重用,构造新系统的过程。   为了实现软件重用,基于软件构件的软件工程强调领域工程与软件工程同时进行。   领域工程创建应用领域的模型,标识、构造、分类和传播一组可重用的软件。

典型的重用的过程模型,描述了领域工程与软件工程的关系。 图2 领域分析 设计软件 体系结构 开发可重用 的软件成分 中心库 可重用软件 成分/构件 领域 模型 结构 系统分析 规格说明 与设计 建造 系统规 格说明 分析与 设计模型 应用 软件 用户 需求 软件工程 领域工程 重用的过程模型

解决一个相对独立的问题,或大问题中某个相对独立的部分; (2)完整性 提供较完整的解决,不要遗留很多缺口,让重用者做大量补充; 6.2.1 可重用构件   一个软件只有在多个系统中被使用才可称为“可重用构件”,必须具备的条件:  (1)独立性   解决一个相对独立的问题,或大问题中某个相对独立的部分;  (2)完整性   提供较完整的解决,不要遗留很多缺口,让重用者做大量补充;  (3)可标识性   构件所解决的问题应该是可标识的,可命名,有简要介绍,便于理解和使用。

构件解决的问题,应在同类应用中具有一般性; (5)适应性 应用场合有某些变化时,构件仍是可用的,使构件的某些数据参数化和数据类型参数化; 10.2.1 可重用构件   一个软件只有在多个系统中被使用才可称为“可重用构件”,必须具备的条件:  (4)通用性  构件解决的问题,应在同类应用中具有一般性;  (5)适应性  应用场合有某些变化时,构件仍是可用的,使构件的某些数据参数化和数据类型参数化;  (6)可靠性  要求构件对预计将要使用它的系统时可靠的;  (7)标准化  可重用构件的标准化对于软件重用是至关重要的。

它不是针对某个特定的软件系统,而是针对一 类软件系统的共同的特征、知识和需求。 基于构件的软件的开发过程包括两个并发的子 6.2.2 基于构件的软件工程    基于构件的软件工程与传统的或面向对象的软件工程相比,有显著的差异。 它不是针对某个特定的软件系统,而是针对一 类软件系统的共同的特征、知识和需求。   基于构件的软件的开发过程包括两个并发的子 过程,一个是领域工程,另一个是基于构件的开 发。领域工程完成一组可重用构件的标示、构造、 分类和传播;基于构件的开发完成使用可重用构件 构造新的软件系统。

识、需求的标识、分析和规约。领域分析是特定领 域内软件重用的基础,它的目标就是:发现和挖掘 在特定领域内可以被重用的构件。领域分析活动中 10.2.3 领域分析   领域分析是对特定应用领域中共同的特征、知 识、需求的标识、分析和规约。领域分析是特定领 域内软件重用的基础,它的目标就是:发现和挖掘 在特定领域内可以被重用的构件。领域分析活动中 输入和输出如图所示: 输入信息 技术文献 已有应用 专家经验/建议 当前与未来的需求 输出信息  领域语言  重用标准  分类方法  功能/行为模型 领域分析 领域分析的输入和输出

对一类软件系统的共同的特征、知识和需求。比需求 分析更一般、更抽象、更广泛的特征。    领域分析不是针对某个特定的软件系统,而是针 对一类软件系统的共同的特征、知识和需求。比需求 分析更一般、更抽象、更广泛的特征。    领域分析(Domain Analysis)是对一类应用系统的 共同应用领域进行系统化分析,以发现该领域的共同知 识、需求及其应用系统的共同特征。 领域分析又称领域工程(Domain Engineering), 是软件工程的发展与延伸。   领域分析是一项比系统分析更难的工作。领域分 析方法可采用结构化方法和面向对象方法,而后者将 成为主流。

10.3 构件的开发与构件库 构件的开发   领域分析的结果为构件的选取和开发提供了指导性的原则。除了有领域分析作为其基础,构件开发还需要遵循一定的设计概念和原则。   构件应该具有相当的一般性和抽象性,能够用于满足一类相似的需求,一个过于特殊的构件是很难被重复使用的。即使一个通用性很高的构件也不可能完全适应用户的需求和运行环境,所以在一个构件被不同的应用重用时,对它的某些部分进行修改是不可避免的。所以构件开发时,需要为用户对构件的调整和修改留出余地。例如继承、参数化、模板和宏都是典型的提高构件灵活性和可调整性的机制。

10.3.1 构件库   构件库(Component Library)用于对可重用构件进行存储和管理。它是支持软件重用的必要设施。构件库必须有大量的可重用构件。   构件库系统应提供的主要功能:构件的存储、管理、检索以及库的浏览与维护等。   关键是支持使用者高效而准确地发现所需的可重用构件。相关的主要技术是分类方法和检索方法。   支持方便的、友好的用户管理和使用界面。 涉及两个基本问题: 构件分类 构件检索

10.3.2 构件的分类 大多数的构件分类模式可以归纳为以下三种类型: (1)枚举分类   大多数的构件分类模式可以归纳为以下三种类型: (1)枚举分类   通过定义一个层次结构来对构件进行分类。构件库中的可重用构件按照某种标准被分成了若干个大类,而每个大类中的构件再被划分成若干个小类,依此类推,这样就形成了一个构件分类的层次结构, 图形用户界面类 窗口类 菜单类 图形窗 口构件 文字窗口构件 系统菜 单构件 弹出式菜 普通菜 枚举分类的层次结构

对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。 (2)刻面分类   一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以设置不同的优先级。 刻面 应用领域 对象 功能 编程语言 刻面值 图形用户界面编程 菜单 动态修改菜单项 JAVA   对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。   该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。

刻面分类法(Faceted Classification):   支持多重观点对构件进行分类,例如从构件的应用领域、构件所描述的对象、构件的观点和编程语言等不同的方式来分类。 每一种分类方式称为一个刻面。 每个刻面把构件集合划分为一个子集,各刻面所划分的子集形成一些较小的交集。   一个构件对每个每个刻面有一个刻面值,例如: 应用领域 = 计算机绘图 对象 = 椭圆 功能 = 彩色填充, 编程语言 = C++

  检索一个构件时,给出一组刻面值,将确定一组子集合,构件应该在这些子结合的交集中,从其中确认所需的构件就比较容易。   构件可用属性描述,例如构件类型、开发单位、作者、提交日期等属性。检索时通过构件的属性可以缩小搜索范围。   刻面和属性都不涉及构件内部实现,只是为了便于构件的管理、检索和使用。如果把构件比作一只箱子,其内容如同箱子中装的东西,刻面和属性则如同箱子外边的标签。   刻面分类法可以看作层次分类法的扩充。

(3)属性-值分类   该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。   该分类方法与刻面分类方法有几点不同之处:   属性的数量没有限制,而刻面描述一般限制在7或8个刻面;   属性没有优先级,而刻面根据其重要程度,有相应的优先级;

10.3.3 构件检索 构件库中检索一个构件和在数据库中检索一个记录是不同的。   构件库中检索一个构件和在数据库中检索一个记录是不同的。   构件库检索的不确定性带来两种相互矛盾的结果:检索的结果可能是一个较大的构件集合,要从中找到所需的构件仍然很费力;检索得到的集合没有把真正需要的构件包括在内。  解决方法: (一)一般构件库系统能对提出的检索条件作广义解释。   建立同义词对照表,例如“商品销售”、“售货”、“卖货”看作一组同义词; 建立近意词对照表,例如把“商业”、“商场”、“连锁店”看作一组近意词。 系统首先匹配同义词,再匹配近意词,都可以被包括到广义结果集合中。

(二)使检索得到的构件集合尽可能不包括对用户无用的构件。   增加更多的刻面与构件属性:较多的刻面和属性值,将得到更小的子集合文集,减轻最终发现和确认所需构件的难度; 建立构件关键词:根据构件内容提炼关键词,如同学术论文的关键词,反映有关构件内容的一些主要信息。 例如,找功能构件的关键词有“压入”、“弹出”、“后进先出”等等。如果通过刻面和构件属性得到的构件子集较大,可用关键词作进一步的检索,以缩小搜索范围。 改进构件检索的其它措施: (1)记录用户使用构件库的经验,并根据这些经验改经构件检索系统; (2)对每个构件给出一段文字的简要介绍; (3)提供较强的人机对话功能;   (4)引导用户对自己需求的表达不断精化。

10.3.4 基于构件的开发 基于构件的开发是使用可重用构件组装开发新的应用系统。 一、开发过程 1、构件的鉴定 10.3.4 基于构件的开发  基于构件的开发是使用可重用构件组装开发新的应用系统。 一、开发过程 1、构件的鉴定   构件的鉴定是对打算用于软件开发的构件能否满足应用的需要,达到应用所需要的性能、可靠性、质量的保证进行相应的考察。 2、构件的调整   通常在将构件重用到应用中时,构件需要进行必要的调整和修改才能适应应用的需要。 3、 构件的组装   构件的组装是将经过鉴定和调整以后的构件组装到应用系统中。通常为了达到此目的,还必须建一个基础设施提供构件协同的模型和使构件能够交互并完成共同任务的的特定服务。

二、基于构件的软件开发特点 1、开发的质量 基于构件的软件开发的一个明显的优点就是提高了软件的质量。  可重用的构件在开发过程中,都经过严格的测试。

10.3.5 可重用的软件构架   在同一个领域的应用系统之间,不但可以找到其共同的软件构件,而且可以发现共同的或相似的软件体系结构(Software Architecture)。 专向领域的重用开拓了一种新的重用境界,被重用的不仅是可实现某种局部功能的软件构件,而且可以是一些形成系统总体结构,并把各个可重用构件连接到一起的软件构架(Software Framework)。 电子产品的主电路板可看成该产品可重用的构架,它把许多可重用的电子器件连接在一起。 软件构架是一种由特定领域的软件体系结构所决定的软件构造框架。

  软件构架不是解决软件的某个局部问题,而是描述了软件的总体结构。它描述了一类软件的总体构成情况,包括该软件有哪些主要部件以及各部件之间的关系,但是不涉及每个部件的细节。   可重用的软件构架给出一类应用系统在总体构造上的共性或相似性,忽略了各个系统的局部差异。   例如,一个超级市场的销售管理系统的软件构架,它包括的类有收款机、商品一览表、商品、供货员、销售事件、帐册和上级系统接口等。它只表明一般情况下系统应由哪些类构成,并指出这些类之间的关系。但没有定义每个类,在每个具体情况的系统中,各个类的内部特征可能是不同的。

  在使用这个软件架构和一些构件组装成一个具体的应用系统时,可以根据该系统的特殊要求选用不同的构件,也可能对构件做一些局部修改。      可见,软件构架的使用将把软件开发看作一个组装过程,在软件构架的指导下寻找可重用构件(及开发一些新构件)并进行组装。   这种基于构件/架构的组装式软件开发过程是目前很受重视的研究动向。

基于构件/构架的软件开发   基于专向领域的软件重用和领域分析技术,C.Braun等人在1993年提出了“领域专用软件体系结构”(Domain-Specific Software Architecture,简称DSSA)的概念。并指出对基于DSSA的软件开发,应采用新的软件生命期观点,研究符合其特点的软件开发过程。 在领域分析基础上和构件/构架库的支持下进行应用系统开发,其主要特点是:应用领域中各系统的共同问题已在领域分析中得到了一般认识,并通过构件、构架的开发统一地进行了描述和解决。因此,该领域的应用系统开发主要是分析和解决具体系统中的特殊问题。

  所以,一个应用系统的开发不再是从零开始,而是按照领域构架确定本系统需要哪些可重用构件,根据本系统的特殊需求对构架和构件进行特殊化,并开发本系统的专用构件,然后将领域构架、领域构件和系统专用构件组装成一个完整的系统。   下图是基于构件/构架的软件开发方式的简略表示。

基于构件/构架的软件开发方式