3.2 软件需求:面对过程分析模型

面对过程分析模型

  • 1. 需求分析的模型概述
    • 1.1 面对过程分析模型-结构化分析方法
    • 1.2 结构化分析的过程
  • 2. 功能模型:数据流图初步
    • 2.1 加工
    • 2.2 外部实体(数据源点/终点)
    • 2.3 数据流
    • 2.4 数据存储
    • 2.5 注意事项
  • 3. 功能模型:数据流图进阶
    • 3.1 仓库管理与订货系统
    • 3.2 绘制数据流图
  • 4. 数据流图的改进
    • 4.1 检查正确性
      • 数据守恒
      • 数据存储的使用
      • 父图和子图的平衡:数据的出入关系
    • 4.2 提高易理解性
    • 4.3 重新分解
    • 4.4 检查数据流图的原则
  • 5、 功能建模:编写数据字典

1. 需求分析的模型概述

面向过程分析模型:是用系统工程的思想和工程化的方法,根据用户至上的原则,自始自终按照结构化、模块化、自顶而下地对系统进行分析和设计。
面向对象分析模型:有5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。
在这里插入图片描述
结构化分析的结果由以下几部分组成:

  1. 一套分层的数据流图(Data Flow Diagram,DFD)。用来描述数据流从输入到输出的变换流程。
  2. 一本数据字典(Data Dictionary,DD)。用来描述 DFD 中的每个数据流、文件以及组成数据流或文件的数据项。
  3. 一组小说明(也称加工逻辑)。用来描述每个基本加工(即不再分解的加工)的加工逻辑。

1.1 面对过程分析模型-结构化分析方法

面对数据流进行需求分析的方法。结构化分析方法适合于数据处理类型软件的需求分析。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。

  • 面对过程的分析建模工具
    在这里插入图片描述
    数据流图实例:
    在这里插入图片描述
    多层数据流图:
    在这里插入图片描述
    顶层流图:在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。
    中间层流图:表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
    底层流图:指其加工不需再做分解的数据流图,它处在底层。

1.2 结构化分析的过程

结构化分析的过程可以分为以下4个步骤。

  1. 理解当前的现实环境,获得当前系统的具体模型(物理模型)。
  2. 从当前系统的具体模型抽象出当前系统的逻辑模型。
  3. 分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型。
  4. 为目标系统的逻辑作补充。

2. 功能模型:数据流图初步

在这里插入图片描述

2.1 加工

表示对数据进行的操作,如“处理选课单”、“产生发票”等;加工具有编号,说明这个加工在层次分解中的位置(分层DFD)
在这里插入图片描述
加工命名注意事项:

  1. 顶层的加工名就是整个系统项目的名字;
  2. 尽量最好使用动宾词组,也可用主谓词组;
  3. 不要使用空洞的动词。
    在这里插入图片描述

2.2 外部实体(数据源点/终点)

位于系统之外的信息提供者或使用者,称为外部实体。即存在于系统之外的人员和组织。如“学务部”等。
说明数据输入的源点(数据源)或数据输出的终点(数据终点)。
起到更好的理解作用,但不是系统中的事物。

2.3 数据流

表示数据和数据流向,由一组固定成分的数据组成,如“选课单”由“学号、姓名、课程编号、课程名”等成分组成。
数据流可从加工流向加工,也可在加工与数据存储或外部项之间流动;两个加工之间可有多股数据流。

  • 数据流的命名原则

    1. 用名词,不要使用意义空洞的名词;
    2. 尽量使用现实系统已有名字
  • 数据流与加工关系
    在这里插入图片描述

  • 数据流注意事项

    1. 不要把控制流作为数据流
      在这里插入图片描述
    2. 不要标出激发条件
      在这里插入图片描述

2.4 数据存储

表示需要保存的数据流向,如“学生档案”、“课程设置”等;
数据存储与加工的方向 ↑ \uparrow "读出"、 ↓ \downarrow “写入”;
分层数据流程图中,数据存储一般局限在某一层或某几层;
命名方法与数据流相似
在这里插入图片描述

2.5 注意事项

  1. 每个加工至少有一个输入数据流和一个输出数据流;
    在这里插入图片描述

  2. 数据流必须和加工联系起来;
    在这里插入图片描述

3. 功能模型:数据流图进阶

3.1 仓库管理与订货系统

例如:某仓库业务的工作过程如下:企业职工填写领料单,经主管审查签名批准后,职工到仓库领取零件。仓库保管员检查领料单是否符合审批手续,填写是否正确等,不正确的领料单退还职工,填写正确的领料单则办理领料手续,进行登记,修改库存量并给予零件。
当某种零件的库存量低于事先规定的临界值时,登记需要采购零件的订货信息,为采购部门提供一张订货单。要求用计算机辅助领料工作和编制订货单。

