《需求工程——软件建模》05
需求的规格化与验证
一、需求规格说明文档的重要性
在复杂的系统开发中,编写需求规格说明文档能够清晰、明确、结构化地将软件系统的需求信息和解决方案更好的传递给所有开发者。其中包括设计人员、程序员、测试人员及用户使用手册的文档编写人员等。可以保障信息一致、重复地传递给需要的人,因此,需求规格说明文档有着极其重要的作用。
二、优秀的需求规格说明文档特性:
[IEEE830-1998]指出一份优秀的需求规格说明文档应该具备下面的特性:正确性、无歧义、完备性、一致性、根据重要性和稳定性分级、可验证、可修改、可追踪。
(一) 完备性
需求规格说明文档应描述了用户所有有意义的需求,包括性能、功能、约束、质量属性和对外接口。每一条需求也是完备的,定义了软件对所有输入情况的响应,为文档中所有的插图、图、表和术语、度量单位的定义提供了完整的引用和标记。
(二)一致性
其一致性主要包含两方面:一是细节的需求不能同高层次需求相冲突,二是同一层次的需求之间也不能相互冲突。
为保证文档的一致性,由开发人员和非开发人员对其进行手工评审是非常必要的。人们也在努力的建立和使用一些能够自动检查文档一致性的分析工具。
(三)根据重要性和稳定性分级
在高质量的需求集中,开发人员、客户及其他风险承担人已经根据客户的重要性和稳定性给单个需求分级了。分级过程对于项目的范围管理极其重要。如果现有资源不足以实现进度和预算中的所有需求,那么知道什么需求是易变的、对用户是关键的就显得尤为重要了。
(四)可修改
可修改是指:它的结构和风格使得人们可以对任一需求进行容易的、完整的、一致的修改,同时还不会影响文档现有的结构和风格。需求规格说明文档必须要求可修改,尤其是在目前迭代开发的模式下。
(五)可跟踪
文档可跟踪当且仅当每个需求的来源清晰,并且存在一种机制使在未来的开发中引用该需求是可行的。
三、书写需求规格说明文档的细节描述问题
(一)定义术语表或数据字典
(1)术语不一致
在人们计划和编写文档的时候,通常使用一些术语,然后因为后期加入了新的想法或者对问题域有了更深的认识,造成对术语进行无数次修改。因此,建立并维护一个术语表,将方便人们对术语进行“替换”和“修改”,从而一定程度上避免出现属于不一致。
(2)“方言”问题
由于每个人的理解能力和理解问题的思考角度不同,即使相同的文档描述,不同的人也会有不同的理解,正所谓“一千个读者就有一千个哈姆雷特”。例如,将“客户”可能称为“顾客”、“投资人”等,为了避免这种情况发生,在建立术语表时,可以逐一解释术语的“方言”形式,这样就妥善地解决了“方言”问题。
(3)错误术语和冗余术语
正所谓“言多必失”,太多重复的文字描述容易降低文档的精确性和清晰性。因此,将文档使用的词汇限制在一些必要的基础词汇集及问题域的词汇集上,将能够降低这种问题发生的可能性。
(二)避免面干扰文本
干扰文本指那些没有实用目的,对文档内容的理解没有贡献的文本。其中,元文本就是常见的干扰文本,主要表现为出现“这一段的意思是”、“上一句话是指”等。虽然,有时候元文本是必要的,能够加强读者对文档的;理解,但大多数情况下会浪费读者阅读时间。较好的使用元文本就是将其放在“引言”部分,能够让读者大致理解本文的内容和结构。
(三)避免歧义词汇
四、需求规格说明文档的写作技巧
(一)内容组织
(1)所有内容位置得当
文档应该有规范的章节、清晰的逻辑结构、简明的文章内容,以便于读者去理解。
(2)引用或强化,但不重复
对于文档的必要的冗余重复信息,可以考虑使用引用在文档中交叉引用相关的各项。关于强化,“引言”、“图表”就是一种很重要的冗余强化,“引言”能够简要地快速让读者明白文章意图,“图表”清晰的逻辑、数量关系则给人强烈的视觉冲击,就如“一图抵千金”,“图表”的有效利用能够加深读者的理解认识,减少文字的叙述,方便阅读。
(二)表达方式
(1)形式依赖于内容
档过程中,没有规定的形式,一般根据实际需要表达的内容,选择合适的表达方式。可将示意图和表格按照实际需要进行使用,其最重要的目的就是能够倾向表达内容的方式。
(2)使用系统的表达方式
读文档或写作时,会倾向于用一种系统的方式来计划和检查这些文档的内容,因此在使用相同语句格式来描述多有的细节需求、使用列表或者表格来组织独立、并列的信息及使用编号来表达繁杂信息之间的关系(包括顺序关系、嵌套关系、层次关系)等时,在内容表达能力相同的情况下,人们会倾向于系统的表达方式。
五、结语
书写需求规格说明文档,既要完备又要简明,利用多种形式是文档内容简化,但仍旧要满足完备性,能够描述用户的所有需求。写一份好的说明文档不光需要完美的模板和优秀的写作技巧,最重要是对系统有清晰明了的认识的认识,保证阐述内容完备并简要。