第三章 笔记
3.1 结构化分析概述
3.1.1 需求分析重要性
3.1.2 结构化分析核心思想
3.1.3 结构化分析具体步骤
3.2 数据模型
3.2.1 数据模型组成
3.2.2 实体关系图
3.2.3 实例
3.3 数据流图
数据流图(DFD)描绘系统逻辑模型,图中没具体的物理元素,只描绘信息在系统中流动处理情况。
是非常好的通行工具和软件设计出发点。
3.3.1 数据流图符号
3.3.2 数据流图范例
3.3.3 分层数据流图
3.3.4 数据流图命名规则
3.3.5 数据流图用途
3.3.6 数据流图习题
3.4 状态转换图
3.4.1 概念
3.4.2 状态图中使用的主要符号
3.4.3 电话系统状态转换图
3.4.4 练习
3.5 数据字典
对系统的所有数据元素定义的集合, 半形式化方法表达.
3.5.1 数据字典定义方法
3.5.2 数据字典定义符号
3.5.3 习题
3.1.1 需求分析重要性
对软件需求深入理解是开发成功的前提和关键。
Frederick Brooks在1987年经典文章“No Silver Bullet”中阐述需求重要性:开发软件系统最困难的部分就是准确说明开发什么,最困难的概念性工作是编写出详细需求,包括所有面向用户、面向机器和其它软件系统的接口。
此工作一旦做错,将会给系统带来极大损害,并且以后对它修改也极为困难。
3.1.2 结构化分析核心思想
面向数据流需求分析方法,20世纪70年代末 E.Yourdon 提出,应用广泛。
核心思想:
分解化简问题
物理与逻辑表示分开
进行数据域逻辑抽象
3.1.3 结构化分析具体步骤
1. 发现需求
2. 求精
3. 建模
4. 规格说明
5. 复审
发现需求方法:与用户交谈,向用户提出问题;
参观用户的工作流程,观察用户的操作;
向用户群体发调查问卷;
与同行、专家交谈,听取他们的意见;
分析已经存在的同类软件产品,提取需求;
从行业标准、规则中提取需求;
从Internet上搜查相关资料等。
求精:
对初步需求反复求精多次细化。
建模:
建立模型,用图形符号和组织规则书面描述事物。
模型核心:数据字典
描述软件使用和产生的所有数据对象。数据模型:E-R图表达
描述数据对象间关系
图中数据对象属性用“数据对象描述”表达。功能模型:DFD表达
描绘数据在软件中移动、变换及相应功能
图中功能用“处理规格说明”表达。行为模型:状态转换图
描绘系统状态和在不同状态间转换方式。
途中软件控制附加信息用“控制规格说明”表达。规格说明:
书写软件需求规格说明,作为分析阶段最终成果。
复审
3.2.1 数据模型组成
数据对象
数据对象间关系
属性
数据对象:
软件必须理解和复合信息表示,复合信息是具有一系列不同性质或属性的事物。
事物(报表)、地点(仓库)、角色(教师、学生)、单位(会计科)、行为(打电话)等
属性:
定义数据对象性质
数据对象学生的属性可为学号、姓名、班级等
关系:
对象彼此间相互连接方式,也称联系。
教师和学生间存在“教”的联系。
分类: 1:1、1:N、M:N
3.2.2 实体关系图
E-R图用简单符号表达分析员对问题域理解,作为用户与分析员有效交流工具。
3.2.3 实例
请为某仓库的管理设计一个ER模型,该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。
“零件”的主要属性是:零件编号,零件名称,颜色,重量。
“工程项目”的属性主要是:项目编号,项目名称,开工日期。
“供应商”的属性主要有:供应商编号,供应商名称,地址。
补充:E-R图的其他表示方法
3.3.1 数据流图符号
四种基本符号:
正方形(或立方体):表示数据的源点或终点
人员、部门、计算机外部设备或传感器装置
圆角矩形(圆形):代表变换数据的处理;
一系列程序、单个程序或程序一个模块;人工处理过程。
开口矩形(两条平行横线):代表数据存储
文件、文件一部分、数据库元素或记录一部分,可存在磁盘、磁带、磁鼓、主存、微缩胶片任何介质上。
箭头:表示数据流,即特定数据的流动方向。
在处理之间有向流动的数据项或数据集合。
一个简单的数据流图
数据流图附加符号
3.3.2 数据流图范例
工厂采购部采购员每天需一张定货报表,按零件编号排序列出所需定货零件。
对定货零件列下述数据:零件编号、名称、定货数量、目前价格,主次要供应者等。
零件入库或出库称事务,通过仓库终端把事务报告定货系统。零件库存量少于库存临界值需订货。
解法:
一.从问题描述提取数据流图四种成分
先考虑源点和终点
再考虑处理
最后考虑数据流和数据存储
源点:仓库管理员
终点:采购员
处理:处理事务、产生报表等
数据流:事务、订货信息、订货报表等
数据存储:订货信息、库存信息
二.着手画数据流图的基本系统模型。
三.把基本系统模型细化,描绘系统主要功能。
四.主要功能进一步细化。
五.结束、进一步分解涉及如何具体实现功能时,不应再分解。
3.3.3 分层数据流图
为表达数据加工情况,需采用层次结构数据流图。
顶层数据流图包含一个加工项;
底层流图指加工项不再分解的数据流图;
中间层流图只在顶层和底层之间,对其上层父图的细化。
分层数据流示意图
分层法绘制流程图的几个问题
A. 编号的设置
子图的编号是父图相应的处理逻辑的编号。
子图中处理逻辑编号由子图号、小数点与局部号组成。
B. 父图与子图的平衡
子图详细地描述父图中处理逻辑
子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致。
C. 局部数据存贮
在子图中出现的数据存贮,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节。
3.3.4 数据流图命名规则
1.数据流(数据存储)命名
(1)用名词,区别于控制流。
(2)代表整个数据流(数据存储)内容,不仅仅反映某些成分。
(3)不用缺乏具体含义名字,如“数据”、“信息”。
2.处理命名
(1)用动宾词组,避免使用“加工”、“处理”等笼统动词。
(2)应反映整个处理的功能,不是一部分功能。
(3)通常仅包括一个动词,否则分解。
3.数据源点/终点
不属于数据流图的核心内容,可能是人员、计算机外部设备或传感器装置。采用它们在问题域中习惯使用的名字(如“采购员”、“仓库管理员’等)。
3.3.5 数据流图用途
一.作为交流信息的工具
二.作为分析和设计的工具
用数据流图辅助物理系统设计时,可在数据流图上画出许多组自动化边界,每组自动化边界可能意味着不同的物理系统。
自动化边界划分方案一
自动化边界划分方案二
3.3.6 数据流图习题
工资计算系统包含如下功能:
计算工资
根据人事部门给出的出勤表和业绩表计算奖金和缺勤扣款,通过生成的奖金发放表及工资基本信息库的信息计算应发工资,根据应发工资表计算所得税,根据后勤部门给出的水电扣款及缺勤扣款表和所得税款计算出实发工资,生成实发工资表和工资清单。
打印工资清单
根据工资清单完成工资条的打印,给职工
工资转存
根据实发工资表生成职工工资存款清单并将其发送到银行
请用数据流图描绘该系统。
顶层数据流图
功能级数据流图
细化功能级数据流图
3.4.1 状态转换图概念
软件的行为模型: 状态, 事件, 行为.
状态: 被观察到的系统行为模式.
事件: 引起状态转换的外界事件抽象.
行为: 进入某状态所做的动作.
状态:
事件:
箭头表示, 箭头上标事件名. 后跟[条件], 表状态转换条件.
行为:
状态框内do: 行为名.
3.4.2 状态图中使用的主要符号
3.4.3 电话系统状态转换图
3.4.4 状态转换图练习
办公室复印机的工作过程大致如下: 未接受复印命令是处于闲置状态, 一旦接收到复印命令则进入复印状态; 如果执行复印命令时发现缺纸, 则进入缺纸状态, 发出警告, 等待装纸, 装满纸后进入闲置状态, 准备接收复印命令; 如果复印是发生卡纸故障,则进入卡纸状态, 发出警告等待维修人员来排除故障, 故障排除后回到闲置状态.
自己:
老师:
3.5.1 数据字典定义方法
数据字典对四类元素定义:
1. 数据流
2. 数据元素
3. 数据处理
4. 处理
(1) 数据流的描述
数据流名:
说明: 简要介绍作用即它产生的原因和结果
数据流来源: 即该数据流来自何方
数据流方向: 去向何处
数据流组成: 数据结构
每个数据量流通量: 数据量, 流通量.
(2) 数据元素的描述
数据元素名:
类型: 数字(离散值, 连续值). 文字(编码类型)
长度:
取值范围:
相关的数据元素及数据结构:
数据元素名: 学号
类型: 数字(离散), 12位表示分院, 34位表示专业, 56位表示年级, 78位表示班级, 910位表示序号
长度: 10位
取值范围: 0000000000~9999999999
相关的数据元素及数据结构: 购书单, 发票, 领书单
(3) 数据存储的描述
数据存储名:
简述:存放的是什么数据。
输入数据:
输出数据:
数据文件组成:数据结构。
存储方式:顺序,直接,关键码。
存取频率:
数据存储名:各班学生用书表
简述:各班学生用书信息
输入(输出)数据:各班学生用书信息
数据文件组成:班级编号+书号+用量
存储方式:按班级编号从小到大排列
(4) 处理的描述
处理名:
处理编号:反映该处理的层次
简要描述:加工逻辑及功能简述
输入数据流:
输出数据流:
加工逻辑: 简述加工程序、加工顺序
… …
3.5.2 数据字典定义符号
定义数据方法: 对数据自顶向下分解
有数据元素组成数据的方式:
- 顺序: 以确定次序连接两个或多个数据元素;
- 选择: 从两个或多个可能元素中选一个
- 重复: 把指定数据元素重复零次或多次
- 可选: 一个数据元素可有可无的
例题:
航班信息文件 = {航空公司名称 + 航班号 + 起点 + 终点 + 日期 + 起飞时间 + 起落时间}
航空公司名称 = 2 {字母 } 8
航班号 = 3 { 十进制数字 } 3
字母 = "a" .. "z"
十进制数字 = "0" .. "9"
起点 = 终点 = 1 { 汉字 } 5
起飞时间 = 降落时间 = 时 + 分
时 = "00" .. "23"
分 = "00" .. "59"
日期 = 年 + 月 + 日
年 = [ 2010 | 2011 | 2012 | 2013 ]
月 = "01" .. "12"
日 = "01" .. "31"
3.5.3 数据字典习题
某高校可用的电话号码有以下几类: 校内电话号码有四位数组成, 第1位数字不是"0"; 校外电话又分为本市电话和外地电话两类, 拨校外电话需先拨"0", 若是本市电话则再接着拨8位数字(第1位不是"0"),若是外地号码则拨3位区码再拨8位电话号码(第1位不是"0").
我的:
老师:



































![BS9K]@IH~K9L3GS]J]_}LI5 BS9K]@IH~K9L3GS]J]_}LI5](https://img2020.cnblogs.com/blog/2009970/202005/2009970-20200509150327425-1568448013.png)

浙公网安备 33010602011771号