【软件工程】软件工程需求分析——结构化分析

halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点

【更新日志】

最近更新:

  • 暂无编辑记录,持续更新中……

结构化分析概述

传统的分析建模方法称为结构化分析(SA)方法,它用抽象的概念,按照软件内部的数据传递、变换的关系,自顶向下逐层分解的系统分析方法来定义系统的需求
在这里插入图片描述
该建模技术的核心是数据字典,包括了在目标系统中使用和生成的所有数据对象。围绕这个核心有3种图:数据流图、实体关系图、状态-迁移图:

  • 数据流图(DFD):描述数据在目标系统中如何被传送或变换,以及描述如何对数据流进行变换,用于功能建模
  • 实体-关系图(ER):描述数据对象及数据对象之间的关系,用于数据建模
  • 状态-迁移图(STD):描述系统对外部事件如何响应、如何动作,用于行为建模

功能建模(DFD数据流图)

功能模型: 是用抽象模型的概念按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。功能模型用数据流图来描述

数据流图(DFD图): 是用于表示软件系统逻辑模型(系统的功能模型)的一种图形刻画,一个基于计算机的信息处理系统由数据流和一系列的转换构成,这些转换将输入数据流变换为输出数据流。数据流图反映客观现实问题的工作过程。它用简单的图形记号分别表示数据流、加工、数据存储以及外部实体。数据流图中没有任何具体的物理元素,只是描述数据在系统中流动和处理的情况,具有直观、形象、容易理解的优点。

数据流图的基本图形符号:
在这里插入图片描述
多个数据流间的关系:
在这里插入图片描述
环境图(顶层数据流图): 仅包括一个数据处理过程,也就是要开发的目标系统,也称为零层数据流图

环境图的作用是确定系统在其环境中的位置,通过确定系统的输入和输出与外部实体的关系确定其边界
在这里插入图片描述

数据流图的分层: 一些较复杂的实际问题中,数据流图中出现十几个甚至几十个加工的数据流图不直观,不易理解,分层的数据流图按照系统的层次结构进行分解,能清楚的表达整个系统,也易理解

分层数据流图基本规则:自外向内、自顶向下、逐层细化,完善求精;上层为父图,下层为子图

各层数据流图之间应“保持平衡”,即父图有多少个输入输出,子图也要有同样多的输入数据流和输出数据流,才能符合子图细化的实际情况
在这里插入图片描述
(加工规格说明详见下文)

数据流图基本步骤:

  • 识别外部实体与输入输出数据流
  • 画出环境图(顶层数据流图)
  • 画出一层数据流图
  • 画出二层数据流图

eg:以银行储蓄系统为例

银行储蓄系统的业务流程:
储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息,并印出存单给储户;如果是取款而且开户时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户
要求画出分层的数据流图,并细化到2层数据流图

1)识别外部实体及输入输出数据流

根据题意确定

  • 银行储蓄系统的外部实体有:储户、业务员
  • 数据输入:储户密码、业务员事务(存款单或取款单)
  • 数据输出:存款单、利息清单

2)画出环境图(顶层数据流图)

根据外部实体与输入输出数据流画出系统环境图
在这里插入图片描述
【为区分开输入源与输出源,可将储户这个外部实体分开画,实质表示仍然为同一个实体】

3)画出一层数据流图
在这里插入图片描述

4)画出二层数据流图

对一层数据流图的每个加工进行进一步分解
在这里插入图片描述
在这里插入图片描述
数据流图注意事项:

  • 命名:数据流除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有合适的命名,数据流的名字代表整个数据流的内容, 而不仅仅是它的某些成分,不使用缺乏具体含义的名字,如“数据”、“信息”等。加工名也应反映整个处理的功能,不使用“处理”、“操作”这些笼统的词
  • 只画数据流不画控制流:数据流图反映系统“做什么”,不反映“如何做”,因此只表示数据的传递加工关系,不做详细的功能描述
  • 一般不画物质流:数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图上一般不要画物流,如机票预订系统中,人民币也在流动,但并未画出,因为交款是“人工”行为
  • 每个加工至少有一个输入数据流和一个输出数据流, 反映出此加工数据的来源与加工的结果
  • 编号:如果一张数据流图中的某个加工分解成另一张数据流图时, 则上层图为父图,直接下层图为子图,应均进行编号。如
    在这里插入图片描述
  • 各层数据流图之间应“保持平衡”,即父图有多少个输入输出,子图也要有同样多的输入数据流和输出数据流,才能符合子图细化的实际情况【有的图需要根据数据字典查看,是否父图的输入流由子图的多个输入流组成】

