模块化
模块是数据说明、语句等程序对象的集合,单独命名而且可通过名字来访问,如过程、函数、子程序、宏等都可以作为模块。
模块具有3个基本属性:
(1)功能:模块实现的功能(含该模块调用的子模块的功能)。
(2)逻辑:描述模块内部怎么做。
(3)状态:模块使用时的环境和条件。
模块具有内部和外部两个特性:
(1)外部特性:模块的名字、参数表等。
(2)内部特性:完成模块功能的程序代码和模块内部数据。
调用一个模块只需要了解模块的外部属性,而不需要了解其内部属性,这是模块的信息隐蔽性的表现。
在软件设计中,通常首先确定软件的外部特性,然后再确定其内部特性。外部特性是概要设计的任务,内部特性是详细设计的任务。模块化是把程序划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,可以完成指定功能,满足问题的需求。现在的软件往往都很大,系统中控制路径多、涉及范围广、使用的变量多、数据结构复杂,在理解和开发时难度较大。实践证明,如果把两个问题结合起来作为一个问题来解决,其理解复杂性大于这两个问题分开考虑时的理解复杂性之和。所以,把一个大而复杂的问题分解成些独立的易于处理的小问题,解决起来就容易得多。
采用模块化的原理可以使软件结构清晰,既容易设计又容易阅读、理解和修改。其原因主要有以下3方面:
(1)程序错误通常局限在有关模块及其接口中。
(2)修改错误只会涉及少数模块。
(3)可以由许多程序员同时协同完成大型程序,推动了系统各个部分的并行开发,从而提高了软件的生产效率。
一般情况下,把一个系统分解的模块数越多,模块越小,每个模块花费的工作量就越少;但是,当模块数增多时,模块间的联系就变多,把这些模块联结起来的工作量也随之增加。因此,在进行模块分解时,分解的模块数不能太多,也不能太少,要进行适当的折衷,使总的花费成本最低。