基本信息
- 原书名:Software Requirements,Second Edition
- 原出版社: Microsoft Press
- 作者: (美)Karl E.Wiegers
- 译者: 刘伟琴 刘洪涛
- 出版社:清华大学出版社
- ISBN:7302098344
- 上架时间:2004-12-2
- 出版日期:2004 年11月
- 开本:185×260
- 页码:357
- 版次:2-1
- 所属分类:计算机 > 软件工程及软件方法学 > 软件需求
内容简介
计算机书籍
如果没有正式的可验证的软件需求及有效管理需求的系统,开发人员开发出来的程序通常会与客户需要的程序不一致。在本书中,Karl Wiegers对其获奖文章中的最佳实践进行了整理和扩充,这些实践是所有软件开发参与者的重要参考依据。
本书介绍了贯穿整个开发周期的管理需求工程的实用技术,包括多种可以促进用户、开发人员和管理层之间有效沟通的方法。这一版对第一版进行了扩充,提供了新的实例,及作者在实际工作中遇到的各种实际案例和解决方案。此外,还添加了新的章节、需求示例文档以及故障诊断指南等。
本书主要内容:
·设置可行的功能性和质量需求
·在应用程序开发中引入业务规则
·使用用例确定用户需求
·捕获变化的需求及管理需求变更的请求
·解决维护过程中及包解决方案中的需求问题
·培养高效的需求分析员
·如何大量减少返工工作并降低开发成本
·生成最优质的软件
本书是有关软件需求的经典教材,本书全面而深入地讲述了软件开发中一个至关重要的问题--软件需求问题。软件开发人员及用户往往容易忽略沟通的重要性,导致软件开发出来后,不能很好地满足用户的需要。返工不仅在技术上给开发人员带来巨大的麻烦,并且会造成人力、物力和资源的浪费,还使软件性能深受影响,所以在开发早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩大及需求变更来达到按计划完成预定目标,是当前软件业急需解决的问题,也是本书讨论的主要内容。
本书对第1版的内容进行了扩展,不仅对原有的知识点进行了补充,还引入了一些新知识,以求与时代发展同步。
本书可以作为计算机专业及软件工程专业学生的教材使用,也非常适合作为项目经理、软件开发人员的指导性参考书。
作译者
目录
为什么要实现软件需求?
哪些人应参与软件需求
第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 不准确的计划
译者序
软件需求作为软件工程的一个阶段,在软件项目开发中起着至关重要的作用。软件项目要取得成功,最重要的莫过于了解所要开发的软件需要解决哪些问题,这就是软件需求所要解决的问题,因此,软件需求为软件项目的成功奠定了基础。如果软件开发人员与客户不进行充分的交流与沟通,没有就产品的功能性需求和非功能性需求达成共识,就匆匆忙忙开始着手编写代码,其后果可想而知,很可能不能满足用户的需要,从而不得不对项目进行返工,这就造成了人力和物力的巨大浪费。如果我们在软件项目开发之前,充分地完成软件需求的相关活动,就可以避免这种情况的发生。
本书是一本非常实用的需求工程参考书,书中按照需求工程的各个阶段,即需求获取阶段、需求分析阶段、编写需求规格说明阶段、需求确认阶段和需求管理阶段组织起来,并提供了许多有效技术,这些技术为用户、开发人员和管理层之间进行交流提供了方便。本书作者卡尔·E·威格(KarlE.Wiegers)是需求工程领域的权威人士,他曾担任过软件开发人员、软件经理以及软件过程和质量改进负责人,在长期的工作中积累了丰富的经验。本书第1版曾荣获"软件开发"效率大奖,目前已成为参与软件开发过程的所有人员必不可少的参考书。本书第2版对第1版中所提出的最佳实践进行了许多扩充,这一版不仅在每一章中都列举了大量的实例并提供了新的案例,而且,作者还根据自己的亲身经历,为完成不同的任务提供了颇具特色的检查列表、范例文档和模板。另外,作者还从自己丰富的职业生涯中精选出了一些趣闻轶事,增加了技术书籍的趣味性。相信阅读本书之后,读者对于需求工程一定会有一个全面而透彻的理解。
参加本书翻译工作的人员还有苏正泉、米强、张颖、夏红、谷昀、江峰、徐利生、李宏为、赵琪、姬凌岩。
由于时间仓促以及水平有限,错误之处在所难免,敬请读者批评指正。
译 者
2004年4月
前言
软件开发所涉及的人员沟通至少与计算一样多,但是,我们却经常只强调计算而忽略了沟通。本书提供的许多工具为沟通提供了方便,并可以帮助软件从业人员、管理人员、市场人员和客户应用有效的需求工程方法。第2版新增加的章节内容包括需求分析员的角色、业务规则的重要性,以及将需求工程应用到维护性项目、软件包解决方案、外包项目和渐进式项目中所采用的方法。书中大量的特殊段落中所提供的材料都是真实的,旨在阐明与需求相关的典型经历,这些段落用图标 标示。
这里所介绍的这些技术是需求工程中主流的"良好实践",而不是陌生的新技术,也不是声称可以解决所有需求问题的详尽方法学。我于1999年编写了本书的第1版,此后在100多个研讨会中为各类公司和政府组织中的人员讲授过软件需求。我已经了解到这些做法实际应用于各种项目,包括那些后续追加服务的方法,无论是小型项目还是大规模的项目,开发新项目还是维护已有项目均可适用。另外,这些技术也并不局限于软件项目,它们也同样适用于硬件和系统工程。与任何一种其他的软件实践一样,我们需要根据常识和经验来搞清楚如何使这些方法更好地为我们服务。
从本书中获得的收益
在您所能采用的所有软件过程改进中,改进的需求工程实践为我们所带来的好处很可能是最大的。我重点描述了实用的并已得到认可的技术,这些技术可以在下列方面对我们有所帮助:
● 在开发周期早期改进项目需求的质量,可以减少返工和提高生产率。
● 通过控制范围扩大和需求变更来满足项目的进度目标。
● 达到更高的客户满意度。
● 降低维护成本和技术支持的成本。
我的目的是帮助大家改进收集并分析需求、编写并确认需求规格说明、在整个产品开发周期中管理需求等几个方面所采用的过程。我希望大家真正地将改进的实践用于具体的项目中,而不要只是读一读而已。了解新的实践并不难,然而,事实上要改变人们的工作方法却不是一件容易的事。
本书读者对象
需要定义或理解软件产品需求的所有人员都会从本书中获得对自己有用的信息。第1类对象是在项目开发中承担需求分析员角色的人,他们可能是专职的需求分析专家,也可能只是临时承担需求分析员的角色。第2类对象包括设计人员、程序员、测试人员以及其他必须理解并满足用户要求的团队成员。负责指定使产品在商业上获得成功的特性和属性的市场人员和产品经理也会发现这些实践十分具有价值。必须按时交付产品的项目经理也可以通过本书了解到如何管理项目需求活动和处理需求变更。第3类对象是客户--他们希望自己定义的产品能够满足功能和质量的需要。本书将帮助客户理解需求过程的重要性以及他们在这一过程中所扮演的角色。
全书展望
本书共分4个部分。第1部分"什么是软件需求?为什么要实现软件需求?哪些人应参与软件需求",包括第1章至第4章,这一部分一开始提出了一些定义,并描述了优秀需求具备的若干特性。如果你们是负责技术的一方,那么我希望你们能与重要客户共同阅读第2章中有关客户和开发人员合作伙伴关系这一部分。第3章介绍了业界需求开发和管理的几十个"良好实践",以及需求开发的总体过程。第4章的主题是需求分析员的角色。
第Ⅱ部分"软件需求开发"包括第5章至第17章。这一部分首先介绍了定义项目的业务需求所采用的方法。其他章节描述了如何找到合适的客户代表,获取他们的需求,以及将用例、业务规则、功能性需求和质量属性编写成文档。第11章描述了几种分析模型,这些分析模型可以从不同的角度来表示需求。第13章描述了如何使用软件原型来减小风险。其余的章节提出了划分需求优先级和确认需求的各种方法。在这一部分的最后,描述了在某些特殊的项目情况下需求开发所面临的特殊难题,并研究了需求如何影响项目工作的其他方面。
第Ⅲ部分"软件需求管理"包括18章至21章,这一部分的主题是需求管理的理论和实践,重点强调处理需求变更所用的方法。第20章描述了如何通过需求可跟踪性将单个需求与它们的起源、下游开发的可交付成果联系起来。这一部分的最后介绍了几种商业工具,这些工具能够进一步改进管理项目需求使用的方法。
本书的最后一部分"实现需求工程"包括第22章至附录D,帮助我们将理论概念运用到具体实践中。第22章将新的需求工程技术加入到项目组的开发过程中。第23章描述了与需求相关的一些常见的项目风险。附录A中的当前需求实践自我评估能够帮助我们选择最合适的需求基数和方法。其他附录介绍了需求和过程改进模型、需求错误诊断指南和几个需求文档范例。
案例研究
为了演示本书所描述的方法,我们从基于实际项目的若干案例研究中选择了一些实例,特别提供了一个称为"化学制品跟踪系统"的中等规模的信息系统(不要着急--理解这一项目并不需要我们了解任何化学知识)。遍布于整本书中的项目参与者之间的样例对话均来自于这些案例研究项目。无论你所在的项目组构建何种软件,我认为你都可以找到相关的对话。
从理论到实践