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

高架学习笔记之需求工程

目录

一、什么是软件需求

二、需求工程

2.1. 需求获取

2.2. 需求分析

2.3. 形成需求规格

2.4. 需求确认

2.5. 需求管理

2.5.1. 变更控制

2.5.2. 版本控制

2.5.3. 需求跟踪

2.5.4. 需求状态跟踪


一、什么是软件需求

    软件需求目前没有统一的定义,一般是指用户为了解决问题或达到目标所需要的条件或权能,系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能,以及反映上述两种条件或权能的文档说明。

    软件需求包括业务需求、用户需求以及系统需求,其中业务需求是企业或组织对系统或产品的高层次的期望,反映了企业或组织期望通过系统或产品达到一个什么样的目标;用户需求是系统的实际用户对产品的期望,如财务人员需要系统能够完成哪些任务,管理人员又需要系统完成哪些任务;系统需求则是对需求的计算机化,系统需求包括功能需求,性能需求以及设计约束,其中功能需求直接定义了开发人员必须完成哪些功能,性能需求对系统的响应时间、吞吐率等指标做出要求,设计约束则是指对软件系统设计和实现过程中的限制、规范或条件,比如指定软件系统运行所需的硬件设备或环境要求,规定软件系统需要与特定软件或技术集成或兼容的要求等。

    从项目管理的维度,可以把软件需求分为基本需求、期望需求和兴奋需求;基本需求是指用户明确提出需要有的功能性或非功能性需求,期望需求是指用户没有明确提出,但认为是不需要额外说明也一定要有的功能或非功能性需求,是隐含的需求,兴奋需求则是用户不认为需要有的功能或非功能性需求,实现了兴奋需求不仅需要付出额外的成本,用户也未必会觉得有用,而且兴奋需求的实现一般不会带来额外的回报,所以兴奋需求的实现是有成本且有风险的。

二、需求工程

    需求工程旨在确保软件系统开发过程中对用户需求的准确理解、明确定义和有效管理。需求工程的活动主要划分 需求获取、需求分析、形成需求规格、需求确认、需求管理5个阶段,其中前4个阶段可以统称为需求的开发阶段,而需求的管理阶段又可划分为变更控制、版本控制、需求跟踪、需求状态跟踪四个阶段:

2.1. 需求获取

    需求获取是指识别和收集与软件系统相关的各种需求。这包括与利益相关者沟通、分析现有系统和文档、进行用户调研等活动,以获取全面的需求信息。

    需求获取的方法包括:用户面谈、需求专题讨论会、问卷调查、现场观察、原型化方法、头脑风暴法等。

2.2. 需求分析

    需求分析是在需求识别的基础上,对收集到的需求进行分析和整理,以理解需求之间的关系、优先级和约束条件。需求分析包括结构化分析以及面向对象分析

2.3. 形成需求规格

    形成需求规格也称为需求文档化或需求定义, 目的在于按照相关标准,形成需求规格说明书(SRS),作为后续软件系统开发的指南。主要有两种方法:严格定义法和原型法。严格定义法要求所有需求都能预先定义,有结构化的思想在里面;原型法通过开发实际的、可供用户参与的模型来加强项目参与者之间的交流,其需求往往无法在开发前就被准确地说明,通过增量迭代的方法来完成需求的定义。

2.4. 需求确认

    需求确认是指在需求规范完成后,需求工程师会与利益相关者一起验证需求,确保需求的正确性、完整性、一致性、可测试性和可行性。包含有效性检查、一致性检查、可行性检查和确认可验证性。需求经过确认之后会形成需求的基线,后续的管理工作将围绕着需求的基线进行管理。

    需求确认的方法主要有需求评审和需求测试两种,需求评审包括正式评审和非正式评审,需要甲乙双方共同参与,确认需求内容;需求测试是通过提出一些场景来验证按照需求开发出来的系统是否符合标准。最终由用户签字确认需求,并成为最终软件的验收标准之一。

2.5. 需求管理

2.5.1. 变更控制

    需求的变更就是对需求基线的变更,变更控制过程用来评估提议的变更并对其进行跟踪,变更控制过程包括变更申请、变更评估、变更决策、变更实施、变更验证、沟通存档。其中对变更进行决策时需要变更控制委员会(Change Control Board, CCB)的参与。

    变更控制委员会(CCB)负责裁定接受哪些变更。CCB由多方成员共同组成,只决定是否接受变更,而不提出变更方案。

