本科软件工程第9章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章Jackson方法9.1概述9.2JSP方法 9.3JSD方法 第9章Jackson方法返回主目录第9章Jackson方法第9章Jackson方法9.1概述 1.产生 2.基本思想 3.设计和数据结构的关系 4.SD方法和JSP方法的异同 面向数据流的设计(SD方法)和面向数据结构的设计(JSP方法)的共同点都是数据信息驱动的,都试图将数据表示转换成软件表示,不同之处在于面向数据结构的设计不利用数据流图,而根据数据结构的表示来设计。第9章Jackson方法5.JSP方法的优缺点 JSP方法的优点:简单,适合于规模不大的系统,建立了问题的数据结构之后,可直接推导出相应的程序结构。JSP方法的局限性:不适合于大系统,当输入数据结构与输出数据结构不相同且无对应关系时,难于应用。当数据结构发生变化时,程序结构也发生变化,一般是总体上用SD方法,局部范围用JSP方法。 第9章Jackson方法9.2JSP方法 9.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)顺序结构: Aseq B C D Aend第9章Jackson方法(2)选择结构: Asel条件1 B alt条件2 C alt条件3 D Aend 第9章Jackson方法(3)重复结构: Aiteruntil(或while)条件 B Aend 第9章Jackson方法9.2.3开发步骤 JSP方法基本由下列5个步骤组成: (1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须是重复的次序和次数都相同才可能有对应关系)。 (3)用下列3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图: 第9章Jackson方法①为每对有对应关系的数据单元,按照它们在数据结构图中的层次和在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。 ②根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。 ③根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。 (4)列出所有操作和条件(包括选择条件和重复结束条件),并把它们分配到程序结构图的适当位置。 用纲要逻辑表示程序第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 累计进货量 处理进货end alt发货标志 处理发货seq 累计发货量 处理发货end 处理卡片end 读一张卡 处理零件组end 第9章Jackson方法产生零件名seq 打印字符行 产生零件名end 产生净变化seq 计算净变化 打印字符行 产生净变化end 换行 置零件组开始标志 第9章Jackson方法由零件组产生输出行end产生表体end 关闭文件 终止 产生月报表end 用纲要逻辑书写程序可以很方便地转换成源代码,还可以检查前面步骤的错误。如果分配操作不正确或者结构图不正确,都难以写出它的纲要逻辑。 第9章Jackson方法9.2.5结构冲突问题 JSP方法适用于输入数据和输出数据结构之间有对应关系的问题求解。但有些情况下,输入数据和输出数据结构之间找不到对应关系,若仓库系统中的卡片不按零件名分组,而是按进货、发货的日期顺序排列,这样“零件组”与“行”就不对应了。输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。对这种结构冲突的问题,Jackson提出了引入中间数据结构或中间文件的办法,将冲突部分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。第9章Jackson方法9.3JSD方法9.3.1JSD概述 1.JSD的产生 JSD方法是JSP的扩充,它是因JSP的缺陷而产生的。9.2节已经讲到JSP方法是基于输入数据结构和输出数据结构的对应复合而成程序结构的,但当要开发的系统十分庞大时,输入数据结构和输出数据结构之间就会出现大量复杂的、JSP难以对付的结构冲突问题,致使软件系统结构无法形成,因而它只是一种程序设计方法,只适用于小型程序的开发。  第9章Jackson方法2.JSD的基本思想 1)分而治之的原则 JSD则是采用“分而治之”的复杂性控制原则,将系统大量复杂的输入数据流和输出数据流分离为一些独立的、彼此无关联的、结构简单的输入数据流和一些独立的、彼此无关联的输出数据流,其中每一简单的输出数据流仅关联于少数几个简单的输入数据流。这样,一个错综复杂的庞大问题就转化为多个互不关联的独立的小型程序开发问题,这些小型程序在开发时不会出现复杂的结构冲突,即可直接使用JSP方法了。 第9章Jackson方法2)确定实体 对于系统输入数据流的分离,JSD方法追溯系统输入数据流的真正内含,即系统输入数据流是系统所关注的客观世界动态行为的一种信息表述。因此,JSD方法根据用户的专业知识对客观世界行为进行自然划分,将系统输入数据流分离为多个彼此独立的输入数据流,其中每种独立的输入数据流对应于客观世界中的一个实体,该实体

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功