软件设计的基本原理
1.模块化
模块是程序中数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。在软件体系结构中,模块是可组合、可分解和可更换的单元。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
开发一个大而复杂软件系统,将它进行适当的分解,不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率。这是模块划分的依据。
2.抽象
抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节。
3.信息隐蔽
信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息对于不需要这些信息的其他模块来说,是不能访问的。通过抽象,可以确定组成软件的过程实体;通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。
4.模块独立性
模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少其接口简单。衡量模块独立性的标准是耦合性和内聚性。
耦合性:耦合性也称为块间联系,指软件系统结构中各个模块间相互联系的紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。按照耦合性从低到高的顺序,模块的耦合性有无直接耦合、数据耦合、标记耦合、控制耦合、公共耦合和内容耦合。
无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。
数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
标记耦合:指两个模块之间传递的是数据结构。
控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内某一功能。因此,被调用模块内应具有多个功能,哪个功能起作用受调用模块控制。
公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。
内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合。
内聚性:内聚性也称为块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素的联系越紧密,则它的内聚性就越高。按照从内聚性从低到高的顺序,模块的内聚性有偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚和功能内聚。
偶然内聚:指一个模块内的各种处理元素之间没有任何联系。
逻辑内聚:指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
通信内聚:指模块内所有处理元素的都在同一个数据结构上操作,或者指各处理使用相同的输入数据或着产生相同的输出数据。
顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一个功能元素的输入。
功能内聚:这是最强的内聚,指模块内所有元素共同作用完成一个功能,缺一不可。