基于上述考虑,把问题/子问题(功能/子功能)的分解与软件开发中的系统/子系统或者系统/模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。所谓"比较单纯",是指模块和其它模块之间的接口应尽可能独立。

  实际上,如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低;但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量也随之增加。如图3.4所示。因此,存在一个模块个数M, 它使得总的开发成本达到最小。
  
图示


 图3.4 模块大小、模块数目与费用的关系