软件工程知识梳理2-需求分析

需求分析时软件定义的最后一个阶段,它的基本任务时准确回答系统必须做什么的问题。

输出:本阶段必须的输出时软件需求规格说明书。

角色:需求分析员

参与者:用户、需求分析员

需求分析遵循的准则:

  1. 必须理解并描述问题的信息域,根据这条准则应该简历数据模型
  2. 必须定义软件应完成的功能,这条准则要求建立功能模型
  3. 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型
  4. 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节

需求分析的任务:

  1. 确定对系统的综合要求(功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束需求、逆向需求、将来可能提出的要求)
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正系统开发计划

沟通需求的方法:

访谈

面向数据流自顶向下求精

简易的应用规格说明技术

快速简历软件原型

分析建模:数据模型(ER图)、功能模型(数据流图)、行为模型(状态变换图)。

ER图(实体联系图):数据对象、属性、联系(1:1、1:N、M:N),需要掌握图形的绘制!

状态转换图:通过描绘系统的状态及引起系统状态变换的事件来表示系统的行为,用于行为建模。需要掌握图形的绘制!

在描述复杂事务时,图形远比文字表达方式优越得多,它更形象直观和容易理解。还有3种图形工具可能会在需求分析阶段使用到!

  1. 层次方框图:树形结构的多层次矩形框
  2. Warnier图:树形结构、和层次方框图类似但能提供更丰富的描绘手段
  3. IPO图:输入、处理、输出图的简称

需求验证:

WHY:需求分析的结果是软件开发的重要基础,15%的错误起源于错误的需求。为了提高软件质量、保证软件开发成功、降低软件开发成本,有必要对需求结果进行正确性的验证!

HOW:

  1. 一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾
  2. 完整性:需求必须是完整的﹐规格说明书应该包括用户需要的每一个功能或性能。
  3. 现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
  4. 有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。

描述需求:非形式化(自然语言)、半形式化(E-R图、数据流图)、形式化(数学化)

有穷状态机:可以准确描述一个系统

Petri网:确定系统中隐含的定时问题

Z语言:比较难学,使用了集合论、数理逻辑符和一些特殊符号

小结:

传统软件工程方法学使用结构化分析技术,完成分析用户需求的工作。需求分析是发现,求精﹑建模、规格说明和复审的过程。需求分析的第一步是进一步了解用户当前所处的情况,发现用户所面临的问题和对目标系统的基本需求;接下来应该与用户深入交流﹐对用户的基本需求反复细化逐步求精,以得出对目标系统的完整、准确和具体的需求。具体地说,应该确定系统必须具有的功能、性能、可靠性和可用性,必须实现的出错处理需求.接口需求和逆向需求,必须满足的约束条件以及数据需求,并且预测系统的发展前景。

为了详细地了解并正确地理解用户的需求,必须使用适当方法与用户沟通。访谈是与用户通信的历史悠久的技术,至今仍被许多系统分析员采用。从可行性研究阶段得到的数据流图出发,在用户的协助下面向数据流自顶向下逐步求精,也是与用户沟通获取需求的一个有效的方法。为了促使用户与分析员齐心协力共同分析需求,人们研究出一种面向团队的需求收集法,称为简易的应用规格说明技术,现在这种技术已经成为信息系统领域使用的主流技术。实践表明,快速建立软件原型是最准确、最有效和最强大的需求分析技术。快速原型应该具备的基本特性是“快速”和“容易修改”,因此,必须用适当的软件工具支持快速原型技术。通常使用第四代技术、可重用的软件构件及形式化规格说明与原型环境,快速地构建和修改原型。

为了更好地理解问题,人们常常采用建立模型的方法﹐结构化分析实质上就是一种建模活动,在需求分析阶段通常建立数据模型、功能模型和行为模型。

除了创建分析模型之外,在需求分析阶段还应该写出软件需求规格说明书,经过严格评审并得到用户确认之后,作为这个阶段的最终成果。通常主要从一致性、完整性、现实性和有效性4个方面复审软件需求规格说明书。

多数人习惯于使用实体-联系图建立数据模型,使用数据流图建立功能模型,使用状态图建立行为模型。读者应该掌握这些图形的基本符号,并能正确地使用这些符号建立软件系统的模型。

数据字典描述在数据模型、功能模型和行为模型中出现的数据对象及控制信息的特性,给出它们的准确定义。因此,数据字典成为把3种分析模型粘合在一起的“粘合剂”,是分析模型的“核心”。为了提高可理解性,还可以用层次方框图或Warnier图等图形工具辅助描绘系统中的数据结构。为了减少冗余,简化修改步骤,往往需要规范数据的存储结构。

算法也是重要的,分析的基本目的是确定系统必须做什么。概括地说,任何一个计算机系统的基本功能都是把输人数据转变成输出信息,算法定义了转变的规则。因此,没有对算法的了解就不能确切知道系统的功能。IPO图是描述算法的有效工具。

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

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

相关文章

【阿里巴巴】【淘天集团天猫超市食品生鲜供应链】技术线-高级Java研发工程师-供应链计划

所属部门:淘天集团|学历:本科 | 工作年限: 3 年 职位描述 负责淘天集团天猫超市&食品生鲜供应链计划系统研发,包括经营计划,需求计划,补货计划,调拨计划,库存健康,资源计划等多个核心业务负…

各品牌主板快速启动热键对照表及CMOS进入方法

