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

2023-11-02

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

典型方法

  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方法,使读者对这种方法有一个了解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 软件工程——软件实现

    在我们做好对软件的需求分析 设计之后 就是软件的实施部分了 主要包括软件实现 软件测试 测试方法 黑盒测试 主要是检查功能 数据 以及接口的问题 具体方法有等价划分 边界值分析 错误推断法 白盒测试 对程序所有逻辑路径进行测试 测试方法按覆
  • 工业安全生产信息化平台的基本架构和关键功能分享

    工业安全生产信息化平台是指利用信息技术手段 将工业安全生产管理与数据采集 传输 处理相结合 实现对工业安全生产全过程的数字化 信息化 智能化管理的平台 它通过集成多种信息系统和设备 实现对重大危险源监控预警 安全风险分级管控 安全生产一张图
  • C# Socket连接请求超时处理

    在Socket的超时时间默认20多秒 而实际连上不需1秒时间 20多秒很多时候用户是不能接受的 而在等待返回结果的这段时间里程序会处于停止响应状态 废话不多说了 先上代码 private delegate string ConnectSoc
  • DHCP的配置(以华为eNSP为例)

    如有错误 敬请谅解 此文章仅为本人学习笔记 仅供参考 如有冒犯 请联系作者删除 基础知识介绍 络组建步骤 1 拓扑设计 2 IP地址规划 按照拓扑中划分的 络范围 规划 络位不同的IP地址 3 配置 1 配置各个节点的IP地址 2 路由 全
  • 推荐111个软件工程本科的计算机毕业设计,有手就会

    对于即将挑战计算机专业毕业设计的学子们 是否已经为选题和项目感到焦虑 今天 我们为即将毕业的学生提供了大量的毕业设计项目 期望对于正在为毕业设计挠头的同学们有所助益 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传
  • TVS管电路原理图符号及选型举例

    TVS管的电路原理图符号与稳压二极管符号类似 结构也都差不多 了解TVS管的电路原理图符号是掌握TVS管符合选型的基础 一般常见的TVS管电路原理图符号有 VBR IPP IR VRWM VC PM CP VBR代表的是 击穿电压 IPP代
  • 已经设置了端口映射但是外网还是访问不了服务器

    来自于 http www tp link com cn pages article detail asp result faq d 31 已经设置了端口映射但是外网还是访问不了服务器 1 首先检查您设置的端口影射是否正确映射到您内网的服务器
  • 亲密关系沟通-【正向情绪】创造一场愉快的沟通体验

    为什么有的时候聊天越聊越开心 有时候却让你意兴阑珊 正向情绪体验 积极议题 充分发挥 谁都喜欢被看见 让他不断得到关注 得到你持续的关注 你知道吗 我这个月业绩第一 哇 你超棒的 哪里哪里 话题聊不下去 你给他夸奖 他只能谦虚 天哪你怎么做
  • Go 语言输出文本函数详解

    Go语言拥有三个用于输出文本的函数 Print Println Printf Print 函数以其默认格式打印其参数 示例 打印 i 和 j 的值 package main import fmt func main var i j stri
  • Go 语言注释教程

    注释是在执行时被忽略的文本 注释可用于解释代码 使其更易读 注释还可用于在测试替代代码时防止代码执行 Go支持单行或多行注释 Go单行注释 单行注释以两个正斜杠 开头 在 和行尾之间的任何文本都将被编译器忽略 不会被执行 示例 This i
  • B2B公司如何寻找意向客户的联系方式?

    在B2B公司的营销过程中 少不了寻找意向客户的阶段 这也是销售过程中非常重要的一步 很多新人都是拿到客户联系方式 就直接打电话拜访 俗话说不打没有准备的仗 因此在拜访客户之前就应该做好功课 充分了解客户 这也是B2B业务场景下必做的一环 通
  • 软件开发流程分析

    软件开发流程分析 相关概念 1 原型设计 2 产品设计 3 交互设计 4 代码实现 详细步骤 相关概念 前端 自研API 调用第三放API 后端 自研API 第三方API 数据库 Mysql 数据采集 数据迁移 服务器 JAVA Nginx
  • easyrecovery软件2025免费版电脑数据恢复软件

    easyrecovery14是easyrecovery系列软件的新版本 也是目前行业领先的数据恢复软件 具备更快捷 更高效 更便捷三大特色 能够帮助用户轻松恢复电脑丢失的数据 目前软件支持恢复不同存储介质数据 包括硬盘 光盘 U盘 移动硬盘
  • git 的碎步浪荡,添加仓库子项目,迁移仓库

    1 git仓库迁移 将他人的代码仓库 xxxx 移为自己的 yyyy 仓库 先创建自己的yyyy空仓库 假设url为 yyyy git 将 xxxx 的全部数据 包括分支和 tag 都 download 到本地 git clone recu
  • 嵌入式培训机构到底怎么选?培训了能找到工作吗

    嵌入式作为一种广泛应用于企业级开发的编程语言 对于想要从事软件开发行业的人来说 掌握嵌入式技能是非常重要的 而参加嵌入式培训机构是一个快速提升技能的途径 然而 很多人可能会担心 参加嵌入式培训了能找到工作吗 如何选择靠谱的嵌入式培训机构 要
  • FAM amine, 6-isomer,1313393-44-0,含有纯6-异构体的荧光团,6-FAM NH2

    产品名称 FAM amine 6 isomer 6 FAM NH2 中文名称 6 羧基荧光素 氨基 CAS 1313393 44 0 分子式 C27H26N2O6 分子量 474 51 纯度 95 结构式 产品描述 荧光素衍生物具有胺基 含
  • 看完这篇 教你玩转镜像转换神器qumu实现虚拟机做题自由!

    前言 最近有小伙伴说比赛没设备 问有没有不需要设备也能实现做题自由的方法 今天这里分享一期 看完这篇你将学会 使用 qumu 转换镜像格式 一般我们做题都是 img 格式的环境 需要导入设备 有些小伙伴没有设备 就可以使用这种方法 把 im
  • 在win10和Linux上配置SSH 无密码登录

    文章目录 一 用途 二 在本地机器上使用ssh keygen产生公钥私钥对 1 在Linux 或macOS 上产生SSH公私钥的方法 2 在win10上产生SSH公私钥的方法 a 检查windows 本地是否安装有ssh b 在本地生成SS
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我
  • C# 介绍、应用领域、入门、语法、输出和注释详解

    什么是 C C 发音为 C Sharp 是一种由 Microsoft 创建的面向对象的编程语言 运行在 NET Framework 上 源于 C 家族 与流行的语言如 C 和 Java 相近 首个版本发布于 2002 年 而最新版本 C 1

