资源描述:
《6-第六章 面向数据结构的设计方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第六章面向数据结构的设计方法前面介绍的结构化系统设计,是一种面向数据流的设计方法.本章介绍两种其它的设计方法---Jackson方法与LCP方法.它们都是面向数据结构的独立的系统设计方法.常将它们作为辅助的设计方法,配合SD方法使用.§1面向数据结构的设计一.面向数据流的设计考虑问题的出发点是:数据流.最终目标:软件的最终SC图.解决问题的焦点:模块的合理划分.最佳适用范围:概要设计中,确定软件的结构.以SD为例,在分析阶段:以数据流图表示软件的逻辑模型;在设计阶段:按照数据流的类型,分别用变换分析或事务分析将它们转换为相应的软件结构.二.面向数据结构的设计基本思
2、想:从问题的数据结构导出它的程序结构.作为独立的系统设计方法主要用于小规模数据处理的开发.考虑问题的出发点是:数据结构.最终目标:得出程序的过程性描述.最佳适用范围:详细设计中,确定部分或全部模块的逻辑过程.三.两种设计方法的共同点1.遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础;2.均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则.§2Jackson设计方法一.Jackson图Jackson图是Jackson方法的表达工具.1.Jackson图表达的结构(a)顺序(b)选择(c)重复AB
3、*AB0C0ACBB*AAB0C0BCASI10(a)表示A由B、C两部分顺序组成;(b)表示A可以包含B或C(S代表选择);(c)表示A由B重复任意次(含零次)构成(I代表重复).2.Jackson图的应用(1)表示数据结构(2)表示程序结构例:一教职工名册如下:教职工名册姓名类别津贴表头表体用Jackson图表示的数据结构如下名册行*栏名行姓名表头表体表名行类别教龄津贴0工龄津贴0津贴10用Jackson图表示的程序结构如下产生名册文件产生行*产生栏名行产生姓名产生表头产生表体产生表名行产生类别产生0教龄津贴产生0工龄津贴产生津贴(3)Jackson伪代码:为
4、了实现从程序结构到逻辑结构描述的转换,需设计一组相应的伪代码:Jackson伪代码(图解逻辑).下图给出与三种程序结构相对应的Jackson伪代码.其中,带下滑线的字为保留字,cond表示条件.(a)顺序(b)选择(c)重复AseqAselectcond1untilBBAitercondCorcond2whileendACBendAendA一.Jackson设计方法1.Jackson方法设计步骤与SD方法设计步骤图解比较Jackson方法映射数据结构程序结构程序的过程表示(Jackson图)(Jackson图)(Jackson伪代码)程序分析程序设计SD方法映射问
5、题结构软件结构各模块的过程描述(DFD图)(SC图)(PDL等工具)概要分析详细设计102.Jackson方法设计步骤(1)分析并确定输入数据和输出数据的逻辑结构,用Jackson图描绘这些数据结构.实质是对求解的问题进行需求分析.用Jackson图表示数据结构时,省略与解题无关的多余信息,仅保留需要用到的数据单元.(2)找出输入数据结构和输出数据结构中有对应关系的数据单元(即有因果关系,在程序中可以同时处理的数据单元)按照下列映射规则,导出描绘程序结构的Jackson图.-----为每一对在输入结构和输出结构中有对应关系的单位元画一个处理框;-----为输入数据
6、结构中每一剩余的数据单元画一个处理框;-----为输出数据结构中每一剩余的数据单元画一个处理框;-----所有处理框在程序结构上的位置,应与由它处理的数据单元在数据结构Jackson图上的位置相对应(程序中具有因果关系).(3)写出程序的过程性表示:列出所有操作和条件,并把它们分配到程序结构图的适当位置(4)用Jackson伪代码写出与程序结构图对应的过程性表示.3.应用举例1输入卡片分析程序.一叠卡片按内容分为K1、K2、K3三类,卡片叠的排列规则是:以K1卡始,以K2卡终.起始卡之前属前置部分,不含K1卡;起始卡与终了卡之间属分批部分,不含K2卡.如图:K3K
7、3…K3K1…K1K1K3K2K3K2......前置部分起始卡分批部分终了卡试用Jackson方法编一程序,要求依次完成下列分析工作:-----统计起始卡前卡片的张数,存入A;-----打印起始卡的内容;-----统计起始卡后出现的K1卡和K3卡总批数,存入B;-----统计起始卡后出现的K1卡的张数,存入C;-----统计起始卡后出现的K3卡的张数,存入D;-----打印终了卡的内容;-----打印A、B、C、D四个统计值.求解步骤:第一步:画数据结构图.输入卡片文件数据结构图输入卡片文件分批部分前置部分起始卡(K1)终了卡(K2)批*非K1卡*K3批0K1批
8、0K3卡*