在我们完成了一个需求分析的时候怎样确定我们的分析已经足够深入和彻底呢?
下面是出自《代码大全》(code complete)第一版电子的需求检查表可以帮助我们检查需求的完整性和质量:
需求内容
- 系统的所有输入都定义了吗?包括它们的来源、精度、取值范围和频率?
- 系统所有的输出都定义了吗?包括它们的目标、精度、取值范围、频率和格式?
- 所有的报告格式都定义了吗?
- 所有的硬件与软件接口都定义了吗?
- 所有的通信交界面都定义了吗?包括握手、错误检查以及通信约定?
- 是否从用户的观点出发,定义了所有必要操作的反应时间?
- 是否定义了时间问题,如处理时间、数据传输率以及系统吞吐能力?
- 是否对用户所要求完成的任务部作出了规定?
- 每项任务所需用到和产生的数据都规定了吗?
- 规定保密级别了吗?
- 规定可靠性了吗?包括软件出错的后果、在出错时要保护的至关重要的信息、以及错误测试和恢复策略。
- 规定所需最大内存了吗?
- 所需最大存储容量规定了吗?
- 对系统的维护性是否作出了规定?包括系统对运行环境、精度、性能以其与其它软件的接口等方面变化的适应能力规定了吗?
- 是否规定了相互冲突的设计之间的折衷原则,例如,在坚固性与准确性之间如何进行折衷?
- 是否制定了系统成败的标准?
关于需求的完善性
- 在开发开始前暂时得不到的信息是什么?是否规定了不够完善的区域?
- 需求定义是否已经完善到了可以成为软件标准的地步?
- 需求中是否有哪一部分令你感到不安?有没有根本不可能实现,而仅仅为了取悦老板和用户才加进来的内容?
关于需求的质量
- 需求是否是用用户的语言制定的?用户也这样认为吗?
- 需求中是否每一条之间都尽量避免冲突?
- 需求中是否注意了避免规定设计工作?
- 需求在详细程度方面是否保持了一致性;有没有应该更详细些的要求?有没有应该更简略些的?
- 需求是否明确得可以分为一些独立的可执行部分,而每一部分又都很明了?
- 是否每一条都与问题和答案相关?是否每一条都可以追溯到产生它的环境中?
- 是否每一条需求都可以作为测试依据?是否可以针对每一条进行独立测试以确定是否满足需求?
- 是否对可能的改动作出了规定?包括每一改动的可能性?