加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

基于重用的软件设计

发布时间:2020-12-17 02:47:24 所属栏目:安全 来源:网络整理
导读:"不要重新发明轮子"--这是在软件设计中经常听到的一句话。其根本含义就是提倡使用已经存在的可用的成果,不要为满足个人成就感而进行低水平的重复开发。 牛顿曾经说过,他之所以看得比别人远,那是因为他站在巨人肩膀上的缘故。不管是微积分还是万有引力定律

"不要重新发明轮子"--这是在软件设计中经常听到的一句话。其根本含义就是提倡使用已经存在的可用的成果,不要为满足个人成就感而进行低水平的重复开发。

牛顿曾经说过,他之所以看得比别人远,那是因为他站在巨人肩膀上的缘故。不管是微积分还是万有引力定律,决不是牛顿凭空从头想象出来的,之前已有了哥白尼、布鲁诺、伽利略、开普勒等先人大量知识的发现,牛顿能够在此基础上进行总结并加入自己的创造,终于让自己成为了划时代的伟大科学家。

好的程序员知道如何解决问题,而聪明的程序员知道如何利用已有的成果来解决问题,决不把有限的精力耗费在别人已解决的问题上。

重用一直是软件发展过程追求的主要目标,从原代码片段的重用到函数级的重用,从类库级的重用到框架的重用,甚至于设计方法、分析方法的重用。 利用重用可以极大提高软件开发效率和产品的质量,为了让软件为后续的软件重用, 需要遵循一定规则, 以降低重用成本, 使重用能更具可操作性。

?

为了使设计的软件能被其他软件重用, 需要考虑以下几方面事实:

(0) 不要只为当前的系统而设计:

在设计系统提供的功能时,尽可能抽象出该功能的共有的特性,为实现这种共有特性而设计,使其他需要该功能的软件能直接使用你已设计好的系统, 而非由于你的系统不好用而不得不自己重新开发一个。

(1) 基于接口设计:

服务的提供着不应该向服务的使用暴露服务实现细节, 服务的使用不会关心这些东西, 暴露出来只会让服务的使用者望而却步。 因此可重用软件设计时只要暴露使用方式即可,也就是为方便使用服务而设计接口: 服务的使用方式。由于接口一旦发布就不能更改,因此在接口的设计上要尽可能考虑服务被使用的方式,提供足够的灵活性。

如何设计良好的接口可以参考<Unix程序设计艺术>第11章。

?

(2) 提供标准化的服务:

现实世界的系统是由各种不同技术来实现的, 要让这些系统间能进行交互, 没有标准化的协议是不可想象的,就象世界各地只懂自己母语的人之间要相互沟通一样困难。

为了使你的软件可被其他软件重用, 提供标准化的服务方式可更易于此目标的实现。 XML、HTTP、Web Service等标准技术的大范围使用已充分说明了标准化在连接异构系统时发挥的高效作用。

目前最佳的服务提供方式就是WebService, 这种技术可在不同操作系统、不同开发语言中、不同开发环境中被使用。

?

(3)松耦合:

这应该是系统与系统之间交互最基本的原则。提供重用服务的软件和使用重用服务的软件之间应该做到不相互依赖。 彼此不应该需要对方的存在才能运行。 否则提供重用的软件将很难修改和扩展, 因为它已被其他的软件所依赖; 而使用重用服务的软件也会被绑定在特定的软件上动弹不得。 想要从其他软件获得更好的服务需要付出极大的成本。 只要看一下企业中系统迁移时混乱状态就知道了。

(4)保持简洁

要让你的软件能够被重用, 必须使其简单易用, 如果重用一个软件的难度超过了重新开发一个新的软件, 想来没有人会重用你的软件,这种事情在软件界已是家常便饭。 考虑一下电力公司提供的电力服务, 当你买来新的家电, 只要将插头网墙上的插座一插即可享受新家电带来的乐趣, 根本不需要看说明书。如果如何使用插头也要花你30分钟去看说明书才能操作,那将是极度让人无法容忍的事。

?让你的软件在重用方式上尽可能的简单, 不要让它超过重新开发一个新程序的难度。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读