软件需求工程概述

文章目录

  • 软件需求工程概述
    • 什么是需求工程
    • 什么是软件需求
    • 软件需求的分类
    • 需求规格说明
    • 需求工程的定义
    • 其他一些概念

软件需求工程概述

什么是需求工程

    需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。

    项目失败的因素中,与需求相关的有:需求不完整、缺乏用户参与度、客户预期不实际、需求和需求规格的变更、提供许多不必要的功能。
    这些失败的原因无外乎在于“缺乏健壮的需求规格说明,导致无法继续进行系统实践"。

什么是软件需求

    需求通常是人对于客观事物需要的表现。体现为愿望、意向和兴趣。对于软件开发来说,软件需求就是软件用户认为器所使用的软件应该具备的功能和性能。

    A. Davis认为,软件需求是从 软件外部可见的、软件所具有的、满足于用户的特点、功能及属性等的集合。
    I. Som- merville认为,需求是问题信息和系统行为、特性、设计和实现约束的描述的集。
    M. Jackson等人则认为,需求是客户希望在问题域内产生的效果。
    在比较正式的文档 中,IEEE软件工程标准词汇表将需求定义为①用户解决问题或达到目标所需的条件 或能力;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件 或能力。其中①是从用户的角度定义的,②是从软件系统的角度定义的。

软件需求的分类

  • 目标需求
  • 业务需求
  • 功能需求
  • 性能需求
  • 约束与限制
    他们之间的关系应该如下:
                目标需求
                业务需求
       功能需求 性能需求 约束与限制

需求规格说明

    软件需求规格说明称软件需求规约功能规格说明,可以说是需求工程最终产生的结果。所谓需求规格说明是软件所应满足的全部需求,并可用文档的方式完整和精确地陈述这些需求。
    需求规格说明是项目相关人员对将要开发的软件系统所达成的共识,是进行系统设计、实现、测试和验收的基本依据,也是整个软件开发过程中最重要的文档。需求规格说明同时代表了权限的移交点:客户对需求规格说明的说明内容拥有最终发言 权,而开发人员则需根据软件需求规格说明实施软件系统的开发。因此,最终开发出的软 件系统是否能真实、全面地满足客户的要求,取决于需求规格说明是否真实、完整和一致 地反映客户的真正意图。

    需求规格说明应精确地描述一个软件系统必须提供的功能和性能,以及所要考虑的约 束条件与限制。

    作为一个质量较高的需求规格说明,通常应该满足下面特性

  • 完整性
  • 正确性
  • 可行性
  • 必要性
  • 划分优先级
  • 无二义性
  • 可验证性

需求工程的定义

    需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。需求工程的目标 就是要获取高质量的软件需求。与软件工程中传统的需求分析概念相比,需求工程突出了工程 化的原则,强调以系统化、条理化、可重复化的方法和技术进行与软件需求相关的活动,从而 有利于提高所有与软件需求相关的活动及其过程的可管理性,降低需求开发和管理的难度和 成本。

    Davis A. M. 把需求工程定义为,,直到(但不包括)把软件分解为实际架构组建之前的所有活 动”,

    Bray.I.K.则认为,需求工程是指:对问题域及需求做调查研 究和描述,设计满足那些需求的解系统的特性,并用文档给予说明。

    因此需求工程的任务可以概括如下:

  • 确定待开发的软件系统的用户类,并获取他们的需求信息。
  • 分析用户的需求信息,并按软件需求的类型对这些需求信息进行分类,同时,过 滤掉不是需求的信息。
  • 根据软件需求信息建立软件系统的逻辑模型或需求模型,并确定非功能需求和约 束条件及限制。
  • 根据收集的需求信息和逻辑模型编写需求规格说明及其文档。
  • 评审需求规格说明。
  • 当需求发生变更时,对需求规格说明及需求变更实施进行管理。

其他一些概念

  • 用户(user):
        利用计算机系统所提供的服务的人。
        直接操作计算机系统的人,简单地说,就是直接使用软件系统的人。
  • 客户(customer):
        掌握经费的人,通常有权决定软件需求。客户可以是用户,也可以不是用户。
        正式接收新开发或修改后的硬件和软件系统的某个人或组织。
        简单地说,客户就是为开发软件而提供经费的人。当客户和用户由不同的人组成时, 由于身份不同,对软件系统的看法和要求也会不同。例如,用户希望软件系统易于使用, 而客户往往希望软件的开发成本较小,并可获得较高的利润。显然这会导致用户和客户对 软件产生不同的需求。
  • 软件开发人员(supplier):
        为客户开发软件系统的人。当软件系统是由客户委托开发时,客户与软件开发人员属 于不同的组织。如果是组织内自行开发软件系统,客户与软件开发人员应属同一组织。
  • 项目相关人员(stakeholder):
        与提出和定义软件需求相关的人,包括所有的用户、客户和软件开发人员。这些人都 是软件需求的来源,只是他们站在不同的立场看待将要开发的软件系统。
        为便于说明,本节以后在不特殊指明的情况下,将把用户和客户统称为用户,意指直 接或间接从软件系统获得利益的个人或组织。软件开发人员在需求工程中则主要是指系统 分析人员。

你可能感兴趣的:(《软件需求工程》学习笔记,软件工程,需求工程,软件需求,程序人生,需求设计)