当前位置:文档之家› 河海大学研究生课程【软件复用技术】04复用驱动的软件工程(五)

河海大学研究生课程【软件复用技术】04复用驱动的软件工程(五)

软件复用硕士研究生课程

复用驱动的软件工程

计算机与信息学院

软件复用硕士研究生课程

声明

软件复用硕士研究生课程

一、复用驱动的软件工程业务(Business)

二、复用要从经济方面考虑

三、RSEB的业务特征

四、结构组件与应用系统

五、软件工程过程

六、建立与管理复用业务

一、复用驱动的软件工程业务

软件复用硕士研究生课程

?Reuse-Driven Software Engineering is a

Business

–What does this mean?

–15% of software projects fail to deliver anything

(Demarco, 1992)

从单一项目的开发转向基于复用的开发,会极大地

提高公司所面临的复杂性。新机构不得不被软件

复用牵引,复用必须作为业务(Business)运作。

软件复用硕士研究生课程

?软件公司(Organizations)面临的压力:

–Reduce time to market

–Reduce the cost of the product

–Improve the productivity of the organization

–Improve the predictability of the process

–Increase the reliability of the products

–Increase the quality of the product

软件复用硕士研究生课程

?你不一定需要Reuse business:

–You construct small programs

–You construct programs with limited

similarity to other programs

–You are buried in an organization without

much hope for software process improvement

二、复用要从经济方面考虑

软件复用硕士研究生课程

1、简单估计复用成本

(1)开发典型应用系统成本是:

C

=开发没有复用的典型应用系统成本

无复用

(2)引入复用,从一组组件系统导入软件的某部分R 复用率R=被复用组件的规模/应用系统规模

(3)复用会比完全从零开发成本低

F

=复用一个组件的相对成本

使用

一般为0.1~0.25, 取0.2做默认值。

通过复用开发应用系统成本由两部分:采用复用开发成本R;

不采用复用开发成本(1-R)

软件复用

硕士研究生课程(4)简单估算:

C 采用复用开发部分=C 无复用*(R*F 使用)

C 没有复用开发部分=C 无复用*(1-R )

采用复用的总成本:

C 采用复用= C 采用复用开发部分+ C 没有复用开发部分

= C 无复用*(R*F 使用+ (1-R ))

例子

R=50% F 使用=0.2, 则采用复用开发应用系统为不采用的成本的60%

软件复用

硕士研究生课程(5)由复用导致的成本节约:

C 节约=C 无复用—C 采用复用

= C 无复用(1-(R*F 使用+(1-R)))

= C 无复用* R* (1-F 使用)

由于组件复用产生的相对开发成本—效益(ROI)为:

ROI 节约=C 节约/C 无复用= R* (1-F 使用)

例子

如果R=50%, F 使用=0.2, 则ROI 节约为40%

软件复用硕士研究生课程

(6)考虑开发组件系统集合的成本

F

创建

=创建并管理可复用组件系统的相对成本

(F创建要大于一般应用系统的开发成本)

C

组件系统

=开发供以复用率R复用的足够的组件系统的成本

=R* F

创建*C无复用

F

创建要比F

使用

大。Poulin(1996)*通过12个例子,提出

默认值F

创建=1.5(1~2.5), F

使用

=0.2(0.03~0.4)

软件复用硕士研究生课程如果系列中有n 个应用系统,则这个应用系统系列的成本节约为:

C 系列节约=n*C 节约—C 组件系统

= C 无复用(n*R*(1-F 使用)-R* F 使用)

创建组件集合的投资回报为:

ROI= C 系列节约/ C 组件系统

=(n*R*(1-F 使用)-R* F 创建)/(R* F 创建)

= n* (1-F 使用)-F 创建)/F 创建

例子

如果F 使用=0.2 F 创建=1.5 则可以得到:

ROI=(n*0.8-1.5)/1.5 当n>2时,可以赚回成本。

软件复用硕士研究生课程

2、复用驱动的软件工程业务(RSEB)目标

–面向业务(Business Orientation)

–面向工程(Engineering Orientation)

–技术序列(Technical Sequence)

–业务流程再工程(Business Process

Reengineering)

软件复用硕士研究生课程

(1)面向业务(Business Orientation)

?Cost effective

?Time to market

?Etc.,

软件复用硕士研究生课程

(2)面向工程Engineering Orientation

对将要开发的应用系统进行结构设

计,领域分析,分解出可复用组件….

?Domain emphasis

