190 likes | 612 Views
面向数据结构的分析和设计. Jackson 方法. Jackson 方法. 面向数据结构方法是一种根据输入 / 输出数据结构导出程序结构的方法 典型的方法有 Jackson 方法和 Warnier 方法 70 年代初英国人 M.Jackson 提出了 JSP 方法( Jackson 结构化程序设计方法), 70 年代末将其扩充为 JSD ( Jackson System Development) Jackson 方法适用于规模不大的数据处理系统,在欧洲比较流行. }. }. 分析. 设计. Jackson 系统开发方法( JSD ).
E N D
面向数据结构的分析和设计 • Jackson方法
Jackson方法 • 面向数据结构方法是一种根据输入/输出数据结构导出程序结构的方法 • 典型的方法有Jackson方法和Warnier方法 • 70年代初英国人M.Jackson提出了JSP方法(Jackson结构化程序设计方法),70年代末将其扩充为JSD(Jackson System Development) • Jackson方法适用于规模不大的数据处理系统,在欧洲比较流行
} } 分析 设计 Jackson系统开发方法(JSD) JSD的分析和设计步骤: • 标识实体与行为 • 生成实体结构图 • 创建软件系统模型 • 扩充功能性过程 • 施加时间约束 • 实现
Jackson结构化程序设计(JSP) JSP的分析和设计步骤: • 分析并确定输入和输出数据的逻辑结构,并用Jackson图画出 • 找出输入数据结构与输出数据结构中有对应关系的数据元素 • 从描绘数据结构的Jackson图导出描绘程序结构的Jackson图 • 列出所有操作和条件,将它们分配到程序结构图的适当位置 • 用伪码表示程序
分析并确定输入和输出数据的逻辑结构,并用Jackson图画出分析并确定输入和输出数据的逻辑结构,并用Jackson图画出 • 虽然实际使用的数据结构种类繁多,但它们的数据元素之间的逻辑关系却只有顺序、选择、重复三类 • Jackson方法中数据结构和程序结构都用相同的Jackson图表示
B D A A A S(i) C Cº B* Bº Dº I(i) Jackson图 • 顺序结构: A由B、C、D三个元素顺序组成 • 选择结构: A或是B或是C或是D ( S(i)为选择条件) • 重复结构: A由B重复n次(n 0)组成,( I(i)为循环条件)
文件 项1 项3 记录* 表格 XXXX表 项2 表体 行* 表头 表尾 姓名 年龄 类别 状态 XX年XX月XX日 工龄º 年级º 例
2. 找出输入数据结构与输出数据结构中有对应关系的数据元素 • 所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据元素。对于表示“重复”的数据元素,必须其重复次数和次序都相同时才有对应关系。 • 由于输出数据总是通过对输入数据的处理而得到的,因此,输入/输出数据结构最高层次的两个数据元素总是有对应关系的。
正文文件 字符串* 字符* 空格º 非空格º 实例:一个正文文件由若干个记录组成,每个记录是一个字符串,要求统计每个记录中空格个数,以及文件中空格的总数。要求的输出数据格式是:每复制一行输入字符串后,另起一行输出该字符串中的空格数,最后输出文件中空格的总数。 解:输入数据结构如右图
输出表格 空格总数 表格体 串信息* 字符串 空格数 }串信息1 }串信息2 输出格式: String 1 Number 1 String 2 Number 2 ⋮ ⋮ String n Number n Total 输出数据结构如右图 }串信息n
输出表格 正文文件 空格总数 字符串* 表格体 字符* 串信息* 空格º 非空格º 字符串 空格数 输入/输出数据结构中有对应关系的数据单元
3. 从描绘数据结构的Jackson图导出描绘程序结构的Jackson图 导出规则如下 • 为每对有对应关系的数据元素,按照它们在数据结构图中的层次在程序结构图的相应层次上画一个处理框。如果这对数据元素在输入数据结构图和输出数据结构图中所处的层次不同时,程序结构图中与之对应的处理框的层次与它们在数据结构图中层次较低的那个对应。
为输入数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画一个处理框。为输入数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画一个处理框。 • 为输出数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画一个处理框。
统计空格 * 程序体 印空格总数 * * I(1) º º 处理字符串* 印字符串 分析字符串 印空格数 I(2) 分析字符* S(3) 处理空格º 处理非空格º 程序结构图
停止 • 打开文件 • 关闭文件 • 打印字符串 • 打印空格数 • 打印空格总数 • sum := sun + 1 • totalsum := totalsum + 1 • 9. 读入字符串 • 10. sum := 0 • 11. totalsum := 0 • 12. pointer := 1 • 13. pointer := pointer + 1 I(1) 文件结束 I(2) 字符串结束 S(3) 字符是空格 其中: Sum存放一行字符串中 的空格数; Totalsum存放空格总数; Pointer用来指示当前分 析的字符在字符 串中的位置 4. 列出所有操作和条件,将它们分配到程序结构图的适当位置
统计空格 2 9 11 程序体 印空格总数 3 1 6 处理字符串* I(1) 分析字符串 印空格数 印字符串 10 12 8 9 4 5 分析字符* I(2) 处理空格º 处理非空格º S(3) 7 13 13
Aseq B C D Aend B D Aiter while cond B Aend 或 Aiter until cond B Aend A A A Aselect cond1 B Aor cond2 C Aor cond3 D Aend s(i) C Cº B* Bº Dº I(i) 5. 用伪码表示程序
统计空格seq 打开文件 读入字符串 totalsum := 0 程序体iter until文件结束 处理字符串seq 印字符串seq 打印字符串 印字符串end sum := 0 pointer := 1 分析字符串iter until字符串结束 分析字符select字符是空格 处理空格seq sum := sum + 1 pointer := pointer + 1 处理空格end 分析字符or字符不是空格 处理非空格seq pointer := pointer + 1 处理非空格end 分析字符end 分析字符串end 印空格数seq 打印空格数 印空格数end totalsum := totalsum + 1 读入字符串 处理字符串end 程序体end 印空格总数seq 打印空格总数 印空格总数end 关闭文件 停止 统计空格end
Jackson方法的特点 • 简单、易学、形象直观、可读性好 • 便于表示层次结构 • 适用于小型数据处理系统