软件复用学习心得

软件复用

基本含义

软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相近的软件或软件模块的过程。该软件可以是已经存在的软件或是专门的可复用软件,称为(软)构建。

优点

■ 提高生产率
■ 减少维护代价
■ 提高互操作性
■ 支持快速原型

挑战

■ 软构件与应用系统之间的差异。
■ 软构件要达到一定的数量,才能支持有效的复用,而建立软构件库要有很高的投入和长期的积累。
■ 难以发现合适的软构件。
■ 基于复用的软件开发方法和软件过程 是一个新的研究实践领域,需要一些新的理论、 技术及支持环境,目前这方面的研究成果和实践经验都不够充分。

解决的问题

软件复用必须解决三个基本问题:
■ 必须有可复用的对象;
■ 所复用的对象必须是有用的;
■ 复用者要知道如何使用被复用的对象。

复用过程

■基于复用的软件开发
■首要任务是把用户需求转换成系统规格,特别是要按照可复用构件修改系统规格。
■系统设计的核心是软件体系结构。
■设计要依据已有的构件,在系统规格、应用架构和可获得的构件之间做出妥协和平衡。其中关键的一步是根据系统规格、软件架构和系统设计查找可复用的软构件。
■最后,把可复用构件及开发的软件部分,按照软件架构组装起来。
■最常见的方式是使用集成语言(如脚本语言Python、Unix shell、TCL/TK )把构件“粘合"起来或粘合到框架上,最终得到应有软件。

基于程序库的软件复用

■程序库是软件复用最基本、最普通形式。程序库是些经常使用、经过检验的规范化程序或子程序的集合。程序库中的程序是经常使用的功能。
■程序库通常是编译后的二进制可执行码或虚拟机可执行码,把它们放到目录中,设置环境变量,在程序中引入后就可以如同普通函数、对象、类等一样编程使用。
■过程式语言(如C)的程序库主要是各种函数。
■面向对象语言的程序库统称为类库,实质是一个综合性的面向对象的可重用类型集合, 包括接口、抽象类和具体类。
■程序库可以是语言系统内置的,也可以是第三发独立开发的。
■不同语言打包和弓引|用库的形式略有不同。在程序中引用库的关键字有include、using、 import、 with等。
■除了可以引用相同语言的库外,现在的编程语言也允许弓|入其他语言的库,最常见的是C语言的库。
■使用第三方开发的程序库与使用系统的程序库,本质上没有区别。通常是理解API设计、查阅API使F方式、学习示范代码及不断练习践。

基于框架的软件复用

基本概念

■框架是整个或部分系统的可复用设计,表现为一组抽象构件及构件实例间交互的方法。
■框架是可被应用开发者定制的应用骨架。
■一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类及其实例之间协作的方法,它为构件复用提供了上下文关系。

框架方法是构件技术、软件体系结构和应用软件开发三者发展结合的产物。
■框架通常以构件库的形式出现,但构件库只是框架的一个重要部分, 构件库的大规模复用需要框架。
■框架的关键在于框架内对象间的交互模式和控制流模式在某种程度上,将构件和框架视为两个不同但彼此协作的技术或许更好。框架为构件提供复用的环境,为构件处理错误、交换数据及激活操作提供了标准的方法。

根据软件的层次结构,软件框架分为:
■基础设施框架。 对系统基础功能的接近完整的实现,并留有扩展地。
■中间件框架。对一-些常用的中间件按需定制或按需扩展而成。例如,可以运行Web程序的Web服务器。
■应用框架。面向应用领域中应用系统的骨架,但它并不提供完整的应用软件系统的全部。如Web 应用框架Struts、Android 应用框架。

根据应用范围的不同,软件框架分为:
■技术框架。致力于解决某一技术领域内的通用技术问题,并提供定制和扩展机制。技术框架又称为水平框架。水平强调的是通用性、使用范围的广泛性。
例如,Hibernate就是解决面向对象与关系数据库映射问题的技术框架; Junit是解决单元测试问题的技术框架。

