软件的可维护性和可复用性

ξ 3.1 软件系统的可维护性

☆ 导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化二“腐烂”的真正原因有四个:
 ① 过于僵硬
 加入一个新性能,不仅仅意味着建造一个独立的模块,而且因为这个新性能会波及很多其他的模块,最好变成跨越几个模块的改动。

 ② 过于脆弱
 对一个地方的修改,往往会导致看上去没什么关系的另外一个地方发生故障。尽管在修改之前,设计师会尽力预测可能的故障点,当是修改完成之前,系统的原始设计师们甚至都无法预测到可能会波及的地方。

 ③ 复用率低
 每当程序员发现一段代码、函数、模块所做的事情是可以在新的模块、或者新系统中使用的是,他们总是发现,这些已有的代码依 赖于一堆其他的东西,以至于很难将它们分开。最好他们发现最好的办法就是不去“碰”这些已有的东西,而是重新写自己的代码。他们可能会使用源代码拷贝的办 法,以最原始的复用方式,节省一些时间。

 ④ 黏度过高
 有的时候,一个改动可以以保存原始设计意图和原始设计框架的方式进行,也可以以破坏原始意图和框架的方式进行。一个系统设 计,如果总是使得第二种办法比第一种办法容易,就叫黏度过高。一个黏度过高的系统会诱使维护它的程序员采取错误的维护方案,并惩罚采取正确维护方案的程序 员。

☆ 一个好的系统俄军应该有如下的性质:
 ① 可扩展性
 新的性能可以很容易地加入到系统中去,就是可扩展性。这就是系统“过于僵硬”的属性的方面。

 ② 灵活性
 可以允许代码修改平稳地发生,而不会波及到很多其他的模块,这就是灵活性。灵活性其实就是“过于脆弱”的属性的方面。

 ③ 可插入性
 可以很容易地将一个类抽出去,同时将另外一个有同样接口的类加入进来,这就是可插入性。其实,这就是“黏度过高”的方面。

ξ 3.2 系统的可复用性

☆ 软件复用的好处
第一,较高的生产效率;
第二,较高的软件质量;
第三,恰当使用复用可以改善系统的可维护性。

☆ 传统的复用形式
 ① 代码的剪贴复用;
 ② 算法的复用;
 ③ 数据结构的复用。

☆ 提高系统可维护性和可复用性的设计原则
 ① “开-闭”原则(Open-Closed Principle,或者OCP);
 ② 里氏替代原则(Liskov Substitution Principle,或者LSP);
 ③ 依赖倒转原则(Dependency Inversion Principle,或者DIP);
 ④ 接口隔离原则(Interface Segregation Principle,或者ISP);
 ⑤ 组合/聚合复用原则(Composition/Aggregation Principle,或者CARP);
 ⑥ 迪米特法则(Law of Demeter,或者LoD);

阅读更多

没有更多推荐了,返回首页