2.5.2. 版本控制

    需求基线的每次变更都会产生一个版本,版本控制即为对不同版本的管理和控制。

2.5.3. 需求跟踪

    需求跟踪是对需求基线的落实及实现的跟踪,它提供了由需求到产品实现整个过程范围的明确查阅能力,它的目的是维护“需求-设计-编程-测试”之间的一致性,确保所有的工作成果符合用户需求。需求跟踪有两种方式:正向跟踪及逆向跟踪。正向跟踪是指跟踪所有的需求是否都得到了实现;逆向跟踪则是指系统所有的功能是否都能在需求中找到出处。

2.5.4. 需求状态跟踪

    需求状态跟踪是指在软件开发项目中追踪每个需求的当前状态和进展情况。需求状态通常包括需求的提出、分析、设计、实现、测试、验证等不同阶段。需求状态跟踪的主要目的是帮助团队了解每个需求的当前状态,及时发现和解决可能存在的问题或延迟,以确保项目按时交付并满足质量标准。

相关文章:

高架学习笔记之需求工程

目录 一、什么是软件需求 二、需求工程 2.1. 需求获取 2.2. 需求分析 2.3. 形成需求规格 2.4. 需求确认 2.5. 需求管理 2.5.1. 变更控制 2.5.2. 版本控制 2.5.3. 需求跟踪 2.5.4. 需求状态跟踪 一、什么是软件需求 软件需求目前没有统一的定义,一般是指用…...

mysql基础2多表查询

多表查询 多表关系: 一对多 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工,一个员工对应一个部门 实现: 在多的一方建立外键,指向一的一方的主键 多对多 案例: 学生 与 课程的关系 关系: 一个学生可以选修多门课程,一门课程也可以…...

Qt 写一个邮件发送程序

最近在完成一个邮箱代替的告警功能&#xff0c;写了一个邮件发送的demo 以下为代码&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QTcpSocket> namespace Ui { class MainWindow; }class MainWindow : public QMainWin…...

swagger3快速使用

目录 &#x1f37f;1.导入依赖 &#x1f32d;2.添加配置文件 &#x1f9c2;3.添加注解 &#x1f96f;4.访问客户端 1.导入依赖 引入swagger3的依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artif…...

一键入门Ubuntu22!

目录 一、安装 二、常用目录 三、常用指令 四、用户指令 五、ssh与scp 六、服务相关 七、Python与Pycharm 八、Vim编辑器 九、Ubuntu22下使用Mysql 十、Ubuntu22下使用mongodb 十一、Ubuntu22下使用redis Ubuntu是一个基于Debian的开源操作系统&#xff0c;由Canoni…...

阿里云服务器价格购买价格表,2024新版报价查询

2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…...

实现防抖函数并支持第一次立刻执行(vue3 + ts环境演示)

1、先看一效果&#xff1a; 2、实现思路&#xff1a; 使用定时器setTimeout和闭包实现常规防抖功能&#xff1b;增加immediate字段控制第一次是否执行一次函数&#xff08;true or false&#xff09;&#xff1b;增加一个flag标识&#xff0c;在第一次执行时&#xff0c;将标…...

WPF —— DataGrid数据网格

1 &#xff1a;DataGrid简介 DataGrid 是数据网格 : 可以显示网格数据的控件&#xff0c;通过自定义列模版 来去实现各种网格效果 &#xff0c; 可以使用以下几中标签显示不同数据 2 &#xff1a;DataGrid常用的组件 显示文本: DataGridTextColumn 显示复选框: DataGridChec…...

牛客题霸-SQL进阶篇(刷题记录一)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 部分题目因…...

网络安全实训Day12

写在前面 注意根据笔记中的缩进判断该文本所在层级。 网络空间安全实训-网络安全技术 SSL VPN SSL协议 定义&#xff1a;一种应用层的安全保护技术 工作流程 1.客户端与服务器通过三次握手建立TCP连接 2.客户端向服务器发送Client-Hello信息&#xff0c;消息中包含希望访问的…...