各品牌主板快速启动热键对照表 主板品牌 启动按键 笔记本品牌 启动按键 主机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏碁笔记本 F12 惠普台式机 F12 微星主板 F11 华硕笔记本 ESC 宏碁台式机 F12 梅捷主板 F9 惠普笔…

Linux安装docker以及docker安装软件

1.docker安装 依次运行添加yum源 # 更新yum软件 yum update# 安装epel-release yum install -y epel-release# 清理 yum clean all# 列出所有可用软件包 yum list安装并运行docker yum install -y docker-io systemctl start docker检查安装结果docker info 2.docker安装Rabb…

「优选算法刷题」:寻找峰值

一、题目 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复…

elementui 开始结束时间可以选择同一天不同时间段

先在main.js中导入 import moment from moment <el-row><el-col :span"12"><el-form-item label"考试开始时间" prop"startTime"><el-date-picker v-model"shiJuanXinXiForm.startTime" style"width: 100…

异步解耦之RabbitMQ(二)__RabbitMQ架构及交换机

异步解耦之RabbitMQ(一) RabbitMQ架构 RabbitMQ是一个基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议的消息代理中间件&#xff0c;它通过交换机和队列实现消息的路由和分发。以下是RabbitMQ的架构图&#xff1a; Producer&#xff08;生产者&#…

孪生卷积神经网络(Siamese Convolutional Neural Network)的设计思路

孪生卷积神经网络&#xff08;Siamese Convolutional Neural Network&#xff09;是一种特殊类型的卷积神经网络&#xff0c;主要用于处理需要成对比较的数据&#xff0c;例如判断两个输入是否相似。 以下是孪生卷积神经网络的基本结构&#xff1a; 输入层&#xff1a;这一层…

019代码结构

什么是顺序结构&#xff1f; 什么是选择结构&#xff1f; boolean flag true; // 结果为true会执行大括号内的代码&#xff0c;否则不执行直接跳过 if(flag true){System.out.println("flag为真"); } 双if选择结构 if(flag true){// 结果为true会执行大括号内的代…

python的Flask生产环境部署说明照做成功

最近刚好在我的Linux服务器上部署一个Web服务, 使用了python的Flask框架, 因此本文主要介绍flask在linux环境上的部署。 Flask 是一个轻量级的 Python Web 框架&#xff0c;非常适合快速开发小型到中型的 Web 应用。然而&#xff0c;Flask 自带的服务器通常是用于开发目的&…

【力扣经典面试题】121. 买卖股票的最佳时机

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最…

EasyCode自动生成CRUD模板(Springboot整合Mybatis)--带完整注解和分页

1. dao 层&#xff1a; ##定义初始变量 #set($tableName $tool.append($tableInfo.name, "Dao")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao")…

Vue3-Composition-API(二)

一、computed函数使用 1.computed 在前面我们讲解过计算属性computed&#xff1a;当我们的某些属性是依赖其他状态时&#xff0c;我们可以使用计算属性来处理 在前面的Options API中&#xff0c;我们是使用computed选项来完成的&#xff1b; 在Composition API中&#xff0c…

有哪些好用的洗地机推荐?洗地机品牌推荐

在如今快节奏的生活中&#xff0c;人们对于家居清洁的需求也越来越高。洗地机无疑成为了很多家庭清洁的得力助手。然而&#xff0c;在众多品牌和型号中&#xff0c;到底哪款洗地机值得入手呢&#xff0c;这可能是很多人都会发出的疑问&#xff0c;下面&#xff0c;我们接下来一…

Blazor快速开发框架Known-更换数据库

本文介绍如何更换框架默认的数据库&#xff0c;下面以MySQL数据库为例&#xff1a; 操作步骤 双击KIMS.Shared项目&#xff0c;打开项目文件&#xff0c;引用MySqlConnector数据库访问包 <PackageReference Include"MySqlConnector" Version"2.3.3" …

代码随想录算法训练营第三十六天 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

题目链接&#xff1a;435. 无重叠区间 文章讲解&#xff1a;代码随想录 435. 无重叠区间讲解 视频讲解&#xff1a;贪心算法&#xff0c;依然是判断重叠区间 | LeetCode&#xff1a;435.无重叠区间 思路和解法 题目&#xff1a; 给定一个区间的集合 intervals &#xff0c;…

JDBC - 结构优化1

JDBC - 结构优化1 文章目录 JDBC - 结构优化1三层架构1 什么是三层架构2 三层架构项目搭建 结构优化1 - 学生信息管理1 封装工具类2 ORM3 DAO 三层架构 1 什么是三层架构 **三层架构&#xff1a;**将程序划分为表示层, 业务逻辑层, 数据访问层三层&#xff0c;各层之间采用接…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05 435. 无重叠区间 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});if(intervals.length 1) return 0;int result 0;for(int i 1 ; i < interva…

新概念英语第二册(49)下

【Key structures】 复合句的语序 复合句可用两种方法构成&#xff1a;一是用连词把从句与主句连接起来&#xff1b;二是用分词结构或不定式。 1、用连词连接的复合句 ① 在复合句中&#xff0c;从句可以是名词从句&#xff08;即起名词的作用&#xff09;。在句子中&#xf…

分布式事务(三)—— 两阶段提交解决方案(2PC)

系列目录&#xff1a; 《分布式事务&#xff08;一&#xff09;—— 事务的基本概念》 《分布式事务&#xff08;二&#xff09;—— CAP和Base理论》 一、常见分布式事务解决方案 两阶段提交&#xff08;2PC&#xff0c;Two-phase Commit&#xff09;TCC补偿模式基于本地消…