从类,API,框架三个层面学习如何设计可复用软件实体的具体技术

一、软件复用


1.软件复用
软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。(源于:百度)

2.复用级别
(1)代码的复用

包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接(Link)、绑定(Binding)等功能来支持这种复用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。想大规模的实现源程序的复用只有依靠含有大量可复用构件的构件库。如”对象链接及嵌入”(OLE)技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独立的可复用构件,能够在运行时被灵活的得新组合为各种不同的应用。

(2)设计的复用

设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。

(3)分析的复用

这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。复用的途径也有三种,即从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;独立于具体应用,专门开发一些可复用的分析构件。

(4)测试信息的复用

主要包括测试用例的复用和测试过程信息的复用。前者是把一个软件的测试用例在新的软件测试中使用,或者在软件作出修改时在新的一轮测试中使用。后者是在测试过程中通过软件工具自动地记录测试的过程信息,包括测试员的每一个操作、输入参数、测试用例及运行环境等一切信息。这种复用的级别,不便和分析、设计、编程的复用级别作准确的比较,因为被复用的不是同一事物的不同抽象层次,而是另一种信息,但从这些信息的形态看,大体处于与程序代码相当的级别。(转载
原文链接:https://blog.csdn.net/qq_43692287/article/details/117067692)

3.软件复用的主要思想
将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。

4.软件复用的优缺点
• 开发成本的降低。如果在一个项目中,能够直接用到以前项目中的代码,控件,模块,作为一个软件企业,显然的可以把开发成本降低。

• 开发层次的提升。大家知道,罗马不是一天建成的,同样的,在软件开发上,也不会一蹴而就的写出高质量的代码。当我们有意识的进行复用时,我们会在每次重复使用某段代码或者控件的过程中,发现其不足的地方,从而加以改进,这样就会逐渐的提升我们的开发层次,提升整个公司开发的层次,使得公司的软件与其他公司有着根本的不同。

• 产品化的必然阶段。在我们公司目前没有明确的开发产品的现阶段,那么对软件复用的使用,就是我们产品化的一个途径,我们在不断的复用的过程中,不断的强化我们的代码的功能,直至有了一定固定功能,运行稳定,扩展性好的软件,这样一个产品就可以自然而然的产生了.

二、API

API:应用程序编程接口,库或框架的接口

客户端:使用API的代码 插件:定制框架的客户端代码
扩展点:框架内预留的“空白”,开发者开发出符合接口要求的代码(即插件),框架可调用,从而相当于开发者扩展了框架的功能
协议:API和客户端之间预期的交互顺序
回调:框架调用来访问定制功能的插件方法
生命周期方法:根据协议和插件状态按顺序调用的回调方法
建议:始终以开发API的标准面对任何开发任务;
面向“复用”编程而不是面向“应用”编程。
难度:要有足够良好的设计,一旦发布就无法再自由改变。

编写一个API需要考虑以下方面:

API应该做一件事,且做得很好

API应该尽可能小,但不能太小

Implementation不应该影响API

记录文档很重要

考虑性能后果

API必须与平台和平共存

类的设计:尽量减少可变性,遵循LSP原则

方法的设计:不要让客户做任何模块可以做的事情,及时报错

(来源于百度解释)

三、框架

框架
框架分为白盒框架和黑盒框架。
白盒框架:

通过子类化和重写方法进行扩展(使用继承);

通用设计模式:模板方法;

子类具有主要方法但对框架进行控制。

黑盒框架:

通过实现插件接口进行扩展(使用组合/委派);

常用设计模式:Strategy, Observer ;

插件加载机制加载插件并对框架进行控制。

 (19060722班HMH)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值