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格式文件,必…

【AI技术】PaddleSpeech部署方案

【AI技术】PaddleSpeech部署方案 技术介绍优点缺点 部署基础环境的搭建分步详解国内镜像源切换所需环境1 g所需环境2 vim所需环境3 cuda所需环境4 cudnn所需环境5 ssl源码拉取PaddleSpeech环境安装 部署文件分享DockerHub 技术介绍 PaddleSpeech是飞浆平台的一款TTS框架。 优…

【Python无敌】在 QGIS 中使用 Python

QGIS 中有 Python 的运行环境,可以很好地执行各种任务。 这里的问题是如何在 Jupyter 中调用 QGIS 的功能。 首先可以肯定的是涉及到 GUI 的一些任务是无法在 Jupyter 中访问的, 这样可以用的功能主要是地处理工具。 按如下方式进行了尝试。 原想使用 gdal:hillshade ,但是…

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

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

flink实战 -- flink SQL 实现列转行

在 SQL 任务里面经常会遇到一列转多行的需求,下面就来总结一下在 Flink SQL 里面如何实现列转行的,先来看下面的一个具体案例. 需求 原始数据格式如下: namedatatest[{"content_type":"flink","url":"111"},{"content_type&quo…

游戏引擎学习第六天

这节讲的内容比较多: 参考视频: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主页 ⏩ 文章专栏:《热点资讯》 云计算在教育领域的应用 云计算在教育领域的应用 云计算在教育领域的应用 引言 云计算概述 定义与原理 发展历程 云计算的关键技…

基于STM32设计的森林火灾监测系统(华为云IOT)_263

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…

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

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

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

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

高级java每日一道面试题-2024年11月04日-Redis篇-Redis如何做内存优化?

如果有遗漏,评论区告诉我进行补充 面试官: Redis如何做内存优化? 我回答: 在Java高级面试中,关于Redis如何做内存优化的问题,可以从以下几个方面进行详细解答: 一、Redis内存优化概述 Redis内存优化主要是指通过一系列策略和技术&#…

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

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

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

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

W3C HTML 活动

关于W3C(万维网联盟)的HTML活动,我们可以从HTML的不同版本的发展历程中了解其主要的活跃时期和贡献。 HTML 2.0:这个版本的HTML是由Internet工程工作小组(IETF)的HTML工作组于1996年开发的。它是HTML的早期…

UE5-----MenuSystem

在 UE5 中,如果你看到一个名为 AMenuSystemCharacter 的类,它很可能是开发者为了特定目的而创建的一个自定义角色类。通常,这样的类会继承自 ACharacter 或其他相关类,并且可能包含以下功能或特性: UI交互&#xff1a…

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

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

如何利用静态住宅IP优化Facebook商城的网络稳定性与运营效率

在如今的电商时代,Facebook已经成为全球商家不可忽视的平台,特别是在构建Facebook商城、推广广告以及与客户互动时,稳定且高效的网络连接显得尤为重要。作为一个在Facebook上经营商城的商家,确保广告投放顺利进行、账户安全不受威…

Java 之 XMLStreamConstants 原理及使用详细介绍

目录 引言 XMLStreamConstants 接口常量 详细解释 使用示例 示例XML文档 示例代码 输出 总结 引言 在Java中,处理XML文档是一个常见的任务。StAX(Streaming API for XML)是一种高效的XML解析方式,它提供了一种基于事件的…