第1页:软件工程第6章面向数据结构的分析与设计
软件工程第6章面向数据结构的分析与设计
第2页:面向数据结构的需求分析与设计
面向数据结构的需求分析与设计
- 典型方法有Jackson方法和Warnier方法
- 主要特点:
- 以信息对象及其操作为核心进行需求分析
- 认为复合信息对象具有层次结构,并且可按顺序、选择、重复三种结构分解为成员信息对象
- 提供由层次信息结构映射为程序结构的机制,从而为软件设计奠定良好的基础
- JSP:Jackson结构程序设计方法
- JSD:Jackson系统开发方法
第3页:内容摘要
内容摘要
第4页:内容摘要(续)
内容摘要
第5页:内容摘要(续)
JSP方法
- 总结了COBOL事务处理程序中的开发方法而发展起来的,特点:
- 重点不是自顶向下逐步求精,而是在数据结构基础上进行构造
- 根据输入/输出的数据结构建立程序结构
- 目标:获得简单清晰的设计方案
- 设计原则:使程序结构与问题结构(数据结构)相对应
第6页:数据结构和程序结构
数据结构和程序结构
- 一般的数据处理系统处理的是具有层次结构的数据,因而其问题结构可以用它所处理的数据结构来表示
第7页:数据结构与程序结构的表示
数据结构与程序结构的表示
- JSP方法采用Jackson图来表示数据结构和程序结构
- 结构图是一种从左到右阅读的树状层次结构图
- 数据结构图中方框表示数据,程序结构图中方框就表示模块(过程或函数)
- 底部的叶子节点称为基本元素
- 在底部枝干以上的节点称为结构元素
- 三种元素类型:顺序元素、选择元素、重复元素
第8页:顺序元素
顺序元素
- 一个顺序元素由一个或多个从左到右的元素组成
- 每个组成的元素只出现一次
第9页:选择元素
选择元素
- 选择是“If Then Else”或“Case”的结构,而且必须有两个或多个元素
- 使用选择元素时根据指定的条件从这些子元素中选择一个子元素
- 供选择的子元素用右上角标以小圆的矩形表示
- 示例:左图中A、B、C是D的可选项,而S是选择条件
- 如果需要一个“If A=B Then X Else donothing”那么需要加入一个空元素
第10页:重复元素
重复元素
- 重复元素仅由一个子元素构成,表示重复元素由子元素重复0次或多次组成
- 子元素用右上角标以星号的矩形表示
- 下图表示元素D由元素A重复0次或多次组成,其中I是重复条件
第11页:结构正文的表示形式
结构正文的表示形式-1
- 结构正文又称伪码,完全与结构图相对应
- 分为:顺序结构正文、选择结构正文、重复结构正文
- 顺序结构正文D Seq顺序A;元素D是由一个元素AB;跟随一个元素BC;跟随一个元素C组成D END元素D是元素A、元素B、元素C的序列
第12页:结构正文的表示形式(续)
结构正文的表示形式-2
- 选择结构正文D Select cond1选择A元素D或是由一个元素AOr cond2B或是由一个元素BOr cond3C或是由一个元素C组成D END cond1、cond2、cond3分别是选择A,B,C的条件
- 重复结构正文D Iter until cond重复A;元素D是由1个或多个元素A组成。D END元素D是元素A的重复或D Iter while condA;元素D是由0至多个元素A组成D END cond为循环条件
第13页:结构正文的表示形式(续)
示例:打印表格程序的输出数据结构和对应的程序结构
第14页:方法的分析和设计步骤-1例6
JSP方法的分析和设计步骤-1例6.2:一个正文文件由若干个记录组成,每个记录是一个字符串,要求统计每个记录中空格个数,以及文件中空格的总数。要求输出的格式是:每复制一行输入字符串后,另起一行输出该字符串中的空格数,最后输出文件空格的总数
第15页:方法的分析和设计步骤
JSP方法的分析和设计步骤-2
- 第1步.分析并确定输入和输出数据结构的逻辑结构,并用Jackson图画出
第16页:方法的分析和设计步骤(续)
JSP方法的分析和设计步骤-3
- 第2步.找出输入数据结构与输出数据结构中有对应关系的数据元素
- 有对应关系是指有直接因果关系,即在程序中可以同时处理的数据元素
- 对于表示“重复”的数据元素,只有其重复次数和次序都相同时才有对应关系
- 输入/输出数据结构最高层次的两个数据元素总是有对应关系的
第17页:方法的分析和设计步骤
JSP方法的分析和设计步骤-4
- 第3步.从描述数据结构的Jackson图导出描述程序结构的Jackson图,导出规则:
- 有对应关系的数据元素,按照它们在数据结构图中的层次在程序结构图的相应层次上画一个处理框(如果它们在输入和输出图中的层次不同,则程序结构图中处理框层次与较低的那个对应
- 为输入数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画一个处理框,在模块名称上增加“分析”或“处理”或取一个具有实际含义的名称
- 为输出数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画上一个处理框
第18页:方法的分析和设计步骤(续)
JSP方法的分析和设计步骤-5
第19页:方法的分析和设计步骤
JSP方法的分析和设计步骤-6
- 第4步.列出所有操作和条件,并将它们分配到程序结构图的适当位置
- 首先从输出操作开始,再回到输入操作
- 加入必须的与条件有关的操作
- 最后把每个操作都分配到程序结构中去
第20页:方法的分析和设计步骤(续)
JSP方法的分析和设计步骤-7
- 设变量sum存放一行字符串中的空格数;totalsum存放空格总数;pointer用来指示当前分析的字符在字符串中的位置,可列出其所有操作,并对其编号如下:
- ①停止
- ②打开文件
- ③关闭文件
- ④打印字符串
- ⑤打印空格数
- ⑥打印空格总数
- ⑦sum:=sum+1
- ⑧totalsum:=totalsum+1
- ⑨读入字符串
- ⑩sum:=013121113
- totalsum:=0
- pointer:=1
- pointer:=pointer+1
- 条件列表如下:
- I(1):文件结束
- I(2):字符串结束
- S(3):字符是空格
- 将条件与相应的循环条件关联,并将①~操作按次序与相当的模块进行关联,按从左至右决定先后顺序,关联后的程序结构图13121113
第21页:方法的分析和设计步骤
JSP方法的分析和设计步骤-8
- 第5步.把带有操作的程序结构图转换成结构正文,同时加入选择及迭代条件统计空格seq打开文件读入字符串totalsum := 0程序体iter until文件结束处理字符串seq印字符串seq打印字符串印字符串endsum := 0pointer := 1分析字符串iter until字符串结束分析字符select字符是空格处理空格seqsum := sum + 1pointer := pointer + 1处理空格end分析字符or字符不是空格处理非空格seqpointer := pointer + 1处理非空格end分析字符end分析字符串end印空格数seq打印空格数印空格数endtotalsum := totalsum + 1读入字符串处理字符串end程序体end印空格总数seq打印空格总数印空格总数end关闭文件停止统计空格end
第22页:方法的特点
JSP方法的特点
- 简单、易学、形象直观、可读性好
- 便于表示层次结构
- 适用于小型数据处理系统
第23页:内容摘要
内容摘要
第24页:内容摘要(续)
JSD方法
- JSP广泛使用十多年后,Jackson把它进行了扩充,不再局限于中小规模范围的问题及顺序范围,新的开发方法称为JSD
- JSD覆盖了整个系统的分析到实现
- JSD的本质:先建立一个现实模型,然后加入功能性处理,最后阶段逻辑系统才转换为实际设计
第25页:方法步骤
JSD方法步骤
- 标识实体与行为:建立现实的模型,列出与系统有关的实体表及活动表
- 生成实体结构图:分析实体表中实体之间的关系,形成实体结构图
- 创造软件系统模型:根据现实世界,对实体与行为的组合建立进程模型
- 扩充功能性过程:说明系统输出的功能,必要时在规格说明中加入附加的处理
- 施加时间控制:开发者考虑进程调度的某些特征,这些特征可能影响系统功能所输出的结果的正确性及时间关系
- 实现:开发者考虑运行系统的软硬件方面的问题,采用变换技术、调度技术、数据库定义技术等,以使系统能有效地运行
第26页:内容摘要
内容摘要
第27页:内容摘要(续)
小结
- 面向数据结构的分析和设计方法是以数据结构为中心,从输入/输出的数据结构导出程序结构
- 由于这种方法在国内用得比较少,因此只作了简单介绍,主要是通过一个实例来介绍JSP方法,使读者对这种方法有一个大致的了解