(翻译)需求的验证&确认

需求的验证&确认

 

--- David A. Cook, Ph.D原著《Verification & Validation of Requirements

---Kiki翻译于2006/8/17

 

验证 & 确认(Verification & Validation)的定义

验证: 我们在正确地构建产品吗?(Are we building the product right?

确认:我们在构建正确的产品吗?(Are we building the right product?

 

验证&确认之间的差异:

验证:意即开发的每个阶段都遵循过程和标准。质量是它的目标。

确认:意即整个产品和过程都迎合用户的需要。用户满意是它的目标。

 

验证&确认的两个先决条件

1.         首先要了解谁是你的客户

Ø           了解他们不同的议程

Ø           你需要在识别,验证和确认需求时能够提供给你帮助的客户

Ø           很可能-你需要最终用户和投资者。每个人都可以在一定的关键领域帮助你。

2.         了解你的组织是如何开发软件

Ø           了解你组织采用的过程

 

也就是说,组织中:

l         要有一个书面化的过程

l         遵循这个过程

l         有需要时更新过程

l         确保过程真的可以工作

 

l         确保你使用了一个生命周期

l         遵循这个生命周期

l         有需要时更新生命周期并使用备选的生命周期

l         简言之-知道你实际上正在做什么

 

需求的验证

如上述,你需要知道你的客户是谁,因为他们必须参与到验证中。

验证的三个组成部分:

Ø         检查

Ø         度量标准

Ø         变更管理

 

检查

这里的问题是人们会用不同的方式解释需求。为了防止这个问题,你需要指出以下两个不同的问题:

l         我们所有人是用同种方式解释需求吗?

l         需求是完整的吗?

最好解决这些问题的办法就是利用checklist来确保你在检查时问了正确的问题。

另外,一个受过培训的,且有准备的检查小组加上足够的准备可以帮助

 

检查什么

l         软件需求说明书(或者任何你用来列举需求的文档)

l         SRS的源文件或初始文件或其他任何先于SRS的文档

 

需求评审检查表

l         问题划分的完全吗?

l         外部和内部接口正确定义了吗

l         每个需求都可以测试吗

l         每个需求都可以被编号且容易被识别吗(需求是可追溯的吗?)

l         为用户做了必需的原型吗

l         阐述了隐含的需求吗(如数度,错误和响应时间)

l         在其他系统元素的限制条件里性能是可达到的吗?

l         需求和计划,资源和预算一致吗

l         显示给用户的信息列在需求里了吗

l         在需求了提及了未来的问题(更新,已计划的移植,长期使用)吗

 

你寻找的是什么。。。

需求是否:

Ø         明确

Ø         完整

Ø         可验证

Ø         一致的

Ø         可修改

Ø         可追溯

Ø         可用的

Ø         可以方便划分优先级别(可选)

 

确认对于软件来说是很困难的

基于三个概念

l         测试

l         度量标准

l         质量保证团队

测试是最不重要的,因为很难在编码之前测试需求,而且大多需求方法(原型,模拟)依赖大量的假设和简化。

 

最好确认需求的方法是在需求检查过程中让客户参与

l         最终用户

l         程序办公室

l         用户管理层

最终用户是最有效的,但也是最难让他参与。最终用户一般关注的是具体的一些小的细节,而需求关注的是大的方面。

 

确认一般只发生两次:

l         在需求收集/分析/评审期间

l         在编码之后,测试的时候。这是QA团队的职责。

其实这是相当危险的!首先QA和测试是极其昂贵的!!其次你可以做的任何缩短QA/测试阶段的事情都应该是很有用的。如果你依赖QA和测试来发现和修复错误,你的软件将很有可能

Ø         延迟发布

Ø         超支

Ø         在你发货后仍然充满了错误

 

确认总结

总言之-确认要求实施者和客户之间的tie-in。如果你不能拉你想要的那么多客户,那么就指派人做ALACAct Like A customer)。

建议大家关注以下两个方面

l         系统的外部接口

l         模块和子系统之间的内部接口

 

你可能感兴趣的:((翻译)需求的验证&确认)