定义

软件复用是指在构造新的软件系统的过程中,对已存在的软件产品(设计结构、源代码、文档等)重复使用的技术。

软件复用就是利用现有的软件成分构造出高质量、高效率的新的软件系统。软件复用不仅仅只是包括程序的复用,而且还包括每个活动所产生的制成品的复用。随着软件复用技术的快速发展,人们发现了软件资产的一些问题。为了能够有效地解决此类问题,必须将软件复用技术能够准确地、合理地运用到软件开发中,将软件复用技术的优势充分发挥出来,其实这也正是软件复用技术的难点所在。

软件复用的必要性

为了能够更好的解决软件危机,加快了软件复用技术研究和使用的步伐。并且经过实践证明,软件复用技术不仅提高了软件工程开发的效率以及软件系统的质量,而且也降低了软件开发成本,总而言之,促进了软件开发的进程。本文主要对软件复用内容、软件复用的优势、软件复用的关键技术进行了分析。

内容

应用软件系统的开发过程包含以下几个阶段:领域和需求分析、设计、编码、测试以及维护等,各个阶段的工作中均存在重复,而这些重复都可以作为软件复用的内容。- -般可以分四个层次:第一,领域和需求分析阶段的复用。这个层主要包括对领域知识、软件总体框架结构、项目计划、成本估计等的复用;第二,设计阶段的复用。这个层主要包括对分析建模方法、领域模型、软件功能模型等的复用;第三,编码阶段的复用。这个层主要包括对功能模块、用户和技术文档、用户界面风格等的复用;第四,测试阶段的复用。这个层主要包括对测试方法、测试用例等的复用。

优势

软件复用的优势主要表现在以下几个方面:

  • 一,软件复用使软件生产率得以提高,并且也使开发代价因此而少。由于可复用构建经过了高度优化和考验,其构造的系统更加可靠、性能更加强大
  • 二,软件复用也使系统的维护代价得以减少。用可复用的构件构建系统减少了错误的发生,也就是减少了维护频率
  • 三,软件复用使系统间的互操作性得以提高。系统由于使用了统一的接口,使其与其他系统之间的互操作性得以实现
  • 四,软件复用对快速原型设计有一定的支持效果,那么快速有效地构造出应用程序的原型可以充分利用可复用构件和构架,从而获得用户对系统功能的反馈;第五,培训成本的减少也可以通过软件复用来实现。总而言之,采用软件复用技术提高了软件质量。

关键技术

1.软件构件技术

软件构件技术是软件复用的核心。构件是系统中可以明确辨识的构成成分,而软件构件则是软件系统中具有一定意义的相对独立的构成成分。可复用构件是指在具有独立功能的基础上,实现复用功能的构件。随着人们对软件复用技术研究越来越深入,构件的概念也得到了延伸。它们应用于各个不同的开发过程,目前,主要关注的构件是代码级构件,它可以直接由工具进行支持。代码级构件主要分为源代码和二进制代码构件两种,其源代码所采用的复用方式也有两种,即黑盒复用和白盒复用两种方式

  • 黑盒复用:黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。主要基于二进制代码的复用,包括可执行程序的复用和基于库(包括动态链接库和静态库)的复用。
  • 白盒复用:白盒复用指根据用户需求对已有产品进行适应性修改后才可使用。白盒复用一般为源代码一级的复用,以及相应的测试用例、文档等的复用。

软件构件技术的研究内容主要包括:构件获取:构件生产是有目的的,其构件是从已有的系统中挖掘出来的构件模型。在对构件本质特征研究的基础上,充分认识构件间的关系:构件描述语言。此目的就是为了使构件的精确描述、理解和组装问题进行解决构件分类和检索。对构件分类和检索策略进行研究,为构件库系统的构建创造良好的条件即构件复合组装。对构件组装机制进行研究且在构件模型的基础上进行标准化。这里的标准化主要是构件模型和构件库系统的标准化。

2.构件架构

