1
面向对象软件工程实践指南
1.2.7.2 7.2 软件设计的原则
7.2 软件设计的原则

无论是机械设计、建筑设计,还是电子设计,都有一套设计原则,这些设计原则应该贯彻在所有的设计实践中。软件设计也不例外。然而,相对而言,在机械行业、建筑行业、电子行业都有比较成熟而详细的设计指南,软件行业仅仅是有一些设计原则,而且这些设计原则还比较抽象。

在本节中,我们介绍的设计原则,不仅适用于子系统层次,也适合于对象层次。有些原则在分析阶段中就已经得到应用,这是为了使其与在软件中应用此原则时一致起来。

1)高内聚、低耦合原则

这是软件设计中最基本的原则。通过将功能相关的责任分配给一个类,实现了类的高内聚,通过将功能相关的类组织成子系统,实现了子系统的高内聚。而在类与类之间、子系统与子系统之间,使它们之间的交互尽量少,实现了低耦合。高内聚、低耦合的原则是软件设计中的根本原则,其他原则都是依据此原则派生而来。在分析阶段已经对此原则进行了介绍,在此就不再进一步展开。

2)“模型视图”相分离原则

模型视图分离原则是高内聚、低耦合原则的一个应用。“模型”代表的是依据领域类确定的设计类,它是从业务逻辑中抽取而来的,相对稳定。“视图”对应的是人机接口。显然,不同用户对人机接口有不同的要求,修改意见也比较集中于人机接口部分。通过模型视图的分离,使得人机接口的修改不影响模型对应的设计类,从而提高了系统的可维护性。

3)关注点分离原则

关注点分离原则强调软件元素应该具有互不相关的目的。也就是说,一个元素承担的职责比较专一,它不会去承担应该由另一个元素承担的职责。关注点的分离是通过明确边界来达成的。边界是任何逻辑或者物理的限制,它能给一组特定的职责划定界限。关注点分离的目标是使各个软件元素各司其职,从而形成一个具有良好秩序的系统。

将关注点分离原则应用于软件设计有许多的好处。首先,每一个软件元素的目的单一会使得整个系统更易于维护,提高了可维护性后,系统整体也会变得更加稳定;由软件元素专注于单一目标所形成的解耦,使得它在其他系统中的复用变得容易。关注点分离也是现实世界中组织管理的一个理念,它使得团队责任明确。

4)重用的原则

在成熟的工业中,部件(系统)可重用是大规模生产的前提。例如在机械行业、电子行业中,各个零部件具有高度的可重用性、互换性。软件行业需要向成熟工业学习,首先就是要学习可重用性。以往的可重用的软件部件,有的可以不加修改直接使用,有的进行修改后就可以再用,从而大大提高了生产效率,同时,可重用的软件元素有严格的质量保证,重用它们有助于提高整个软件产品的质量。所以在软件设计过程中,始终要考虑重用性的问题:一方面,需要考虑可以重用哪些现成的元素,从而能够改进开发,另一方面,需要考虑正在开发的软件如何提高可重用性,以利于后续的开发。

可重用的软件元素不仅包括程序(如子系统、组件、类库、代码等),也可以是测试用例、设计文档、设计过程和标准,甚至是设计知识。7.3节中将对此进行更为详细的阐述。