面向数据结构的分析与设计

典型方法

  1. Jackon方法
  2. Warnier方法

主要特点

  1. 信息对象及其操作作为核心进行需求分析
  2. 认为复合信息对象具有层次结构,并且可按顺序、选择、重复三种结构分解为成员信息对象
  3. 提供由层次信息结构映射为程序结构的机制,从而为软件设计奠定良好的基础

JSP:Jackon结构程序设计方法

JSD:Jackon系统开发方法

JSP方法

总结了COBOL事务处理程序中的开发方法而发展起来的,特点:

  • 重点不是自顶向下逐步求精,而是在数据结构基础上进行构造
  • 根据输入/输出的数据结构建立程序结构

目标:获得简单清晰的设计方案

设计原则:使**程序结构与问题结构(数据结构) **相对应

数据结构与程序结构

数据处理系统处理的是具有层次结构的数据,因而其问题结构可以用它处理的数据结构来表示:

数据结构与程序结构的表示

JSP方法采用Jackon图来表示数据结构与程序结构

结构图是一种从左到右阅读的树状层次结构图

  1. 数据结构图中方框表示数据,程序结构图中方框就表示模块(过程或函数)
  2. 基本元素:底部的叶子节点成为基本元素
  3. 结构元素:在底部节点以上的节点成为结构元素
  4. 三种程序元素类型:顺序元素、选择元素、重复元素

顺序元素

一个顺序元素由一个或多个从左到右的元素组成

每个组成的元素只出现一次

如图中,元素D是由元素A、元素B及元素C顺序组成的序列

选择元素

  • 选择是“If Then Else”或“Case”结构,而且必须有两个或多个元素

  • 使用选择元素时根据指定的条件从这些子元素中选择一个子元素

  • 供选择的子元素用右上角标以小圆的矩形表示
    实例:左图A、B、C是D的可选项,而S是选择条件

  • 如果需要一个“If A==B Then X Else do nothing”那么需要加入一个空元素
    实例:右上图中空元素用一个标有连字符的矩形表示

重复元素

  • 重复元素仅由一个子元素组成,表示重复元素由子元素重复0次或多次组成
  • 子元素用右上角标以星号的矩形表示
  • 下图表示元素D由元素A重复0次或多次组成,其中I是重复条件

结构正文的表示形式-1

  • 结构正文又称伪码,完全与结构图相对应
  • 结构正文分为:顺序结构正文、选择结构正文、重复结构正文

顺序结构正文:

D Seq 顺序
A; 元素D是由元素A
B; 元素B
C; 元素C组成
D END 元素D是元素A、元素B、元素C的序列

选择结构正文:

D Select cond1 //选择
A //元素D或是由一个元素A
Or cond2
B //或是由一个元素B
Or cond3
C //或是由一个元素C组成 D END cond1、cond2、cond3分别是选择A,B,C的条件

重复结构正文:

D Iter until cond //重复
A; // 元素D是由1个或多个元素A组成。
D END //元素D 是元素A的重复

D Iter while cond
A; //元素D是由0至多个元素A组成
D END //cond为循环条件

示例:打印表格程序的输出数据结构a和对应的程序结构b

JSP方法的分析和设计步骤

例6.2:一个正文文件由若干个记录组成,每个记录是一个字符串,要求统计每个记录中空格个数,以及文件中空格的总数

要求输出的格式是:每复制一行输入字符串后,另起一行输出该字符串中的空格数,最后输出文件空格的总数。

步骤:

  1. 分析并确定输入和输出数据结构的逻辑结构,并用Jackon图画出

  1. 找出输入数据结构与输出数据结构中有对应关系的数据元素

    • 有对应关系:是指由直接因果关系,即程序中可以同时处理的数据元素

    • 对于表示“重复“的数据元素,只有其重复次数和次序都相同时才有对应关系”

    • 输入/输出数据结构最高层次的两个数据元素总是有对应关系的

  2. 从描述数据结构的Jackon图导出描述程序结构的Jackon图,导出规则:

    1. 有对应关系的数据元素,按照它们在数据结构中的层次在程序结构图的相应层次上画一个处理框

    2. 为输入数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画一个处理框

    3. 为输出数据结构图中剩余的每个数据元素,在程序结构图的相应层次上画一个处理框

      结果:

  3. 列出所有操作和条件,并将他们分配到程序结构图的赎当位置

    1. 首先从输出操作开始,再回到输入操作

    2. 加入必须的与条件有关的操作

    3. 最后把每个操作都分配到程序结构中去

      设变量sum存放一行字符串中的空格数;totalsum存放空格总数;pointer用来指示当前分析的字符在字符串中的位置,可列出其所有操作,并对其编号如下:
      ①停止
      ② 打开文件
      ③ 关闭文件
      ④ 打印字符串
      ⑤ 打印空格数
      ⑥ 打印空格总数
      ⑦ sum:=sum+1
      ⑧ totalsum:=totalsum+1
      ⑨ 读入字符串
      ⑩ sum:=0
      totalsum:=0
      pointer:=1
      pointer:=pointer+1

      条件列表如下:
      I(1):文件结束
      I(2):字符串结束
      S(3):字符是空格

      与相当将条件与相应的循环条件关联,并将①~13 操作按次序的模块进行关联,按从左至右决定先后顺序,关联后的程序结构图

  4. 把带有操作的程序结构图转换成结构正文,同时加入选择及迭代条件

统计空格 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