数据建模(E-R实体-关系图)

在结构化分析方法中,使用实体—关系建模技术来建立数据模型。这种技术是在较高的抽象层次(概念层)上对数据库结构进行建模的流行技术。实体—关系模型表示为可视化的实体—关系图,也称为ER图。

ER图中仅包含3种相互关联的元素:数据对象(实体)、描述数据对象的属性及数据对象彼此间相互连接的关系

eg:
在这里插入图片描述
(此部分相当于数据库原理中的概念模型,此处不做重点阐述)

行为建模(状态图)

需求分析过程中应建立起软件的行为模型。状态转换图(简称状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为
在这里插入图片描述
【详细后续更新……】

数据字典

概念: 数据字典以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象及控制信息的特性,给出它们的准确定义,包括数据流、加工、数据文件、数据元素,以及数据源点、数据汇点等。 因此,数据字典成为把3种分析模型黏合在一起的“黏合剂”,是分析模型的“核心”

数据字典主要包含词条描述、数据结构描述

词条描述:对于在数据流图中每一个被命名的图形元素均加以定义,如

数据流词条
①数据流名:要求与数据流图中该图形元素的名字一致。
②简述:简要介绍它产生的原因和结果。
③组成:数据流的数据结构。
④来源:数据流来自哪个加工或作为哪个数据源的外部实体。
⑤去向:数据流流向哪个加工或作为哪个数据汇点的外部实体。
⑥流通量:单位时间数据的流通量。 ⑦峰值:流通量的极限值。

数据元素词条:数据流图中的每个数据结构都是由数据元素构成的,数据元素是数据处理中最小的、不可再分的单位,它直接反映事物的某一特征。
①类型:数据元素分为数字型与文字型。数字型又分为离散值和连续值,文字的类型用编码类型和长度区分。
②取值范围:离散值的取值或是枚举的(如3,17,21),或是介于上下界的一组数(如2…100);连续值一般是有取值范围的实数集(如0.0…100.0)。对于文字型,文字的取值需加以定义。
③ 相关的数据元素及数据结构

数据存储文件词条:数据存储文件是数据保存的地方。一个数据存储文件词条应有以下几项内容。
① 文件名:要求与数据流图中该图形元素的名字一致。
② 简述:简要介绍存放的是什么数据。
③ 组成:文件的数据结构。
④ 输入:从哪些加工获取数据。
⑤ 输出:由哪些加工使用数据。
⑥ 存取方式:分为顺序、直接、关键码等不同存取方式。
⑦ 存取频率:单位时间的存取次数。

数据结构描述:通过定义式或Warnier图等方式描述数据结构

1)定义式:类似描述高级语言结构的巴科斯-诺尔范式(BNF)

定义是可用符号列举:
在这里插入图片描述
2)Warnier图:用树形结构来描绘数据结构

【详细后续更新……】

加工规格说明

在对数据流图的分解中,位于层次树最底层的加工也称为基本加工或原子加工,对于每一个基本加工均需要进行进一步说明,称为加工规格说明

在需求分析阶段,可以直接写出基本加工的程序逻辑,即其处理的规则。基本加工的规格说明主要表达“做什么”,而不是“怎样做”,因此应满足如下要求:

  • 对于数据流图的每一个基本加工,必须有一个加工规格说明
  • 加工规格说明须描述基本加工把输入数据流变换为输出数据流的逻辑,即加工规则
  • 加工规格说明须描述实现加工的策略而不是实现加工的细节
  • 加工规格说明中包含的信息应充足完备且们没有重复的多余信息

加工规格说明的内容可以包括叙述性正文、数学方程、图表等多种形式,也可以使用决策表、决策树等

若加工规格说明设计很多算法细节,则可以用伪代码等进行描述(这一部分可放在系统设计的详细设计阶段进行)

【详细后续更新……】

持续更新中……
我是桐小白,一个摸爬滚打的计算机小白

  • 17
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值