软工导论知识框架(二)结构化的需求分析

2023-11-12

本章节涉及很多重要图表的制作,如ER图、数据流图、状态转换图、数据字典的书写等,对初学者来说比较生僻,本贴只介绍基础的轮廓,后面会有单独的帖子详解各图表如何绘制。


 一.结构化的软件开发方法:结构化的分析、设计、实现

二.需求分析的重要性:

1.开发软件系统最困难的部分就是准确说明开发什么,最困难的概念性工作是编写出详细需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大损害,并且以后对它修改也极为困难。

2.结构化的分析方法,又被称为面向数据流的分析方法。

三.核心思想

  • 分解化简问题
  • 将物理与逻辑表示分开 (先考虑逻辑问题,最后再考虑加上物理的实现细节)
  • 进行数据与逻辑抽象

 四.分析步骤

1.发现需求

发现需求方法(试图在较短的时间内获取软件系统大部分的需求):

  • 与用户交谈,向用户提问题;
  • 参观用户的工作流程,观察用户的操作;
  • 向用户群体发调查问卷——向更多的用户群体获取需求;
  • 与同行、专家交谈,听取他们的意见;
  • 分析已经存在的同类软件产品,提取需求;
  • 从行业标准、规则中提取需求;
  • 从Internet上搜查相关资料等。

2.求精 :对初步需求反复求精多次细化