3.2 绘制数据流图

  1. 第一步绘制数据流图顶层:首先确定系统的输入和输出,画出顶层数据流图。经过分析,主要数据流输入的源点和输出的终点是职工和仓库管理员、采购员。
    在这里插入图片描述

  2. 绘制数据流图1层:从输入端开始,根据仓库业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到1层数据流图。
    在这里插入图片描述

  3. 绘制数据流图2层,加细每一个加工框
    在这里插入图片描述
    在这里插入图片描述

  4. 合成总体数据流图
    在这里插入图片描述

  5. 检查与调整数据流图
    在分析过程中,由于每个人的经验和思路不尽相同,对数据流图的分解方案可以有多种形式,不是唯一的。对每一张数据流图进行检查,如果太不均衡,就需要进行调整,尽量使分解后的各个软件子系统的复杂性得到均衡,便于今后设计工作的并行开展。

4. 数据流图的改进

数据流图的改进主要从三个方面出发:检查正确性、提高易理解性和重新分解。

4.1 检查正确性

数据守恒

数据不守恒的两种情况:

  1. 某个加工输出的数据并无相应的数据来源,可能是某些数据流被遗漏了;
    在这里插入图片描述
  2. 一个加工的输入并没有用到,这不一定是错误。可与用户进一步讨论,是否属于多余的数据流。
    在这里插入图片描述

数据存储的使用

判断:是否存在“只读不写”或“只写不读”的数据存储(注意在所有的DFD中检查),这样是错误的

父图和子图的平衡:数据的出入关系

在这里插入图片描述

4.2 提高易理解性

  1. 简化加工之间的联系:应尽量减少加工之间输入输出数据流的数目。因为加工之间的数据流越少,各个加工的功能就越相对独立。
    在这里插入图片描述

  2. 注意分解的均匀:即图中各个部分不均匀。一张图中,如果某些加工已是基本加工(细节),而另一些加工还可进一步分解成三、四层。则应考虑重新分解。

  3. 适当的命名
    名字的意义要明确,容易理解。
    如果难以为DFD图中的成分(数据流、加工等)命名,往往说明分解不当,可考虑重新分解。

4.3 重新分解

在画第N层时意识到在第N-1层或第N-2层所犯的错误,此时就需要对第N-1层、第N-2层作重新分解。

  1. 把需要重新分解的某张图的所有子图连接成一张;
    在这里插入图片描述

  2. 把图分成几部分,使各部分之间的联系最少
    在这里插入图片描述

  3. 重新建立父图,即把第2)步所得的每一部分画成一个图,而各部分之间的联系就是加工之间的界面。

  4. 重新建立各张子图,这只需把第2)步所得的图按各部分的边界剪开即可。
    在这里插入图片描述

  5. 为所有的加工重新命名和编号
    在这里插入图片描述

4.4 检查数据流图的原则

  1. 数据流图上所有图形符号只限于前述四种基本图形元素
  2. 数据流图的主图必须包括前述四种基本元素,缺一不可
  3. 数据流图的主图上的数据流必须封闭在外部实体之间
  4. 每个加工至少有一个输入数据流和一个输出数据流
  5. 在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系
  6. 规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡
  7. 图上每个元素都必须有名字
  8. 数据流图中不可夹带控制流
  9. 初画时可以忽略琐碎的细节,以集中精力于主要数据流

5、 功能建模:编写数据字典

编写数据字典,写出系统需求规格说明书,提交审查,并编写检测验收计划、编写初步的用户书册概要。
数据流图仅描述了系统的“分解”,并没有对各个数据流、加工、数据存储进行详细说明。数据字典是用来定义数据流图中各个成分的具体含义的,它以一种准确的、无二义性的说明方法为系统的分析、设计及维护提供了有关元素一致的定义和详细的描述。
数据字典有4类条目:数据流、数据项、数据存储和基本加工。对应数据流图中数据流、外部实体、数据存储和加工的说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio 运行模拟器无法打开avd

问题:已经下载了HAXM 打开模拟器时还是提示未下载HAXM,无法打开avd 解决方案: 控制面板 -> 启动或关闭Windows功能,打开图下两项,后重启电脑重启Android Studio:

Qt文件系统-二进制文件读写

实例功能概述 除了文本文件之外,其他需要按照一定的格式定义读写的文件都称为二进制文件。每种格式的二进制文件都有自己的格式定义,写入数据时按照一定的顺写入,读出时也按照相应的顺读出。例如地球物理中常用的SEG-Y格式文件,必…

ARXML汽车可扩展标记性语言规范讲解

ARXML: Automotive Extensible Markup Language (汽车可扩展标记语言) xmlns: Xml name space (xml 命名空间) xsd: Xml Schema Definition (xml 架构定义) 1、XML与HTML的区别,可扩展。 可扩展,主要是…

游戏引擎学习第六天

这节讲的内容比较多: 参考视频:https://www.bilibili.com/video/BV1apmpYVEQu/ XInput 是微软提供的一个 API,用于处理 Windows 平台上 Xbox 控制器(包括有线和无线)及其他游戏控制器的输入。它为开发者提供了一组函数,用于查询控…

