北京网站树立公司尚品中国:编写需求文档,在嵌入式开发范畴是异常广泛的。需求文档被用来界说开发义务,谐和大范围的研发方案。对终极的产物,需求文档饰演着开发者行动和破费者行动之间雷同纽带的脚色。当需求文档誊写准确的时刻,便可以大概施展伟大的感化。但是,如果你在嵌入式开发范畴工作的时候充足长,你就会很快发明,这个范畴里不及格的需求文档真实是太多了。当你实验对这些不及格的文档停止修复时,你又会很快发明,誊写准确的需求文档绝非易事。在这里,我们提出一些倡议,盼望能将誊写准确需求文档这件工作变得清晰一些。
从较高的层次来看,誊写需求文档的目的就是要供给对所需行动的有效描绘。该所需行动可用一个黑盒体系描绘,并需要注重以下细节:
• 工程师可以大概按照体系所说停止完成。
• 测试职员,在不与开发职员雷同的条件下,可以大概操纵知足硬件请求的装备考证需求。
• 终极发作的结果知足终端用户的请求。
黑盒测试誊写优良的需求文档:
最根基的准绳是:需求文档应当只管简练,用最易懂的描绘来约束体系的预期行动。如果你遵守这个准绳,剩下的那些重要身分(可测试性、防止过度设想等等)都将变得水到渠成。
罗列一下更具体的划定规矩,每每会更有辅助。上面是誊写优良需求文档需要遵守的步调:
1. 界说体系的边界。这也是黑盒体系所需要的。
2. 界说输入和输入。这也应当是你对待内部体系的独一体式格局。
3. 用最易懂的体式格局描绘体系的预期行动。
4. 除输入和输入之外,你的需求能否是还涉及了体系的其他部分?如果是,那末你的需求就设想过度了。重构需求,让它变得精简。
5. 你的需求能否是过于含糊其词?插足更多的限制范例。注重:有些含糊其词的描绘其实不是好事,假定描绘所包括的扫数情况都可被承受,且测试的时刻不需要附加的信息加以说明,那末就没干系。你不需要(也不应当)把体系的行动限制得过甚。
6. 你的需求能否可测试?(这里指的是黑盒测试)如果不是,你最好前往到第4步。如果这类返工发作良多次,那就说明你的黑盒没法准确描绘体系,大概你的测试对象不敷优异。不管是哪种情况,弗成测试的需求文档几近就是一文不值的。
7. 你的需求文档通俗易懂么?如果你的需求文档异常难以读懂,那就说明你写得欠好,只能给那些照着你的需求担任实行的人带来无尽的疾苦。如果是如许,回到第3步。
8. 你能否是真的做到了第4步?你确认么?再检讨一下。
例子:上面的例子,让我们描绘一个自制的嵌入式装备的需求,这个装备能从曲折传感器上读取曲折的频次,并按照分歧的频次值让一个LED闪烁。
明显,我们已完成了步调2和步调3了!
• 输入:从曲折传感器读取数据。
• 输入:LED。
然则我们跳过了步调1:
• 在这个例子里,我们将把黑盒画到装备的微处置器上。
让我们持续往下停止,
品牌SEO优化,
第四步:除输入和输入之外,我们能否还涉及了其他的体系边界?
• 微处置器其实不关怀从曲折传感器读取甚么样的数据,从处置器的角度来看,仅需要做的是丈量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/