第10章软件复用方案
软件复用

复用技术对oo方法的支持
面向对象的软件开发和软件复用之间的关系是相辅 相成的。一方面,00方法的基本概念、原则与技 术提供了实现软件复用的有利条件;另一方面,软 件复用技术也对面向对象的软件开发提供了有力的 支持。
面向对象技术通过方法、消息、类、继承、封装和
实例等机制构造软件系统,并为软件复用提供强有 力的支持。很多面面向对象语言为应用程序开发着
火龙果整理
(3)分析的复用
这是比设计结果更高级别的复用,可复用的分析 构件是针对问题域的某些事物或某些问题的抽象程 度更高的解法,受设计技术及实现条件的影响很少, 所以可复用的机会更大。复用的途径也有三种,即 从现有系统的分析结果中提取可复用构件用于新系 统的分析;用一份完整的分析文档作输入,产生针 对不同软硬件平台和其它实现条件的多项设计;独 立于具体应用,专门开发一些可复用的分析构件。
火龙果整理
小例子:
一位程序员编写了一些排序程序,通过 不同的参数传递来实现多次调用; C程序员编写了解三角方程的程序,整 个程序共调用了12次正弦函数; 一位Ada程序员编写了一个一段模拟程 序,涉及处理队列和一个处理器数组, 为此查找通用Ada队列和数组程序包, 并将其插入运行Ada环境中,并实例化 队列两次(就绪队列和阻塞队列),实 例化数组一次(处理器数组)。
火龙果整理
按照重用活动所跨越的应用领域类型可以分为横 向复用和纵向复用两种类型。
•横向复用:也成为水平重用,是指复 用活动范围跨越了几个不同应用领域, 如数据结构、算法、人机界面构件等。 •纵向复用:也称为垂直重用,是指重 用活动的范围限制在同一个应用领域或 者是一类具有较多共性的应用领域内。
确定同义词
复审
计算机及信息工程学院Copyright10
软件复用技术

论使用复用设计1、引言复用是活动,而不是对象.在创建软件相关的系统的语境中,复用仅仅是非常简单的任何过程,该过程通过复用来自以前开发工作的某些东西来生产(或帮助生产)一个系统。
那么,唯一的问题是:复用什么、什么是导致成功复用的过程。
在软件工程的范围内,复用既是旧概念,也是新概念。
程序员从最早的计算时代已开始复用概念、对象、论据、抽象和过程,但是我们复用的途径是特定的。
本文对软件复用的讨论,将从以下四个方面进行:1)软件工程师可以获得一系列可复用的软件制品,这些包括软件的技术表示(例如,规约、体系结构模型、设计和代码)、文档、测试数据,甚至包括过程相关的任务(如,检查技术)。
2)复用过程包括两个并发的子过程:领域工程和软件工程。
领域工程的目的是在特定应用领域中标识、构造、分类和传播一组软件制品。
然后,软件工程可在新系统开发中选取这些软件制品作为复用。
3)构件复用为软件质量、开发者生产率、以及整个系统成本带来了固有的收益,然而,在复用过程模型被广泛地用于软件产业前,必须克服很多障碍.4)对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。
可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。
2、可复用的软件制品软件复用不仅仅涉及源代码,但是,还涉及多少东西呢?CaperJones定义了可作为复用候选的十种软件制品:项目计划。
软件项目计划的基本结构和许多内容(例如,SQA 计划)均是可以跨项目复用的。
这样减少了用于制定计划的时间,也减低了和建立进度表、风险分析和其他特征相关的不确定性.成本估计.因为经常不同项目中含有类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。
体系结构。
即使当考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构.因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并将那些模板作为可复用的设计框架。
软件复用

