在软件产品开发过程中软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量软件质量的属性。软件的可维护性是指软件能够被理解、修改、适应及扩展的难易程度;软件的可复用性是指软件能够被重复使用的难易程度。
面向对象设计的目标之一在于支持可维护性复用。一方面需要实现设计方案或者源代码的复用;另一方面要确保系统能够易于扩展和修改,具有良好的可维护性。面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则,但并不是强制性的。
面向对象设计原则也是设计模式学习的基础,每一个设计模式都符合某一个或多个面向对象设计原则。换个角度来说:面向对象设计原则是用于评价一个设计模式的使用效果的重要指标之一。通过在软件开发中使用这些原则可以提高软件的可维护性和可复用性,以便设计出兼具良好的可维护性和可复用性的软件系统,实现可维护性复用的目标。
可维护性较低的软件产品,通常由四个原因造成:
良好的系统设计应该具备如下三个性质: