您好,欢迎访问三七文档
第9章Jackson方法第9章Jackson方法9.1概述1.2.3.4.SD方法和JSP方法的异同面向数据流的设计(SD方法)和面向数据结构的设计(JSP方法)的共同点都是数据信息驱动的,都试图将数据表示转换成软件表示,不同之处在于面向数据结构的设计不利用数据流图,而根据数据结构的表示来设计。第9章Jackson方法5.JSPJSP方法的优点:简单,适合于规模不大的系统,建立了问题的数据结构之后,可直接推导出相应的程序结构。JSP方法的局限性:不适合于大系统,当输入数据结构与输出数据结构不相同且无对应关系时,难于应用。当数据结构发生变化时,程序结构也发生变化,一般是总体上用SD方法,局部范围用JSP方法。第9章Jackson方法9.2JSP9.2.1Jackson图Jackson图是JSP方法的描述工具,在分析、确定问题的数据结构后,用Jackson图来描绘问题的数据结构。1.Jackson虽然程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复三种,因此,逻辑数据结构也只有这三种。1)第9章Jackson方法顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。9.1(a)中的A是一个顺序结构,指出基本成份B,C,D顺序组成。注意,这里的A并非模块,它既可以是数据(表示数据结构时),又可以是程序(表示程序结构时),而B,C,D仅是A的成份,上、下层是“组成”的关系,A中除了B,C,D外不包含其他代码,不同于Yourdon方法的软件结构。2)选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。如图9.1(b)中的A是一个选择结构,由数据元素B,C或D组成。第9章Jackson方法图9.1Jackson(a)顺序结构;(b)选择结构;(c)重复结构(b)ACDB(a)AC°D°B°AB*(c)第9章Jackson方法3)重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。如图9.1(c)所示,表示A由多个数据元素B组成。Jackson(1)便于表示层次结构,是对结构进行自顶向下分解的有力工具。(2)形象直观可读性好。(3)既能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。第9章Jackson方法3.Jackson某仓库管理系统每天要处理大批由单据所组成的事务文件。单据分为订货单和发货单两种,每张单据由多行组成,订货单每行包括零件号、零件名、单价及数量等4个数据项,发货单每行包括零件号、零件名及数量等3个数据项,用Jackson结构图表示该事务文件的数据结构。图9.2为该事务文件的数据结构。第9章Jackson方法图9.2事务文件的Jackson结构图事务文件单据*订货单°发货单°发货行*订货行*零件号零件名数量数量单价零件名零件号第9章Jackson方法9.2.2纲要逻辑是类似于伪码的一种语言表示工具,与Jackson结构图对应,用于将Jackson结构图表示的程序结构转换为语言表示。图9.1中对应的纲要逻辑为:(1)顺序结构:AseqBCDAend第9章Jackson方法(2)选择结构:Asel条件1Balt条件2Calt条件3DAend第9章Jackson方法(3)重复结构:Aiteruntil(或while)条件BAend第9章Jackson方法9.2.3JSP方法基本由下列5个步骤组成:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须是重复的次序和次数都相同才可能有对应关系)。(3)用下列3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:第9章Jackson方法①为每对有对应关系的数据单元,按照它们在数据结构图中的层次和在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。②根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。③根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。(4)列出所有操作和条件(包括选择条件和重复结束条件),并把它们分配到程序结构图的适当位置。(5)用纲要逻辑表示程序。第9章Jackson方法9.2.4JSP方法应用示例现举例说明JSP方法设计过程。1)某仓库存放多种零件(如P1,P2,……),每个零件的每次进货、发货都有一张卡片作出记录,每月根据这样一叠卡片打印一张月报表。报表每行列出某种零件本月库存量的净变化。用JSP方法对该问题进行设计。2)建立输入、建立输入、(1)输入数据:根据问题陈述,同一种零件的进货、发货状态不同,每月登记有若干张卡片。第9章Jackson方法把同一种零件的卡片放在一起组成一组,所有的卡片组按零件名排序。所以输入数据是由许多零件组组成的文件,每个零件组有许多张卡片,张卡片上记录着本零件进货或发货的信息。因此输入数据结构的Jackson图为图9.3(a)。(2)输出数据:根据问题陈述,输出数据是一张如图9.3(c)的月报表,它由表头和表体两部分组成,表体中有许多行,一个零件的净变化占一行,其输出数据结构的Jackson图为图9.3(b)。3)找出输入、月报表由输入文件产生,有直接的因果关系,因此顶层的数据单元是对应的。表体的每一行数据由输入文件的每一个“零件组”计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,都按零件号排序。因此“零件组”与“行”两个单元对应,以下再无对应的单元。第9章Jackson方法图9.3某仓库系统输入、(a)输入数据结构;(b)输出数据结构;(c)输出表输入文件零件组*卡片*进货°发货°月报表表头表体行*零件名净变化对应对应月报表零件名增加数量P1P2P3+1500-100+200…(c)(b)(a)第9章Jackson方法4)找出对应关系后,根据以下规则导出程序结构:对于输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元按照它们所在的层次,在程序结构图适当位置合画一个处理框,无对应关系的数据单元,各画一个处理框。根据以上规则,画出的程序结构图如图9.4所示。在图9.4的程序结构的第4层增加了一个“处理零件组”的框,因为改进的Jackson图规定顺序执行的处理中不允许混有重复执行和选择执行的处理。增加了这样一个框,使符合该规定,同时也提高了结构图的易读性。第9章Jackson方法图9.4某仓库系统程序结构由输入文件产生月报表产生表头产生表体产生零件名产生净变化处理零件组处理卡片*处理发货°处理进货°由零件组产生输出行*第9章Jackson方法5)为了对程序结构作补充,要列出求解问题的所有操作和条件,然后分配到程序结构图的适当位置,就可得到完整的程序结构图。(1)本问题的基本操作列出如下:A、终止B、打开文件C、关闭文件D、打印字符行E、读一张卡F、产生行结束符G、累计进货量H、累计发货量I、计算净变化J、(2)列出条件如下:I(1):输入条件未结束I(2):零件组未结束S(3):9.5所示。第9章Jackson方法图9.5分配操作后的程序结构图由输入文件产生月报表产生表头产生表体产生零件名产生净变化处理零件组处理卡片*处理发货°处理进货°由零件组产生输出行*IS(3)GHI(2)DIDFJDJEBCAI(1)第9章Jackson方法在分配操作时注意:为了能获得重复和选择的条件,Jackson建议至少超前读一个记录,以便使得程序不论在什么时候判定,总有数据已经读入,并做好使用准备。因此在图9.5中,将操作E(读一张卡)放在打开文件之后,同时在处理完一张卡片后再读一次。6)Jackson方法中的纲要逻辑与Jackson所示的程序结构图完全对应,用纲要逻辑写出程序的过程,实际上就是自顶向下用这些纲要逻辑替换Jackson图中每个处理框的过程,每个处理框都看作是下层处理框及分配在上面的操作组成。图9.5所示的程序结构的纲要逻辑为:第9章Jackson方法产生月报表seq产生表头seq产生表头end产生表体iterwhile由零件组产生输出行seq处理零件组iterwhile处理卡片sel第9章Jackson方法处理进货seq处理进货endalt处理发货seq处理发货end处理卡片end读一张卡处理零件组end第9章Jackson方法产生零件名seq产生零件名end产生净变化seq计算净变化产生净变化end第9章Jackson方法由零件组产生输出行end产生表体end产生月报表end用纲要逻辑书写程序可以很方便地转换成源代码,还可以检查前面步骤的错误。如果分配操作不正确或者结构图不正确,都难以写出它的纲要逻辑。第9章Jackson方法9.2.5JSP方法适用于输入数据和输出数据结构之间有对应关系的问题求解。但有些情况下,输入数据和输出数据结构之间找不到对应关系,若仓库系统中的卡片不按零件名分组,而是按进货、发货的日期顺序排列,这样“零件组”与“行”就不对应了。输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。对这种结构冲突的问题,Jackson提出了引入中间数据结构或中间文件的办法,将冲突部分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。第9章Jackson方法9.3JSD方法9.3.1JSD1.JSDJSD方法是JSP的扩充,它是因JSP的缺陷而产生的。9.2节已经讲到JSP方法是基于输入数据结构和输出数据结构的对应复合而成程序结构的,但当要开发的系统十分庞大时,输入数据结构和输出数据结构之间就会出现大量复杂的、JSP难以对付的结构冲突问题,致使软件系统结构无法形成,因而它只是一种程序设计方法,只适用于小型程序的开发。第9章Jackson方法2.JSD1)JSD则是采用“分而治之”的复杂性控制原则,将系统大量复杂的输入数据流和输出数据流分离为一些独立的、彼此无关联的、结构简单的输入数据流和一些独立的、彼此无关联的输出数据流,其中每一简单的输出数据流仅关联于少数几个简单的输入数据流。这样,一个错综复杂的庞大问题就转化为多个互不关联的独立的小型程序开发问题,这些小型程序在开发时不会出现复杂的结构冲突,即可直接使用JSP方法了。第9章Jackson方法2)对于系统输入数据流的分离,JSD方法追溯系统输入数据流的真正内含,即系统输入数据流是系统所关注的客观世界动态行为的一种信息表述。因此,JSD方法根据用户的专业知识对客观世界行为进行自然划分,将系统输入数据流分离为多个彼此独立的输入数据流,其中每种独立的输入数据流对应于客观世界中的一个实体,该实体是动态行为的一种信息表述。对于系统输出数据流的分离,JSD方法未加以说明。3)JSD方法将软件系统输入数据流的内含——客观世界及其动态行为称为软件系统的主题,而软件系统的功能则是根据系统的输入数据产生系统的输出数据。第9章Jackson方法JSD方法在计算机中用信息处理的顺序进程,模拟系统主题中客观实体的行为,建立系统主题的计算机仿真模型,为产生系统输出数据的软件系统中的功能进程提供所需的输入数据。顺序进程、功能进程和它们之间数据通信的说明构成了完整、详尽的软件系统说明,JSD方法以此为依据,形成最终形式的、可在目标计算机环境中有效、方便运行的软件系统。JSD涉及的活动几乎覆盖整个软件生命期,强调需求分析和规格说明,也包括设计和编程,直至最终实现一个可运行的目标系统,是比较完整的系统开发方法。此外,JSD方法对需求的描述特别强调操作之间的时序性,所以它应用于时序特点较强的系统,包括数据处理系统和一些实时控制系统。第9章Jackson方法3.JSD方法的特点JSD(1)建立现实
本文标题:Jackson方法
链接地址:https://www.777doc.com/doc-4593346 .html