什么是非功能性需求
在开发系统时,大家通常都会集中精力确保系统能满足所有功能上的需求,比如系统能不能做某事。但除了这些功能需求,还有其他类型的需求,即非功能性需求,同样会影响用户和业务所有者对系统的评价。例如,如果取回信用卡声明需要花费五分钟,即使系统能够完成功能,用户也可能会不满意。在《攻角》一书中提到了两个非常有代表性的非功能性需求,这些要求来自肯尼迪总统对首次登月任务的期望:一是宇航员必须安全返回地球;二是必须在十年内完成任务。这些看似简单的非功能性要求,实际上极大地改变了整个开发过程和重点。为了迅速找到解决方案,开发团队采取了快速尝试和错误的方法,而不是常规的系统工程实践和风险分析。
总的来说,非功能性需求越多,开发和测试的成本就越高,整个系统的风险也相应增大。特别是那些影响整个系统的需求,会对项目的进度和成本产生极大影响。
如何处理非功能性需求
面对所有这些非功能性需求,我们不能简单地忽略它们。最好的做法是仔细评估每一个需求。遇到用户提出的非功能性需求,要问清楚为什么这个需求对他们来说很重要,并通过了解其对最终用户的重要性来确认这个需求是否确实必要。还要检验满足或不满足这些需求的标准是否合理。比如,如果有用户说系统必须保持100%时间的可用性,要问清楚这是否绝对必要,或者他们实际上能接受的标准是什么。
当用户提出“用户友好”这样模糊的非功能性要求时,不能只是简单地记录下来,而应该深入了解用户具体想要什么。要问用户他们将如何测试系统是否达到了用户友好的标准,并与用户一起制定出可行的评判标准。提前和用户一起记录下这些标准,确保每个人对需求的理解都一致。
总之,要弄清楚每个非功能性需求为何对用户重要,以及如何量化成功。提前了解这些信息,可以帮助更好地设计和实施解决方案。