浙江大学计算机系软件所
吴明晖
Email: minghuiwu@
1
软件复用
• 人们开始认识到,要真正实现软件的工业化生 产方式,保证软件生产的高效率和高质量,软 件复用是一条现实可行的途径 • 软件复用的概念是在1968年NATO软件工程会 议上由Mcllroy第一次提出的 • 所谓软件复用是指在开发新的应用系统时使用 以前开发的软件资源,如设计、代码、文档 等,从而提高系统开发效率及软件质量
17
复用带来了软件开发过程的变革
• 由于复用活动的存在使得传统的软件生 存期模型不再适用,软件开发过程分为 两个相互关联的过程,即开发可复用资 源的过程和根据可复用资源开发应用系 统的过程,REBOOT计划中将其称为 DEVELOPING FOR REUSE 和 DEVELOPING WITH REUSE
7
过程复用
• 过程复用指通过采用自动化技术,复用关于软 件系统生成或变换的知识,从而使得可以从需 求描述出发,通过生成或变换,自动生成最终 所需的系统,应用生成器、程序变换器和可执 行规约语言均是过程复用的例子。 • 完全通用的过程复用意味着软件生产的自动 化,这在目前还是不现实的想法,因此过程复 用难度大、投资大、不易实施。 • 当前过程复用的实践大多和领域相关,如特定 领域的应用生成器。过程复用是非常理想的软 件复用方式,但在目前技术发展水平下,仍是 难以企及的目标,产品复用成为主要的研究课 题。
• 概念:关于“构件做什么”的抽象描述,可以通过概念 去理解构件的功能。概念包括接口规约和语义描述两 个部分,语义描述和每个操作相关联(至少表示为前 后置谓词形式)。 • 内容:概念的具体实现,描述构件如何完成概念所刻 划的功能。 • 语景:描述构件和外围环境在概念级和内容级的关系。 语景刻划构件的应用环境,为构件的选用和适应性修 改提供指导。语景进一步可分为:概念语景 (Conceptual Context)描述构件间接口和语义方面的 关系;操作语景(Operational Context)刻划构件中被 操作数据的特征(如类型和操作);实现语景 (Implementation Context)描述构件间在实现方面的依 赖关系。
软件复用技术的分析复用

全国分站北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨手机电脑数码家电硬件外设企业办公游戏手机安极4GWP专区配件移动电源笔记本超极本平板一体机台式机商用工作站知本家可穿戴相机摄像机单电单反海极社行摄频道GPS潮生活国产平板电视冰箱洗衣机空调净化器盒子厨卫投影生活家电CPU主板显示器音频机电键鼠显卡内存硬盘服务器信息化开发办公打印网络设备商喷方案云计算游戏手机游戏下载游戏硬件动漫网页游戏编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且愉悦了每个人的内在情感。
但它也是一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动,对许多人而言,其中乐趣远大于苦恼。
An———— FREDERICK P . BOORKS 《人月神话》摘要:复用即软件复用,是今年来被越来越多程序员重视的技术。
本文通过对软件复用技术的分析,介绍了复用技术在提高软件效率、减轻软件开发压力方面的作用。
软件复用的定义软件复用(或软件重用)是指充分利用过去软件开发中积累的成果、知识和经验,去开发新的软件系统,使人们在新系统的开发中着重于解决出现的新问题、满足新需求,从而避免或减少软件开发中的重复劳动。
软件复用可分为产品式复用和生成式复用。
产品式复用是指对软件开发中中间制品(程序代码,各阶段中的文档或模型,测试用例等)的复用,其实现途径关键是将可复用的程序代码组装(或集成)而生成软件应用系统,因此产品式复用亦称组装式复用;生成式复用主要是将软件的需求进行规约化(或形式化)描述,然后利用可复用的应用程序生成器自动或半自动地生成所需的软件系统。
目前组装式复用是软件复用的主流方式。
在目前主流复用技术中,有一个关键性的名词:软件构件,复用技术中的代码复用过程主要是依赖软件构件来实现复用的。
软件构件(也称软件组件)是软件系统内可标识的、符合某种标准要求的构成成分,类似于传统工业中的零部件。
软件的复用技术及开发方法