?OOSE (Object Oriented Software Engineering)

?COSE (Component Oriented Software Engineering)

软件复用硕士研究生课程

(3)技术序列Technical Sequence

?Series of OOSE Models

–Architecture

–Analysis

–Design

–Test

–Code

?Structure is traceable through these models

软件复用硕士研究生课程

(4)业务流程再工程(Business Process

Reengineering

?将OO技术应用到建模和这些业务过程的转换

中,以便使用系统化的工程方法,然后,这些业

务过程模型会导致使用OOSE的业务信息系统的

更自然、更有效的实现。

?OOBE (object oriented Business Engineering)

三、RSEB的业务特征

软件复用硕士研究生课程

–定义完备的客户和财务目标;

–复用业务必须由高级管理层以一般的业务方

式控制;

–大量的前期工作超出单个应用系统

–第一年投资和成本很高,第二年初步收益降

低了积累成本,到第四年开始获利。更多情

况下第三年可以获利

软件复用硕士研究生课程

?对预期的市场情况需要引进风险管理技

术;

?也可以不开发体系结构和构件系统,直

接集成已有的产品。

四、结构组件与应用系统

软件复用硕士研究生课程

1、结构组件与应用系统对于复用是非常重

要的

–从构件系统到应用系统的观点

–一组层次结构

软件复用硕士研究生课程?从构件系统到应用系统的观点:在软件开发的每个阶段,从需求获取到编码,开发人员都要通过组件系统设计应用系统。Application

System 1Application System

Engineering

Application System 2Application System 3

Component

System 1Component

System 2

浅谈软件复用技术及其应用

浅谈软件复用技术及其应用___________________________________________________________ ____________________ 【摘要】随着企业信息化建设的不断深入,集团公司多个烟厂生产指挥系统建设将相继展开。在企业中充分运用软件复用技术,不仅可以规范企业的业务流程,进而对企业的业务过程进行优化重组,而且构建可复用的软件系统本身就是企业非常重要的知识库和规则库,可以成为指导企业实施和扩展管理信息系统的模型。在深入分析企业需求基础上建立可复用的企业业务模型可以在最大程度上提高企业实施ERP的成功率,降低信息化投资的成本,缩短建设周期。所以大力发展并推广软件复用技术对于促进集团化规模下的多个烟厂信息化建设有重要的现实意义。【关键词】软件复用模块化生产指挥系统___________________________________________________________ ____________________ 1 软件复用技术概述 1.1 软件复用技术的概念大多数情况下所讨论的软件可复用性指软件本身的可重用性,即软件代码实现的可重用性。而实际上,软件复用远不止这些,软件开发的全生命周期都有可重用的价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例都是可以被重复利用或借鉴的有效资源。软件较强的可复用一直是软件工程所追求的目标之一,软件工程界希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特定的应用系统。事实上,这种努力也取得了

软件复用指南-模板1

XXX有限公司软件复用指南

*变化状态:A——增加,M——修改,D——删除

1.目的 指导项目组选择设计指南。 2.适用范围 适用于公司软件开发的设计过程。 3.裁减指南 本过程文件中的过程裁减应依据《组织标准过程裁减指南》的规定。 4.参考文件 本过程文件的编写依据是美国软件工程研究院(SEI)的集成成熟度模型软件分支1.1版本(CMMI-SW V1.1)。 5.术语和缩写 复用:就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。 6.职责

7.软件复用的特点和现状 软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。 目前及近期的未来最有可能产生显著效益的复用是对软件生命周期中一些主要开发阶段的软件制品的复用,按抽象程度的高低,可以划分为如下的复用级别: (1)代码的复用 包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接(Link)、绑定(BI n DI ng) 等功能来支持这种复用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。想大规模的实现源程序的复用只有依靠含有大量可复用构件的构件库。如”对象链接及嵌入”(OLE)技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独立的可复用构件,能够在运行时被灵活的得新组合为各种不同的应用。 (2)设计的复用 设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。

软件复用技术

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

软件的复用技术及开发方法

软件的复用技术及开发方法 软件的复用技术及开发方法 2.1软件的复用技术 软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。软件复用包括构造可复用软件和用可复用软件进行构造。构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。 Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。设计层软件复用是指对已有的软件系统的设计信息进行复用。而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。 面向对象的软件复用机制主要有两种:继承和对象组合。 (1)继承 继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。这些面向对象的主要机制是:数据的抽象化、封装和多态性。通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。换言之,复用的焦点发生了“倒转”。发生复用焦点的倒转并不是因为实现细节的复用并不重要,而是因为这些细节上的复用己经做的很好了,并且这种复用在提高复用性的同时提高了软件的可维护性。由于继承关系直接继承的是接口,同时也继承实现,因而实际上父类的内部实现对子类而言是可见的,属于白盒复用方式。 (2)对象的组合 对象组合是指新的复杂功能可以通过组装或组合对象来获得。这种复杂的功能由对象组合来获得的设计思想与过程化程序设计思想是相似的,在过程化程序设计中,一个复杂的功能模块可以分解为更细小的和更简单的功能模块,整体功能是各个局部功能的聚集。在面向对象系统中,系统是由对象构成,因此复杂的功能或者说能完成更复杂功能的对象,可以通过功能较简单的对象的组装或组合来实现。对象组合方式是从整体与局部的角度来考虑软件复用思想的。 对象组合要求对象具有良好的接口定义,使用对象的接口来使用对象的功能,并往往运用赋值多态来获得具体对象,对象的内部功能是不可见的,对象只以“黑盒”的形式出现,属于黑盒复用方式。

软件复用与构件技术简介

软件复用与构件技术简介
李 戈
北京大学 信息科学技术学院 软件研究所 2008年10月16日

北京第三届优秀软件构件评选
支持单位: 北京市科学技术委员会 主办: 北京软件行业协会 北京软件与信息服务业促进中心 北京软件产业基地公共技术支撑体系 承办: 北京软件产品质量检测检验中心 北京大学

北京第三届优秀软件构件评选
z
提升北京市软件企业的核心竞争力 –帮助企业提高软件开发技术与研发能力,提 高软件开发效率,降低软件开发成本 推动以企业为主体、产学研相结合的技术创新体 系的建设 促进北京软件产业的变革,使软件产业走上工程 化、工业化的发展轨道
z
z

软件企业的现状与问题
z
现状:
– 软件系统的规模和复杂度不断提高 – 对生产效率和产品质量的要求不断提高
z
问题 问题:
– 如何提高软件生产的效率? – 如何掌控软件产品的质量? – 生产效率 与 产品质量 怎可得兼?

为什么需要软件复用
z
应用软件系统的一般开发模式
设计 实现 测试 运行
需求分析
z
基本特征:应用系统的开发总是从头开始
– 每个应用系统的开发均涉及大量的重复劳动
? ? ? ? ?
用户需求获取的重复 需求分析、设计的重复 编码实现的重复 测试工作的重复 文档工作的重复

为什么需要软件复用
z
应用系统的构成成分分类
– 探讨应用系统的本质,其构成成分可分为:
? ? ?
特定于计算机系统的构成成分 应用系统所属领域的共性构成成分 每个应用系统的特有构成成分
系统专用的构成成分 软件系统的 构成成分 领域共用的构成成分 通用的系统构成成分

软件复用技术

软件复用技术 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

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

基于构件的软件复用技术研究与应用实践

基于构件的软件复用技术研究与应用实践 基于构件的软件复用技术研究 谷今杰莫继红 ((湖南大学软件学院,长沙410082) 通常情况下.应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、测试、维护等。当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复、需求分析、编码、测试的重复和文档等。探讨应用系统的本质,发现其中通常包含:①通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中;②领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;③应用专用构件:是每个应用系统的特有构成成分。应用系统开发中重复劳动主要在于前两类构成成分的重复开发。 软件复用是在软件开发中避免重复劳动的解决方案。其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等.从而将开发的重点集中于应用的特有构成成分。 通过软件复用,在应用系统开发中可以充分利用已有的开发成果.消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率:同时,通过复用高质量的已有开发成果时,避免了重新开发可能引入的错误,从而提高软件的质量。 软件复用指重复使用“为了复用目的而设计的软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件。与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统中的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用。真正的复用是为了支持软件,使用“为复用而开发的软件(构件)”来更快、更好地开发新的应用系统。 复用技术在整体上对软件产业的影响却并不尽如意。这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因。近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。软件复用研究重新成为热点。被视为解决软件危机。提高软件生产效率和质量的现实可行途径。 (复用分类)软件复用可以从多个角度进行考察。依据复用的对象,可以将软件复用分为产品复用和过程复用。产品复用指复用已有的软件构件.通过构件集成(组装)得到新系统。过程复用指复用已有的软件开发过程.使用可复用的应用生成器来自动或半自动地生成所需系统。过程复用依赖于软件自动化技术的发展,目前只适应于一些特殊的应用领域。产品复用是目前现实的、主流的途径。 依据对可复用信息进行复用的方式。可以将软件复用区分为黑盒(Black—box)复用和白盒(White—box)复用。黑盒复用指对已有构件不需作任何修改,直接进行复用。这是理想的复用方式。白盒复用指已有构件并不能完全符合用户的需求。需要根据用户需求进行适应性修改后才使用。而在大多数应用的组装过程中,构件适应性修改是必需的。 软件复用按抽象程度的高低, 可以划分为如下的复用级别: (1) 代码的复用, 包括目标代码和源代码的复用。当前大部分编程语言的运行支持系统都提供了连接(L ink) 、绑定(Binding) 等功能来支持这种复用; ( 2) 设计的复用, 设计结果比源程序的抽象级别更高, 因此它的复用受到实现环境的影响较少, 从而使可复用构件被复用的机会更多, 并且所需的修改更少; (3) 分析的 复用, 可复用的分析成分是针对问题域的某些事物(问题) 的抽象程度更高的解法。

浅谈软件复用技术的四个关键问题

浅谈软件复用技术的四个关键问题 [摘要]软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。60年代出现的软件危机导致了有关软件复用的研究。软件复用是指重复使用“为了复用目的而设计的软件”的过程。通过软件复用,在应用系统开发中可以充分利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率。同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 [关键词]软件复用技术软件危机软件复用 一、引言 软件复用的概念是由McI1roy在1968年的NATO软件工程会议上提出的。McI1roy提出了发展以可复用源代码软件构件为基础的软件工业和利用COTS (Component Off The Shelf)构件工业化生产软件的观点。软件复用被认为是解决所谓“软件危机”的技术上可行的、现实的解决方案。软件复用的对象包括软件开发过程中所使用和产生的各种资源:源代码、各种文档、测试数据、设计方法、体系结构等等,总称可复用构件。软件复用是为了改善软件生产的资金投入大、开发周期长、软件产品失败率高等不能满足市场需求的现状,充分利用已有的高质量软件产品和部件,经过组装集成快速搭建应用软件系统的软件开发理论。经历了结构化程序设计、面向对象技术、软件构件技术的发展,软件复用已经成为加速软件工业化早日实现的重要力量。 二、面向对象技术 面向对象技术提供了新的认知和表示世界的思想和方法。面向对象方法就是用对象来作为描写客观信息的基本单元,它包括封装在一起的对象标识、对象属性和对象操作。面向对象技术是以对象为基础来构件系统的,可以通过一个指向对象的指针或对它的引用,就可以访问这个对象的所有数据和方法,用面向对象技术建造起来的系统不仅易于管理和使用,而且源代码的可读性高。如果没有对象,在程序中必须保存大量的变量和一个个孤立的函数,然后在这些没有多大关连的变量和函数之间进行变量传递,这不仅给编程增加了很大的复杂性,而且使得程序的可读性极差。通过把这些有关连的变量和函数封装在一个对象中,大大的简化了编程的复杂性,提高了程序可读性,并且提供了一种抽象,该抽象是可扩展性的关键。正是因为面向对象技术的特点,封装和继承使得面向对象技术成为了软构件技术的基础。 面向对象技术具有以下一些特性能够使它和软件复用相结合: (一)对象是可重用构件的雏形,面向对象技术中,对象(类)已经充当了构成系统的基本单元,由于它的一系列特有的性质,使它具有了可重用构件的雏形;

NATO软件复用标准

NATO软件复用标准简介 摘要 实践证明,软件复用可以有效地提高软件的质量和生产率,它包括开发可复用软件构件和基于可复用构件的开发两个生命周期。在这两个生命周期中,采用一个适当的标准以识别和开发可复用软件将大大促进软件复用的实践。为此,NATO(北大西洋公约组织)制定了一整套软件复用的指导性标准,以帮助NATO及其参与国和承包商的项目管理部门进行有效的软件复用。这套标准包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别从软件生命周期的各个阶段对软件复用进行了指导和帮助。 关键词:NATO,软件复用,可复用构件开发,构件库管理,复用过程 一、前言 1.背景与目的 自从McIlroy在1968年的NATO软件工程会议上正式提出软件复用的概念以来,软件复用已有了近三十年的发展历程,复用的对象也从早期的代码复用扩展到对软件开发过程中一切有价值的信息的复用,包括需求、需求规约、设计、源代码、测试计划和测试案例等。近三十年的实践证明,软件复用可以有效地提高软件的质量和生产率,是解决当前“软件危机”的一条比较现实可行的途径。 软件复用包括开发可复用软件构件和基于可复用构件的开发两个生命周期。在这两个生命周期中,采用一个适当的标准以识别和开发可复用软件将大大促进软件复用的实践。为此,NATO(北大西洋公约组织)制定了一整套软件复用的指导性标准,以帮助NATO及其参与国和承包商的项目管理部门进行有效的软件复用。这套标准包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别从软件生命周期的各个阶段对软件复用进行指导,以便最大限度地减少复用代价和增加复用收益。 青鸟工程是国家“九五”重点科技攻关项目,其中研究的主要内容之一便是软件复用和软件构件技术。为了吸收和利用国外软件复用的最新研究成果,我们对国际上相关研究和实践工作进行了深入分析,以期能拓宽思路,取长补短,使我们的工作能和国际主流接轨。本文便是对NATO软件复用标准的总结和介绍,希望能为国内相关工作的进展和相关的软件从业人员起到一个借鉴和参考的作用。 2.本文的组织 本文的第二章介绍了NATO标准中出现的一些复用的基本概念,以便使读者能对NATO的软件复用框架有一个大致的了解。第三章是NATO的可复用构件开发标准,它的目的是为创建具有最大

软件复用

第十章软件复用 10.1软件复用概述 10.1.1 软件复用目的 软件复用使得应用系统的开发不再采用一切从“零”开始的模式,可以充分利用过去应用系统开发中积累的知识和经验,从而可以高效、高质地开发和维护软件系统,主要表现在以下几个方面: 1、缩短软件开发和维护的时间; 2、降低软件开发和维护的成本; 3、保证软件的可靠性; 4、保证软件的一致性; 5、保护投资者的利益。 10.1.2 软件复用的类型 软件复用可以分为横向复用和纵向复用两种类型。横向复用是指复用不同应用领域中的软件成份,如数据结构、算法、人机界面构件等。纵向复用活动的关键在于领域分析:根据应用领域的特征和相似性,预测软件成份的可复用性。一旦确认了软件成份的可复用价值,便进行开发,然后将开发得到的软件制品存入可复用构件库,供未来开发项目使用。 10.1.3 软件复用的内容 软件复用的内容,除了源程序代码外,还有许多其它软件制品,甚至特定的分析建模方法、检查技术、质量保证过程等,均可以被复用。C.Jones定义了10种可能复用的软件制品: (1)项目计划:软件项目计划的基本结构和许多内容,如SQA计划,均可以跨项目复用。 (2)成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。 (3)体系结构:即使应用论域千差万别,但程序和数据的体系结构很少有截然不同的情形。因此,有可能创建一组类属的体系结构模板,如事务处理结构,将这些模板作为可复用涉及的框架。 (4)需求模型和规格说明:数据流图、类模型等均可以复用。 (5)设计:系统和对象设计等是常见的复用成份。 (6)源代码 (7)用户文档和技术文档:即使特定的应用不同,也有可能复用用户文档和技术文档中的大部分内容。 (8)用户界面:用户界面可能是最广泛地被复用的软件制品。由于它可能占一个应用软件的60%的代码量,所以复用的效果最明显。 (9)数据:在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。 (10)测试用例:一旦设计或代码被复用,相关的测试用例应该“附属于”它们。

软件复用与基于面向对象框架的软件开发方法

收稿日期:!""#$"%$"!;修订日期:!""#$"&$!’ 作者简介:王丽娟(()&&$),女,河南省周口市人,河南农业大学副教授,主要从事计算机理论教学及应用研究* 文章编号:(&+($&,##(!""#)"#$""!%$"’ 软件复用与基于面向对象框架的软件开发方法 王丽娟(,孙西超!,底松茂#,王哲光(,冯志慧(,刘 倩( ((-河南农业大学现代教育部,河南郑州%’"""!;!*河南农业大学财务处,河南郑州%’"""!;#*郑州大 学财务处,河南郑州%’"""!)摘 要:介绍了软件复用的基本概念和意义,分析了框架的特征以及它与类库、组件、设计模式等常用 的面向对象复用技术(./0)的联系,给出了基于框架的软件开发方法的开发过程-首先进行领域分析即在给定的领域中,通过分析找出对所有应用程序来说明共同的类和对象,建立领域模型;其次,结合领域分析,给出系统需求说明书;第三步是框架设计,通过对应用程序进行分析和设计,得到应用程序在该领域的特殊要求,从而扩展框架来实现该应用程序;最后是软件的测试-目前./0的研究更多的集中于特定的领域如制造业、银行业、卫生系统等-在开发方法上,将较多的采用黑盒框架,在框架集成方面,更注重将框架与类库,组件和设计模式等联合在一起使用,更注重对框架继承性的研究-关键词:软件复用;面向对象;框架;组件;设计模式中图分类号:12#"( 文献标识码:3 "引言 目前计算机技术的飞速发展使得软件开发的环境日益复杂,应用软件需要具有开放的系统结构和跨越多个异构平台的能力,这样就导致在应用系统中的软件越来越庞大,传统的开发技术已远远不能满足需要,在这种情况下,有关软件复用的研究也就应运而生了-软件复用是软件工程中具有很高前瞻性的研究领域,面向对象的软件复用技术是软件复用的一种重要方式,基于面向对象框架的软件开发技术./0(.4567$894:6;<9=06>6?<@:6AB )是一种面向特定领域的复用技术,随着面向对象技术的成熟,面向对象框架的软件开发被认为是一种最有前途的提高软件重用度和软件生网络产力的面向对象技术-该方法对特定领域复杂系统的高可靠专用软件具有很高的实用价值,为特定领域的软件开 发提供了一种强有力的技术支持[(]- (软件复用的概念和意义 软件复用是指重复使用“为了复用目的而设 计的软件”的过程,而可复用软件则是指为了复用目的而设计的软件,是指在开发新的应用系统时重复使用以前的资源,如设计、代码、文档等-软件 复用更强调的是复用的目的,它是一种系统化的方法,为了复用而进行设计,为了复用而开发,并且要有效地组织和管理这些复用产品,方便人们查找和使用,从而提高系统开发效率及软件质量-软件复用一定要有软件开发的积累,有了一定的积累后才能进行软件复用-总的来说,软件复用有三个基本问题:一是必须有可复用的对象,二是可复用的对象必须是有用的,三是使用者知道如何去使用被复用的对象-软件复用还包括两个相关的过程,即可复用软件的开发和可复用软件的应用系统的构造-解决好这几方面的问题,才能实现 真正意义上的软件复用[!] -软件复用通常可分为两类:产品复用和过程 复用-产品复用指对软件开发过程中生成的各种产品(需求规约、设计、程序、测试计划和数据等)构件的复用,涉及可复用构件的建造及可复用构件的使用两个方面,通过专业性的构件开发和基于构件复用的系统集成实现软件的工业化生产-过程复用指通过采用自动化技术,通过生成或变换,自动生成最终所需的系统,完全通用的过程复用意味着软件生产的自动化,当前过程复用的实践大多和领域相关,如特定领域的应用生成器等-过程复用是非常理想的软件复用方式,成为主要 的研究课题[!]- !""#年)月第!%卷第#期郑州大学学报(工学版) C695JBK (LAGJA669JAG MNJ6AN6)M6@*!""# O

软件复用课后题

1软件复用与传统软件开发的重用的差异? 软件复用是指重复使用“为了复用目的而设计的软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用 1 分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装) ,其中,构件是核心和基础,“复用”是必需的手段. 2软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因 2影响软件可复用性的因素 软件构件技术(Software component technology) 领域工程(Domain Engineering) 软件构架(Software Architecture) 软件再工程(Software Reengineering) 开放系统(Open system) 软件过程(Software Process) CASE技术等以及各种非技术因素。 3、什么是领域工程?领域工程对软件复用的影响表现在那些方面? 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动.领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域领域工程包括三个主要的阶段. (1)领域分析 (2)领域设计 (3)领域实现 领域工程作为软件复用的核心技术之一 其主要目的是实现对特定领域中可复用成分的分析、生产和管理。领域工程的萌芽最早可以追溯到帕尔纳斯 Parnas 在1976年提出的“程序家族 Program Family ”的概念[12]。其基本思想是把一组具有显著共性的程序作为一个整体/家族并对其共性进行分析 其动机则是为了简化一组相似程序的开发和维护。后来提出出了“领域分析”的概念[11] 用来指代“识别特定问题域中一组相似系统所包含的对象和操作的活动”。他还对领域分析和 软件 系统分析这两种活动进行了对比 提出了“领域分析员”的概念 并分析了在软件复用活动中领域分析的必要性和可行性。 或者通过领域工程获得软件构件/构架面向领域的构件数目大面向领域的构架更具体面向领域的复用复用程度高因此:领域工程是获取构件/构架的主要途径。 4、你认为软件复用成功的因素都包括那些方面? 1软件越来越多地渗透到生活的各个方面,对于许多工业和商业企业来说,他们的目标有多种:是顾客满意、提供及时的产品和服务、降低成本等。提高业务能力通常意味者他们必须提高他们的软件开发能力。在这种情况下,成功意味着他们的软件必须:Faster BetterCheaper “Reuse”。The “Holy Grail”of today’s IT environment 2如何达到这个目标?两条途径:1提高软件产品的生产效率2软件复用许多公司都在试图提高他们的软件开发能力,对象和构件的复用成为他们软件工程的策略 3构件系统的思想也从简单的代码扩展到需求、分析模型、设计和测试。所有这些软件开发过程的步骤都围绕着 4复用的成功例子1984-Hewlett-Packard achieved 25% to 50% reuse levels in firmware(固件,

快速适应项目中的需求变化与软件复用

快速适应项目中的需求变化与软件复用 软件复用本质是为了快速适应不断变化的需求(adapt to changing needs ),两者目标是一致的,但是当我们过于注重软件复用(如组件复用component reuse又译构件复用)时,千万需要牢记:快速适应不断变化的需求是根本目的,它的重要性要重于组件复用技术本身。本文试图阐述两者概念比较以及时下流行的组件复用技术概要。 适应需求变化 现如今是一个计划赶不上变化的时代,企业竞争力逐渐表现在企业适应变化能力的竞争,谁能更快适应市场的变化,谁就能够在竞争中胜出,这种快速适应能力如果靠"人民战争"无疑是不现实的,软件可以帮助我们来适应这种快速变化。 谈到这里,稍微再说明一下国人软件教育的误区,不错,软件曾经是科学计算的工具,因此,我们非常注重软件的算法和数据结构,甚至将之作为数学的衍生物,但是,现如今已经成为一种帮助我们快速响应变化的有力工具,如果我们的教育背景中只有算法和数据结构,能够编制出应付快速变化的软件吗?很显然,他们是风马牛不相及,由此可见国人软件概念和软件教育的落后性,在这样的软件认识背景下,固然设计模式的崇高位置得不到确立,软件设计被抛弃在脑后,编制出的大多数企业软件系统根本不具备应付变化的能力,程

序员拒绝频繁更改程序,甚至借助技术原因阻扰软件的频繁更改,这种软件程序员和软件用户之间的矛盾可以称为miscommunication,miscommunication是导致软件系统的失败一个重要原因。 国内早就有言论:"不上ERP等死;上了ERP找死",如果你的企业不上ERP,那么你的企业就不能借助软件应付快速的市场等环境变化,那么必然会被淘汰;但是,如果上了一个不注重"适应需求变化"的ERP软件系统,那就是企业被僵化的ERP软件框死,丧失了使用ERP的根本目的。 适应需求变化则成为现代软件系统一个孜孜不倦的追求目标,那么如何实现呢? 原则:给予人们可以裁剪他们系统的能力应适应需求变化,建立一个适应需求变化的系统,允许系统在一系列小的、可控制的步骤上进行改变。 组件诞生 将不变的通用的东西抽象出来,以达到在不同项目中重用复用,将我们有限的精力集中在项目具体变化和特点上。当然这些抽象复用的东西之间彼此必须是松耦合,这样才能根据需求挑选组合。 让我们先回顾一下软件的发展史,软件开发的发展史实际是一部我们思维不断抽象拔高的发展过程,这种抽象概念非常类似于建模的思考方式:概要贴切地描述事物,忽视次要的细节。抽象体现在软件开发上就是每个具体项目需要完成的代码行数量越来越少。 从1970到1980这段时间,软件开发从机器语言到汇编语

软件复用技术

面向对象方法中的软件复用技术探讨 摘要:软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。本文介绍了软件复用的基本概念和关键技术,并阐述了面向对象方法中的软件复用技术。 关键词:软件复用;软件工程;面向对象 1.引言 近年来,随着计算机硬件的成本的不断下降,软件的生产规模日益增大,计算机的应用范围也得到了很大程度的普及,人们对软件系统的需求急剧上升,随之而来的软件规模越来越大,开发费用越来越高,开发的质量和效率不断降低的问题日益严重。造成这种现象的一个主要原因就是软件开发组织对相同或相似系统做着大量的重复性工作。要改变这种状况,软件复用是一条现实可行的途径。 2.软件复用概述 2.1软件复用概念 软件复用是一种计算机软件工程方法和理论,是指重复使用"为了复用目的而设计的软件"的过程。它是一种系统化的方法,为了复用而进行设计,为了复用而开发,并且要有效地组织和管理这些复用产品,方便人们查找和使用,基于复用产品进行开发。软件复用一定要有积累,首先要为了复用目的设计很多的复用产品,有了一定的积累后才能进行软件复用。 软件复用的主要思想是,将软件看成是由不同功能部分的"组件"所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。 2.2软件复用意义 通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析,设计,编码,测试,维护等。当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复,需求分析和设计的重复,编码的重复,测试的重复和文档工作的重复等。 软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切"从零开始"的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果,设计方案,源代码,测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分。 通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析,设计,编码,测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 2.3软件复用对象 软件复用不仅仅涉及源代码,复用对象主要有以下几个部分: (1)代码的复用 包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接(Link)、绑定(Binding)等功能来支持这种复用。

基于软件复用技术的C语言题库系统的设计【文献综述】

文献综述 计算机科学与技术 基于软件复用技术的C语言题库系统的设计一.软件复用 软件重用[1-3]是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。 软件成分的重用可以进一步划分成以下 3 个级别: (1) 代码重用 人们谈论得最多的是代码重用,通常把它理解为调用库中的模块。实际上,代码重用也可以采用下列几种形式中的任何一种: 源代码剪贴:这是最原始的重用形式。这种重用方式的缺点,是复制或修改原有代码时可能出错,更糟糕的是,存在严重的配置管理问题,人们几乎无法跟踪原始代码块多次修改重用的过程。 源代码包含:许多程序设计语言都提供包含库中源代码的机制。使用这种重用形式时,配置管理问题有所缓解,因为修改了库中源代码之后,所有包含它的程序自然都必须重新编译。 继承:利用继承机制重用类库中的类时,无须修改已有的代码,就可以扩充或具体化在库中找出的类,因此,基本上不存在配置管理问题。 (2) 设计结果重用 设计结果重用指的是,重用某个软件系统的设计模型 ( 即求解域模型 ) 。这个级别的重用有助于把一个应用系统移植到完全不同的软硬件平台上。 (3) 分析结果重用 这是一种更高级别的重用,即重用某个系统的分析模型。这种重用特别适用于用户需求未改变,但系统体系结构发生了根本变化的场。 更具体地说,可能被重用的软件成分主要有以下10 种: (1)项目计划。 软件项目计划的基本结构和许多内容(例如,软件质量保证计划)都是可以跨项目重用的。这样做减少了用于制定计划的时间,也降低了与建立进度表和进行风险分析等活动相关联的不确定性。

软件复用技术概述

软件复用技术概述 软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。因此,软件复用包括软件产品复用和软件过程复用两部分的内容。 软件复用不同于软件移植。软件移植是指对软件进行修改和扩充,使之在保留原有功能、适应原有平台的基础上,可以运行于新的软硬件平台。而复用则指在多个系统中,尤其是在新系统中使用已有的软件成分。 从对复用产品的了解程度和复用方式看,也可分为白盒复用与黑盒复用。黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。它主要基于二进制代码的复用,包括可执行程序的复用和基于库(包括动态链接库和静态库)的复用。白盒复用指根据用户需求对已有产品进行适应性修改后才可使用。白盒复用一般为源代码一级的复用,以及相应的测试用例、文档等的复用。 无论白盒复用还是黑盒复用,都需要花费一定的代价熟悉和掌握被复用的软件系统。作为经济上的考虑,要求复用的代价必须大大小于重新开发的代价,否则就不应该考虑。 软件复用的一个关键因素是抽象。抽象是对软件可复用对象的提炼和概括,即将可复用对象的基本属性和相应的操作,从具体的语言、环境和其他细节中提炼出来。软件的复用性很大程度上取决于对可复用对象的认识深度或者说可复用对象的抽象层次。抽象层次越高、与具体环境和特定细节越无关,则它被未来系统复用的可能性也越大。领域分析则是进行抽象的有力工具。领域分析借助特定领域、特定行业的专业知识与技能,对软件系统对象进行抽象和分类,提炼认知的对象及其相互关系,获得系统整体结构,从而生成可复用的软件构件。 通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,减少了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 软件复用有三个基本原则,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软

相关主题
文本预览
相关文档 最新文档