软件的可维护性和可复用性
1.如何同时提高一个软件系统的可维护性和可复用性,是面向对象的设计要解决的核心问题。
2.诸如“开-闭”原则,这样的面向对象的设计原则就是这些在设计模式中不断地显现出来的共同思想原则,它们是隐藏在设计模式背后的、比设计模式本身更加基本和单纯的设计思想。
3.一个家用电器的维护,只是保持或者恢复电器的某种操作性能所需要的时间和资源。
一个软件的维护则不同,它不仅包括清除错误和缺陷,而且还要包括对已有性能的扩充,以满足新的设计要求。一个维护中的软件是一个不断再生的软件,就像一个“不断带来新礼物的礼物”。软件的维护就是软件的再生。一个好的软件设计,必须能够允许新的设计要求以较为容易和平稳的方式加入到已有的系统中去,从而使这个系统能够不断地焕发出青春。一个可维护性好的系统,应当允许维护工作能够以容易、准确、安全和经济的形式进行。
4.导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化而“腐烂”的真正原因有四个:过于僵硬、过于脆弱、复用率低、粘度过高。
5.一个好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。怎样才能做出一个符合这三项要求的设计?关键是恰当地提高软件的可维护性和可复用性。
6.软件的复用的好处有:第一,较高的生产效率;第二,较高的软件质量;第三,恰当使用复用可以改善系统的可维护性。
7.传统的复用:代码的剪贴复用、算法的复用、数据结构的复用。传统的复用方案的一个致命缺陷就是复用常常是以破坏可维护性为代价的。
8.可维护性与可复用性是有共同性的两个独立特性,它们就像是两只同时在奔跑的兔子。
9.面向对象设计的复用:面向对象语言中,数据的抽象化、继承、封装和多态性是几项最重要的语言特性。这些特性使得一个系统可以更高的层次上提供可复用性。数据的抽象化和继承关系使得概念和定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。这样一来,复用的焦点不再集中在函数和算法等具体的实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。复用的焦点发生了“倒转”。抽象层次是比这些细节更值得强调的复用焦点,因为它们是在提高复用性的同时,保持和提高可维护性的关键。
10.在面向对象的设计里面,可维护性复用是以设计原则和设计模式为基础的。
11.设计原则对可维护性的支持:系统的扩展性是由“开-闭”原则、里氏代换原则、依赖倒转原则和组合/聚合复用原则所保证的。系统的灵活性是由“开-闭”原则、迪米特法则、接口隔离原则所保证的。系统的可插入性是由“开-闭”原则、里氏代换原则、组合/聚合复用原则以及依赖倒转原则保证的。
12.三类设计模式:创建型模式、结构型模式、行为型模式。