随机推荐

  • 倾向得分匹配的stata命令_计量方法的适用条件汇总(二):倾向得分匹配

    独家揭秘 计量经济学的魅力与激情 陈强老师的高级计量现场班侧记 2019 5 1 如何学好高级计量 探秘陈强老师的高级计量及Stata现场班 2019 10 1 接上期推文 本期探讨倾向得分匹配的适用条件 倾向得分匹配 PSM 倾向得分匹配
  • 3、无人驾驶--路径规划算法:Floyd算法

    3 Floyd算法 1 算法简介 1 1 Floyd 佛洛依德 算法是解决给定的加权图中顶点间的最短路径的一种算法 可以正确处理有向图的最短路径问题 1 2 特点 Floyd算法是一种动态规划算法 稠密图效果最佳 节点间的连接权值可正可负
  • 模拟弱网测试方法总结

    我们测试某些需求 可能需要模拟弱网环境 下面介绍几种模拟弱网的方法 一 使用Fiddler 安装Fiddler 保证手机设备 笔记本IP都在同一个网段 Fiddler中在Rules Custom Rules中设置弱网的标准上传及下传10KB
  • Pandas是用于数据操作和分析的强大库

    Python中有许多流行的统计分析库 下面是其中一些主要的库及其主要用法 NumPy 用途 NumPy是Python中的数值计算库 提供多维数组对象和各种数学函数 用于高效处理大规模数据和执行数值计算 主要用法 创建和操作多维数组 执行数值
  • 比较好用的图床分享

    链接 https picx xpoet cn upload 网页上有教程 实用性强 转存很快 推荐
  • 2022版Web面试上岸手册,最新最细致!

    大裁员背景下 没什么比辞职后找不到工作更扎心 在行情好转前 前端程序员只能 猥琐发育 不轻易跳槽 同时要修炼内功 对八股文 底层源码 重点项目等进行查缺补漏 静待行情好转抓住机会 为帮大家在 就业寒冬 期更好的稳步提升 精进技术 以便保全自
  • MySQL中的日志

    查询日志 binlog redo log undo log介绍 目录 日志 MySQL中的4种日志 错误日志 查询日志和慢查询日志 二进制日志 binlog InnoDB 存储引擎的日志 重做日志 redo log 回滚日志 undo lo
  • clickhouse修改默认密码

    1 明文密码 vim etc clickhouse server users xml 找到下面的语句 增加明文密码
  • Centos7 配置Java开发(JDK)环境

    1 下载Java安装包 在Oracale Java 官网找到对应的JDK安装包 现在最常用 JDK1 8 而且现在的系统大都是64位 这里就以LInux64位为例 2 上传到Centos虚拟机 云主机中 将下载好的jdk for linux
  • Java入门(7)——循环和debug 调试

    循环 while 循环 格式 int i 0 初始化条件 while i lt 10 判断条件 System out println i 循环体 i 控制条件 执行顺序 第一次 第二次 第三次 最后一次 条件满
  • Vue2(路由)

    目录 一 路由原理 hash 二 路由安装和使用 vue2 三 路由跳转 四 路由的传参和取值 五 嵌套路由 六 路由守卫 最后 一 路由原理 hash 单页应用的路由模式有两种 1 哈希模式 利用hashchange 事件监听 url的h
  • Pentaho Data Integration:执行job提示 无法找到作业的开始点

    问题 无法找到作业的开始点 解决办法 如下图 选择 发送邮件 软件下载地址 Pentaho Community Edition Download Hitachi Vantara 找到Pentaho Data Integration Base
  • 在vue项目中 , 将字符串转数组 split()

    console log this cityItem fullName console log this cityItem fullName split 在vue项目中 遇到一个常用的方法split 因为常用 又容易记混 所以在此记录 spl
  • 推荐几个好用的代码工具

    SourceTree git 管理工具 postman 接口调试工具 FinalShell shell 链接工具
  • Salient Obejct Detection(SOD)综述

    论文链接 https arxiv org abs 2008 00230 仓库链接 https github com taozh2017 RGBD SODsurvey 介绍 显著目标检测 Salient Obejct Detection 是模
  • 微服务架构下认证和鉴权理解

    认证和鉴权 从单体应用到微服务架构 优势很多 但是并不是代表着就没有一点缺点了 微服务架构 意味着每个服务都是松散耦合的 因此 作为软件工程师和架构师 我们在分布式架构中面临着安全挑战 微服务对外开放的端点 我们称之为 API 单体应用只需
  • leetcode-62不同路径

    题目 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同的路径 示例 输入 m 3 n 2 输出
  • 缩减Docker镜像大小的方法

    对于刚接触容器的人来说 他们很容易被自己构建的 Docker 镜像体积吓到 我只需要一个几 MB 的可执行文件而已 为何镜像的体积会达到 1 GB 以上 本文将会介绍几个奇技淫巧来帮助你精简镜像 同时又不牺牲开发人员和运维人员的操作便利性
  • python的知识点关键词_Python基础知识的集合,知识点,合集

    概念 Python有什么优势 解释性语言 语法简单易懂 可读性强 自动内存管理 基于引用计数法等可以对垃圾进行自动回收 内存池机制 提前申请好小内存 内存分配效率更高 让程序员可以更加专注代码的实现 有很多库可以调用 站在巨人的肩膀上简单的
  • 软件工程导论06-面向数据结构的分析与设计

    面向数据结构的分析与设计 典型方法 Jackon方法 Warnier方法 主要特点 以信息对象及其操作作为核心进行需求分析 认为复合信息对象具有层次结构 并且可按顺序 选择 重复三种结构分解为成员信息对象 提供由层次信息结构映射为程序结构的