的子系统往往太大,难以直接翻译成代码。例如,一个数据库接口子系统可能非常复杂,需要
有十几个子程序来实现。如果出现这种情况,那么还需要将这个子系统再划分为模块:如数据
存储、数据恢复、问题解释等模块。如果分解出来的模块还是太复杂,那么将对它再次划分。
在许多程序的设计中,在层次1 中分解出来的子系统将直接转变成层次2 中的模块,而不再区
分这两个阶段。
在定义模块时,同时也要定义程序中每个模块之间的相互作用方式。例如,将定义属于某
一模块的数据存取函数。总之,这一层次的主要设计活动是确保所有的子系统都被分解成为可
以用单个模块来实现它的每一部分。
与把一个系统分解成子系统一样,把子系统分解成模块也是主要针对耗时在几天以上的项
目的。如果项目很大,这一层次的分解活动是与上一层次严格区分的。如果项目较小,层次1
与层次2 可能是同时进行的。在图7-1 中,分解为模块的活动已经包含于每个元素中了。正如
图中所示的那样,对于系统不同部分的设计方法是也不同的。对某些模块之间关系的设计可能
是以网络思想为基础的,也可能是以面向对象思想为基础的。如同图中左面两个子系统那样。
而其它模块的设计则可能是分级的。如图中右侧的子系统那样。
层次3:划分成子程序:
这个层次的设计包括把每个模块划分成各种功能,一旦一个子程序被识别出来,那么就同
时规定它的功能。由于模块与系统其它部分是相互作用的,而这一作用又是通过功能子程序进
行的,所以,模块与系统其余部分的作用细节是在这一部分规定的。例如,将严格定义如何调
用解释程序。
这一层次的分解和设计工作对于任何耗时超过几个小时的项目都是需要的,它并不一定需
要被正式地进行,但起码是要在心中进行。在图7-1 中,在左上角的一组中的一个模块中,给
出了划分成子程序的工作活动。当你揭开黑盒子的盖子时,如同图7-l 中标有3 的模块,你可
以发现由模块提供的功能是由层次组织的子程序组成的。这并不是意味着每个黑盒子中都含有
层次结构,事实上只有某些黑盒子中才有。其余组织形式的子程序可能没有或很少有层次结构。
层次4:子程序内部的设计:
在子程序层次上的设计,包括设计单个子程序中的详细功能等。子程序内部设计往往是由
程序员进行的。这一设计包括编写PDL,在参考书中寻找算法,在子程序中组织代码段落,编
写编程语言代码等活动。这种层次的工作在任何一个项目中都是要进行的,无论是有意识的还
是无意识的,是作得好还是作得坏。如果缺少了这一层次的工作,任何程序都不可能产生。在
图7-1 中,在标有(4)的一组中,表现了这个层次的工作。
7.1.3 创建中的设计工作
对于设计层次的讨论,是论述本章其余部分内容的前提,当人们在提到“设计”一词时,
他们事实指的可能是许多不同的活动。这是一个非常重大的主题,也是非常重要的。以下是关
于这一活动,但这次是按照从细节到总体的顺序进行的。