软件工程与计算总结(五)软件需求基础
本帖介绍软件需求涉及的诸多基本概念,通过对这些概念的阐述,剖析软件需求的来源、层次、类别、作用等重要知识~
目录
编辑
一.引言
二.需求工程基础
1.简介
2.活动
3.需求获取
4.需求分析
5.需求规格说明
6.需求验证
7.需求管理
三.需求基础
1.需求
2.需求的层次性
3.结合层次性的需求开发
4.区分需求、问题、规格说明
四.需求分类
1.需求谱系
2.软件需求的分类
一.引言
需求开发阶段的主要任务就是分析问题,研究问题所发生的现世界(即问题域),寻找实现软件系统与现实世界有效互动的办法,并严格描述该互动方法——即建立软件解决方案,又称为软件规格说明~
进行严谨的需求开发是非常重要的,开发软件系统最为困难的部分就是准确说明开发什么~
二.需求工程基础
1.简介
3个主要任务:
- 需求工程必须说明软件系统将被应用的环境及其目标,说明用来达到这些目标软件的功能,即同时要说明软件“需要做什么”和“为什么需要做”~
- 需求工程必须将目标和功能反映到软件系统当中,映射为可行的软件,并对软件行为进行准确的规格说明
- 现实世界时不断变化的世界,因此需求工程还需妥善处理目标和功能随着岁见演化的变动情况
2.活动
主要包括需求开发和需求管理两个方面~

- 需求开发

- 需求管理:跟踪后续阶段中的需求实现与需求变更情况,确定需求得到正确的理解并被正确得实现到软件产品当中~
3.需求获取
从人、文档或者环境中获取需求的过程,需要各种方法和技术来“发现”需求
- 目标分析:根据问题确定目标/通过分享厉害人关系确定目标
- 用户需求获取:面谈、集体获取方法、头脑风暴、原型
4.需求分析
通过建模来整合各种信息,以使得人们更好地理解问题
- 边界分析:系统的边界定义了项目的范围
- 需求建模:将大量的信息以清晰、条理的方式集成到一个模型当中,让需求工程师对问题形成更为深刻的理解
5.需求规格说明
获取的需求要编写成文档,编写文档的主要目的是在系统用户之间交流信息,因此对文档的质量有一定要求~
- 定制文档模板:团队通常会在其内部为各种需要编写的文档维护一些文档模板
- 编写文档:选择最准确的表达方式
6.需求验证
保证需求规格说明中定义的需求必须能正确、准确地反映用户的意图
- 文档内每条需求度正确、准确地反映了用户的意图
- 文档记录的需求集在整体上具有完整性和一致性
- 文档的组织方式和需求的书写方式具有可读性和可修改性
(同级评审是最通用有效的需求验证方式)
7.需求管理
在需求开发活动之后,设计、测试、实现等后续的软件系统开发活动都需要围绕需求开展工作~
三.需求基础
1.需求
- 用户为了解决问题或达到某些目标所需要的条件或者能力
- 系统或者系统部件为了满足合同、标准、规范或者其他正式文档所规定的要求而需要具备的条件和或者能力
- 对上述两者中的一个条件或者一种能力的一种文档化表述
2.需求的层次性
期望可能会发生在多个抽象层次上:

- 业务需求:抽象层次最高的需求,是系统建立的战略出发点,表现为高层次的目标,描述了组织为什么要开发系统
- 用户需求:执行实际工作的用户对系统完成的具体任务的期望
- 系统级需求:用户对系统行为的期望
3.结合层次性的需求开发
不同抽象层次的需求之间的联系:

4.区分需求、问题、规格说明

需求:是一种期望,源于现实但又高于现实
问题域:对现实世界运行规律的一种反映,是需求的产生地,也是需求的解决地
规格说明:软件产品的方案描述,以软件产品的运行机制为主要内容(不是需求但实现需求,不是问题域但需要与问题域互动)
四.需求分类
1.需求谱系

