软件工程与计算总结(五)软件需求基础

本帖介绍软件需求涉及的诸多基本概念,通过对这些概念的阐述,剖析软件需求的来源、层次、类别、作用等重要知识~

目录

​编辑

一.引言

二.需求工程基础

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.软件需求的分类

  • 功能需求:不考虑物理约束的情况下,用户希望系统能够执行的活动,这些活动可以帮助用户完成任务(最重要的需求
  • 性能需求:定义了系统必须多好和多快地完成专门的功能(速度、容量)
  • 质量属性:用户的期望(通常情况下是隐式的)(安全性、可移植性)
  • 对外接口:系统和软件中其他系统之间需要建立的接口(输入、输出)
  • 约束:系统构造时需要遵守的规定(运行环境、商业规则)
  • 数据需求:功能需求的补充(各个功能实用的数据信息、实用频率)
相关推荐
数据爬坡ing3 小时前
小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
大数据·笔记·考研·数据分析
Theodore_10224 小时前
4 软件工程——总体设计
java·开发语言·数据库·算法·java-ee·软件工程·设计
Theodore_10224 小时前
1 软件工程——概述
java·开发语言·算法·设计模式·java-ee·软件工程·个人开发
Protinx9 小时前
2009年408真题解析-数据结构篇(未完)
数据结构·经验分享·考研·408·计算机考研
shinelord明11 小时前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
A懿轩A14 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
A懿轩A1 天前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
伯牙碎琴1 天前
智能体实战(需求分析助手)二、需求分析助手第一版实现(支持需求提取、整理、痛点分析、需求分类、优先级分析、需求文档生成等功能)
ai·大模型·agent·需求分析·智能体
Byron Loong1 天前
Python+OpenCV系列:【打卡系统-需求分析】需求大剖析,考勤革命开启!
python·opencv·需求分析
人才程序员2 天前
QML z轴(z-order)前后层级
c语言·前端·c++·qt·软件工程·用户界面·界面