软件需求管理-用例方法,读书摘要
软件需求管理,是软件设计的第一个环节,与软件的成与败休戚相关。很多软件都在需求未完全清楚前(或自以为清楚)开始,在修修补补中结束。因此需求管理是一个软件开发人员首先要掌握的技能。且,需求管理方面的知识,无实践不行,而有实践无理论也不行。因此,不同的人对此方面知识的需求不同。本人应该属于第二种类型。因此下文主要是我在看此书过程中的摘要。也许会有自己的思想,也许只有书中语句的copy。
前言部分
软件项目中的两个最基本问题:这个软件到底做什么;我们怎么才能知道软件完成了所要求的工作而不是其他工作。--往往看起来最简单的问题,恰恰是最难以回答的问题。
开放团队所需要的技能:分析问题;理解用户和涉众的要求;定义系统。--很多时候都会忽略“涉众”的要求。
我们必须学会在正确的时间,用正确的方式提出正确的问题。--能做到此点,是软件开发的万幸。
引言部分
第一章 需求问题
软件开发目标是在预算内按时开发出符合客户真正需要的高质量的软件。
解决任何问题的第一步都是理解问题的基本原因。
据统计软件项目失败的三大首要原因:缺乏用户的输入(13%);不完整的需求和规格说明(12%);不断变更的需求和规格说明(12%)。
软件成功的三个重要因素:用户介入(16%);行政管理支持(14%);需求陈述清晰(12%)。
一半以上被调查人认为两个最大问题是:需求规格说明;管理客户需求。相对而言,编码不是问题。
需求阶段发现并修复错误与维护阶段发现并修复错误所花费的成本为1:200。
设计阶段发生错误可能有两类:需求正确,设计错误;需求错误,设计时才发现。后一种危害更大。
小结:
本章数据表明两件事情:需求错误可能是最常见的错误;需求错误可能是修改花费最昂贵的错误。
从经济上讲,需求错误可能消耗整个项目预算的25%-40%
第二章 需求管理简介
需求定义了系统必须的能力,项目成功往往取决于它是否符合需求。
开发路线图-在规定时间和预算内开发符合客户真正需要的系统。需要-特性-软件需求
问题领域是真正用户和其他涉众的所在,要理解他们用他们的文化表达出的他们的问题,并转化为我们要解决的问题。
理解用户以及其他涉众的要求,也是我们的责任。
特性:系统提供的一项服务,用来满足一个或多个涉众的需要。
第三章 需求和软件生命周期
团队开发过程为4W:定义了谁(Who)正在做什么(What)、什么时候做(When)、怎么做(How)--工作流好像也有类似的表达
瀑布模型最重要问题之一:对系统还没有足够理解时,就开始了编码。--感觉是瀑布模型容易使需求僵化,研着错误的路线前进,到最后才发现问题。
螺旋模型:增量式开发。优点在于,可以即使得到反馈。
迭代方法,集合了两者优点。由四个过程组成:先启(inception)、精化(elaboration)、构建(construction)和产品化(transition)
先启:理解需求,问题分析;精化:细化需求,建立体系结构,开发原型系统;构建:编码实现;产品化:B测试
在软件开发的每个过程中,都需要采用迭代方法。
迭代优点:更好的需求适应性;更好的范围管理
第四章 软件团队
计算机程序设计是一种人类活动-GeraldWeinberg
软件开发已经变成了一种团队活动-Grady Booch
软件开发历史就是规模逐渐变大的历史
需求管理触及团队的每一个成员,尽管以不同的方式
高效的需求管理只有通过一支高效的团队才能实现
团队六大技能:分析问题;理解用户与涉众的需求;定义系统;管理范围;细化系统定义;构建正确的系统
缺乏用户介入、不完整的需求和规格说明、不断变化的需求和规格说明是所有未能完成目标的项目的普遍问题