软件需求-架构师之路(五)

  • 软件需求

软件需求:

指用户 对系统在功能、行为、性能、设计约束等方面的期望。

分为 需求开发 需求管理 两大过程。

需求开发:

  1. 需求获取
  2. 需求分析
  3. 需求定义(需求规格说明书)
  4. 需求验证:拉客户一起评审,没问题签字。

这里评审确定后就形成需求基线。下面就是需求管理,如果变更需求就超过了基线。

需求管理(支持需求开发):

  1. 变更控制:加需求必需严格控制。
  2. 版本控制
  3. 需求跟踪:跟踪需求变更。
  4. 需求状态跟踪:需求是否完成跟踪。

重点:软件需求分为 业务需求用户需求系统需求,三大类。(重点:业务需求用户需求系统需求

业务需求:反映 企业和客户对系统高层次目标要求,通常来自项目投资人、市场营销部或产品策划部。

用户需求:描述 用户具体目标,用户要求系统必需完成的任务,通常采用用户访谈和文件调查。

系统需求:系统角度的需求,分为 功能需求,非功能需求和设计约束等。

功能需求:开发人员需要实现的功能。

非功能需求:系统必需的属性,如可维护,高效率,可靠性等性能。

设计约束:对系统的一些约束说明,例如必需采用自主知识产权的数据库系统,必需运行在linux系统下等。

真题:

某软件公司正在承担开发一个字处理器的任务,在需求分析阶段,公司的相关人员整理出一些相关系统需求,其中,“找出文档中的拼写错误并提出一个替换项列表来供选择替换拼写错误的词”属于();“显示提供替换词的对话框以及实现整个文档范围的替换”属于();“用户能有效纠正文档中的拼写错误”属于()。

  1. 业务需求
  2. 用户需求
  3. 功能需求
  4. 性能需求

答案:B、C、A

解析:

第三个 抽象程度很高“用户能有效纠正文档中的拼写错误”在前,之后第一个在后“找到错误并替换错误”。

第一个找到错误并替换,用户去找。

第二个显示词语,功能需求。

第三个能有效找到的要求,业务需求。

第三个则是提出的也无需求,提出来后,则用户去找到错误改正,第一个。所以第三个是业务需求,第一个是用户需求。  第二句话则是实现,用代码。

二、需求获取

需求 获取不同用户和干系人的需求和约束。

常见获取方法:

用户访谈、问卷调查、采样、情节串连班、联合需求计划、需求记录技术。

联合需求计划(JRP):就是联合各方,如需求分析师,开发等一起开会。

问券调查:大量数据无法一一 访谈。

用户访谈:良好灵活性,应用范围广,但存在获取信息大、记录困难和需要足够知识领域等问题。

采样:基于 数理统计原理,不仅用于收集数据,还可以用采访用户或采集用户,减少数据偏差。

三、需求分析

需求分析:把杂乱无章的用户要求转化为用户需求。

结构化的需求分析

自顶向下,逐步分解,面向数据。

三大模型:功能模型(数据流图)、行为模型(状态转换模型)、数据模型(E-R图)以及数据字典。

 

长方形:外部实体。

圆形或者椭圆形:加工。

箭头线条代表:数据流。

两条线代表:数据存储。

数据流:必需经过加工。

加工:

有输入但没输出,则是黑洞。

有输出但没输入,是奇迹。

输入不足以产生输出,是灰洞。

外部实体:

软件系统之外的人员或者组织,指系统所需发源地和归宿地。

  • 数据字典

数据字典DD

数据字典为数据流图每个数据流、文件、加工以及组成数据流或文件数据项作出说明。

4个类目:数据流、数据项、数据存储和基本加工。

加工逻辑结构化语言、判定表和判定树

= 表示被定义

= 与 x=a+b,表示x由a和b组成

[...|...] 或,x=[a|b],x表示a或者b

{......},x=[a],0个或者多个a组成

  • 需求定义

需求定义是整个需求开发的基础。SRS是软件开发过程最重要文档之一,对任何规模和性质都不应该缺少。

需求定义方法:

  1. 严格定义称为预先定义,所有需求都能够预先定义。开发与用户之间能够准确清晰交流,
  2. 原型方法:迭代的循环开发方式,原型客服了困难的一种手段,项目干系人都存在交流困难。

需求验证:

称为需求确认,目的与用户一起确认需求无误,对需求规格说明书SAS进行评审。

需求评审:正式评审和非正式评审。

需求测试:设计概念测试用例。

需求验证通过后需要签字,不可以随意更改。

需求跟踪分为双向跟踪,正向跟踪和反向跟踪。

正向跟踪 去看看产品实现的有没有少实现。

反向跟踪 去看看之前的文档有没有多实现。

重点)需求变更的管理过程:

变更请求、团队分析影响评估、评估结果通知干系人、CCB审批(绝对性领导)、

同意的话

执行变更、记录变更实施情况、分发新文档

CCB是控制委员会。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang 局部变量、全局变量 声明

文章目录 一、局部变量二、全局变量 一、局部变量 四种声明方式 多变量声明: package mainimport "fmt"//局部变量声明 func main() {//方法一: 声明一个变量和数据类型,不初始化值;默认值为0;var lvA intfmt.Printl…

1572. 矩阵对角线元素的和

题目描述: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例: 解题思路: 同时求对角线和副对角线上元素的和再减去重合的元素 相关代码&#xf…

JVM---jvm里的内存溢出

