这里讨论的软件设计原则,是以第2章的内容为理论基础的。开发大型软件的实践表明.在软件系统软件设计中,应遵循以下原则。
1.通过模块的分解和合成,以减小块间联系,增加块内联系。
模块间的联系越大,调用关系就越复杂.因此.在软件系统总体软件设计中,应尽可能减小模块间的调用关系。例如图5.1(a)中,模块C:和C:具有功能类似的组成部分,也有不同的部分。
通过模块的分解消除重复的功能部分.首先找出模块C,和C:的功能类似的部分,如图中的虚线部分,然后把这两模块的虚线部分分离出来.构成它们的一个公共的下层模块C,如图5.1。
如果分解后,余下的模块C',和C:比较简单,则可以与它的各自调用模块A或B合并,如图5.1(c)或((d)。图5.1的(b),(c),(d)都消除了模块中重复功能的组成部分,使块内联系增大,块间联系减小。
在图5.2(a)中,如果模块B与模块C和D以及模块E和F间的块间联系较大.那么就可把模块B,C,D合并成一个模块BCD.把模块E和F合并成一个模块EF,如图5.2(b).这样也可使得块间联系减小,块内联系增强。
2.模块调用个数最好不要超过5个。
无论是一个模块调用其下级模块或一个模块被多个上层模块所调用,其调用个数最好不要超过5个。否则,该模块的功能一定不单一,其调用关系复杂。如图5.3(a)和(b)那样。
这个模块就往往包含过多的功能。除特殊情况外,应当避免这种结构,向深度发展。图5.3(a)的结构可以改进成为如图5.4(a)的结构,图5.3(b)的结构可改进成为如图5-4(b)所示的结构。