2.软件需求的分类
- 功能需求:不考虑物理约束的情况下,用户希望系统能够执行的活动,这些活动可以帮助用户完成任务(最重要的需求)
- 性能需求:定义了系统必须多好和多快地完成专门的功能(速度、容量)
- 质量属性:用户的期望(通常情况下是隐式的)(安全性、可移植性)
- 对外接口:系统和软件中其他系统之间需要建立的接口(输入、输出)
- 约束:系统构造时需要遵守的规定(运行环境、商业规则)
- 数据需求:功能需求的补充(各个功能实用的数据信息、实用频率)
相关文章:
软件工程与计算总结(五)软件需求基础
本帖介绍软件需求涉及的诸多基本概念,通过对这些概念的阐述,剖析软件需求的来源、层次、类别、作用等重要知识~ 目录 编辑 一.引言 二.需求工程基础 1.简介 2.活动 3.需求获取 4.需求分析 5.需求规格说明 6.需求验证 7.需求管理 三.需求基…...
数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)
已知2010-2020数据,预测2021-2060数据 一、Logistic预测人口 %%logistic预测2021-2060年结果 clear;clc; X[7869.34, 8022.99, 8119.81, 8192.44, 8281.09, 8315.11, 8381.47, 8423.50, 8446.19, 8469.09, 8477.26]; nlength(X)-1; for t1:nZ(t)(X(t1)-X(t))/X(t1…...
泛型擦除是什么?
泛型擦除的主要特点包括: 编译时类型检查:在编写泛型代码时,编译器会对泛型类型参数进行类型检查,以确保类型安全。这意味着在编译时会捕获许多类型错误,避免了运行时类型错误。因为泛型其实只是在编译器中实现的而虚拟…...
阿里云轻量应用服务器有月流量限制吗?
阿里云轻量应用服务器限制流量吗?部分限制,2核2G3M和2核4G4M这两款轻量应用服务器不限制月流量,其他的轻量服务器套餐有月流量限制。 腾讯云轻量应用服务器价格便宜,活动页面:aliyunbaike.com/go/tencent 细心的同学看…...
mysql面试题25:数据库自增主键可能会遇到什么问题?应该怎么解决呢?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库自增主键可能会遇到什么问题? 数据库自增主键可能遇到的问题: 冲突问题:自增主键是通过自动递增生成的唯一标识符,但在某些情况下可能会…...
学习css 伪类:has
学习抖音: 渡一前端提薪课 首先我们看下:has(selector)是什么 匹配包含(相对于 selector 的 :scope)指定选择器的元素。可以认为 selector 的前面有一个看不见的 :scope 伪类。它的强大之处是,可以实现父选择器和前面兄弟选择器…...
矩阵的相似性度量的常用方法
矩阵的相似性度量的常用方法 1,欧氏距离 欧式距离是最易于理解的一种距离计算方法,源自欧式空间中两点间的距离公式。 (1)二维平面上的点 a ( x 1 , y 1 ) a(x_1,y_1) a(x1,y1)和点 b ( x 2 , y 2 ) b(x_2,y_2) b(x2,y2)的欧式距离为 d ( x …...
Java之TCP,UDP综合小练习一
4. 综合练习 练习一:多发多收 需求: 客户端:多次发送数据 服务器:接收多次接收数据,并打印 代码示例: public class Client {public static void main(String[] args) throws IOException {//客户端&…...
Docker 日志管理 - ELK
Author:rab 目录 前言一、Docker 日志驱动二、ELK 套件部署三、Docker 容器日志采集3.1 部署 Filebeat3.2 配置 Filebeat3.3 验证采集数据3.4 Kibana 数据展示3.4.1 创建索引模式3.4.2 Kibana 查看日志 总结 前言 如何查看/管理 Docker 运行容器的日志?…...
windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改
windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改 不知道其他的朋友们有没有这个需求哈,反正咱家是有这个需求 需求1、当前有大量的文件需要更改文件生成的时间,因为不可告知的原因,当前的文件创建时间是不能满足使用的…...
线性表的链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除;
#include <iostream> #include <algorithm>//fill() #define InitSize 5using namespace std;/*线性表:链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除*/ typedef st…...
【Spring Cloud系统】- Zookeer特性与使用场景
【Spring Cloud系统】- Zookeer特性与使用场景 一、概述 Zookeeper是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。如:统一命名服务、状态同步服务、集群管理、分布式应用配置…...
最新AI智能创作系统源码SparkAi系统V2.6.3/AI绘画系统/支持GPT联网提问/支持Prompt应用/支持国内AI模型
一、智能AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统,已支持OpenAIGPT全模型国内AI全模型,已支持国内AI模型 百度文心一言、微软Azure、阿里云通义千问模型、清华智谱AIChatGLM、科大讯飞星火大模型等。本期针对源码…...
R | R包默认安装路径的查看及修改
R | R包默认安装路径的查看及修改 一、R包安装位置查看二、已安装R包查询三、R包安装位置修改四、R包安装位置永久修改 在【R: R package安装的几种方式】【R: R版本更新及R包迁移(详细步骤)】两篇文章中介绍过R包的常见安装方式,以及在不同R…...
将conda虚拟环境打包并集成到singularity镜像中
1. 使用yml文件打包 conda activate your_env conda env export > environment.yml编写cond.def文件 Bootstrap: dockerFrom: continuumio/miniconda3%filesenvironment.yml%post/opt/conda/bin/conda env create -f environment.yml%runscriptexec /opt/conda/envs/$(hea…...
Android Studio 是如何和我们的手机共享剪贴板的
背景 近期完成了target33的项目适配升级,随着AGP和gradle的版本升级,万年老版本Android Studio(后文简称AS)也顺便升级到了最新版Android Studio Giraffe | 2022.3.1,除了新UI外,最让我好奇的是这次的Running Devices功能(官方也称为Device mirroring)可以控制真机了. 按照操…...
大数据面试题:Spark和MapReduce之间的区别?各自优缺点?
面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答: 1)spark和maprecude的对比;2)mapreduce与spark优劣好处 问过的一些公司:阿里云…...
【开发篇】十八、SpringBoot整合ActiveMQ
文章目录 1、安装ActiveMQ2、整合3、发送消息到队列4、使用消息监听器对消息队列监听5、流程性业务消息消费完转入下一个消息队列6、发布订阅模型 1、安装ActiveMQ docker安装 docker pull webcenter/activemqdocker run -d --name activemq -p 61616:61616 -p 8161:8161 webce…...
QTcpSocket 接收数据实时性问题
一、开发背景 使用 Qt 的 QTcpSocket 接收数据的时候发现数据接收出现粘包的现象,并且实时性很差,通过日志的时间戳发现数据接收的误差在 100ms 以内。 二、开发环境 Qt5.12.2 QtCreator4.8.2 三、实现步骤 在 socket 连接的槽函数设置接收延时时间&…...
前端el-select 单选和多选
el-select单选 <el-form-item label"部门名称" prop"departId"><el-select v-model"dataForm.departId" placeholder"请选择" clearable:style{ "width": "100%" } :multiple"false" filtera…...
STM32F103引脚功能全解析:从供电到通信接口的实战配置指南
STM32F103引脚功能全解析:从供电到通信接口的实战配置指南 在嵌入式系统开发中,STM32F103系列微控制器因其出色的性能和丰富的外设资源,成为众多开发者的首选。这款基于ARM Cortex-M3内核的MCU,不仅具备72MHz的主频,还…...
【SpringBoot 】dynamic 动态数据源配置连接池(转)
前言 在复杂的业务场景中,我们经常需要使用多数据源来满足不同的数据访问需求。Dynamic Datasource 为我们提供了一种灵活切换不同数据源的解决方案。但是多数据源配置连接池 以及说明文档都是收费的。 本篇博文将详细介绍如何配置和优化 Dynamic Datasource 的连接…...
Crawl4AI浏览器配置文件创建与键盘交互处理终极指南:打造个性化爬虫身份
Crawl4AI浏览器配置文件创建与键盘交互处理终极指南:打造个性化爬虫身份 【免费下载链接】crawl4ai 🔥🕷️ Crawl4AI: Open-source LLM Friendly Web Crawler & Scrapper 项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai…...
微信JS-SDK分享失败?深度解析“offline verifying”权限验证错误与高效排查指南
还在为微信网页自定义分享功能频繁遭遇“updateAppMessageShareData:fail, the permission value is offline verifying”而头疼?本文将从公众号认证、JS-SDK权限、域名绑定、网络、缓存及API版本六大维度,为您深度剖析此错误成因,并提供一套…...
B端拓客号码核验:困局审视、技术革新与行业前行,氪迹科技法人股东号码核验系统,阶梯式价格
在B端拓客的全流程中,有效触达企业核心决策层是实现合作转化的关键,而法人、股东、董监高等群体的联系方式,則是搭建这一沟通链路的核心基础。号码核验作为拓客工作的前置核心环节,其筛选质量与效率,直接决定着拓客投入…...
Windows系统下Tesseract-OCR最全配置指南:从环境变量设置到多语言识别
Windows系统下Tesseract-OCR深度配置与实战指南 1. 环境准备与核心组件安装 在Windows平台上部署Tesseract-OCR需要特别注意64位系统的兼容性问题。首先需要从官方推荐的镜像站点下载最新稳定版本(目前推荐5.3.0以上版本),安装时务必勾选Addi…...
工业自动化实战:三大品牌伺服驱动器IO与串口引脚接线全解析
1. 伺服驱动器接线基础:为什么IO与串口引脚如此重要 第一次接触伺服驱动器时,我被密密麻麻的接线端子吓到了。后来才发现,只要理解几个核心引脚的功能,剩下的都是举一反三。伺服驱动器的IO和串口引脚就像机器的"神经系统&quo…...
程序员转行学习 AI 大模型: 提示词工程 | 附精选学习资料
本文是程序员转行学习AI大模型的第12个核心知识点笔记,笔记后附精选的提示词工程学习资料。 当前阶段:还在学习知识点,由点及面,从 0 到 1 搭建 AI 大模型知识体系中。 系列更新,关注我,后续会持续记录分享…...
【Python时序预测实战】基于贝叶斯优化的Transformer单变量时序预测模型构建与调优
1. 为什么选择Transformer做时序预测? 我第一次用Transformer做销量预测时,心里其实挺没底的。毕竟这玩意儿原本是搞自然语言处理的,就像拿菜刀削苹果——工具不太对口。但当我看到预测结果比传统LSTM提升了23%的准确率时,立刻真香…...
海外项目实战:用uniapp+Google OAuth 2.0搞定H5/App的免后端登录(附完整源码)
海外项目实战:Uniapp与Google OAuth 2.0的无后端登录方案 在面向海外市场的移动应用开发中,用户登录体验直接影响产品的转化率和留存率。Google账号作为欧美地区最普及的数字身份凭证,其登录集成已成为出海应用的标配功能。本文将深入探讨如何…...