目录 堆溢出 虚拟机栈和本地方法栈溢出(栈溢出很少出现) 方法区和运行时常量池溢出 本机内存直接溢出(实际中很少出现、了解即可) 堆溢出 堆溢出:最常见的是大list,list里面有很多元素 堆溢出该怎么解决…

途乐证券-新股行情持续火爆,哪些因素影响首日表现?

全面注册制以来,参加打新的投资者数量全体呈现下降。打新收益下降,破发频出的布景下,投资者打新策略从逢新必打逐步向优选个股改变。 经过很多历史数据,从商场定价、参加者热度以及机构重视度维度揭秘了上市后股价体现优秀的个股具…

力扣 279. 完全平方数

题目来源:https://leetcode.cn/problems/perfect-squares/description/ C题解(来源代码随想录): 动规五部曲分析如下: 确定dp数组(dp table)以及下标的含义。dp[j]:和为j的完全平方…

如何仿写简易tomcat 实现思路+代码详细讲解

仿写之前,我们要搞清楚都要用到哪些技术 自定义注解,比如Tomcat使用的是Servlet,我们可以定义一个自己的MyServlet构造请求体和返回体,比如tomcat使用HttpRequest,我们可以自己定义myHttpRequestjava去遍历一个指定目…

Matlab工具NIFTI包的基本功能函数

Matlab工具NIFTI包的基本功能函数 Nifti 格式最初是为神经影像学发明的。神经影像信息学技术计划(NIFTI)将 NIfTI 格式预设为 ANALYZE7.5 格式的替代品。它最初的应用领域是神经影像,但是也被用在其他领域。这种格式的主要特点就是它包含两个…

Docker容器:docker基础概述、docker安装、docker网络

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…

【Unity造轮子】制作一个简单的2d抓勾效果(类似蜘蛛侠的技能)

文章目录 前言开始1. 实现简单的抓勾效果2. 高阶钩爪效果 源码参考完结 前言 欢迎阅读本文,本文将向您介绍如何使用Unity游戏引擎来实现一个简单而有趣的2D抓勾效果,类似于蜘蛛侠的独特能力。抓勾效果是许多动作游戏和平台游戏中的常见元素,…

zookeeper案例

目录 案例一:服务器动态上下线 服务端: (1)先获取zookeeper连接 (2)注册服务器到zookeeper集群: (3)业务逻辑(睡眠): 服务端代码…

区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRBiLSTM双向长短…

SpringBoot案例 调用第三方接口传输数据

一、前言 最近再写调用三方接口传输数据的项目,这篇博客记录项目完成的过程,方便后续再碰到类似的项目可以快速上手 项目结构: 二、编码 这里主要介绍HttpClient发送POST请求工具类和定时器的使用,mvc三层架构编码不做探究 pom.x…

dom靶场

靶场下载地址: https://www.vulnhub.com/entry/domdom-1,328/ 一、信息收集 获取主机ip nmap -sP 192.168.16.0/24netdiscover -r 192.168.16.0/24端口版本获取 nmap -sV -sC -A -p 1-65535 192.168.16.209开放端口只有80 目录扫描 这里扫描php后缀的文件 g…

设计模式之责任链模式【Java实现】

责任链(Chain of Resposibility) 模式 概念 责任链(chain of Resposibility) 模式:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者 通过前一对象记住其下一个对象的引用而连成一条…

Oracle 使用 CONNECT_BY_ROOT 解锁层次结构洞察:在 SQL 中导航数据关系

CONNECT_BY_ROOT 是一个在 Oracle 数据库中使用的特殊函数,它通常用于在层次查询中获取根节点的值。在使用 CONNECT BY 子句进行层次查询时,通过 CONNECT_BY_ROOT 函数,你可以在每一行中获取根节点的值,而不仅仅是当前行的值。 假…

打印出二进制的奇数位和偶数位

void print(int a) {int i0;printf("奇数位:");for(i30;i>0;i-2){printf("%d ",(a>>i)&1);}printf("\n");printf("偶数位:");for(i31;i>1;i-2){printf("%d ",(a>>i)&1);} …

Kotlin runBlocking launch多个协程读写mutableListOf时序

Kotlin runBlocking launch多个协程读写mutableListOf时序 import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlockingfun main(args: Array<String>) {var lists mutableListOf<String>()runBlocking {launch {r…

【boost网络库从青铜到王者】第五篇:asio网络编程中的同步读写的客户端和服务器示例

文章目录 1、简介2、客户端设计3、服务器设计3.1、session函数3.2、StartListen函数3、总体设计 4、效果测试5、遇到的问题5.1、服务器遇到的问题5.1.1、不用显示调用bind绑定和listen监听函数5.1.2、出现 Error occured!Error code : 10009 .Message: 提供的文件句柄无效。 [s…

09- DMA(DirectMemoryAccess直接存储器访问)

DMA 09 、DMA(DirectMemoryAccess直接存储器访问)DMA配置流程 09 、DMA(DirectMemoryAccess直接存储器访问) DMA配置流程 dma.c文件 main.c文件 详见《stm32中文参考手册》表57。

基于php驾校驾驶理论考试模拟系统

驾校驾驶理论考试模拟系统&#xff0c;是基于php编程语言&#xff0c;mysql数据库进行开发&#xff0c;本系统分为用户和管理员两个角色&#xff0c;其中用户可以注册登陆系统&#xff0c;查看考试规则&#xff0c;进行驾照考试&#xff0c;查看考试得分&#xff0c;考试错题&a…