根据应用范围的不同, 软件框架分为:
■业务框架。 在特定业务领域内通用的框架。业务框架又称为垂直框架,垂直,就是强调专门化。
■例如,一个网络管理软件的垂直框架针对网络管理这个专门领域提供了完善的功能。

框架复用

框架是部分代码复用,部分是设计复用,有时分析也可复用。框架可以用代码表示,也可以直接执行或复用。

面向对象系统获得的最大的复用方式就是框架。
■ 一个大的应用系统可能由多层互相协作的框架组成。
■ 一个基于框架开发的应用系统包含一个或多个框架、与框架相关的构件类,以及与应用系统相关的功能扩展。
■ 与应用系统相关的扩展包括与应用系统相关的类和对象。
■ 应用系统可能仅仅复用了面向对象框架的一部分,或者, 它可能需要对框架进行一些适应性修改 ,以满足系统需求。

框架的开发从代码、设计和分析三个层面复用了软件:
■复用代码。
从已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。
■复用设计。
它提供可复用的抽象算法及高层设计,并能将大系统分解成更小的构件 ,而且能描述构件间的内部接口。
■复用分析。
所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。

框架复用周期

框架的复用周期如下:

■ 用能够与得到描述可复用件相匹配的术语说明需求;
■ 搜索并获取最相关的复用件;
■ 评估它们的复用能力;
■ 选择最合适的候选复用件,改编它适合当前的需求;
■ 把它集成到当前的应用系统。

基于API的软件复用

API定义

如果要解释 API 这个英文缩写,那一定要说出它的英文原文来:Application Programming Interface,即应用编程接口。
在 .NET 中,我们认为 API 包括了所有公开的类、接口、属性、字段、方法,以及类库提供的配置文件(包括格式)、协议等。

API设计原则

可理解性
通常使用者希望使用到某个 API 的时候,为了正确使用这个 API,需要学习一些与这个 API 相关的新知识。而需要新学习的知识越多,我们认为“可理解性”就越低。
为了提升 API 的可理解性,我们在设计 API 的时候建议考虑这些因素:
■如果没有必要,不要引入新的概念
■防止误用

(1)最好能够避免使用者写出错误的代码(即让错误的代码编译不通过)
(2)如果上面那一条有些难度,则建议在运行时抛出异常(使用者便能够明白为什么自己写错了,改怎么更正)
(3)另外,最好让错误使用的代码变丑(例如非常冗长难以理解,例如 IDE 会显示下划线警告)
(4)不要试图在文档中警告使用者用错了,因为典型的程序员是不看文档的

可见性
我们大多数人的开发工具是功能齐全,傻瓜也能使用的 IDE(集成开发环境),这其实是 IDE 可理解性较好的一个体现。

不过这里要说的是 IDE 的智能感知提示功能;就算没有 IDE,一些常见的代码编辑工具(Visual Studio Code、Sublime、Atom、Notepad++、Vim)也都带有只能感知提示功能。在智能感知提示的帮助下,我们能够在不查阅文档的情况之下了解到当前上下文相关的 API 说明及其简易的使用提示。

如果我们只通过智能感知提示便能够发现一个新 API 并正确使用它,便可以说这个 API 的可见性是好的。

典型的例子是实现或者调用某个函数过程:

(1)实现某个函数的时候,函数的参数类型本来并没有见过,但通过智能感知提示我们能够了解到这个新 API 并正确取到参数中我们期望得到的信息。
(2)调用某个函数的时候,我们需要传入本来并没有见过的参数类型,通过智能感知提示,我们能够知道如何构造或获取这些类型然后正确传进去。
(3)调用完某个函数后我们得到了返回值,我们本来并没有见过这个类型,但通过智能感知提示,我们能够学习到这个新的类型,并知道如何正确使用这个返回值。

本文部分内容参考自:(https://blog.csdn.net/bbcper/article/details/106291621)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值