当前位置: 首页 > news >正文

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

  • 软件需求

软件需求:

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

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

需求开发:

  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是控制委员会。

相关文章:

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

软件需求 软件需求: 指用户 对系统在功能、行为、性能、设计约束等方面的期望。 分为 需求开发 和 需求管理 两大过程。 需求开发: 需求获取需求分析需求定义(需求规格说明书)需求验证:拉客户一起评审&#xff0c…...

Python自带的IDLE有什么用

在Python的官方解释器中,自带了一个名为IDLE(Interactive DeveLopment Environment)的集成开发环境。 一、简化代码调试过程 很多初学者在编写Python代码时,经常会遇到一些问题需要调试。而在IDLE中,我们可以通过设置断点、单步调试等方法&…...

设计模式之简单工厂模式

一、概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类。 简单工厂模式:又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。 二、适用性 1.当一个类不知道它所必须…...

从SaaS到RPA,没有真正“完美”的解决方案!

众所周知,SaaS行业越来越卷,利润也越来越“薄”,这是传统软件厂商的悲哀,也是未来数字化行业不得不面对的冷峻现状之一。 随着基于aPaaS、低代码的解决方案之流行,SaaS行业变得越来越没有技术门槛,IT人员的…...

miniconda克隆arcpy

arcpy环境克隆 前言尝试思考到此结束 前言 最近遇到了一些问题,需要用到arcpy来处理一些东西,但众所周知,arcgis的arcpy是python 2.0的,我不是很喜欢;所以我安装了arcgis pro 2.8,我发现这也是个坑&#x…...

一万字关于java数据结构堆的讲解,让你从入门到精通

目录 java类和接口总览 队列(Queue) 1. 概念 2. 队列的使用 以下是一些常用的队列操作: 1.入队操作 2.出队操作 3.判断队列是否为空 4.获取队列大小 5.其它 优先级队列(堆) 1. 优先级队列概念 Java中的PriorityQueue具有以下特点 2.常用的PriorityQue…...

Java集合底层源码剖析-ArrayList和LinkedList

文章目录 ArrayList基本原理优缺点核心方法的原理数组扩容以及元素拷贝LinkedList基本原理优缺点双向链表数据结构插入元素的原理获取元素的原理删除元素的原理Vector和Stack栈数据结构的源码剖析ArrayList 基本原理 ArrayList是Java中的一个非常常用的数据结构,它实现了Lis…...

【数据分享】2006-2021年我国城市级别的市政公用设施建设固定资产投资相关指标(30多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标(可查看之前的文章获悉详情&#xff…...

学点Selenium玩点新鲜~,让分布式测试有更多玩法

前 言 我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具,而 Selenium Grid 是 Selenium 中的一大组件,通过它能够实现分布式测试,能够帮助团队简单快速在不同的环境中测试他们的 Web 应用。 分布式执行测试其实并不是一…...

【SpringBoot学习笔记】04. Thymeleaf模板引擎

模板引擎 所有的html元素都可以被thymeleaf替换接管 th:元素名 templates下的只能通过Controller来跳转,templates前后端分离,需要模板引擎thymeleaf支持 模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的&#x…...

【uni-app】 .sync修饰符与$emit(update:xxx)实现数据双向绑定

最近在看uni-app文档,看到.sync修饰符的时候,觉得很有必要记录一下 其实uni-app是一个基于Vue.js和微信小程序开发框架的跨平台开发工具 所以经常会听到这样的说法,只要你会vue,uni-app就不难上手 在看文档的过程中,发…...

链表之第二回

欢迎来到我的:世界 该文章收入栏目:链表 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言第一题:反转一个链表第二题:链表内指定区间反转第三题:判断一个链表…...

【sgDragSize】自定义拖拽修改DIV尺寸组件,适用于窗体大小调整

核心原理就是在四条边、四个顶点加上透明的div,给不同方向提供按下移动鼠标监听 ,对应计算宽度高度、坐标变化 特性: 支持设置拖拽的最小宽度、最小高度、最大宽度、最大高度可以双击某一条边,最大化对应方向的尺寸;再…...

Gson与FastJson详解

Gson与FastJson详解 Java与JSON 做什么? 将Java中的对象 快速的转换为 JSON格式的字符串. 将JSON格式的字符串, 转换为Java的对象. Gson 将对象转换为JSON字符串 转换JSON字符串的步骤: 引入JAR包 在需要转换JSON字符串的位置编写如下代码即可: String json new Gson().to…...

LeetCode150道面试经典题-- 有效的字母异位词(简单)

1.题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 2.示例 s"adasd" t"daads" 返回true s"addad" t &q…...

前端与人工智能

前端开发与人工智能的结合在未来将会产生许多有趣和有前景的发展。以下是前端与人工智能结合可能带来的一些趋势和前景: 智能用户体验:人工智能可以用于改善用户体验,例如通过个性化推荐、情感分析等技术来提供更贴近用户需求的内容和功能。…...

神经网络基础-神经网络补充概念-14-逻辑回归中损失函数的解释

概念 逻辑回归损失函数是用来衡量逻辑回归模型预测与实际观测之间差异的函数。它的目标是找到一组模型参数,使得预测结果尽可能接近实际观测。 理解 在逻辑回归中,常用的损失函数是对数似然损失(Log-Likelihood Loss)&#xff…...

UG NX二次开发(C++)-PK函数创建一条圆弧曲线

文章目录 1、前言2、创建一个项目3、添加头文件4、在do_it中添加创建圆曲线的源代码5、调用dll6、再创建一个长方体验证1、前言 采用PK进行UG NX二次开发,现在看到的文章很多是直接创建实体,然后在UG NX的视图区显示出来,对于创建圆曲线的文章不多,本文讲一下PK函数创建圆…...

AndroidStudio中修改打包生成的apk名称

1.配置手机架构 splits {abi {enable truereset()include armeabi-v7a,arm64-v8auniversalApk false} } 2.多渠道 productFlavors {normal {applicationId "*****"manifestPlaceholders [appName: "string/app_name_normal"]}driver {applicationId &qu…...

多个springboot整合使用rabbitmq(使用注解的方式)

一、简述 先参考单个springboot使用rabbitmq和了解rabbitmq的五种模式 单个springboot整合rabbitmq_java-zh的博客-CSDN博客 二、创建项目 1、先创建两个springboot项目&#xff0c;一个做生产者&#xff0c;一个做消费者 2、导包(生产者和消费者对应的内容都是一样) <…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...