版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/first52hz/article/details/82773460
目录
需求工程
这是一门怎样的课程?
- 研究如何有效地获得需求(需求开发)并对需求进行管理(需求管理)
需求工程的由来
- 软件需求作为软件生命周期的第一个阶段,在二十世纪八十年代中期逐渐形成了软件工程的子领域----需求工程
注意点
- 软件的模拟特性
- 需求分析与需求工程的关系
需求工程概述
什么是需求,工程?
- 需求:构造任何人工制品之前,其意图(为什么需要它?它将用于何处?期望是什么?)
- 工程:工程化的方法,有效的技术,规范化的过程,产品等
需求工程的内容与过程
- 内容:需求开发和需求管理
- 需求开发过程:需求获取,需求分析,需求描述,需求验证
- 需求管理过程:管理
软件产品需要工程化方法吗?
- 大部分工业产品都不需要需求工程:因为工业产品是有形的,好度量的,目的和产品形态直接对应
- 为什么软件产品需要需求工程:因为软件产品是无形的,不好度量的,目的和产品形态没有直接对应
软件开发的不变定律
- 1.需求一直在变
- 2.开发过程充满了各种不确定性
- 3.软件维护永远不会终止
软件开发的本质困难
- 1.复杂性
- 2.可变性
- 3.不可预见性
注意点
- 软件:是由工匠(而不是艺术家)创造出来的工艺品
需求基础
需求的定义:IEEE从用户角度和开发者角度给出了两种定义
- 用户角度:解决问题或达到目标所需要的条件和能力
- 开发者角度:满足合同,文档所需要的条件和能力
需求的内涵
- 通过软件系统与周围环境的交互解决人们在现实世界中遇到的问题(软件具有模拟性)
- 问题域:现实世界的问题
- 解系统:通过软件系统模拟解决
- 共享现象:问题域和解系统之间实现交互和互相影响的接口
- 需求:用户对问题域中实体状态或事件的期望描述
- 直接需求:共享现象内,对共享现象中实体状态或事件的期望(解系统能够直接满足)
- 间接需求:问题域中,共享现象外,对问题域中实体状态或事件的期望
- 规格说明:解系统为满足用户需求而提供的解决方案,规定了解系统的行为特征(通过改变共享现象影响问题域的运行,进而满足用户需求)
需求的分类
- 功能需求:具有层次性,从上至下依次为目标(业务需求),任务(用户需求),系统行为(系统需求)
- 业务需求:抽象层次最高的需求,描述了组织为什么要开发系统
- 用户需求:用户对系统所能完成具体任务的期望
- 系统需求:用户对系统行为的期望
- 性能需求,质量属性,对外接口,约束
- ISO9126 软件质量模型是评价软件质量的国际标准,由6个特性和27个子特性组成
需求工程过程
需求工程过程的活动
- 需求获取:发现用户的问题,并转换为业务需求和用户需求
- 需求分析:通过建模来整合信息
- 需求描述(需求规格说明):将三种需求(需求分析中建立的系统需求)记录并文档化
- 需求验证:确保文档能正确反映用户意图和文档的高质量
- 需求管理:维护
需求开发过程的迭代性
- 整个需求开发过程中阶段性的发生重构过程
- 阶段性的重构过程证明需求开发是非线性的,更适合采用迭代过程