软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。
软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。
软件复用包括构造可复用软件和用可复用软件进行构造。
构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。
Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。
这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。
实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。
设计层软件复用是指对已有的软件系统的设计信息进行复用。
而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。
可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。
面向对象的软件复用机制主要有两种:继承和对象组合。
(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。
作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。
作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。
这些面向对象的主要机制是:数据的抽象化、封装和多态性。
通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。
这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。
软件工程第10章(2-06)

6.2.1 域工程的概念与特征
1.域与域工程概念的涵义 域是由一组具有类似用户需求的相关系统所组成 的系统集,它展示了现有各系统的共性、个性和 可重用资源,并为开发相似系统提供了可参照的 模型。域工程则是一组相似或相近系统应用工程 建立基本能力和必备基础的过程,它包括了建立 可重用软件构件的全部活动。一个软件域就是共 享通用的、可控制功能的一组系统或应用程序。
1.域分析概念的涵义
20世纪80年代初,美国软件专家James Neighbors提出了“域分析” 这一概念,他认为“域分析标识一个特定问题域中一类相似系统的对 象和操作的活动”。 域分析是发现和记录某个领域共性和差异的过程,它是软件系统化、 形式化和有效重用的关键。在基于域工程的软件开发中,同一域中的 系统需求和功能必然具有明显的共性,域模型就描述不同软件之间的 共性。域分析的主要任务是以软件重用为目标,针对单个或一族相似 的域,寻找域族中能够为多个目标重用的软部件,并经结构化组织后 放入部件库中。 在域工程中,开发人员的基本任务是对一个域中的所有系统进行处理, 而不是局限于个别系统。 此外,域分析与需求分析有许多相似之处:都是基于应用领域的开发 活动,要用域模型来描述。但是,域分析应具有更广阔的视角,因为 它不仅要服务于当前的项目,还要服务于将来的项目。
6.2.1 域工程的概念与特征
2.域特征 在新软件的设计过程中,有时候很难确定一个可重用软件构件在某种 特定情况下是否确实可用。为了解决这个难题,就必须定义一组可以 被论域中所有软件共享的域特征。域特征定义了被论域中的所有产品 的类属属性。可复用软件的域特征的集合可用{Dp},集合中的每一项 Dpi都表示某特定的域特征,赋给Dpi的值表示一个顺序的等级,它可 分为5个等级,分别表明了该特征对软件制品P的相关性,如下:
软件复用

领域中的复用可分为:横向复用 和纵向复用
横向复用:指复用不同应用领域 中的软件元素,如标准函数库。 纵向复用:指具有较多公共性的 应用领域之间的软件复用。
领域工程的主要任务
领域工程的主要任务就是针对单个或一族相 似的领域,以软件复用为目标,探寻并挖掘 领域或领域族中能够为多个应用软件系统共 用的软件要素,并对它们进行结构化组织, 放入可复用构件库,以备复用。 针对复用的过程模型强调并行的工作方式。 以这种方式,领域工程和基于构件的应用开 发(应用系统工程)同时进行。
领域工程反映了共享的思想,即在相关的应 用之间实现共享。
领域工程主要活动为分析、构造和发布。 领域分析过程是直接基于应用领域的开发活 动,但是领域分析具有比应用分析更广阔的 视角:不仅要服务于当前的应用,而且要从 领域的历史项目中发现这些项目间的异同, 放眼于同类或相似应用领域的未来项目。
在大多数的软件复用中,设计创 建过程的一个重要活动,即界定 潜在的可复用资产。在此活动中 需要一整套的界定方法和确保可 复用资产将被复用的一个体系结 构。这个活动就是领域工程。
领域工程的目的是界定、构造、 分类和发布一组可复用的软件要 素。 从软件工程的观点来看,领域就 是向应用软件提供应用需求的问 象级别更 高,因此它的复用受实现环境的 影响较少,从而使可复用构件被 复用的机会更多,并且所需的修 改更少。
分析的复用 这是比设计结果更高级别的复用, 可复用的分析构件是针对问题域 的某些事物或某些问题的抽象程 度更高的解法,受设计技术及实 现条件的影响很少,所以可复用 的机会更大。
软件复用
O(∩_∩)O谢谢
第10章基于组件开发的软件工程

组件的技术的关键涉及组件做什么、构建交互的规 则、组件存在的环境等。相应的在实现中有各种支撑性 的技术: • 组件模型。研究组件的本质特征及组件间的关系; • 组件描述语言。以组件模型为基础,解决组件的精 确描述、理解和组装问题; • 组件分类与检索。研究组件的分类策略、组织模式 及检索策略,建立组件库系统,支持组件的有效管理。 • 组件复合组装。包括源代码级的组装和基于组件对 象互操作性的运行级组装; • 标准化。包括组件模型的标准化和组件库的标准化; • 软件架构。研究如何快速、可靠的应用可复用组件 进行系统构造的方式,着重于系统的整体结构和组件级 的关联。
通过研究下列问题确定用例:
针对每个参与者系统将完成哪些任务;参与者需要获知系统哪 些情况;参与者是否将外部的变化通知系统;系统要修改和建立哪 些信息,参与者如何参与其中;用例是否需要支持系统的管理和维 护等等。
仅给出用例的名称和简短描述,细化描述放在后面 分析或高层设计阶段。
西安交通大学 刘海岩 22
“业务组件需求”是指对用户有业务价值的需求, 因此该活动就是将用户需求分配给业务组件,即确保 并验证业务组件对用户有价值。
西安交通大学 刘海岩
24
2、 CBSE过程分析与高层设计
用户交互设计 架构选型
界面设计师
架构设计师
业务组件分析 数据模型设计 业务组件设计
产生: 系统架构文档
确定系统架构 服务组件需求
西安交通大学 刘海岩
17
10.3 CBSE过程
下图是Pressman给出的CBSE过程模型。 该模型强调 CBSE过程是一个并行的轨迹: 即领域工程和基于组件的开发并行的发生。 领域工程创建应用领域的模型,该模型作 为软件工程过程中分析用户需求的基础。领域 工程创建的结构模型为应用的设计提供了输入, 建立的可复用组件可被从事组件开发的软件人 员使用。
软件复用知识点总结

1、为什么要复用?软件复用是在软件开发中避免重复劳动的解决方案,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等,将开发的重点集中于应用的特有构成成分。
通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。
2、复用的概念:软件复用是指重复使用“为了复用目的而设计的软件”的过程。
相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用。
3、软件复用的分类:1)依据复用的对象,可以将软件复用分为产品复用和过程复用.•产品复用:指复用已有的软件构件,通过构件集成(组装)得到新系统;•过程复用:指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统.过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊的应用领域.产品复用是目前现实的、主流的途径.2)依据对可复用信息进行复用的方式,可以将软件复用区分为黑盒(Black Box)复用和白盒(White Box)复用.黑盒复用:指对已有构件不需作任何修改,直接进行复用.这是理想的复用方式.白盒复用:指已有构件并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用.而在大多数应用的组装过程中,构件的适应性修改是必需的。
灰盒复用:不允许直接修改构件源代码,但提供了可修改构件行为的扩展语言或编程接口。
可以是基于框架、基于连接子、基于粘连码的复用。
4、如何实现复用:实现复用的基本条件:一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象.5、软件复用包括两个相关过程:可复用软件(构件)的开发和基于可复用软件(构件)的应用系统构造(集成和组装).6、实现软件复用的关键因素:1)软件构件技术:构件是指应用系统中可以明确辨识的构成成分。
计算机软件复用技术论文

