5.5.1 Jackson方法简介
早期的Jackson方法用于开发规模较小的数据处理系统的设计,称为Jackson结构程序设计方法,简称JSP(Jackson Structured Programming)。它是按照输入、输出和内部信息的数据结构进行软件设计的。即首先要建立输入、输出的数据结构,再将其转换为软件结构。
但将JSP方法应用于大系统设计时就会出现大量复杂的难以对付的结构冲突。为了解决这些问题,20世纪80年代后期,Jackson在JSP基础上扩展成一种系统的开发方法,JSD(Jackson System Development)法。将开发的重点放在构造与系统相关的现实世界,并建立在现实世界的信息域的模型上,其最终目标是生成软件的过程性描述。
(1)Jackson图。Jackson方法面向数据结构设计,提供了自己的描述工具,这种用图形描述数据结构和程序结构的图形,称为Jackson图。Jackson图既可以用来描述问题的数据结构,也可以描述每个实体执行的动作及其时序,产生一组描述实体进程的Jackson结构图。数据结构图中的方框表示数据,程序结构图中的方框表示模块(过程或函数等)。图5.10为Jackson结构图的三种基本结构表示。

图5.10 Jackson图的三种基本结构
①顺序结构。顺序结构的数据是由一个或多个数据元素组成,每个元素按确定次序出现一次,图5.10(a)所示为顺序结构Jackson图的一个例子,图中,A由基本成分B、C、D这3个元素顺序组成(每个元素只出现一次,出现的次序是B、C和D)。
②选择结构。选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个,图5.10(b)所示为3个条件中选择一个结构的Jackson图。图中,根据条件A是由B或C或D中的某一个。
③重复结构。重复结构的数据,根据使用时的条件由一个元素出现零次或多次构成。图5.10(c)所示为重复结构的Jackson图。图中,A是由B出现N次(N≥0)组成(注意在B的右上角有星号做标记)。
Jackson图的优点如下。
①便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。(https://www.daowen.com)
②形象直观可读性好。
③既能表示数据结构,也能表示程序结构(因为结构程序设计也只使用上述三种基本结构)。
(2)改进的Jackson图。前面介绍的Jackson图存在一定的缺点:用这种图形工具表示选择或重复结构时,选择条件或循环结束条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序。此外,框之间连线为斜线,不易在行式打印机上输出。为了解决上述问题,建议使用如图5.11中给出的改进的Jackson图。

图5.11 改进的Jackson图
图5.11(a)所示为顺序结构,B、C、D中任一个都不能是选择出现或重复出现的数据元素(即不能是右上角有小圆或星号标记的)。
图5.11(b)所示为选择结构,S右面括号中的数字i是分支条件的编号。
图5.11(c)所示为可选结构,A或者是元素B或者不出现(可选结构是选择结构的一种常见的特殊形式)。
图5.11(d)所示为重复结构,循环结束条件的编号为i。
请注意,虽然Jackson图和描绘软件结构的层次图形式相当类似,但是含义却不相同:层次图中的一个方框通常代表一个模块;Jackson图即使在描绘程序结构时,一个方框也并不代表一个模块,通常一个方框只代表几个语句。层次图表现的是调用关系,通常一个模块除了调用下级模块外,还完成其他操作;Jackson图表现的是组成关系,即一个方框中包括的操作仅仅由它下层框中的那些操作组成。