编写伟大软件的第一个步骤是确保它完成要它做的事。但是如何理解客户真正要什么?如何确认客户真的知道他们要什么?这就是良好需求的着力点。
It‘s specific thing your system has to do to work correctly。
需求是系统为了正确运作所必须做的特定事情
一项需求通常是一件特定(specific)的事,你可以测试那件事来确认你真的满足该需求。
"system"(系统)是你正在操作的整个应用程序或项目。
"do"系统需要完成的所有操作。
"correctly"记住,系统运作的正确操作与否是由客户决定的。因此,假如你漏掉某项需求或者是他们忘了跟你提,系统还是没有正确运作!
提到需求时最好让客户自己说。仔细听,注意系统需要做什么,稍后再整理出系统该如何做这些事。
有时,客户甚至不知道他们真正要什么!因此你必须问客户问题,以便在决定系统确实应该做什么之前整理出他们的需求。然后,你可以开始思考客户要求与期望之外的事。
取得好的需求的最佳方式就是了解系统应该做什么。
一项需求就是客户要应用程序做的一件事?
事实上,需求远超过客户想要的事——虽然那是个好起点。从找出客户想要或期望的事以及他们认为系统应该为他们做什么开始。然而,还有更多事要做...
记住,即使问题发生了,多数人还是期望事情能运作。因此你必须有心理准备某些事可能会发生错误,从而增加解决这些问题的需求。一组需求可不仅是客户告诉你的事,还要确保系统总是能运作,甚至是在不寻常或出乎意料的环境与使用情况下。
客户会怎样使用系统以及会出什么错误,那是他们的问题,而不是我的吧?
系统是为实现客户目标所需的每一件事。你必须确保应用程序像客户想要的那样运行,即使那不是你使用它的方式。这表示你必须真的了解系统要做什么以及客户将如何使用它。事实上,你为客户做的系统能成功运作的唯一方式,就是比他们更了解系统并且确切了解系统要做的事。接着,你可以预先考虑可能的问题,希望在用户知道某事可能出错之前解决它们。
最后,创建需求列表(不必太花哨)。
在此阶段别担心你的程序代码——只要确认你知道系统该做什么