计算机软件复用技术论文计算机软件复用技术是一种将已经开发的软件组件和构造进行有效地重新使用的方法。
它是通过构建可重复使用的软件组件库,提供通用的功能和模块,以便在不同的应用中重复使用。
软件复用技术在提高软件质量和降低开发成本方面具有重要的作用。
本文将对计算机软件复用技术进行论述。
计算机软件复用技术有多种方法,包括模块化、面向对象编程和组件化等。
其中,模块化是最早、也是最基本的复用技术。
模块化是将软件系统分解为多个独立的模块,每个模块都完成特定的功能。
这样,当需要一些功能时,只需调用相应的模块即可,而不需要重新编写代码。
通过模块化,可以提高软件的可维护性和可复用性。
面向对象编程是一种基于对象的软件开发方法,也是一种复用技术。
它将软件系统看作是由多个对象组成的,每个对象都包含数据和操作。
通过继承和多态等特性,可以更好地实现软件的复用。
通过面向对象编程,可以将已有的对象实例化并重用,从而减少开发时间和成本。
组件化是一种更高级的复用技术,它将软件划分为可独立部署和可重用的组件。
每个组件都具有特定的功能,并且可以与其他组件进行互操作。
通过组件化,可以将软件系统模块化,并提供一个统一的接口,从而实现更好的复用性和灵活性。
在组件化中,还可以采用现有的第三方组件,以提供额外的功能,从而加快开发速度。
计算机软件复用技术在实际应用中,可以带来多个方面的优势。
首先,它可以提高软件的质量和稳定性。
通过复用已经经过测试和验证的组件,可以减少开发中的错误和缺陷。
其次,它可以加快软件的开发速度。
通过复用已有的组件和模块,可以大大减少开发时间和成本。
同时,它还可以提高软件的可维护性和可扩展性。
当需要增加新的功能时,可以通过增加或替换已有的组件来实现,而不需要重新开发整个软件系统。
然而,计算机软件复用技术也面临一些挑战。
首先,需要建立一个有效的组件库,其中包含高质量和可重用的组件。
这需要大量的工作和资源。
其次,需要设计良好的接口和规范来实现组件之间的互操作。
海南大学研究生835-软件工程原理方法与应用 考试大纲

