软件结构

由软件各组成成分构造软件的过程、方法和表示。它是影响软件质量的内在因素,结构良好的软件可以提高软件的可靠性和易维护性。软件结构主要包括程序结构和文件结构。文件描述的对象往往很复杂,所以文件结构需要简明、清晰和有层次。程序结构有两层含义,一是指程序的数据结构和控制结构;另一是指由比程序低一级的程序单位(模块)组成程序的过程、方法和表示。在后者的含义下,具有代表性的是块结构和嵌套结构两种。块结构比较自然,各个部分之间通过一些公用变量取得联系。嵌套结构是在嵌套分程序的基础上引进局部性和动态性,以减少程序的初始信息量。嵌套结构不如块结构直观,调试不方便。

对于模块可理解为具有如下特性的程序单位,即把这种模块组合成较大的程序时,不要求了解各个模块的内部工作细节,而各个模块的正确性也不用置于整个程序中就可以检查。

有的程序是单模块结构,有的是多模块结构。这些模块在程序的逻辑上是可以分离的,可以用不同的程序设计语言编写,可以由相应的编译程序个别编译,可以和其他的程序单位组合并装入计算机内运行。由于编写大程序的需要,而且模块可以多次使用,实行模块化是一个必然趋势。

由一组模块组成的大型程序可有三种结构,即顺序结构、并发结构和分布结构。顺序结构比较成熟,所采用的程序设计语言是顺序程序设计语言,如ALGOL、FORTRAN。并发结构的程序由若干个可以同时执行的模块组成。这些模块可以在多台处理机上并行执行,也可以在同一台处理机上夹插执行,所采用的程序设计语言是并发程序设计语言,如并发PASCAL、MODULA-Ⅱ。分布结构的程序由若干个可独立执行的模块组成。这些模块可以分布于一个分布式系统中几台计算机上同时运行,可以在程序运行前就全部分布好,所采用的程序设计语言是分布式程序设计语言。

对于顺序结构,在由一组模块组成大型程序时,这些模块之间可能具有数据传输和控制转移的接口关系。这种关系可以是随意的,如早期的操作系统,但可靠性难以保证,不易维护。这种关系也可以是有向半序的,如T.H.E.操作系统,在软件性能上得到很大改善,但适应性差。这种关系可以是树形的,使得用于下属各模块之间的传输数据变量都局限于本模块,这是对有向半序的一种改进。

模块有多种划分方法,但有共同的特性。

(1)聚合度:把模块内各成分保持在一起的一种粘合力的量度;

(2)关联度:模块之间互相牵连的疏密程度的一种量度。不论采用何种方法,都应使聚合度上升而关联度下降。

参考文章