1、什么是软件可复用?

  使用现有的软件组件来快速实现需要的功能。

软件可复用的两个方面:

  1、开发层面:面向复用编程,开发成本高,缺乏针对性,性能差些;

  2、使用层面:基于复用编程,复用时需要适配

为什么要可复用:
  降低成本和开发时间;能被复用的模块都是可靠稳定的标准化的,在不同应用中可保持一致。

可复用的缺点:
  开发可重用的组件需要额外的代价;缺乏针对性性能差复用时也需要修改、完善,也需要额外的成本。

2、如何衡量可复用性?

  被复用的频率多频繁、复用的代价多高

  高复用性的软件的特点:

3、复用层次

  最主要的是代码层面的复用,但软件构造过程中任何实体都可能被复用,例如需求、spec、数据、测试用例、文档(广义)。

  代码层面的的四个复用级别:代码复用,模块复用,类库、API复用,框架复用。

  白盒复用和黑盒复用的定义、优缺点:

模块级别的复用:
  一般以jar包的形式,文档十分重要、良好的封装重要、管理更少的代码、向后兼容、调用了某个包需要将它和源文件一起pack起来。

复用的方式:
  继承:父类实现的方法子类不用实现了,但继承后是不能取消的,要避免碰到父类方法不适用的情况。
  委托:一个对象依赖另一个对象的功能。分为显式委托、隐式委托。比继承的耦合程度低。

类库级别复用:
  客户端调用类库。

框架的复用:
  框架是指一组类,及其之间的关系。只有框架,没有内容,需要填充。框架都是不完整的,可运行。分为黑盒框架、白盒框架。
  用户填充框架,框架运行,框架调用开发者写的程序。

4、外部观察可复用性

  类型可变(泛型)、实现可变(不同的实现不同的应用场景,list,规约不变)、提供完备的细粒度操作(保证功能的完整性)、表示独立性、共性抽取

4-1 可复用性概述相关推荐

  1. 《OpenGL编程指南(原书第9版)》——2.3 OpenGL着色语言概述

    2.3 OpenGL着色语言概述 本节将会对OpenGL中着色语言的使用进行一个概述.GLSL具备了C++和Java的很多特性,它也被OpenGL所有阶段中使用的着色器所支持,尽管不同类型的着色器也会 ...

  2. 23种设计模式——软件设计模式概述

    文章目录 23种设计模式--软件设计模式概述 1.软件设计模式的产生背景 2.软件设计模式的概念与意义 2.1. 软件设计模式的概念 2.2. 学习设计模式的意义 3.软件设计模式的基本要素 4.23 ...

  3. 软件测试常用术语中、英文概述

    软件测试常用术语中.英文概述 Smoke Testing(Sanity Testing )-冒烟测试  Acceptance Testing--验收测试  一般由用户客户进行的确认是否可以接受一个产品 ...

  4. 设计模式学习,23种设计模式详解:概述

    设计模式学习:概述 首先,别把程序设计不当设计! 程序的框架就是建筑物的骨架,内部实现不过是装修改造.只要骨架设计没有问题,装修起来也是得心应手.一个糟糕的程序框架,对于接下来的Debug和程序的更新 ...

  5. 软件架构设计---软件架构概述

    像学写文章一样,在学会字.词.句之后,就应上升到段落,就应追求文章的"布局谋篇",这就是架构.通俗地讲,软件架构设计就是软件系统的"布局谋篇". 人们在软件工程 ...

  6. 学生成绩查询web系统—功能概述

    学生成绩查询web系统-功能概述 文章目录 学生成绩查询web系统-功能概述 任务摘要 一.前景介绍 1.背景 2.规划 二.技术分析 1.前端技术 2.后端技术 3.数据库 4.登录验证 三.功能模 ...

  7. 数据仓库系列——3.维度建模概述及案例

    概述 数据仓库包含的内容很多,它可以包括架构.建模和方法论.对应到具体工作中的话,它可以包含下面的这些内容: 以Hadoop.Spark.Hive等组建为中心的数据架构体系. 各种数据建模方法,如维度 ...

  8. 设计模式学习笔记1——概述 UML图 软件设计原则

    目录 1.设计模式概述 1.1.软件设计模式产生背景 1.2.软件设计模式概念 1.3.学习设计模式的必要性 1.4.设计模式分类 1.4.1.创建型模式 1.4.2.结构型模式 1.4.3.行为型模 ...

  9. 设计模式——概述、UML图、原则

    文章目录 1,设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 学习设计模式的必要性 1.4 设计模式分类 2,UML图 2.1 类图概述 2.2 类图的作用 2.3 ...

最新文章

  1. js实现图片虚化_js canvas画布实现高斯模糊效果
  2. SpringBoot在Tomcat下面启动,访问路径
  3. 【Cocos2D-X 学习笔记】Node父类的方法和属性
  4. 计算属性一般是没有set方法, 只读属性 ||计算属性的缓存
  5. 关于input的change事件触发多次发解决
  6. 网站权限问题要重视-维护服务器后的看法
  7. 三线调速风扇原理_学修电风扇~风机转速慢、调速失灵故障维修。
  8. visual studio enter键代码自动补全
  9. asp.net 页面静态化
  10. mac镜像cdr格式_eps是什么格式怎么打开?全面解析图片的eps是什么格式
  11. 微橙人人店 php,最新微橙人人店分销3.5.7整站源码,全开源任意二开,新增及修复多项功能,附升级补丁...
  12. JS:三种常用的函数定义方式
  13. Android中各个国家语言对应的系统资源文件夹名称及对应简写
  14. 开发如何转型做项目管理
  15. MATLAB常用快捷键总结
  16. 阿里云服务器ECS操作系统有哪些版本?
  17. vue如何在地址栏拼接url参数
  18. PHP套件的实验结果分析,PHP环境搭建套件评比测 | Wopus
  19. 【斯坦福大学公开课CS224W——图机器学习】三、节点和图嵌入
  20. Oracle--优化

热门文章

  1. Android之帮助文档
  2. 日积月累系列之分页控件(js源码)
  3. C# 反射机制(转)
  4. BigNums 之 hdu 1753
  5. 清空image画布并改变大小填充背景色
  6. 调整Linux磁盘分区大小
  7. 在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
  8. 帆软报表判断传入条件是否为空,根据逗号分隔
  9. 怎么在eclipse中安装properties插件使其显示中文
  10. JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?...