对于软件架构,目前还没有一个统一的定义。一个典型的定义是:
一个程序或计算系统的软件构架是系统的一个或多个结构,包含软件构件、这些构件的对外可见的性质以及它们之间的关系。
体系结构描绘的是系统的蓝图,是沟通软件需求与软件设计的一座桥梁。体系结构的研究,使软件复用从代码复用发展到设计复用和过程复用。在基于构件和体系结构的软件开发方法下,程序开发模式也相应地发生了根本变化。软件开发不再是”算法+数据结构”,而是”构件开发+基于体系结构的构件组装”。
软件构架包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等。软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联。其中主要包括:软件构架原理和风格、软件构架的描述和规约、特定领域软件构架、构件向软件构架的集成机制等。

3.领域工程

领域工程是针对一组相似或相近应用的共同领域及用户需求进行分析,识别这些应用的共同特征和可变特征,进行面向复用的开发,产生出特定领域的构件和构架。它覆盖了建立可重用构件的所有活动。
主要过程分为领域分析(定义”问题空间”)、领域设计(提出”解决问题的框架")和领域实现(实现所提出的”解决空间”)三个阶段。
它以领域分析为出发点,对领域中的系统进行分析,包括识别、搜集、组织、分析和表示领域中相关的共性和个性信息,形成领域定义和领域模型。其中领域模型确定了该领域系统的公共功能和数据,依据领域模型,设计面向特定领域的软件构架DSSA,包括系统中各种构件间交互关系的共性和差异,并以此领域构架为中心,识别、开发和组织可重用构件,供应用工程师使用。
这样,当开发同一领域中新的应用时,可以根据领域分析模型,确定新应用的需求规约;根据特定领域的软件构架形成新应用的设计,并以此为基础选择可复用构件进行组装,从而形成新系统。

4.CASE技术

软件工程思想已经在人们心中有了更深入的渗透,其已经越来越受到广大软件开发者的欢迎,CASE工具和CASE环境得到越来越广泛的应用。
对于软件工程而言,CASE技术是非常重要的,它能够支持软件工程,并且使软件开发的复杂性有所降低,也就是说,能够促使软件开发人员有效控制软件开发的复杂性,进而使软件开发的效率和质量得以提高。同理,CASE技术也能够有效地支持软件复用。
其主要内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等。

5.软件过程

软件过程就是从软件需求定义开始,直至软件使用后废弃为止,针对系统开发、运作和维护所实施的全部过程、活动和任务的结构。
随着软件工程的快速发展,软件过程也发生了一些变化。软件过程又称软件生存周期过程,软件生存周期主要可划分为三个时期,第一时期就是计划、分析时期,第二时期就是设计、实现时期,第三时期就是运行、维护时期。当前,软件工程研究的热点就是软件过程及其完善。

6.软件再工程

随着软件技术的不断开发,一些遗产软件系统已经不能在满足现今的要求,慢慢地退出软件舞台,如果能够从这些系统中获取有用的软件构件,再对它们进行维护,使其系统软件生命周期得以延长,而这个过程就是软件再工程所要解决的问题,从而构造出新的系统来。如果没有对其进行维护,即使获取了有用的软件构件,那么这些软件构件随着技术的发展最终还是被淘汰。

软件复用:介绍与主要技术相关推荐

  1. 分布式 java 应用:基础与实践_西研技术大讲堂第二期FRCS应用情况介绍及分布式技术平台能力应用实践...

    为制定高质量的技术培训课程,营造崇尚技术的浓厚学习氛围,使研发部组建云计算.分布式框架.用数赋智等专业技术队伍,每周四晚,"西研技术大讲堂"开课啦!第一期<工银磐石(分布式技 ...

  2. 计算机网络技术人员介绍,计算机网络技术专业介绍2021 计算机网络技术专业就业方向及前景...

    计算机网络技术专业介绍2021,计算机网络技术专业是近来的热门专业,相信大家也想详细了解这个专业的内容.就业前景和方向.下面查字典网小编整理了2021计算机网络技术的简介及前景的内容,以供大家参考. ...

  3. 计算机应用技术重点学科,福州大学省级重点学科介绍:计算机应用技术(081203)...

    福州大学省级重点学科介绍:计算机应用技术(081203) 2008-06-19 一.本学科现状 本学科 1996年获得硕士学位授予权.现有教授11人,副教授10人,具有博士学位的教师8人.目前承担4项 ...

  4. 计算机科学与应用专业介绍,专业介绍 | 计算机科学与技术

    原标题:专业介绍 | 计算机科学与技术 什么计算机科学与技术? 说到计算机不知道你的脑子里 是否会拂过以下这样的画面 这究竟是一项什么样的专业呢? 下面和小编一起来看看我们计算机科学与技术 是一门怎么 ...

  5. 乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍(可供技术选型时使用)

    乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍 RabbitMQ介绍 1.RabbitMQ技术简介 2.RabbitMQ其他扩展插件 2.1监控工具rabbitmq-managemen ...

  6. 福建师范大学研究生计算机复试科目,福建师范大学研究生专业介绍:计算机应用技术...

    福建师范大学研究生专业介绍:计算机应用技术本站小编 免费考研网/2016-06-22 计算机应用技术专业研究方向之一:网络与信息安全 今年该方向拟招生的导师:许力博士.教授,叶阿勇博士.副教授 网络与 ...

  7. 深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  8. iOS-FXDanmaku弹幕库介绍、相关技术分享

    前言 去年, 2016年, 一大波直播平台在移动端涌出, 直播慢慢步入了人们的视角. 网上如今能够看到各式各样的直播, 如秀场直播.游戏直播.体育直播.娱乐直播等等. 在各种类型的直播中, 弹幕在PC ...

  9. ue4相机_纳格数字创意课程介绍 |UE4虚拟现实技术室内方向

    VR建筑与室内表现是一个时代呼唤下的新兴技术领域,它对建筑和室内进行可视化设计, 依托数字图像技术, 通过效果图.动画.交互.体验等方式,对未来场景进行虚拟呈现, 实现从"无"到& ...

最新文章

  1. EF Core使用Simple Logging输出日志
  2. 使用 Tye 辅助开发 k8s 应用竟如此简单(一)
  3. linux加密框架 crypto 算法管理 - 应用角度讲解加密框架的运行流程
  4. 任正非:只有教师待遇得到提升 教育才会较大发展
  5. Centos/Red Hat7/8.x 安装、配置、启动Gitlab14.x (语言和主题配置)
  6. android图片拖动放大_Android拖放
  7. 如何将以字符表示的16进制数转换为机器码表示的16进制数
  8. ext2、ext3与ext4的区别
  9. npy文件的保存与读取
  10. 专访 Livid:程序员值得花时间一看!
  11. 银行等单位工作日计算的实现
  12. bzoj 1062: [NOI2008]糖果雨
  13. css设置全局内边距为0,重置CSS - 将填充和边距设置为0?
  14. 云控系统机房搭建为什么用到网络交换机?
  15. CUDA流多处理器(stream multiprocessor,sm)和硬件流处理器(stream processor,sp)
  16. 手柄映射键盘_如何使用运动加加TAP手柄在PC上玩手游
  17. WAP.WXL.WMLScript备课笔记
  18. java创建user类在哪里_java中创建对象有哪几种方式
  19. 微信如何群发消息?微信群发消息只需要4步!
  20. 【MFC】打砖块小游戏(中)(6)

热门文章

  1. 消散效果shader实践含clip阴影pass——UnityShader学习笔记
  2. 组合数学-Chapter V: 图论补充
  3. 高管换血后,兰亭集势多项指标优化:Q4现亏损,股价再坐过山车
  4. X86 ubuntu update提示E: 无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/xenial/main/binary-arm64/Packag
  5. 小米面试——计算机视觉算法实习生
  6. 勒索软件风靡,工控安全厂商们可否“乘风破浪”?
  7. 通过nginx代理静态网页
  8. 基于Java+SpringMVC+MySql+Layui+H5网站后台管理系统
  9. 【计算机毕业设计】基于web的网上体育用品商城系统
  10. 网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