JSP方法的特点

  • 简单、易学、形象直观、可读性好
  • 便于表示层次结构
  • 适用于小型数据处理系统

JSD方法简介

JSP广泛使用十多年后,Jackon把它进行了扩充,不再局限于中小规模范围的问题及顺序范围,新的开发方法称为JSD。

JSD覆盖了整个系统的分析到实现。

JSD的本质:先建立一个现实模型,然后加入功能性处理,最后阶段逻辑系统才转换为实际设计。

JSD方法步骤

  1. 标识实体与行为:建立现实的模型,列出与系统有关的实体表及活动表
  2. 生成实体结构图:分析实体表中实体之间的关系,形成实体结构图
  3. 创造软件系统模型:根据现实世界,对实体与行为的组合建立进程模型
  4. 扩充功能性过程:说明系统输出的功能,必要时在规格说明中加入附加的处理
  5. 施加时间控制:开发者考虑进程调度的某些特征,这些特征可能影响系统功能所输出的结果的正确性及时间关系
  6. 实现:开发者考虑运行系统的软硬件方面的问题,采用变换技术、调度技术、数据库定义技术等,以使系统能有效地运行

小结

面向数据结构的分析和设计方法是以数据结构为中心,从输入/输出的数据结构导出程序结构

由于这种方法在国内用得比较少,因此只作了简单的方法介绍,主要是通过一个实例来介绍JSP方法,使读者对这种方法有一个了解。

软件工程导论06-面向数据结构的分析与设计相关推荐

  1. 面向模式的分析和设计(POAD)

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 设计模式的作用 ...

  2. 软件工程导论实验报告二(类图设计)

    软件工程导论实验报告 实验二 类图设计 2.实验目的 (1)掌握绘制类图的基本步骤: (2)掌握识别类的方法. 3.实验内容 利用StarUML或其它UML绘图工具,绘制系统中的类图. (1)图书管理 ...

  3. 软件工程导论 06章详细设计

    1.结构程序设计经典定义:如果一个程序的代码块仅仅通过顺序.选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的.(尽可能少使用GOTO语句,最好只在检测 ...

  4. 软件工程笔记:Pos系统的分析与设计案例

    Pos系统的分析与设计案例 - 笔记整理自 北京理工大学 计算机学院 分析设计 Pos系统在生活中随处可见,如超时中的收银系统,建议参阅<对象模型--策略 模式 应用>的第一章:康妮的便利 ...

  5. 面向数据结构的分析设计方法(JSD)

    一,程序设计语言: 1,程序设计语言的分类: 2,面向机器的语言:机器语言,汇编语言 3,高级语言:基础语言,现代语言,专用语言 4,基高级语言:第四代语言(面向对象) 5,从你语言的内在特征来说: ...

  6. 面向服务的分析与设计原理

    參考:http://www.ibm.com/developerworks/cn/webservices/ws-soad1/index.html

  7. 软件的接口设计图_面向服务架构(SOA)的汽车软件分析和设计

    --后台回复"资料",领取特斯拉专利技术解析报告-- 文章转自:联合电子 本文将先重温下SOA架构的核心要素与优势,并重点讨论话题"面向服务架构(SOA)的汽车软件分析和 ...

  8. 《软件工程导论》课后习题答案

    <软件工程导论>课后习题答案 第一章 软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出 ...

  9. 《软件工程导论》考研复试整理

    一.名词解释 DFD 数据流图Data Flow Diagram PDL 过程设计语言 Process Design Language PAD 问题分析图 Problem Analysis Diagr ...

最新文章

  1. 入职不到3年,这所C9已有多位“90后”已成副教授!
  2. 题目1024:畅通工程
  3. Redis 中的集合类型是怎么实现的?
  4. 重复制造和离散制造特点
  5. 弱网优化在支付宝的深度实践 | mPaaS 线下沙龙 CodeDay#1 分享实录
  6. linux-所有者与所属组的修改
  7. [转载] Java之嵌套接口
  8. Cannot read property 'style' of null 问题
  9. 阿里云云计算 18 块存储与对象存储
  10. 根据JAVA实体生成SQL建表语句
  11. 带有拉普拉斯平滑的Naive Bayes python代码实现
  12. 一文详解自动驾驶技术与挑战
  13. 从键盘输入n个数 求其中的最大数
  14. 使用 Node 开发一个多人对战的射击游戏
  15. 编译原理:LL(1)文法 语法分析器(预测分析表法)
  16. 最小生成树算法超详细教程
  17. 卷积神经网络之前向传播算法
  18. ThreadLocal 源码深析及使用示例
  19. 和机器学习和计算机视觉相关的数学
  20. 织梦dedecms响应式精密机械模具公司网站模板(自适应手机移动端)

热门文章

  1. MySQL联合创始人向Sun递交辞呈
  2. cmake和make的简单理解
  3. Thinkpad x250安装Windows10后指纹识别的问题
  4. 金牛座TGAM脑电波传感器模块
  5. Mac下使用Automator实现截屏编辑保存
  6. android sdk目录缺少uiautomatorviewer,解决Android8.0以上运行不了uiautomatorviewer的办法...
  7. 安卓电子书格式_纯干货|提升电子书阅读体验的四点感受
  8. c语言随机数字密码生成器,随机数生成器(浮点数整型数)
  9. NEO4J-相似度算法04-欧几里得距离算法(euclidean)应用场景简介
  10. 计算机与测控技术专业就业方向,测控技术与仪器专业就业前景与方向(五篇)