如何让客户编写优质的需求文档
从较高的层次来看,书写需求文档的目的就是要提供对所需行为的有效描述。该所需行为可用一个黑盒系统描述,并需要注意以下细节:
• 工程师可以根据系统所说进行实现。
• 测试人员,在不与开发人员沟通的前提下,可以利用满足硬件要求的设备验证需求。
• 最终产生的成果满足终端用户的要求。
黑盒测试书写优质的需求文档:
最基本的原则是:需求文档应当尽量简洁,用最易懂的描述来约束系统的预期行为。如果你遵循这个原则,剩下的那些重要因素(可测试性、避免过度设计等等)都将变得顺理成章。
列举一下更详细的规则,通常会更有帮助。下面是书写优质需求文档需要遵循的步骤:
1. 定义系统的边界。这也是黑盒系统所必要的。
2. 定义输入和输出。这也应当是你看待内部系统的唯一方式。
3. 用最易懂的方式描述系统的预期行为。
4. 除了输入和输出之外,你的需求是不是还涉及了系统的其他部分?如果是,那么你的需求就设计过度了。重构需求,让它变得精简。
5. 你的需求是不是过于模棱两可?加入更多的限定规范。注意:有些模棱两可的描述并不是坏事,假设描述所包含的所有情况均可被接受,且测试的时候不需要附加的信息加以说明,那么就没关系。你不需要(也不应该)把系统的行为限制得过头。
6. 你的需求是否可测试?(这里指的是黑盒测试)如果不是,你最好返回到第4步。如果这种返工发生很多次,那就说明你的黑盒无法正确描述系统,或者你的测试工具不够优秀。无论是哪种情况,不可测试的需求文档几乎就是一文不值的。
7. 你的需求文档通俗易懂么?如果你的需求文档非常难以读懂,那就说明你写得不好,只能给那些照着你的需求负责实施的人带来无尽的痛苦。如果是这样,回到第3步。
8. 你是不是真的做到了第4步?你确认么?再检查一下。
例子:下面的例子,让我们描述一个自制的嵌入式设备的需求,这个设备能从弯曲传感器上读取弯曲的频率,并根据不同的频率值让一个LED闪烁。
显然,我们已经完成了步骤2和步骤3了!
• 输入:从弯曲传感器读取数据。
• 输出:LED。
但是我们跳过了步骤1:
• 在这个例子里,我们将把黑盒画到设备的微处理器上。
让我们继续往下进行,
第四步:除了输入和输出以外,我们是否还涉及了其他的系统边界?
• 微处理器并不关心从弯曲传感器读取什么样的数据,从处理器的角度来看,仅需要做的是测量ADC脚的电压而已。
• LED仅由数字输出脚控制。
下面,让我们来修正这个问题:
第0版本的需求:
1. 该设备应当根据ADC脚的不同频率的电压,来切换数字输出端的状态。
第五步:需求写模棱两可么?
恩,我们的描述太模棱两可了。输出端切换的速度要多快? 跟电压的关系如何? 输入电压的范围是多少? 让我们加一些更细节的描述吧:
版本0.1
1. 输出端应当由一个自由活动的定时器进行控制
2. 自由运行定时器的频率最高不得高于每秒10次,不得低于每秒1次。
3. 自由运行定时器的触发频率应当在最高和最低值之间呈线性变化,并与ADC端的输入电压成正比。
4. ADC端的输入电压应当每100毫秒读取一次
5. 当ADC端的输入电压端被读入时,控制自由运行定时器周期时间的注册值也应当被更新。
6. ADC输入端的电压有效范围应当被控制在0到1伏之间。
第六步:你的需求是否通俗易懂?
相比于我们原来的描述:“根据弯曲传感器的输出不同频率来控制LED闪烁”,我们上面的那些需求描述显得难以阅读和理解。
我发现,让需求文档变得通俗易懂,最简单办法莫过于,把过于细节的东西抽取出来,然后以条目的形式单独定义。
第七步:你的需求是可测试的么?
• 首先,自由运行的定时器在这里不需要提及。 因为对它基本上无法进行黑盒测试,它既不是输入也不是输出,而且跟这两者也没有什么联系。
让我们用“数字输出端变化的频率应控制在每秒10次和每秒1次之间”来代替自由运 行定时器的测试标准。
• 对于上述的第四条需求,可能需要一些小修改才能作为测试标准。让我们用“ADC端的输入电压应当保证在每100毫秒内至少被读取一次”来加以描述,这样的描述能让我们预期的测试行为显得更加通俗易懂。
• 需求的第五条也需要一些小修改。我们如何才能检测电压的输出范围是在0到1伏之间呢? 总不能给个2伏的电压,然后看看元器件有没有被烧毁吧?
那么,说“检验系统在ADC端输入电压为1到2伏之间的时候,工作是否正常”,这样就检验就容易多了。需求描述应当是“正面”的,应当描述设备“应该”的行为,而不是设备“不应该”的行为。否则的话,测试将会无法进行。
版本0.2
1. 数字输出端的切换频率应当控制在每秒10次到每秒1次之间
2. 数字输出端的切换频率应当在最大值和最小值之间呈线性变化,并与ADC端的输入电压成正比
3. ADC端的输入电压应当保证在每100毫秒内至少被读取一次
4. 检验当ADC端的输入电压范围在0到1伏之间的时候,系统工作是否正常
版本1
1. 弯曲传感器应当保证至少在100毫秒内读取一次数据(放到注释单独列出)
2. 切换LED的状态,使其与弯曲传感器的读数保持一致
3. 当弯曲传感器的读数为1伏特时,LED状态切换的次数应当保持在平均一秒十次;当传感器的读数为0伏特时,LED的切换次数应保持在一秒1次。
定义:
• 弯曲传感器:输入电压位于ADC的X端。安全电压范围为0到1伏特(放到注释单独列出)
• LED状态:数字状态由Y端输出
这样就好多了(尽管还不完美)。这些需求通俗易懂,不涉及到系统内部实现,且易于测试。对于系统行为的限定也仅仅限于需要做什么,点到为止。(例如,对弯曲传感器的采样频率,在实现上也可以更高,只要不产生非预期行为,一切都可以)。
编写需求就仿佛是在大脑中构建软件的过程。因此要重于执行操作。
本文发布于北京网站制作公司尚品中国http://www.sino-web.net/
推荐新闻
更多行业-
网页制作需要下载什么软件?网页设计需要什么软件
网页制作需要下载什么软件?DREAMWEAVER(网页制作) FLAS...
2012-05-29 -
建设网站的作用与意义
企业形象展示与提升互联网作为唯一一种全天候24小时不间断的媒体平台是传...
2015-01-13 -
网站改版时要把那些因素考虑进去
当一个网站发展到一定程度时,为了获得更好的承载能力和对各种应用的支持,...
2020-03-04 -
网站设计都包含什么
网站设计,包含的内容非常多。大体分两个方面:一方面是网站的延伸设计,包...
2012-07-16 -
营销型企业网站建设的六大基本原则
随着互联网的发展普及,我国广大中小企业步入网络营销时代的步伐正在加快。...
2012-07-21 -
许可E-mail策略分类及过程
许可E-mail策略分类根据以上所界定的许可E-mail策略含义,可以...
2012-09-03
预约专业咨询顾问沟通!
免责声明
非常感谢您访问我们的网站。在您使用本网站之前,请您仔细阅读本声明的所有条款。
1、本站部分内容来源自网络,涉及到的部分文章和图片版权属于原作者,本站转载仅供大家学习和交流,切勿用于任何商业活动。
2、本站不承担用户因使用这些资源对自己和他人造成任何形式的损失或伤害。
3、本声明未涉及的问题参见国家有关法律法规,当本声明与国家法律法规冲突时,以国家法律法规为准。
4、如果侵害了您的合法权益,请您及时与我们,我们会在第一时间删除相关内容!
联系方式:010-60259772
电子邮件:394588593@qq.com