1.如何编写优质的需求文档
需求文档被用来定义开发任务,协调大规模的研发计划。
对于最终的产品,需求文档扮演着开发者行为和消费者行为之间沟通纽带的角色。当需求文档书写正确的时候,便可以发挥巨大的作用。
然而,如果你在嵌入式开发领域工作的时间足够长,你就会很快发现,这个领域里不合格的需求文档实在是太多了。当你尝试对这些不合格的文档进行修复时,你又会很快发现,书写正确的需求文档绝非易事。
在这里,我们提出一些建议,希望能将书写正确需求文档这件事情变得清晰一些。 从较高的层次来看,书写需求文档的目的就是要提供对所需行为的有效描述。
该所需行为可用一个黑盒系统描述,并需要注意以下细节:工程师可以根据系统所说进行实现测试人员,在不与开发人员沟通的前提下,可以利用满足硬件要求的设备验证需求。最终产生的成果满足终端用户的要求。
黑盒测试 书写优质的需求文档: 最基本的原则是:需求文档应当尽量简洁,用最易懂的描述来约束系统的预期行为。如果你遵循这个原则,剩下的那些重要因素(可测试性、避免过度设计等等)都将变得顺理成章。
列举一下更详细的规则,通常会更有帮助。下面是书写优质需求文档需要遵循的步骤: 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 伏之间. 第六步: 你的需求是可测试的么? · 首先,自由运行的定时器在这里不需要提及. 因为对它基本上无法进行黑盒测试,它既不是输入也不是输出,而且跟这两者也没有什么联系。
让我们用“数字输出端变化的频率应控制在每秒 10 次和每秒 1 次之间”来代替自由运行定时器的测试标准。 · 对于上述的第四条需求,可能需要一些小修改才能作为测试标准。
让我们用“ADC 端的输入电压应当保证在每 100 毫秒内至少被读取一次”来加以描述,这样的描述能让我们预期的测试行为显得更加通俗易懂。 · 需求的第五条也需要一些小修改。
我们如何才能检测电压的输出范围是在 0 到 1 伏之间呢? 总不能给个 2 伏的电压,然后看看元器件有没有被烧毁吧? 那么,说“检验系统在 ADC 端输入电压为 1 到 2 伏之间的时候,工作是否正常”,这样就检验就容易多了。需求描述应当是“正面”的,应当描述设备“应该”的行为,而不是设备“不应该”的行为。
否则的话,测试将会无法进行。 版本0.2 1. 数字输出端的切换频率应当控制在每秒 10 次到每秒 1 次之间 2. 数字输出端的切换频率应当在最大值和最小值之间呈线性变化,并与 ADC 端的输入电压成正比 3. ADC 端的输入电压应当保证在每 100 毫秒内至少被读取一次 4. 检验当 ADC 端的输入电压范围在 0 到 1 伏之。
2.做系统的文档怎么写
详细设计文档规范
1.0概述
这部分提供对整个设计文档的概述。描述了所有数据,结构,接口和软件构件级别的设计。
1.1 目标和对象
描述软件对象的所有目标。
1.2 陈述范围
软件描述。主要输入,过程功能,输出的描述,不考虑详细细节。
1.3 软件内容
软件被置于商业或者产品线中,讨论相关的战略问题。目的是让读者能够对“宏图”有所了解。
1.4 主要系统参数
任何商务软件或者产品线都包含软件规定、设计、实现和测试的说明和规范。
2.0 数据设计
描述所有数据结构包括内部变量,全局变量和临时数据结构。
2.1 内部软件数据结构
描述软件内部的构件之间的数据传输的结构。
2.2 全局数据结构
描述主要部分的数据结构。
2.3 临时数据结构
为临时应用而生成的文件的描述。
2.4 数据库描述
作为应用程序的一部分,描述数据库结构。
3.0 结构化和构件级别设计
描述程序结构。
3.1 程序结构
详细描述应用程序所选定的程序结构。
3.1.1 结构图
图形化描述结构。
3.1.2 选择性
讨论其它可供考虑的结构。选定3.1.1中结构类型的原因。
3.2 构件描述
详细描述结构中的每个软件构件。
3.2.1 构件过程叙述(PSPEC)
描述构件的过程。
3.2.2 构件接口描述
详细描述构件的输入和输出。
3.2.3 构件执行细节
每个构件的详细演算描述。
3.2.3.1 接口描述
3.2.3.2 演算模型(e.g., PDL)
3.2.3.3 规范/限制
]3.2.3.4 本地数据结构
3.2.3.5 在3.2.3.6设计中包含的执行结果
3.3 软件接口描述
软件对外界的接口描述
3.3.1机器对外接口
与其他机器或者设备的接口描述。
3.3.2系统对外接口
对其它系统、产品和网络的接口描述。
3.3.3与人的接口
概述软件与任何人的界面。
4.0 用户界面设计
描述软件的用户界面设计。
4.1 描述用户界面
详细描述用户界面,包括屏幕显示图标、图片或者类型。
4.1.1 屏幕图片
从用户角度描述界面。
4.1.2 对象和操作
所有屏幕对象和操作的定义。
4.2 界面设计规范
用户界面的设计和实现的规范和标准。
4.3 可见构件
实现的GUI可见构件说明。
4.4 UIDS描述
用户界面开发系统描述。
5.0约束、限制和系统参数
会影响软件的规格说明、设计和实现的特殊事件。
6.0测试标准
测试策略和预备测试用例描述。
6.1 测试的类别
规定实施测试的类别,包括尽量详细的描述。这里是针对黑盒测试现象的描述。
6.2期待软件反馈
测试期待的结果描述。
6.3执行界线
特殊执行需要的说明。
6.4 重要构件确认
决定性构件或者需要特殊注意的构件的测试确认。
7.0附录
设计说明的补充信息。
7.1系统可跟踪矩阵
一个定期回归系统规格跟踪软件需求的矩阵。
7.2 产品战略
如果规格说明书是为一个产品设计的,描述相关的产品战略。
7.3 使用分析算法
描述所有分析活动所使用到的分析算法。
7.4 补充信息 (如果有需要特别说明的)
3.来,讨论一下怎么写需求文档吧
用例和UP的讨论
UML 中各种图形的重要性排行
先谈谈我的想法。
1、功能需求;
2、非功能需求或技术需求;
我一般把功能需求划分为几个部分:
a、业务过程;
b、业务规则;
c、业务数据;
非功能需求(技术需求)我就不多说了,大致就是可用性,可靠性,性能,可支持性等等。
1、用例规格说明描述业务过程;
2、业务规则文档描述业务规则;
3、术语表描述业务数据;
4、补充规格说明描述非功能需求(技术需求);
UP的做法还是很有道理的。这体现了两个原则:
1、分离关注点(每个文档描述相对独立的领域);
2、减少重复(很多用例都会引用相同的业务规则及业务数据);
这样便能够尽可能的使文档结构清晰,易阅读,易理解。也便于跟踪和维护。
但另一方面由于将不同的领域分离到不同文件的做法也使得可阅读性有所降低。比如用例规格说明中的业务过程描述时常需要引用业务规则文档中的业务规则及术语表中的业务数据。由于不是很方便在各个文档之间导航,你可能需要打开多个文档进行交叉阅读。这是比较麻烦的,特别是对于用户来说。
而且UP中每个用例都单独作为一个文件存在,这可能是为了便于跟踪及管理的缘故吧。但正如上所述,文件多了看着就觉得不爽了。我觉得完全可以将用例合并到一个文档中。或者几个相对独立的文档中(比如根据子系统划分)。
易理解,
易沟通,
易确认,
易跟踪,
易测试,
易验收
我想我们都应该以这个为目标来进行思考。
推荐链接Java开发新方式:专注UI,快速开发!
4.需求文档怎么写
文档需要体现:
1,电路板的尺寸规格,比如材质要求、面积、形状、板厚、最小线宽、最小线距、单面制板还是双面或是多层制板、定位孔位置及定位孔尺寸等等;
2,元器件封装,普通插式元件还是贴片封装元件,是0805封装还是0603或是。。;
3,接口形式。是焊盘还是插座、用什么规格的插座;
4,有什么特殊的接地要求。
以上这些是最起码的文档内容,没有这些内容指导就不好做事啦。还有更复杂的要求就暂免了,如EMI、EMS等等。