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

news2024/10/10 5:02:22

本章节涉及很多重要图表的制作,如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.定义数据的方法:对数据自顶向下分解,由数据元素组成数据的方式来定义。

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

如下是一个例题 :

 

 

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

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

相关文章

GBASE南大通用出席CCF第38届中国计算机应用大会

在数据要素市场化分论坛上,GBASE南大通用高级副总裁赵伟发表“以自主可控的国产基础软件新兴技术保障数据要素安全高效流通”的主题演讲,向参会嘉宾分享基于GBASE数据库的自主可控国产软件,保障数据要素安全流通、高效流转的创新实践。 赵伟讲…

基于STM32设计的智能奶瓶

一、项目背景 随着我国计划生育政策的放开,婴幼儿数量持续上涨,国民收入逐年提高,家庭在婴幼儿产品方面的消费日益扩大。奶瓶是母婴市场的刚需。目前婴儿哺育的问题引起新爸新妈的高度重视。一方面,人们使用的传统奶瓶已经不能很好地满足现代人对于智能化生活的需求。另一…

C语言非常道 6.4习题解答

关于 #include “stdarg.h” 相关知识小结: 函数:tppedef va_list char * ; va_list al; va_start(al, fmt) 使 al 指向变参函数中最后一个已知参数(从右往左数的第一个已知参数) va_arg(两个参数),第一个…

事件循环和生命周期

事件循环和生命周期 js是单线程主要说的是 js引擎线程只有一个主线程这个线程跟GUI线程是互斥的 GUI线程是绘制html css js也可修改这部分所以互斥 https://segmentfault.com/a/1190000023315304 https://www.jianshu.com/p/71544067d3a3 https://zhuanlan.zhihu.com/p/359…

【Unity组件扩展】减少Image的渲染

需要实现透明遮罩功能,如点击任意关闭界面、透明遮挡不让点击等,一般可以添加Image组件,然后将alpha值设置为0。不过,在Unity2018.4.3.6f1及之前的老版本中,这样的做法会增加DC和增加overdraw。 可以继承Graphic重写O…

基于Javaweb+Vue3实现淘宝卖鞋前后端分离项目

前端技术栈:HTMLCSSJavaScriptVue3 后端技术栈:JavaSEMySQLJDBCJavaWeb 文章目录 前言1️⃣登录功能登录后端登录前端 2️⃣商家管理查询商家查询商家后端查询商家前端 增加商家增加商家后端增加商家前端 删除商家删除商家后端删除商家前端 修改商家修改…

【Python从入门到人工智能】14个必会的Python内置函数(7)——数据格式化处理 综合应用场景

总觉得忍一忍就会好起来。真笨,人家不就是觉得你会忍一忍,所以才这样对你吗?当我们凶狠地对待这个世界的时候,才会发现这个世界,突然变得温文尔雅了。——余华《在细雨中呼喊》 🎯作者主页: 追光…

ElementUI 实现动态表单数据校验(已解决)

文章目录 🍋前言:🍍正文1、探讨需求2、查阅相关文档([element官网](https://element.eleme.cn/#/zh-CN/component/form))官方动态增减表单项示例3、需求完美解决4、注意事项 🎃专栏分享: &#…

Hello,Vector DB|可能是最易上手的 Faiss 教程

大家会不会有这样的疑问: 网易云音乐是如何根据我的音乐口味推荐相似歌曲的?淘宝是如何判断我的购买喜好的?手机相册又是如何识别照片中的人脸,并将同一个人的照片归为同一组的? 其实,实现这一切的背后技术…

【nginx】nginx之location规则详解:

文章目录 一、语法规则:二、优先级:三、验证:1、精确匹配:2、通过^~方式实现匹配:3、通过”~”方式实现匹配:4、通过"~*"方式实现匹配:5、”!~*” 和”!~” 不常用,再次不做介绍6、通…

JWT token

一、为什么使用JWT? 随着分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成token的方式做登录身份验证,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式…

vue/cli 自定义配置

vue/cli 自定义配置 1、更改默认的端口号8080 只需要更改vue.config.js文件 1、更改默认的端口号8080 只需要更改vue.config.js文件

2023年基准Kubernetes报告:6个K8s可靠性失误

云计算日益成为组织构建应用程序和服务的首选目的地。尽管一年来经济不确定性的头条新闻主要集中在通货膨胀增长和银行动荡方面,但大多数组织预计今年的云使用和支出将与计划的相同(45%),或高于计划的(45%)…

Vite+Typescript+Vue3学习笔记

ViteTypescriptVue3学习笔记 1、项目搭建 1.1、创建项目(yarn) D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages...success Installed…

MyBatisPlus之DQL编程控制

MyBatisPlus之DQL编程控制 1. 条件查询方式1.1 条件查询1.1.1 方式一:按条件查询1.1.2 方式二:lambda格式按条件查询1.1.3 方式三:lambda格式按条件查询(推荐) 1.2 组合条件1.2.1 并且关系(and)…

【算法 -- LeetCode】(027) 移除元素

1、题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

【Linux进程】进程控制(中) {进程等待:等待的必要性,进程等待的方法wait,waitpid,退出状态status,waitpid非阻塞等待}

三、进程等待 3.1 进程等待必要性 之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill …

easyexcel 将对应列的格式改为数字或者文本格式

1.在easyexcel 导出excel时 需要将某个列的格式指定,例如指定为数字格式 例如 需要把单元格格式设置为数值,并且保留小数点后三位,按道理来说应该是这样子设置 /** * test, 最终导出值 */ ExcelProperty(value "test")…

01 linux基础(1)

环境安装 解压,从vmware打开虚拟机。 设置密码:1 打开终端:ctrlaltt linux介绍 Linux的发展 1)1969年,由kenthompson在AT&T贝尔实验室实现的。使用的是汇编语言。 2)1970年,KenThompson…

【Linux后端服务器开发】HTTPS协议

目录 一、加密算法 二、中间人攻击 三、CA认证 一、加密算法 HTTPS协议是什么?HTTPS协议也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。 HTTP协议内容是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况…