软件构造——可复用性

本文探讨了软件复用的重要性,包括降低成本、提高可靠性与标准化。分析了复用的代价,强调了衡量可复用性的关键因素。文章详细介绍了可复用组件的不同级别,如源代码、模块、库和系统级复用,以及白盒和黑盒复用的差异。同时,讲解了如何设计可复用的类,涵盖了行为子类型化、Liskov 替代原理、委托和组件的概念,以及在Java中相关的设计原则和实践。
摘要由CSDN通过智能技术生成

本文是对软件构造课程软件可复用性相关内容的整理与理解,使用的编程语言为 Java。我们首先讨论可复用的软件“应该是什么样的”,然后讨论“如何构造好的可复用的软件”。

什么是软件复用?

软件复用(software reuse)是使用已有的软件组件去实现或更新软件系统的过程。

软件复用的两个视角:

  • 创造:系统地创造可复用的资源。
  • 使用:复用资源,把它们作为构建新系统的积木。

为什么要复用呢?

创造可复用的而不是短暂的东西的动机,既有审美上的、智力上的,也有经济上的,这是人类渴望不朽的一部分。“它将人类与其他生物区分开来,并将人类文明社会与原始社会区分开来。”(Wegner,1989)

  • 复用降低了成本和开发时间:通过缩短软件开发周期(用更少的人更快地开发软件)来提高软件生产效率;不浪费资源进行不必要的“重新造轮子(reinvent-the-wheel)”;降低维护成本(可以生产出质量更好、更可靠、更高效的软件)。
  • 复用会产生可靠的软件:复用已经存在一段时间并经过调试的功能,这些功能往往经过充分测试,稳定可靠。
  • 复用有利于标准化:复用 GUI 库会在应用程序中产生通用的外观;规则、一致、连贯地设计。

复用的成本

复用的成本是昂贵的:

  • 从创造的角度:可复用的组件应以明确定义、开放的方式设计和构建,使用简洁的接口规范、可理解的文档,并着眼于未来的使用。做到这些,需要成本。
  • 从使用的角度:涉及组织、技术和过程的变更,以及支持这些变更的工具的成本,以及培训人员使用新工具和变更的成本。

但随着软件规模的增大,复用的成本要比不复用的成本低得多。

如何衡量可复用性?

可复用性(reusability)意味着对构建、打包、分发、安装、配置、部署、维护和升级问题的一些显式管理。一个具有高度可复用性的软件应该满足以下要求:

  • 小且简单
  • 可移植且与标准兼容
  • 灵活可变
  • 可扩展
  • 泛型与参数化
  • 模块化
  • 变化的局部性
  • 稳定
  • 丰富的文档和帮助

可复用组件的级别和形态

最主要的复用是在代码层面,这是大多数程序员与复用的联系。但软件构造过程中的任何实体都可能被复用:源代码级别、模块级别(类、抽象类、接口)、库级别(API、包)以及系统级别(框架)。

复用可以分为两种类型:

  • 白盒复用(white box reuse):源代码可见,可修改和扩展。复制已有代码到正在开发的系统,进行修改。优点是:可定制化程度高。缺点是:对其修改增加了软件的复杂度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值