以下就是软件设计的原则:
一、内聚性
偶然聚合:模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。
逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。
时间聚合:模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。
过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。
通信聚合:模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。
顺序聚合:模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入
功能聚合:模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都必不可少
二、耦合性
非直接耦合:两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。
数据耦合:两个模块彼此间通过数据参数交换信息。
标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
控制耦合:两个模块彼此间传递的信息中有控制信息。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
公共耦合:两个模块之间通过一个公共的数据区域传递信息。
内容耦合:一个模块需要涉及到另一个模块的内部信息
三、权衡适量
模块大小适中
适宜的系统深度和宽度比例
尽可能减少调用的深度
适度控制模块的扇入扇出
模块的作用域应该在模块之内