没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
下载
第9章 编写需求文档
需求开发的最终成果是:客户和开发小组对将要开发的产品达成一致协议。这一协议综
合了业务需求、用户需求和软件功能需求。就像我们早先所看到的,项目视图和范围文档包
含了业务需求,而使用实例文档则包含了用户需求。你必须编写从使用实例派生出的功能需
求文档,还要编写产品的非功能需求文档,包括质量属性和外部接口需求。只有以结构化和
可读性方式编写这些文档,并由项目的风险承担者评审通过后,各方面人员才能确信他们所
赞同的需求是可靠的。
你可以用三种方法编写软件需求规格说明:
• 用好的结构化和自然语言编写文本型文档。
• 建立图形化模型,这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、
逻辑流或对象类和它们的关系。
• 编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求。
由于形式化规格说明具有很强的严密性和精确度,因此,所使用的形式化语言只有极少
数软件开发人员才熟悉,更不用说客户了。虽然结构化的自然语言具有许多缺点,但在大多
数软件工程中,它仍是编写需求文档最现实的方法。包含了功能和非功能需求的基于文本的
软件需求规格说明已经为大多数项目所接受。图形化分析模型通过提供另一种需求视图,增
强了软件需求规格说明。
本章介绍软件需求规格说明的目的和结构,包括一个建议性的文档模板。同时还提供编
写功能需求规格说明的原则并附带讲述几个不完善的需求陈述以及改进建议的例子。在第 1 0
章将介绍利用图形化技术表示需求。本书并不深入介绍形式化需求方法;若要深入讨论形式
化需求方法,可参考Alan Davis编著的《软件需求:对象、功能和说明》(1 9 9 3 )。
9.1 软件需求规格说明
软件需求规格说明,也称为功能规格说明、需求协议以及系统规格说明。它精确地阐述
一个软件系统必须提供的功能和性能以及它所要考虑的限制条件。软件需求规格说明不仅是
系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。它应该尽可能
完整地描述系统预期的外部行为和用户可视化行为。除了设计和实现上的限制,软件需求规
格说明不应该包括设计、构造、测试或工程管理的细节。许多读者使用软件需求规格说明来
达到不同的目的:
• 客户和营销部门依赖它来了解他们所能提供的产品。
• 项目经理根据包含在软件需求规格说明中描述的产品来制定规划并预测进度安排、工作
量和资源。
• 软件开发小组依赖它来理解他们将要开发的产品。
• 测试小组使用软件需求规格说明中对产品行为的描述制定测试计划、测试用例和试过
程。
• 软件维护和支持人员根据S R S 了解产品的某部分是做什么的。
• 产品发布组在S R S 和用户界面设计的基础上编写客户文档,如用户手册和帮助屏幕等。
• 培训人员根据S R S 和用户文档编写培训材料。
软件需求规格说明作为产品需求的最终成果必须具有综合性:必须包括所有的需求。开
发者和客户不能作任何假设。如果任何所期望的功能或非功能需求未写入软件需求规格说明,
那么它将不能作为协议的一部分并且不能在产品中出现。
毫无疑问,你必须在开始设计和构造之前编写出整个产品的软件需求规格说明。你可以
反复地或以渐增方式编写需求规格说明,这取决于以下几个因素:是否可以一开始就确定所
有的需求,编写软件需求规格说明的人是否将参与开发系统,计划发行的版本数量等等。然
而,每个项目针对要实现的每个需求集合必须有一个基准协议,基准( b a s e l i n e)是指正在开
发的软件需求规格说明向已通过评审的软件需求规格说明的过渡过程。必须通过项目中所定
义的变更控制过程来更改基准软件需求规格说明。
所有的参与者必须根据已通过评审的需求来安排工作以避免不必要的返工和误解。我见
过有一个项目突然接到测试人员发出的错误灾难的报告。结果是他们测试的是老版本的软件
需求规格说明,而他们觉得错误的地方正是产品所独有的特性。他们的测试工作是徒劳的,
因为他们一直在老版本的软件需求规格说明中寻找错误的系统行为。
第1章提出了高质量需求文档所具有的特征:完整性、一致性、可更改性和可跟踪性。构
造并编写软件需求规格说明,并使用户和其它读者能理解它( Sommerville and Sawyer 1997)。
牢记以下可读性的建议:
• 对节、小节和单个需求的号码编排必须一致。
• 在右边部分留下文本注释区。
• 允许不加限制地使用空格。
• 正确使用各种可视化强调标志(例如,黑体、下划线、斜体和其它不同字体)。
• 创建目录表和索引表有助于读者寻找所需的信息。
• 对所有图和表指定号码和标识号,并且可按号码进行查阅。
• 使用字处理程序中交叉引用的功能来查阅文档中其它项或位置,而不是通过页码或节
号。
9.1.1 标识需求
为了满足软件需求规格说明的可跟踪性和可修改性的质量标准,必须唯一确定每个软件
需求。这可以使你在变更请求、修改历史记录、交叉引用或需求的可跟踪矩阵中查阅特定的
需求。由于要达到这一目的,用单一的项目列表是不够的,因此,我将描述几个不同的需求
标识方法,并阐明它们的优点与缺点。可以选择最适合你的方法。
1) 序列号 最简单的方法是赋予每个需求一个唯一的序列号,例如 U R - 2 或S R S 1 3。当一
个新的需求加入到商业需求管理工具的数据库之后,这些管理工具就会为其分配一个序列号
(许多这样的工具也支持层次化编号)。序列号的前缀代表了需求类型,例如 U R 代表“用户需
求”。由于序列号不能重用,所以把需求从数据库中删除时,并不释放其所占据的序列号,而
新的需求只能得到下一个可用的序列号。这种简单的编号方法并不能提供任何相关需求在逻
辑上或层次上的区别,而且需求的标识不能提供任何有关每个需求内容的信息。
第9章 编写需求文档 73
下载
2) 层次化编码 这也许是最常用的方法。如果功能需求出现在软件需求规格说明中第 3 . 2
部分,那么它们将具有诸如 3 . 2 . 4 . 3这样的标识号。标识号中的数字越多则表示该需求越详细,
属于较低层次上的需求。这种方法简单且紧凑,你使用的字处理程序可能可以自动编排序号。
然而,即使在一个中型的软件需求规格说明中,这些标识号也会扩展到许多位数字,并且这
些标识也不提供任何有关每个需求目的的信息。如果你要插入一个新的需求,那么该需求所
在部分其后所有需求的序号将要增加。删除或移去一个需求,那么该需求所在部分其后所有
需求的序号将要减少。这些变化将破坏系统其它地方需求的引用。
对于这种简单的层次化编号的一种改进方法是对需求中主要的部分进行层次化编号,然后
对于每个部分中的单一功能需求用一个简短文字代码加上一个序列号来识别。例如,软件需求
规格说明可能包含“第3 . 2 . 5部分
—
编辑功能”,那么这一部分需求的编号可以写成E D - 1、E D -
2等等。这种方法具有层次性和组织性,同时使标识号简短和具有一定意义并与位置无关等特
点。如果要在E D - 1和E D - 2之间插入新的需求E D - 9,则不必对该部分中余下的需求重新编号。
3) 层次化文本标签 Tom Gilb顾问提出基于文本的层次化标签方案来标识单个需求( G i l b
1 9 8 8)。考虑这样一个需求:“当用户请求打印超过 1 0个副本时,系统必须让用户进行确认判
断。”这一需求可能被标识为 P R I N T. C O P I E S . C O N F I R M ,这意味着这个需求是打印功能的一
部分,并且与要打印的副本数量的设置问题有关。层次化文本标签是结构化的,具有语义上
的含义,并且不受增加、删除或移动其它需求的影响。它们的主要缺点是文本标签比层次化
数字标识码复杂。
9.1.2 处理不完整性
有时,你觉得缺少特定需求的某些信息。在解决这个不确定性之前,可能必须与客户商议、
检查与另一个系统的接口或者定义另一个需求。使用“待确定”(to be determined, TBD)符号作
为标准指示器来强调软件需求规格说明中这些需求的缺陷(g a p)。通过这种方法,你可以在软件
需求规格说明中查找所要澄清需求的部分。记录谁将解决哪个问题、怎样解决及什么时候解决。
把每个T B D 编号并创建一个T B D列表,这有助于方便地跟踪每个项目。
在继续进行构造需求集合之前,必须解决所有的 T B D 问题,因为任何遗留下来的不确定
问题将会增加出错的风险和需求返工。当开发人员遇到一个 T B D 问题或其它模糊之处时,他
可能不会返回到原始需求来解决问题。多半开发者对它进行猜测,但并不总是正确的。如果
有T B D问题尚未解决,而你又要继续进行开发工作,那么尽可能推迟实现这些需求,或者解
决这些需求的开放式问题,把产品的这部分设计得易于更改。
9.1.3 用户界面和软件需求规格说明
把用户界面的设计编入软件需求规格说明既有好处也有坏处。消极方面,屏幕映像和用
户界面机制是解决方案(设计)的描述,而不是需求。如果你在完成了用户界面的设计之后
才能确定软件需求规格说明,那么需求开发的过程将会花费很长的时间。这将会使那些只关
心需求开发时间的经理、客户或开发人员失去耐心。用户界面的布局不能替代定义功能需求。
不要指望开发人员可以从屏幕中推断出潜在的功能和数据关系。把用户界面的设计加入软件
需求规格说明还意味着开发人员在更改一个用户界面的元素时必须相应更改需求的过程。
积极方面,探索潜在的用户界面有助于你精化需求并使用户—系统的交互对用户和开发人
74 第二部分 软件需求工程
下载
剩余12页未读,继续阅读
资源评论
- Tingreat2013-12-27不错,学到了很多东西!
- j_b_0072016-04-05这个还可以,比较全,可以参考
- imcxy2013-03-19很好的资料,很齐全,谢谢.
wxclover
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功