vivado+modelsim: xxx is not a function name

xxx is not a function name vivado问题:xxx is not a function name原因 vivado问题:xxx is not a function name 在写verilog modelsim仿真时,遇到error:xxx is not a function name。 原因 该变量xxx在仿真文件里,如下图红框所示&#…

云计算在教育领域的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算在教育领域的应用 云计算在教育领域的应用 云计算在教育领域的应用 引言 云计算概述 定义与原理 发展历程 云计算的关键技…

立体工业相机提升工业自动化中的立体深度感知

深度感知对仓库机器人应用至关重要,尤其是在自主导航、物品拾取与放置、库存管理等方面。 通过将深度感知与各种类型的3D数据(如体积数据、点云、纹理等)相结合,仓库机器人可以在错综复杂环境中实现自主导航,物品检测…

模拟鼠标真人移动轨迹算法-易语言

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)

目录 基本使用内容 下载与安装 目录结构介绍 启动与关闭 启动 关闭 可能出现的问题及解决方案 问题一:启动时窗口一闪而过 问题二:端口号冲突 问题三:部署应用程序 总结 基本使用内容 Tomcat 服务器在 Java Web 开发中扮演着至关重…

PostgreSQL中如果有Left Join的时候索引怎么加

在PostgreSQL中,当你的查询包含多个LEFT JOIN和WHERE条件时,合理地添加索引可以显著提高查询性能。以下是一些具体的优化步骤和建议: 1. 分析查询 使用 EXPLAIN ANALYZE 命令分析你的查询,了解查询的执行计划,识别出连…

通过DNS服务器架构解释DNS请求过程

在前面的章节,这里,基于PCAP数据包和RFC文档详细介绍了DNS请求和响应的每个字段的含义。但是在现实的网络世界中,DNS请求和响应的数据包是怎么流动的,会经过哪些设备。本文将着重说明一下目前网络空间中DNS请求和响应的流动过程。 当前网络空间中比较常见DNS请求的流程如下…

aspose如何获取PPT放映页“切换”的“持续时间”值

aspose如何获取PPT放映页“切换”的“持续时间”值 项目场景问题描述问题1:从官方文档和资料查阅发现并没有对切换的持续时间进行处理的方法问题2:aspose的依赖包中,所有的关键对象都进行了混淆处理 解决方案1、找到ppt切换的持续时间对应的混…

GIT:如何查找已删除的文件的历史记录

首先你得知道文件的名称和路径 然后打开 gitlab,到项目中,仓库-> 文件 查找文件 复制文件名到可能存在过这个文件的分支当中,就能看到了

自动渗透测试与手动渗透测试

根据《渗透测试中发现的 5 种常见网络安全威胁》报告,渗透测试越来越受欢迎。预计到 2025 年,渗透测试市场规模将达到 45 亿美元。 什么是自动渗透测试? 自动化渗透测试工具可以快速有效地检查系统中是否存在已知的安全问题,即使…

使用elementUI实现表格行拖拽改变顺序,无需引入外部库

前言: 使用vue2element UI,且完全使用原生的拖拽事件,无需引入外部库。 如果表格数据量较大,或需要更多复杂功能,可以考虑使用 vuedraggable库,提供更多配置选项和拖拽功能。 思路: 1. 通过el-table的ro…

WPF Prism框架

Prism 是一个开源框架,专门用于开发可扩展、模块化和可测试的企业级 XAML 应用程序,适用于 WPF(Windows Presentation Foundation)和 Xamarin Forms 等平台。它基于 MVVM(Model-View-ViewModel)设计模式&am…

C#开发流程

注:检查数据库链接 设置搜索 1.新建模块文件夹 对应应用 右键-添加-新建文件夹 2.新建类 在新建模块下右键 新建-类,修改类名称 修改internal为public 新建所需字段,注意类型声明及必填设置 [SugarColumn(IsNullable false)]public strin…

区块链应用第1讲:基于区块链的智慧货运平台

基于区块链的智慧货运平台 网络货运平台已经比较成熟,提供了给货源方提供找司机的交易匹配方案;其中包含这几个角色:货主、承运人(司机、车队长)、监管机构、平台。司机要想接单,依赖于多个中心化的第三方平台,且三方平…

计算机毕业设计 | SpringBoot智慧⾼校学术报告系统 AI写作大模型生成平台(附源码)

1,项目介绍 智慧⾼校学术报告系统是⼀个基于 SpringBoot 开发的标准 Java Web 项⽬。系统整体⻚⾯设计简约⼤⽓,巧妙融合了⽬前备受瞩⽬的 AIGC ⽣成式 AI 技术,选择了阿⾥通⽤千问⼤语⾔模型,以智能⽣成趣味报告标题和润⾊报告内…

万字长文解读机器学习——决策树

🌺历史文章列表🌺 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…