3.建模 :建立模型,用图形符号和组织规则书面描述事物。(避免文字表达的二义性

结构化软件开发方法所要求的3种开发模型。

  • 数据模型:实体关系图and数据对象描述
  • 功能模型:数据流图and处理规格说明
  • 行为模型:状态转换图and控制规格说明

数据字典:系统的相关数据,结构化分析方法的核心, 描述软件使用和产生的所有数据对象。

数据模型:

E-R图(实体联系图)表达 描述数据对象间关系 图中数据对象属性用“数据对象描述”表达。

功能模型(描述功能):

DFD(数据流图)表达 描绘数据在软件中移动、变换及相应功能 图中功能用“处理规格说明”表达。

行为模型(系统中有哪些状态):

状态转换图 :描绘系统状态和在不同状态间转换方式。 图中软件控制附加信息用“控制规格说明”表达。

4.规格说明 :书写软件需求规格说明,作为分析阶段最终成果(非常重要的文档!)

5.复审


五.数据模型

1.组成:数据对象、数据对象间关系、属性

  • 数据对象:软件必须理解的复合信息表示,复合信息是具有一系列不同性质或属性的事物。可以理解为一种包含多种属性的结构体变量),例如:事务(报表)、地点(仓库)、角色(教师、学生)单位(会计科)、行为(打电话)等
  • 属性: 定义数据对象性质。 例如,数据对象学生的属性可为学号、姓名、班级等。(结构体变量所包含的多种属性
  • 关系: 对象彼此间相互连接方式,也称联系。例如,教师和学生间存在“教”的联系。

        关系分三类,1:1 、 1:N 、 M:N

2.表达方式:实体-关系图

 E-R图用简单符号表达分析员对问题域理解,作为用户与分析员有效交流工具。

 (注意:属性同样可以属于实体与实体之间的关系,比如上图中的“成绩”。)

E-R图如果建设良好,可以直接转化为数据库中的表结构~(在搭建数据库时,实体和关系各需要对应一张表)

六.功能模型

1.数据流图仅仅用来描述系统中的功能模型——只考虑信息在系统中,流动和处理的情况

2.数据流图(DFD)描绘系统逻辑模型,图中没具体的物理元素,只描绘信息在系统中流动处理情况,是非常好通信工具和软件设计出发点。

3.符号:

  • 正方形(或立方体):表示数据的源点或终点(数据最开始从哪里来,要到哪里去)。(人员、部门、计算机外部设备或传感器装置)
  • 圆角矩形(圆形):代表变换数据的处理。(一系列程序、单个程序或程序一个模块;人工处理过程。)
  • 开口矩形(两条平行横线):代表数据存储(文件、文件一部分、数据库元素或记录一部分,可存在磁盘、磁带、磁鼓、主存、微缩胶片任何介质上。)
  • 箭头:表示数据流,即特定数据的流动方向。(在处理之间有向流动的数据项或数据集合。)

相关附加符号:

4.绘制方法:

  • 从问题描述提取数据流图四种成分:先考虑源点和终点,再考虑处理,最后考虑数据流数据存储
  • 着手画数据流图的基本系统模型。(通常不会绘制较为完整的数据流图)
  • 基本系统模型细化,描绘系统主要功能。
  • 主要功能进一步细化
  • 结束、进一步分解涉及如何具体实现功能时,不应再分解。(当内容细化到How而不是what时,就立刻停止进一步细化)

 5.分层数据流图:为表达数据加工情况,需采用层次结构数据流图

  • 顶层数据流图包含一个加工项;
  • 底层流图指加工项不再分解的数据流图;
  • 中间层流图只在顶层和底层之间,对其上层父图的细化。

 

6.注意事项:

A. 编号的设置 :子图的编号是父图相应的处理逻辑的编号。 子图中处理逻辑编号由子图号、小数点与局部号组成。

B. 父图与子图的平衡 :子图详细地描述父图中处理逻辑 子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致。(无论怎么细化都要和父图输入输出保持一致)。  

C. 局部数据存贮:在子图中出现的数据存贮,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节。  

7.命名规则:

数据流(数据存储)命名 :

(1)用名词,区别于控制流。

(2)代表整个数据流(数据存储)内容,不仅仅反映某些成分。

(3)不用缺乏具体含义名字,如“数据”、“信息”。

处理命名:

(1)用动宾词组,避免使用“加工”、“处理”等笼统动词。

(2)应反映整个处理的功能,不是一部分功能。

(3)通常仅包括一个动词,否则分解。

数据源点/终点命名:

不属于数据流图的核心内容,可能是人员、计算机外部设备或传感器装置。采用它们在问题域中习惯使用的名字(如“采购员”、“仓库管理员’等)。

8.用途(用户和系统分析员进行交流的良好工具):

  • 作为交流信息的工具
  • 作为分析和设计的工具

用数据流图辅助物理系统设计时,可在数据流图上画出许多组自动化边界,每组自动化边界可能意味着不同的物理系统。

(数据流图的绘制对初学者很困难,后期会出总结各种图形的绘制,此处先不作为重点展开讲解)

七.行为模型——状态转换图:

软件的行为模型:状态、事件,行为

  • 状态:被观察到的系统行为模式。

  • 事件:引起状态转换的外界事件抽象。

       箭头表示,箭头上标事件名。后跟〔条件〕,表状态转换条件。

  • 行为:进入某状态所作动作。

       状态框内do:行为名。

八.数据字典:对系统使用的所有数据元素定义的集合,半形式化方法表达。

数据字典对四类元素定义:数据流,数据元素,数据存储,处理

1.数据流的描述:

  • 数据流名
  • 说明:简要介绍作用即它产生的原因和结果。
  • 数据流来源:即该数据流来自何方。
  • 数据流去向:去向何处。
  • 数据流组成:数据结构。
  • 每个数据量流通量:数据量、流通量。

2.数据元素的描述:

  • 数据元素名
  • 类型:数字(离散值、连续值),文字(编码类型)
  • 长度
  • 取值范围
  • 相关的数据元素及数据结构

3.数据存储的描述:

  • 数据存储名
  • 简述:存放的是什么数据。
  • 输入数据
  • 输出数据
  • 数据文件组成:数据结构。
  • 存储方式:顺序,直接,关键码。
  • 存取频率

4.数据处理:

  • 处理名:
  • 处理编号:反映该处理的层次
  • 简要描述:加工逻辑及功能简述
  • 输入数据流:
  • 输出数据流:
  • 加工逻辑: 简述加工程序、加工顺序 … …

5.定义数据的方法:对数据自顶向下分解,由数据元素组成数据的方式来定义。

  • 顺序: 以确定次序连接两个或多个数据元素;
  • 选择: 从两个或多个可能元素中选一个;
  • 重复: 把指定数据元素重复零次或多次;
  • 可选: 一个数据元素可有可无的。

如下是一个例题 :

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软工导论知识框架(二)结构化的需求分析 的相关文章

  • 在不影响线上服务情况下,删除大表数据表

    在不影响线上数据库服务情况下 如何删除数据库中的大表 分析 数据库中表涉及到db和os两个层面 1 db层面删表涉及到table cache的全局唯一锁 一旦数据表过大 会长时间占用全局为一锁 导致db卡死 2 os层面涉及到数据表物理文件

随机推荐

  • 伤腰的Python爬虫案例,零基础必备实战教程。

    前言 今天带大家采集一个二次元图片网站 里面漂亮的小姐姐层出不穷 图片的数据量也是比较大的 来一睹为快吧 开发环境介绍 python 3 6 pycharm requests parsel os 爬虫案例数据采集一般步骤 找数据对应的链接地
  • conan的学习与使用

    conan学习与使用 资源 官方地址 C C Open Source Package Manager conan io 重要概念 什么是包管理工具 包管理工具的主要作用是管理第三方依赖 也可以看成一个 轮子 工厂 每个人都可以上传自己造的
  • verdi显示数据

    在波形数据上点右键 2 s complement 就是大家计算机课上学的 补码 1 s complement 是课上讲的 反码 signed magnitude 最高位是符号位 0 正数 1 负数 低位是绝对值 另外 ncverilog v
  • FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度

    转自 https www cnblogs com renhui p 10709074 html FFmpeg对音频 视频播放速度的调整的原理不一样 下面简单的说一下各自的原理及实现方式 一 调整视频速率 调整视频速率的原理为 修改视频的pt
  • QT之实现简陋聊天

    相关知识 QT 数据库 TCP IP Socket 1 登陆界面 包含登陆和注册两种功能 思路如下 难点 建立服务器和数据库 数据库保存数据 服务器与数据库产生联系 解决 数据库与服务器放在同一个类中 登陆和注册时 客户端与服务端连接 传输
  • 数据结构与算法(Java描述)-19、哈夫曼树、哈夫曼编码算法

    一 哈夫曼树的基本概念 在一棵二叉树中 定义从A结点到B结点所经过的分支序列叫做从A结点到B结点的路径 从A结点到B结点所经过的分支个数叫做从A结点到B结点的路径长度 从二叉树的根结点到二叉树中所有叶结点的路径长度之和称作该二叉树的路径长度
  • ctfshow 网络迷踪做题记录(1)

    ctfshow 网络迷踪做题记录 1 新手上路 找桥的名字 附件为一张海边图片 百度识图为蜈支洲岛 得到地点名 但还需要具体桥的名字 再用搜索引擎搜索关键字 就可以看到结果中的 情人桥 初学乍练 题目描述 提交这架飞机的目的地 附件图片为一
  • 十分钟让你搞懂会用Spring Retry

    一 项目的配置 为了启用 Spring Retry 的支持 首先要在pom xml 文件中添加以下依赖项
  • 良许Linux

    一个系统管理员可能会同时管理着多台服务器 这些服务器也许会放在不同的地方 要亲自一台一台的去访问来管理它们显然不是最好的方法 通过远程控制的方法应该是最有效的 Linux系统的远程管理工具大概有几种 telnet ssh vnc等 其中ss
  • motionface respeak新的aigc视频与音频对口型数字人

    在当今的数字化时代 人工智能 AI 正在逐渐渗透到我们生活的方方面面 其中 AI技术在视频制作和处理领域的应用也日益广泛 本文将探讨如何利用AI技术实现视频中人脸与音频同步对口型的方法 旨在进一步丰富视频制作的效果和表现形式 数字人一件对口
  • 由于无法验证发布者,Windows已经阻止此软件

    Windows系统都很注重系统的安全性 在提高安全性的同时 也给我们某些应用带来不便 比如在日常工作中经常会到某些网站上进行登录 需要安装该站点的ActiveX控件 否则无法正常加载 这时可能会弹出 由于无法验证发行者 所以WINDOWS已
  • matlab中由离散点生成云图,[转载]在matlab中由离散点生成云图

    首先 有离散点的数据如下 x 376 82 377 56 379 74 421 20 419 41 417 82 418 80 458 86 457 72 459 55 461 64 500 27 501 51 499 48 498 02
  • U盾的工作原理

    你的数字证书有一对 一份在U盾里的私钥 一份在银行的公钥 其实两份银行都有 U盾的原理很类似于双向认证的TLS SSL 或者其它用到RSA的双向证书验证手段 以下步骤可能和U盾实际执行的有所区别 但本质相同 银行先给你一个 冲击 它包含了随
  • No module named ‘cv2‘ 解决办法 (No module named ‘numpy‘ 等所有报错均可解决)

    更多视觉额自动驾驶项目请见 自动驾驶项目 实在不行可以私信我解决 0 常规解决方案 1 当出现No module named cv2 解决方案 pip install opencv python i https pypi tuna tsin
  • 等价类划分法设计测试用例

    等价类划分法 一 方法简介 1 定义 是把所有可能输入的数据 即程序的输入域划分策划国内若干部分 子集 然后从每一个子集中选取少数具有代表性的数据作为测试用例 方法是一种重要的 常用的黑盒测试用例设计方法 2 划分等价类 等价类是指某个输入
  • C++ 使用类成员函数的地址

    include
  • Linux基础笔记3

    操作系统基本认识 Linux 是什么 百度百科是这样定义 Linux Linux 全称GNU Linux 是一种免费使用和自由传播的类UNIX操作系统 其内核由林纳斯 本纳第克特 托瓦兹于1991年10月5日首次发布 它主要受到Minix和
  • 栈的实现(C语言版)

    大家好 这篇我们继续讲解数据结构里的栈 文章目录 栈的概念 栈的实现 栈的结构 栈的初始化 栈的销毁 栈是否为空 删除函数 取栈顶的数据 栈里数据的个数 插入函数 栈的概念 栈 一种特殊的线性表 其只允许在固定的一端进行插入和删除元素操作
  • js+canvas仿微信《弹一弹》小游戏

    前言 半年前用js和canvas仿了热血传奇网游 地址 基本功能写完之后 剩下的都是堆数据 堆时间才能完成的任务了 没什么新鲜感 因此进度极慢 这次看到微信 弹一弹 比较火 因为涉及到物理引擎 为了真实 于是动手试了一下 一共用了10个小时
  • 软工导论知识框架(二)结构化的需求分析

    本章节涉及很多重要图表的制作 如ER图 数据流图 状态转换图 数据字典的书写等 对初学者来说比较生僻 本贴只介绍基础的轮廓 后面会有单独的帖子详解各图表如何绘制 一 结构化的软件开发方法 结构化的分析 设计 实现 二 需求分析的重要性 1