海南大学硕士研究生入学考试《835软件工程原理方法与应用》考试大纲一、考试性质海南大学硕士研究生入学考试初试科目。
二、考试时间180分钟。
三、考试方式与分值闭卷、笔试。
满分150分。
四、考试内容第一部分软件工程的基本概念第1章绪论软件与软件危机,软件工程,软件开发生命周期,模型,方法,技术,工具,过程,软件工程原理,软件工程环境,软件工程管理,软件开发风险,软件需求,软件设计,软件工具,自顶向下,分解,抽象,细化,模块,模块化,软件复审,软件测试等。
第二部分传统(结构化)软件工程第2章软件生存期与软件过程2.1软件生存周期2.2传统的软件过程2.3软件演化模型2.4形式化方法模型2.5软件可行性研究第3章结构化分析与设计3.1概述(结构化分析的工具与模型组成)3.2结构化系统分析(需求分析的任务、步骤,DFD过程模型)3.3结构化系统设计(软件设计的任务,数据存储的设计,人机交互的设计)3.4模块化设计第二部分面向对象软件工程第4章面向对象与UML4.1面向对象概述4.2UML简介4.3静态建模4.4动态建模4.5物理架构建模4.6UML工具(Rational Rose)第5章需求工程与需求分析*5.1软件需求工程5.2需求分析与建模5.3需求获取的常用方法5.4需求模型5.5软件需求描述5.6需求管理5.7需求建模示例第6章面向对象分析6.1软件分析概述6.2面向对象分析建模6.3面向对象分析示例第7章面向对象设计7.1软件设计概述7.2面向对象设计建模7.3系统架构设计7.4系统元素设计7.5面向对象设计示例第8章编码与测试8.1编码概述8.2编码语言与编码工具8.3编码示例8.4测试的基本概念8.5黑盒测试和白盒测试8.6测试用例设计8.7多模块程序的测试策略8.8面向对象系统的测试第9章软件维护9.1软件维护的种类9.2软件可维护性9.3软件维护的实施9.4软件维护的管理9.5软件配置管理第10章软件复用软件复用的基本概念第11章软件工程管理11.1软件管理的目的和内容11.2项目进度安排第12章软件质量管理软件质量保证、质量认证、可靠性的概念,CMM基本概念,软件质量标准体系。
第10章 软件复用技术(10.3-10.6)

我们能如此开 发软件吗?
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 存根
11软件复用(软件方法)

程软件开发模型及方法计算机与信息学院2010.12程声明•本课件为计算机及信息工程学院2010级硕士研究生课程《软件复用》专用;•本课件为非正式出版物,仅供选课同学参考,不得外传。
如有不当之处,欢迎指正、交流;•在制作本课件的过程中,参阅了大量的学术论文、论著和教材,有些没有一一列举,对它们的作者表示真诚的感谢。
程在大型软件应用系统或特定领域中一族相关的软件应用系统的开发中,如何确定哪些是应以可复用构件形式存在的部分、怎样以一种系统的方式进行处理等问题要比单单写出一个可复用构件要复杂的多,也重要的多,因为这些问题关系到整个应用系统或应用系统族的结构和可维护性,从而影响到软件产品的开发效率和质量。
应用软件复用技术的软件开发方法的研究来解决这个问题.软件——计算机系统中的程序及其文档。
程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。
课程介绍软件复用硕士研究生课程一、软件开发模型二、软件开发方法三、复用驱动的软件开发简介一、软件开发模型软件复用硕士研究生课程软件开发模型是软件开发全部过程、活动和任务的结构框架。
软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件开发工作的基础。
最早出现的软件开发模型是1970年W.Royce提出的瀑布模型,而后随着软件工程学科的发展和软件开发的实践,相继提出了原型模型、演化模型、增量模型、喷泉模型等。
软件复用硕士研究生课程1、瀑布模型分析编码50年代末:二级模型“做什么”“编程-实现”需求分析设计编码测试运行瀑布模型雏型程系统需求软件需求需求分析设计编码测试运行1970年,W.Royce 将雏型进一步精化其中:每一阶段具有以下特征:∙从上一阶段接受工作对象,即输入;∙对这一输入实施本阶段的工作∙给出本阶段的结果作为输出。
程系统需求软件需求需求分析设计编码测试运行瀑布模型∙活动如瀑布流水式的组织∙规定每一活动的工作对象和输出∙评审、确认和反馈特点软件复用硕士研究生课程•支持开发结构化软件•阶段的顺序性和依赖性•为软件开发和维护提供有效的管理模式,质量保证•特点:适用于小型系统的开发,不够灵活,不适合需求模糊的系统问题:无法通过开发活动澄清本来不确切的软件需求维护、甚至返工的代价由于顺序固定,前期阶段工作造成差错,越到后期造成的损失越大。
第10章软件复用与构件技术.ppt

