zoukankan      html  css  js  c++  java
  • 《软件需求十步走》读书笔记02

      在学了大概一个月的《软件需求》的课程后,我理解的软件需求就是从用户了解到的想要软件有什么功能,通过需求分析人员分析整理出来用户的哪些需求可以实现,哪些是无法实现的。最近通过读《软件需求十步走》这本书,书中给出来软件需求的定义,IEEE软件标准词汇表(1997)中把传统软件需求定义为:(1)用户解决问题或达到目标所需的条件或权能;(2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能;(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。此外书中还给出来另外几位资深工作者给出的关于软件需求的定义,在此就不一一列举。但是,虽然他们的表述方式并不相同,但是都指出了软件需求中应包括对用户需要的描述、系统功能、性能、约束的描述内容。

      在一个系统或软件的开发中,以前我认为是功能的实现占大部分,技术人员应该是一个团队中比较重要的角色,所以在以前的学习中,比较看重自己的编码能力,但是,通过学习《软件需求》以及阅读相关书籍后,才明白,软件需求才是重要的那一部分,一个系统或软件能不能成功取决与需求的精准与否。而且需要分辨的是,软件工程和需求工程是既相对独立又相互关联的两个工程,软件工程是以需求工程为核心,需求工程的产物是软件需求,软件需求是需求工程和软件工程的纽带。分清软件工程和需求工程以及明白它们之间的联系也是非常重要的。

      书中给出了新一代的软件需求的定义为:(1)站在顶层和全局的角度从问题和目标开始全面细致地对业务进行分析和描述;(2)在业务分析的基础上将信息系统的宏观设计也纳入到分析中并描述出业务与信息系统的关系;(3)用户解决问题或达到目标所需的条件或权能;(4)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能;(5)一种反映上面4部分所描述的条件或权能的文档说明。新一代的软件需求比起以前的更能全面照顾到软件开发过程中所有的风险承担者。

      我认为,一个成功的项目很大程度上取决于一个优秀的软件需求团队,一名优秀的需求分析人员则最基本需要保证软件需求可以满足以下特性:

      (1)完整性:每一个软件需求都必须将所需要实现的功能描述清楚,因为即使99.9%的需求都正确,只有0.1%的错误都可能引起重大的失误导致项目的失败。

      (2)正确性:每一个软件需求都必须准确的描述其开发功能。

      (3)第一性:业务分析的工作是软件需求的第一重要工作。

      (4)前置性:软件需求中将信息系统的体系架构设计、数据库设计、安全设计等设计工作中前移到软件需求中。

      (5)可行性:软件需求中的每一项需求都是要在已知系统和环境的权能和限制范围内可以实施的。

      (6)必要性:软件需求中的每一项需求都应把客户真正所需要的和系统所需遵从的标准记录下来。

      (7)等级性:软件需求中的每一项需求都应给出实施的权重以指明他在软件产品中的分量。

      (8)无二义性:对需求说明中重复出现的名称上相同的词汇只能有一个明确统一的解释。

      (9)可验证性:检查每项需求是否能通过设计测试用例或其他验证方法。

  • 相关阅读:
    CSP 训练赛0925
    赛道修建 NOIP 2018
    C
    B
    游戏得分 建立反图SPFA / bellman
    肥宅快乐树 换根+树形DP/dfs
    组合数例题
    龙珠雷达 双指针+DP
    面试-restful规范
    django-中间件
  • 原文地址:https://www.cnblogs.com/qilin20/p/8933550.html
Copyright © 2011-2022 走看看