软件工程:数据流图和结构图怎么画?

软件工程:数据流图和结构图怎么画?文章目录Step1:根据软件的功能描述,绘制数据流图:Step2:根据数据流图,分级绘制结构图:•边界划分:•第一级分解:•第二级分解:•精化减少耦合:Step1:根据软件的功能描述,绘制数据流图:问题表述:假设的仪表板将完成下述功能:(1)通过模数转换实现传感器和微处理机接口;(2)在发光二极管面板上显示数据;(3)指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4)指示加速或减速;(5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。首先了

大家好,又见面了,我是你们的朋友全栈君。

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,(ノ´▽`)ノ♪-》点击这里->一个宝藏级人工智能教程网站

Step 1:根据软件的功能描述,绘制数据流图:

问题表述

假设的仪表板将完成下述功能:(1) 通过模数转换实现传感器微处理机接口;(2) 在发光二极管面板显示数据;(3) 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4) 指示加速减速;(5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。

首先了解数据流图的4种基本符号

在这里插入图片描述

然后,对从问题描述中提取数据流图的4种成分

数据流图的成分 映射—>方法或实体
数据处理: 读取(轮胎)旋转信号,读取(尾气)燃料流信号,计算gph,计算燃料消耗mpg,计算里程,产生mpg显示,产生mpg显示,产生里程显示,发出超速警告,产生加速/减速显示等等。
数据源点: 传感器
数据终点: 发光二极管面板
数据存储文件:
数据流: (轮胎)旋转信号,(尾气)燃料流信号,每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等。

难点在于我们是否在进行问题的描述之后对问题的流程有详细的理解我们很难通过单一的问题描述去把所有的数据流图的成分去映射完整,从而对问题的描述到实际的系统流程设计发生概念性的理解错误

总而言之,对问题的描述部分的理解决定了一个系统的框架走向,因此,对问题的描述进行深入的咨询专业人士在实际的工业生产中也是必不可少的

在这里插入图片描述

是的,我们只考虑系统的设计部分,省略了数据源点和数据终点。术业有专攻,在实际的数据流图的绘制中加入了一些我们外行人根本看不懂的东西(“读和校验”,“收集和求平均”等等),学习的是思想,切勿纠结于细枝末节,我们继续,看完我们会有所收获的

在这里插入图片描述

伏尔泰说过,常识并不是大家都知道的,常见的东西。

Step 2:根据数据流图,分级绘制结构图:

•边界划分:

接下来,确定输入流和输出流的边界,从而孤立出变换中心

在这里插入图片描述

•第一级分解:

软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程(说白了,就是把系统分成3个部分,输入部分,转换处理部分,输出部分):

在这里插入图片描述

•第二级分解:

把数据流图中的每个处理映射成软件结构中一个适当的模块(说白了,就是针对已经划分好的输入部分,转换处理部分,输出部分进行内部的结构划分):

以“接收传感器信号”部分为例,进行结构图的绘制,仔细观察结构图的层次关系,不就是把数据流图中接收传感器信号的部分按箭头顺序拎起来了嘛??是这样吧<—doge.gif)

在这里插入图片描述

“数据转换控制”的结构图如下:

在这里插入图片描述

“驱动仪表板”的结构图如下:

在这里插入图片描述

•精化减少耦合:

软件结构进一步精化,对初步分割得到的模块进行再分解或合并

具体到数字仪表板的例子,可做如下某些可能的修改:(1)输入结构中的模块“转换成rpm”和“收集sps”可以合并;(2)模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;(3)模块“加速/减速显示”可以相应地放在模块“显示mph”的下面

在这里插入图片描述

•添加数据/控制信号流向:

结构图中一个方框代表一个模块,框内注明模块的名字或主要功能。

方框之间的箭头(或直线)表示模块的调用关系。位于上方的方框代表的模块调用下方的模块。(尾部是空心圆表示传递的是数据。实心圆表示传递的是控制信息。)
在这里插入图片描述

最后,希望这篇博文对你有实际的帮助和加深理解。软件工程,画图并不难,难的是如何将问题描述转化为项目功能的具体需求,难的是结构的设计和统筹

都看到这里了,确定不点赞收藏再走嘛==(ಥ_ಥ)== !

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147943.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot解决CORS跨域(@CrossOrigin)

    SpringBoot解决CORS跨域(@CrossOrigin)一、关于跨域介绍在前后分离的架构下,跨域问题难免会遇见比如,站点http://domain-a.com的某HTML页面通过的src请求http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。例如,XMLHttpRequest和FetchAPI…

    2022年5月30日
    39
  • FVWM简明使用指南 pdf_fpv教程

    FVWM简明使用指南 pdf_fpv教程http://docs.huihoo.com/homepage/shredderyin/fvwm.html FVWM简明使用指南FvwmisawindowmanagerforX11.Itisdesignedtominimizememoryconsumption,providea3Dlooktowindowframes,andavirtual

    2022年10月3日
    4
  • Android官方文档翻译-Broadcasts

    Android官方文档翻译-Broadcasts原文链接:https://developer.android.com/guide/components/broadcasts.html广播Android应用可以向Android系统和其他Android应用发送或从它们那接收广播消息,这类似于发布-订阅设计模式。当需要关注的事件发生时这些广播就会发送出去。例如Android系统在许多系统事件发生时会发送广播,比如当系统启动或设备开始充电时。应用也可以发

    2022年6月26日
    31
  • php与dreamweaver基础教程,Dreamweaver基础教程 基础技巧全面接触

    php与dreamweaver基础教程,Dreamweaver基础教程 基础技巧全面接触三、内容篇如何更快更方便得对内容进行组织,是每个朋友都想了解的,下面这几个技巧也许你知道,也许不知道,但重要的是通过不断的运用,你会发现它的优越性的。1、快速标签编辑。对于熟悉手写代码的朋友来说,经常需要切换到代码窗口手工添加一些代码。其实利用Dreamweaver的QuickTagEditor可以快速插入各种HTML标签,一个是点击属性面板的图标插入,另一种快捷方式是Ctrl+T,这两种方…

    2022年4月30日
    38
  • Alex 的 Hadoop 菜鸟教程: 第6课 Hbase 安装教程「建议收藏」

    Alex 的 Hadoop 菜鸟教程: 第6课 Hbase 安装教程「建议收藏」这次给大家介绍一下Hbase的概念和安装教程

    2022年5月18日
    95
  • 解构赋值的作用_数组解构赋值

    解构赋值的作用_数组解构赋值文章目录概念数组解构声明分别赋值解构默认值交换变量值解构函数返回的数组忽略返回值(或跳过某一项)赋值数组剩余值给一个变量嵌套数组解构字符串解构对象解构基础对象解构赋值给新变量名解构默认值赋值给新对象名的同时提供默认值同时使用数组和对象解构不完全解构赋值剩余值给一个对象嵌套对象解构(可忽略解构)注意事项小心使用已声明变量进行解构函数参数的解构赋值解构的用途交换变量的值从函数返回多个值提取JSON数据概念ES6提供了更简洁的赋值模式,从数组和对象中提取值,这被称为解构示例:[a,b]=[50,1

    2025年8月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号