10.2.2 软件构件的组织
对收集和开发的软件构件进行分类,并放入可服用构件库的 适当位置。可服用构件库组织应当便于存储和检索,要求如 下:
(1)支持构件库的各种维护操作。增、删、更新构件库的操 作应当不影响构件库的结构。 (2)不仅能支持精确匹配,还应支持相似构件的查询。 (3)不仅能进行简单的语法匹配,而且能查找在功能、行为 上等价或相似的构件。 (4)对应用领域(族)有较强的描述能力和较好的描述精确 度。 (5)便于构件库管理员和用户的使用。 (6)具备自动化的潜力。
为了重用的设计同样要求软件工程师应用已有的设计概念 和原理,但是,也必须考虑应用领域的特征,特别是应该考 虑下述的一系列关键问题。
(1)标准数据。 (2)标准接口协议。 (3)程序模板。
10.2.1开发可复用的软件构件
当重用在应用系统开发中占据主导地位时,就把这样的开发 方法称为基于构件的开发或构件软件。领域工程为基于构件 的开发提供了所需要的可重用构件库,这些可重用的构件中 的一部分是内部开发的,另一部分是从现有的应用系统中抽 取出来的,还有一部分是从第三方获取的。
(3)体系结构:某些应用软件的体系结构往往非常相似,因此 有可能创建一组公共的体系结构模板(如,事务处理体系结 构),并将那些模板作为可复用的设计框架。
(4)需求模型和规约:类和对象模型及其规约是明显的复用候 选者,此外,用传统软件工程方法开发的分析模型(如数据 流图)也是可复用的。
10.1.1 软件复用的定义
对象连接与嵌入(OLE)是COM的一部分,其定义了可重用构 件的标准结构。OLE已经成象语言,因此JavaBean标准比较简洁 、完备。JavaBean具有下述特点。 · 构件模型比较完备。 · 仅支持Java语言。 · 构件运行环境主要由Sun公司提供,其他厂商也可提供运行环 境具较多(例如,Visual Cafe,Visual Age for Java等)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编码与测试
中南大学医药信息系
软件复用的困难
复用具有许多明显的优点,但目前应用不广泛的主要原因是: (1)技术因素
构件与应用系统之间的差异; 构件要达到一定的规模,才能支持有效的复用; 发现合用构件的困难; 基于复用的软件开发方法和软件过程需要一些新的理论、技 术及支持环境。
(2)人的因素 喜欢自己创造而不喜欢使用别人的东西。
(2)构件检索
构件库中检索一个构件和在数据库中检索一个记录是不同 的。
构件库检索的不确定性带来两种相互矛盾的结果:检索的 结果可能是一个较大的构件集合,要从中找到所需的构件仍然 很费力;检索得到的集合没有把真正需要的构件包括在内。
解决方法:
(一)一般构件库系统能对提出的检索条件作广义解释。 建立同义词对照表,例如“商品销售”、“售货”、“卖
应用 软件
构件工程
测试
2. 软件复用的措施
软件复用的重要性
目的:能更快、更好、成本更低地生产软件产品。
实现软件复用应优先采取的措施:
建立支持复用的基础设施(如构件库)。 培训工程师和管理者使用复用软件。 采用促进软件复用的开发方法(如面向对象的开发
方法)。 企业内部采取激励措施。
管理信息系统
第10章 软件复用
中南大学医药信息系
主要内容
1. 软件复用的基本概念 2. 领域工程 3. 基于构件的软件开发 4. 面向对象与软件复用
编码与测试
中南大学医药信息系
10.1 软件复用的基本概念
1. 软件复用的定义
Freeman (1983年) : “在构造新的软件系统过程中,对已存在的软件
输入信息
技术文献 已有应用 专家经验/建议 当前与未来的需求
领域分析
输出信息
领域语言 复用标准 分类方法 功能/行为模型
领域分析的输入和输出
领域分析不是针对某个特定的软件系统,而是针对一类软 件系统的共同的特征、知识和需求。比需求分析更一般、更抽 象、更广泛的特征。
3. 开发可复用构件
(1)单个构件的特征 ①通用性 ②可变性
编码与测试
中南大学医药信息系
2) CORBA(Common Object Request Broker Achitecture)公共对象请求代理体 系结构
CORBA是对象管理组织于1991年发布的一种基 于分布对象技术的公共对象请求代理体系结构, 其目的是在分布式环境下,建立一个基于对象 技术的体系结构和一组规范,实现应用的集成, 使组件在异构环境中可以复用、移植和互操作。
这个阶段的主要任务是获得“领域模型”,领域模 型的需求描述为“领域需求”。
根据领域需求,领域工程师寻找领域的共性,进而 确定软件的可复用构件。
编码与测试
中南大学医药信息系
领域分析(Domain Analysis)是对一类应用系统的 共同应用领域进行系统化分析,以发现该领域 的共同知识、需求及其应用系统的共同特征。
素,如标准函数库。 纵向复用:指具有较多公共性的应用领域之
间的软件复用。 纵向复用的领域工程实施的活动:
① 实施领域分析 ② 开发可复用的构件 ③ 建立可复用构件库
编码与测试
中南大学医药信息系
2. 实施领域分析 领域分析是在特定应用领域寻找最优复用的过程,
它以公共对象、类、子集合和框架等形式进行标 识,然后对它们进行分析和规约。
一个刻面描述构件某一个方面的特征。刻面分类则是从不 同的侧面对构件进行分类,每一种分类方式称为一个刻面。不 同的刻面根据其重要性可以设置不同的优先级。
刻面 应用领域
对象 功能 编程语言
刻面值 图形用户界面编程
菜单 动态修改菜单项
JAVA
对构件的每个刻面赋予相应的值,用以描述该构件。刻面 分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类 比枚举分类更易于扩展和修改。
特点:① 复用程度高
② 前期投入大
编码与测试
中南大学医药信息系
10.2 领域工程
领域:是一组具有相似或相近软件需
求的应用系统所覆盖的区域。
编码与测试
中南大学医药信息系
10.2 领域工程
1、横向复用和纵向复用 领域中的复用可分为:横向复用和纵向复用 横向复用:指复用不同应用领域中的软件元
为领域中的所有构件定义一组属性,然后赋 给这组属性一组值。通过属性,查找构件。
• 属性-值分类对可使用的属性数量没有限制, 而呈面分类限定不超过7或8个。
• 属性-值分类中的属性没有优先级,而呈面 可以区分优先级。
• 属性-值分类不具有同义词功能,而呈面可 以查找相关的同义词。
编码与测试
中南大学医药信息系
10.3 基于构件的软件开发
CBSD改变了软件的生产方式,提高了软件生 产的效率和质量
1. 构件集成模型
适应性修改
查询 构件理解 构件库
复合
新系统
图10.5 把库中的构件集成到应用系统中
编码与测试
中南大学医药信息系
2. 应用系统工程
ASE(Application System Engineering) 通过复用构件系统开发某个特定应用系统的构件工
货”看作一组同义词; 建立近意词对照表,例如把“商业”、“商场”、“连锁
店”看作一组近意词。 系统首先匹配同义词,再匹配近意词,都可以被包括到广
义结果集合中。
(二)使检索得到的构件集合尽可能不包括对用户无用的构件。 增加更多的刻面与构件属性:较多的刻面和属性值,将得
到更小的子集合文集,减轻最终发现和确认所需构件的难度; 建立构件关键词:根据构件内容提炼关键词,如同学术论
文的关键词,反映有关构件内容的一些主要信息。 例如,找功能构件的关键词有“压入”、“弹出”、“后
进先出”等等。如果通过刻面和构件属性得到的构件子集较大, 可用关键词作进一步的检索,以缩小搜索范围。
改进构件检索的其它措施: (1)记录用户使用构件库的经验,并根据这些经验改经构
件检索系统; (2)对每个构件给出一段文字的简要介绍; (3)提供较强的人机对话功能; (4)引导用户对自己需求的表达不断精化。
(3)几种流行的构件技术
1) COM(Component Object Model)
OLE(Object Linking and Embedding) 组件对象模型技术
COM是Microsoft公司开发的一种构件对象模型,它 提供了使用不同厂商生产的对象的规约。任何人都可 以按此标准独立地开发组件和增值组件,或由若干组 件组建集成软件。
构件库系统应提供的主要功能:构件的存储、管理、检 索以及库的浏览与维护等。
关键是支持使用者高效而准确地发现所需的可复用构件。 相关的主要技术是分类方法和检索方法。
支持方便的、友好的用户管理和使用界面。
涉及两个基本问题:
构件分类
构件检索
(1)构件的分类
大多数的构件分类模式可以归纳为以下三种类型: 1)枚举分类
编码与测试
中南大学医药信息系
3) OpenDoc开放式文档接口
OpenDoc是IBM、Apple、Novell等公 司推出的关于复合文档和构件软件的标 准。
编码与测试
中南大学医药信息系
4. 建立可复用构件库
构件库(Component Library)用于对可复用构件进行存 储和管理。它是支持软件复用的必要设施。构件库必须有大 量的可复用构件。
人工制品的使用技术。” 开发伴随复用,开发为了复用
制造软件构件技术——领域工程 使用软件构件技术——基于构件的软件开发
编码与测试
中南大学医药信息系
领域 工程 领域分析
软件结构开发
可重用构件开发
领域模型
结构模型
可复用 构件库
基于构件 的开发
分析
结构设计
构件选用 构件调整 构件组合
构件更新
通过定义一个层次结构来对构件进行分类。构件库中的可 复用构件按照某种标准被分成了若干个大类,而每个大类中的 构件再被划分成若干个小类,依此类推,这样就形成了一个构 件分类的层次结构,
图形用户界面类
窗口类
菜单类
文字窗 口构件
图形窗 口构件
弹出式菜 单构件
枚举分类的层次结构
普通菜 单构件
系统菜 单构件
2)刻面分类
每个刻面把构件集合划分为一个子集,各刻面所划分的子集 形成一些较小的交集。
一个构件对每个刻面有一个刻面值,例如:
应用领域 = 计算机绘图
对象 = 椭圆
功能 = 彩色填充,
编程语言 = C++
检索一个构件时,给出一组刻面值,将确定一组 子集合,构件应该在这些子结合的交集中,从其中确 认所需的构件就比较容易。
该方法首先是为构件库中的所有构件定义一组属性,并赋 予相应的属性值。开发人员通过指定一组属性值在构件库中对 构件进行检索。
刻面分类法(Faceted Classification):
支持多重观点对构件进行分类,例如从构件的应用领域、构 件所描述的对象、构件的观点和编程语言等不同的方式来分类。
每一种分类方式称为一个刻面。
在建造构件时,应该提供构件的特化和调整机制。
③易组装性
• 构件的组装分为同构件的组装和异构件的组装。 • 构件应有良好的封装性和良好的接口。 • 构件间应有松散的耦合度 • 应提供便于组装的机制
编码与测试
中南大学医药信息系
(2)领域构件的特征
①标准数据 ② 标准接口协议 ③程序模板
编码与测试
中南大学医药信息系
类的分析领Leabharlann 复用标准域知
功能模型
识
需求规约
模
型
⑴ 选择特定的领域 ⑵ 抽取具有最优复用的功能 ⑶ 标识该功能 ⑷ 建立领域分析模型 ⑸ 定义需求规约,得到由需求规约构件和子配置构成的领域模型