本书是有关软件需求的经典教材,本书全面而深入地讲述了软件开发中一个至关重要的问题——软件需求问题。软件开发人员及用户往往容易忽略沟通的重要性,导致软件开发出来后,不能很好地满足用户的需要。返工不仅在技术上给开发人员带来巨大的麻烦,并且会造成人力、物力和资源的浪费,还使软件性能深受影响,所以在开发早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩大及需求变更来达到按计划完成预定目标,是当前软件业急需解决的问题,也是本书讨论的主要内容。
本书对第1版的内容进行了扩展,不仅对原有的知识点进行了补充,还引入了一些新知识,以求与时代发展同步。
本书可以作为计算机专业及软件工程专业学生的教材使用,也非常适合作为项目经理、软件开发人员的指导性参考书。
第1部分
什么是软件需求7
为什么要实现软件需求?
哪些人应参与软件需求
第1章软件需求基石出知识
1.1软件需求的定义
1.1.1对需求的不同解释
1.1.2需求的层次
1.1.3不属于需求的内容
1.2需求的开发与管理
1.2.1需求开发
1.2.2需求管理
1.3所有项目都有需求
1.4优秀的团队遇到糟糕的需求
1.4.1用户参与不足
1.4.2用户需求扩展
1.4.3有岐义的需求
1.4.4镀金问题
1.4.5过于抽象的需求
1.4.6忽略了某类用户
1.4.7不准确的计划
1.5优质需求过程的好处
1.6优秀需求的特点
1.6.1需求陈述的特点
1.6.2需求规格说明的特点
第2章客户眼中的需求
2.1客户
2.2客户与开发人员的合作伙伴
关系
2.2.1软件客户的权利
法案
2.2.2软件客户的义务法案
2.3关于“签字”
第3章需求工程的推荐方法
3.1知识技能
3.2需求获取
3.3需求分析
3.4规格说明
3.5需求验证
3.6需求管理
3.7项目管理
3.8开始新实践
3.9需求开发过程
第4章需求分析员
4.1需求分析员的职责
4.1.1需求分析员的工作
4.1.2需求分析员必备的技能
4.1.3需求分析员必备的知识
4.2如何培养需求分析员
4.2.1从用户转为分析员
4.2.2从开发人员转为分析员
4.2.3主题专家
4.3营造合作的氛围
第II部分
软件需求开发
第5章确定产品前景与项目范围
5.1通过业务需求定义前景
5.1.1相互矛盾的业务需求
5.1.2业务需求与用例
5.2前景与范围文档
5.3关联图
5.4保持范围的适度
第6章获取客户的需求
6.1需求的来源
6.2用户类
6.3寻找用户代表
6.4用户代言人
6.4.1外部的用户代言人
6.4.2对用户代言人的要求
6.4.3设置多位用户代言人
6.4.4如何让人接受用户
代言人的概念
6.4.5用户代言人应避免
的陷阱
6.5谁来做出决策
第7章聆听客户的需求
7.1需求获取
7.2需求获取讨论会
7.3将客户的意见归类
7.4需求获取中的注意事项
7.5寻找遗漏的需求
7.6如何判断需求获取是否已完成
第8章理解用户需求
8.1用例法
8.1.1用例与使用场景
8.1.2确定用例
8.1.3编写用例
8.1.4用例与功能性需求
8.1.5用例的好处
8.1.6使用用例时应避免的问题
8.2事件一响应表
第9章遵守规则
9.1业务的规则
9.1.1事实
9.1.2约束
9.1.3动作触发规则
9.1.4推论
9.1.5计算
9.2在文档中记录业务规则
9.3业务规则和需求
第10章编写需求文档
10.1软件需求规格说明
10.1.1需求的标识
10.1.2处理不完整性
10.1.3用户界面和软件
需求规格说明
10.2软件需求规格说明模板
10.3编写需求文档的原则
10.4改进前后的需求示例
10.5数据字典
第11章一图胜千言
11.1需求建模
11.2从客户需求到分析模型
11.3数据流图
11.4实体一关系图
11.5状态转换图
11.6对话图
11.7类图
11.8判定表和判定树
11.9最后的提醒
第12章软件质量属性
12.1质量属性
12.2定义质量属性
12.2.1对用户重要的属性
12.2.2对开发人员重要的属性
12.3性能需求
12.4用Planguage定义非功能性需求
12.5属性的折中方案
12.6实现非功能性需求
第13章通过制作原型减少
项目风险
13.1什么是原型和为什么要
建立原型
13.2水平原型
13.3垂直原型
13.4废弃型原型
13.5演化型原型
13.6书面原型和电子原型
13.7原型评估
13.8创建原型所带来的风险
13.9原型法成功的因素
第14章设定需求优先级
14.1为什么要设定需求优先级
14.2优先级规则.
14.3优先级的等级
14.4根据价值、成本和风险来设定优先级
第15章需求确认
15.1需求评审
15.1.1审查过程
15.1.2需求评审面临的困难
15.2测试需求
15.3制定验收标准
第16章需求开发面临的特殊难题
16.1维护项目的需求
16.1.1开始捕获信息
16.1.2亲身实践一下新的需求技术.
16.1.3遵循跟踪链
16.2软件包解决方案的需求
16.2.1开发用例
16.2.2考虑业务规则
16.2.3定义质量需求
16.3外包项目的需求
16.4突发型项目的需求
16.4.1非正式用户需求规格说明
16.4.2现场客户
16.4.3尽早地而且要经常地设定优先级
16.4.4简单的变更管理
第17章超越需求开发
17.1从需求到项目规划
17.1.1需求和预估
17.1.2需求和进度安排
17.2从需求到设计和编码
17.3从需求到测试
17.4从需求到成功
第111部分软件需求管理
第18章需求管理的原则和实践
18.1需求基线
18.2需求管理过程
18.3需求版本控制
18.4需求属性
18.5跟踪需求状态
18.6评估需求管理的工作量
第19章变更管理
19.1管理范围蔓延
19.2变更控制过程
19.2.1变更控制策略
19.2.2变更控制过程描述
19.3变更控制委员会
19.3.1CCB的组成
19.3.2CCB规章
19.4变更控制工具
19.5测量变更活动
19.6变更需要付出代价:影响分析
19.6.1影响分析的过程
19.6.2影响分析报告模板
第20章需求链中的联系链
20.1需求跟踪
20.2需求跟踪动机
20.3需求跟踪矩阵
20.4需求跟踪工具
20.5需求跟踪过程
20.6需求跟踪可行吗?必要吗?
第21章需求管理工具.
21.1使用需求管理工具的益处
21;2需求管理工具的功能
21.3实现需求管理自动化
21.3.1选择适当的工具
21.3.2改变文化
21.3.3使需求管理工具服务于自己
第1V部分
实现需求工程
第22章改进需求过程
22.1需求与其他项目过程的联系
22.2需求和各涉众组
22.3软件过程改进的基本原则
22.4过程改进周期
22.4.1评估当前采用的方法
22.4.2规划改进活动
22.4.3建立、实验并实现新过程
22.4.4评估结果
22.5需求工程过程资产
22.5.1需求开发过程资产
22.5.2需求管理过程资产
22.6需求过程改进路线图
第23章软件需求与风险管理
23.1软件风险管理基本原理
23.1.1风险管理的要素
23.1.2编写项目风险文档
23.1.3制定风险管理计划
23.2与需求相关的风险
23.2.1需求获取
23.2.2需求分析
23.2.3编写需求规格说明
23.2.4需求确认
23.2.5需求管理
23.3风险管理是我们的好帮手
附录A当前需求实践的自我评估
附录B需求和过程改进模型
B.1软件能力成熟度模型
B.2CMMI-SE/SW
B.2.1需求管理过程域
B.2.2需求开发过程域
附录C需求错误诊断指南
C.1根本原因分析
C.2需求问题的常见现象
C.3实现解决方案常常会遇到的障碍
附录D需求文档范例
D.1前景和范围文档
D.1.1业务需求
D.1.2解决方案的前景
D.1.3范围和局限性
D.1.4业务—亡下文
D.2用例
D.3软件需求规格说明
D.3.1介绍
D.3.2总体描述
D.3.3系统特性
D.3.4外部接口需求
D.3.5其他非功能性需求
D.3.6附录A数据字典和
数据模型
D.3.7附录B分析模型
D.4业务规则
术语表
结语
随着计算机软件项目的规模越来越大,竞争日趋激烈,软件开发组织越来越认识到软件质量的重要性,在这种情况下软件工程·的理念已渐渐深入人心,人们已经从中受益。
软件需求作为软件工程的一个阶段,在软件项目开发中起着至关重要的作用。软件项目要取得成功,最重要的莫过于了解所要开发的软件需要解决哪些问题,这就是软件需求所要解决的问题,因此,软件需求为软件项目的成功奠定了基础。如果软件开发人员与客户不进行充分的交流与沟通,没有就产品的功能性需求和非功能性需求达成共识,就匆匆忙忙开始着手编写代码,其后果可想而知,很可能不能满足用户的需要,从而不得不对项目进行返工,这就造成了人力和物力的巨大浪费。如果我们在软件项目开发之前,充分地完成软件需求的相关活动,就可以避免这种情况的发生。
本书是一本非常实用的需求工程参考书,书中按照需求工程的各个阶段,即需求获取阶段、需求分析阶段、编写需求规格说明阶段、需求确认阶段和需求管理阶段组织起来,并提供了许多有效技术,这些技术为用户、开发人员和管理层之间进行交流提供了方便。本书作者卡尔·E·威格(KarlE.Wiegers)是需求工程领域的权威人士,他曾担任过软件开发人员、软件经理以及软件过程和质量改进负责人,在长期的工作中积累了丰富的经验。本书第1版曾荣获“软件开发”效率大奖,目前已成为参与软件开发过程的所有人员必不可少的参考书。本书第2版对第1版中所提出的最佳实践进行了许多扩充,这一版不仅在每一章中都列举了大量的实例并提供了新的案例,而且,作者还根据自己的亲身经历,为完成不同的任务提供了颇具特色的检查列表、范例文档和模板。另外,作者还从自己丰富的职业生涯中精选出了一些趣闻轶事,增加了技术书籍的趣味性。相信阅读本书之后,读者对于需求工程一定会有一个全面而透彻的理解。
参加本书翻译工作的人员还有苏正泉、米强、张颖、夏红、谷昀、江峰、徐利生、李宏为、赵琪、姬凌岩。
由于时间仓促以及水平有限,错误之处在所难免,敬请读者批评指正。