相比于我们原来的描述:“根据弯曲传感器的输出不同频率来控制LED闪烁”,我们上面的那些需求描述显得难以阅读和理解。
我发现,让需求文档变得通俗易懂,最简单办法莫过于,把过于细节的东西抽取出来,然后以条目的形式单独定义。
版本1
1. 弯曲传感器应当保证至少在100毫秒内读取一次数据(放到注释单独列出)
2. 切换LED的状态,使其与弯曲传感器的读数保持一致
3. 当弯曲传感器的读数为1伏特时,LED状态切换的次数应当保持在平均一秒十次;当传感器的读数为0伏特时,LED的切换次数应保持在一秒1次。
定义:
• 弯曲传感器:输入电压位于ADC的X端。安全电压范围为0到1伏特(放到注释单独列出)
• LED状态:数字状态由Y端输出
这样就好多了(尽管还不完美)。这些需求通俗易懂,不涉及到系统内部实现,且易于测试。对于系统行为的限定也仅仅限于需要做什么,点到为止。(例如,对弯曲传感器的采样频率,在实现上也可以更高,只要不产生非预期行为,一切都可以)。
编写需求就仿佛是在大脑中构建软件的过程。因此要重于执行操作。
英文原文: 编译:– 黄小非
2