针对功能需求:
-是否详细定义了系统的全部输入,包括其来源、精度、取值范围、出现频率
-是否详细定义了系统的全部输出,包括项目地、精度、取值范围、出现率,格式等
-是否详细定义了所有输出格式(web页面、报表、等等)
-是否详细定了了所有硬件及软件的外部接口
-是否详细定义了全部外部通信接口,包括握手协议、纠错协议、通信协议等
-是否列出了用户想要做的全部事情
-是否详细定义了每个人物所有的数据,以及每个人物得到的数据?
针对非功能需求(质量需求)
-是否为全部必要操作,从用户的视角,详细描述了期望响应时间
-是否详细描述了其他与即使有关的考虑,例如处理时间,数据传输率,系统吞吐量?
-是否详细定义了安全级别
-是否详细定义了可靠性,包括软件失灵的后果、发生故障时需要保护至关重要的信息,错误检车和回复策略等
-是否详细定义了极其内存和剩余磁盘空间的最小值?
-是否详细定义了系统的可维护性,包括使用哪个特定功能的变更,操作环境的变更,与其他软件爱你的接口的变更时间
-包括对成功和失败的定义
需求的质量
-需求是用用户的语言书写的吗?用户也这么认识?
-每条需求都不与其他需求冲突吗?
-是否详细定义了相互竞争的特性之间的权衡-例如,健壮性,与正确性直接的权衡
-是否避免在需求中规定设计(方案)
-需去是否在详细程度上保持相当一致的水平?有些需求应该更详细地描述吗?有些需求应该更粗略地描述吗?
-需求是否足够清晰,即使转交给一个独立的小组去构建,他们也能理解吗?开发者也这么想吗?
-没个条款都与待解决问题以及解决方案有关吗?能从每个条款上溯到它在问题中相应的根源吗?
需求的完备性:
-对于在开始算开发之前无法获得的信息,是否详细描述了信息不完全的区域?
-需求的完备度是否能达到这种程度:如果产品需求满足所有需求,那么它就是可接受的?
-你对全部需求都感到很舒服吗?你是否可以去掉了那些不能实现的需求---那些只是为了安抚客户和老板的东西?
本文摘自<代码大全>