对话Midjourney创始人:图片仅是起步,人工智能将全面改变学习、创意和组织。

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 ​ 发布在https://it.weoknow.com 关注我 Midjourney 是一家神奇的公司&#xff0c;11 人改变世界&#xff0c;创造伟大的产品。…...

Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题&#xff0c;但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中&#xff0c;我们将了解如何将现有数据流&#xff0…...

LeetCode刷题记录——day6

1、https://leetcode.cn/problems/length-of-last-word/description/?envTypestudy-plan-v2&envIdtop-interview-150 直接从后往前遍历就好 class Solution { public:int lengthOfLastWord(string s) {int length0;int lens.length();for(int ilen-1;i>0;i--){if(s[i]…...

C++String类

1. 前言 String是C中操作字符串的类&#xff0c;它是在比较早的时候设计的STL模板&#xff0c;因此在某些地方设计的有些冗余 对于String类&#xff0c;不仅仅是学会使用它&#xff0c;更重要的是要从底层去理解它&#xff1b;本篇文章将从底层出发&#xff0c;模拟实现常用的S…...

Linux docker7--私有镜像仓库registry和UI搭建及使用

一、对于开源的镜像&#xff0c;如redis&#xff0c;nginx等&#xff0c;可以通过官方仓库Docker Hub&#xff0c;或者国内的阿里云等共有仓库下载获取到镜像。但是企业内对于自己的研发产品不可能往公共仓库去发布镜像的&#xff0c;一般都会搭建私有的镜像仓库&#xff0c;保…...

IDS入侵检测系统分为两大类。

一、基于签名的IDS和基于异常的IDS。 基于签名的Ids主要依赖于已知的攻击模式库来检测入侵行为&#xff0c;适用于检测已知的攻击模式。 基于异常的Ids则关注网络流量的行为特征&#xff0c;通过分析数据包之间的关系和统计模型来判断是否存在异常行为&#xff0c;更适用于检…...

为什么元素显示的样式跟我设置的不一样?CSS优先级详解

一、什么是CSS中的选择器优先级&#xff1f; 在CSS中&#xff0c;选择器优先级是指确定应用于元素的最相关CSS声明的算法。这个优先级决定了哪个样式规则将被应用到元素上。根据选择器的类型和特定性&#xff0c;CSS规定了不同的优先级&#xff0c;例如ID选择器比类选择器具有更…...

C语言动态内存的管理

前言 本篇博客就来探讨一下动态内存&#xff0c;说到内存&#xff0c;我们以前开辟空间大小都是固定的&#xff0c;不能调整这个空间大小&#xff0c;于是就有动态内存&#xff0c;可以让我们自己选择开辟多少空间&#xff0c;更加方便&#xff0c;让我们一起来看看动态内存的有…...

CASIA数据集转png HWDB2.0-2.2

https://nlpr.ia.ac.cn/databases/handwriting/Home.html CASIA在线和离线中文手写数据库 https://nlpr.ia.ac.cn/databases/handwriting/Offline_database.html CASIA-HWDB2.0-2.2 离线文本数据库是由孤立字符数据集的作者制作的。每人撰写了五页给定文本。由于数据丢失&a…...

学习或复习电路的game推荐:nandgame(NAND与非门游戏)、Turing_Complete(图灵完备)

https://www.nandgame.com/ 免费 https://store.steampowered.com/app/1444480/Turing_Complete/ 收费&#xff0c;70元。据说可以导出 Verilog &#xff01;...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…...

RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上

一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema&#xff0c;不需要复杂的查询&#xff0c;只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 &#xff1a;在几秒钟…...

虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)

当我们网关配置好了&#xff0c;DNS也配置好了&#xff0c;最后在虚拟机里还是无法访问百度的网址。 第一种情况&#xff1a; 我们先考虑一下&#xff0c;网关的IP是否和虚拟机编辑器里的IP一样不&#xff0c;如果不一样需要更改一下&#xff0c;因为我们访问百度需要从物理机…...

Linux——TCP和UDP

一、TCP协议 1.特点 TCP提供的是面向连接、可靠的、字节流服务。 2.编程流程 &#xff08;1&#xff09;服务器端的编程流程 ①socket() 方法创建套接字 ②bind()方法指定套接字使用的IP地址和端口。 ③listen()方法用来创建监听队列。 ④accept()方法处理客户端的连接…...