第一章 软件需求基础知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/first52hz/article/details/82773460

目录

需求工程

这是一门怎样的课程?

需求工程的由来

注意点

需求工程概述

什么是需求,工程?

需求工程的内容与过程

软件产品需要工程化方法吗?

软件开发的不变定律

软件开发的本质困难

注意点

需求基础

需求的定义:IEEE从用户角度和开发者角度给出了两种定义

需求的内涵

需求的分类

需求工程过程

需求工程过程的活动

需求开发过程的迭代性


需求工程

这是一门怎样的课程?

  • 研究如何有效地获得需求(需求开发)并对需求进行管理(需求管理)

需求工程的由来

  • 软件需求作为软件生命周期的第一个阶段,在二十世纪八十年代中期逐渐形成了软件工程的子领域----需求工程

注意点

  • 软件的模拟特性
  • 需求分析与需求工程的关系

需求工程概述

什么是需求,工程?

  • 需求:构造任何人工制品之前,其意图(为什么需要它?它将用于何处?期望是什么?)
  • 工程:工程化的方法,有效的技术,规范化的过程,产品等

需求工程的内容与过程

  • 内容:需求开发和需求管理
  • 需求开发过程:需求获取,需求分析,需求描述,需求验证
  • 需求管理过程:管理

软件产品需要工程化方法吗?

  • 大部分工业产品都不需要需求工程:因为工业产品是有形的,好度量的,目的和产品形态直接对应
  • 为什么软件产品需要需求工程:因为软件产品是无形的,不好度量的,目的和产品形态没有直接对应

软件开发的不变定律

  • 1.需求一直在变
  • 2.开发过程充满了各种不确定性
  • 3.软件维护永远不会终止

软件开发的本质困难

  • 1.复杂性
  • 2.可变性
  • 3.不可预见性

注意点

  • 软件:是由工匠(而不是艺术家)创造出来的工艺品

需求基础

需求的定义:IEEE从用户角度和开发者角度给出了两种定义

  • 用户角度:解决问题或达到目标所需要的条件和能力
  • 开发者角度:满足合同,文档所需要的条件和能力

需求的内涵

  • 通过软件系统与周围环境的交互解决人们在现实世界中遇到的问题(软件具有模拟性)
  • 问题域:现实世界的问题
  • 解系统:通过软件系统模拟解决
  • 共享现象:问题域和解系统之间实现交互和互相影响的接口
  • 需求:用户对问题域中实体状态或事件的期望描述
  • 直接需求:共享现象内,对共享现象中实体状态或事件的期望(解系统能够直接满足)
  • 间接需求:问题域中,共享现象外,对问题域中实体状态或事件的期望
  • 规格说明:解系统为满足用户需求而提供的解决方案,规定了解系统的行为特征(通过改变共享现象影响问题域的运行,进而满足用户需求)

需求的分类

  • 功能需求:具有层次性,从上至下依次为目标(业务需求),任务(用户需求),系统行为(系统需求)
  • 业务需求:抽象层次最高的需求,描述了组织为什么要开发系统
  • 用户需求:用户对系统所能完成具体任务的期望
  • 系统需求:用户对系统行为的期望
  • 性能需求,质量属性,对外接口,约束
  • ISO9126 软件质量模型是评价软件质量的国际标准,由6个特性和27个子特性组成

需求工程过程

需求工程过程的活动

  • 需求获取:发现用户的问题,并转换为业务需求和用户需求
  • 需求分析:通过建模来整合信息
  • 需求描述(需求规格说明):将三种需求(需求分析中建立的系统需求)记录并文档化
  • 需求验证:确保文档能正确反映用户意图和文档的高质量
  • 需求管理:维护

需求开发过程的迭代性

  • 整个需求开发过程中阶段性的发生重构过程
  • 阶段性的重构过程证明需求开发是非线性的,更适合采用迭代过程

猜你喜欢

转载自blog.csdn.net/first52hz/article/details/82773460