4-1 可复用性概述
1、什么是软件可复用?
使用现有的软件组件来快速实现需要的功能。
软件可复用的两个方面:
1、开发层面:面向复用编程,开发成本高,缺乏针对性,性能差些;
2、使用层面:基于复用编程,复用时需要适配;
为什么要可复用:
降低成本和开发时间;能被复用的模块都是可靠稳定的;标准化的,在不同应用中可保持一致。
可复用的缺点:
开发可重用的组件需要额外的代价;缺乏针对性,性能差;复用时也需要修改、完善,也需要额外的成本。
2、如何衡量可复用性?
被复用的频率多频繁、复用的代价多高
高复用性的软件的特点:
3、复用层次
最主要的是代码层面的复用,但软件构造过程中任何实体都可能被复用,例如需求、spec、数据、测试用例、文档(广义)。
代码层面的的四个复用级别:代码复用,模块复用,类库、API复用,框架复用。
白盒复用和黑盒复用的定义、优缺点:
模块级别的复用:
一般以jar包的形式,文档十分重要、良好的封装重要、管理更少的代码、向后兼容、调用了某个包需要将它和源文件一起pack起来。
复用的方式:
继承:父类实现的方法子类不用实现了,但继承后是不能取消的,要避免碰到父类方法不适用的情况。
委托:一个对象依赖另一个对象的功能。分为显式委托、隐式委托。比继承的耦合程度低。
类库级别复用:
客户端调用类库。
框架的复用:
框架是指一组类,及其之间的关系。只有框架,没有内容,需要填充。框架都是不完整的,可运行。分为黑盒框架、白盒框架。
用户填充框架,框架运行,框架调用开发者写的程序。
4、外部观察可复用性
类型可变(泛型)、实现可变(不同的实现不同的应用场景,list,规约不变)、提供完备的细粒度操作(保证功能的完整性)、表示独立性、共性抽取
4-1 可复用性概述相关推荐
- 《OpenGL编程指南(原书第9版)》——2.3 OpenGL着色语言概述
2.3 OpenGL着色语言概述 本节将会对OpenGL中着色语言的使用进行一个概述.GLSL具备了C++和Java的很多特性,它也被OpenGL所有阶段中使用的着色器所支持,尽管不同类型的着色器也会 ...
- 23种设计模式——软件设计模式概述
文章目录 23种设计模式--软件设计模式概述 1.软件设计模式的产生背景 2.软件设计模式的概念与意义 2.1. 软件设计模式的概念 2.2. 学习设计模式的意义 3.软件设计模式的基本要素 4.23 ...
- 软件测试常用术语中、英文概述
软件测试常用术语中.英文概述 Smoke Testing(Sanity Testing )-冒烟测试 Acceptance Testing--验收测试 一般由用户客户进行的确认是否可以接受一个产品 ...
- 设计模式学习,23种设计模式详解:概述
设计模式学习:概述 首先,别把程序设计不当设计! 程序的框架就是建筑物的骨架,内部实现不过是装修改造.只要骨架设计没有问题,装修起来也是得心应手.一个糟糕的程序框架,对于接下来的Debug和程序的更新 ...
- 软件架构设计---软件架构概述
像学写文章一样,在学会字.词.句之后,就应上升到段落,就应追求文章的"布局谋篇",这就是架构.通俗地讲,软件架构设计就是软件系统的"布局谋篇". 人们在软件工程 ...
- 学生成绩查询web系统—功能概述
学生成绩查询web系统-功能概述 文章目录 学生成绩查询web系统-功能概述 任务摘要 一.前景介绍 1.背景 2.规划 二.技术分析 1.前端技术 2.后端技术 3.数据库 4.登录验证 三.功能模 ...
- 数据仓库系列——3.维度建模概述及案例
概述 数据仓库包含的内容很多,它可以包括架构.建模和方法论.对应到具体工作中的话,它可以包含下面的这些内容: 以Hadoop.Spark.Hive等组建为中心的数据架构体系. 各种数据建模方法,如维度 ...
- 设计模式学习笔记1——概述 UML图 软件设计原则
目录 1.设计模式概述 1.1.软件设计模式产生背景 1.2.软件设计模式概念 1.3.学习设计模式的必要性 1.4.设计模式分类 1.4.1.创建型模式 1.4.2.结构型模式 1.4.3.行为型模 ...
- 设计模式——概述、UML图、原则
文章目录 1,设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 学习设计模式的必要性 1.4 设计模式分类 2,UML图 2.1 类图概述 2.2 类图的作用 2.3 ...
最新文章
- js实现图片虚化_js canvas画布实现高斯模糊效果
- SpringBoot在Tomcat下面启动,访问路径
- 【Cocos2D-X 学习笔记】Node父类的方法和属性
- 计算属性一般是没有set方法, 只读属性 ||计算属性的缓存
- 关于input的change事件触发多次发解决
- 网站权限问题要重视-维护服务器后的看法
- 三线调速风扇原理_学修电风扇~风机转速慢、调速失灵故障维修。
- visual studio enter键代码自动补全
- asp.net 页面静态化
- mac镜像cdr格式_eps是什么格式怎么打开?全面解析图片的eps是什么格式
- 微橙人人店 php,最新微橙人人店分销3.5.7整站源码,全开源任意二开,新增及修复多项功能,附升级补丁...
- JS:三种常用的函数定义方式
- Android中各个国家语言对应的系统资源文件夹名称及对应简写
- 开发如何转型做项目管理
- MATLAB常用快捷键总结
- 阿里云服务器ECS操作系统有哪些版本?
- vue如何在地址栏拼接url参数
- PHP套件的实验结果分析,PHP环境搭建套件评比测 | Wopus
- 【斯坦福大学公开课CS224W——图机器学习】三、节点和图嵌入
- Oracle--优化
热门文章
- Android之帮助文档
- 日积月累系列之分页控件(js源码)
- C# 反射机制(转)
- BigNums 之 hdu 1753
- 清空image画布并改变大小填充背景色
- 调整Linux磁盘分区大小
- 在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
- 帆软报表判断传入条件是否为空,根据逗号分隔
- 怎么在eclipse中安装properties插件使其显示中文
- JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?...