需求必须在你开始构造一个事物前,就要想好了。这本书前面所介绍的大部分就是如何才能知道这些需求,并且保证这些需求是正确的。
书上的图很简洁明了的告诉我们,需求分析与系统分析在开发过程中的关系。在开发的前期,或者说是准备时期,需求活动占主导地位,我们需要对现有的资料进行大量细致的分析,要弄明白我们的产品是要做什么、需要具备怎样的品质、有没有其他的限制条件等等。而到了中后期,需求被确定下来之后,系统方面的工作就逐渐占据了主要地位。很多软件的失败,都是错在了前期的需求分析中,所以有一个正确的需求,是很重要的。
需求大致分为功能性需求和非功能性需求,还有限制条件。功能性需求,顾名思义,就是为了向用户提供功能,产品必须执行的动作,是一个产品最基本的硬性指标。非功能性需求则是功能性需求的一个提升,它对产品的品质有了更高的要求,不仅仅只满足于实现基本功能。而限制条件就是全局性的需求,适用于整个产品。而需求分析说明文档也有很多的规律可循。
项目开启的时候,我们需要搞清楚很多问题,就基本的就是产品目标,我们开发这个产品是用来做什么的。这就涉及到一个产品目标的问题。产品目标描述了构建这个产品的原因,那么我们不仅要给出解决问题的方法,我们还要让客户知道,我们的优势是什么,我们能为你们提供怎样的便利。这个产品会做哪些有助于我们工作或者生活的事。产品目标是最高层次的需求,是业务上的需求,但有的时候产品目标又是很模糊的。比如客户给了我们一个问题的描述,除了问题的解决,我们还要考虑优势,和这个目标的可行性。
最终为项目付钱的是顾客,所以了解他们的真实想法是我们必须要做的。了解他们想要什么,理解他们的问题,理解他们的期望,知道对用户来说,什么是可接受的什么是不可接受的,他们才是这个软件的使用者。我们要开发软件,就一定要清楚了解他们的喜好,不管是在界面方面,还是在操作流程方面,都要站在他们的角度考虑问题,这样才能做出真正实用的,起码顾客看见了会用的软件。
定期的开展工作小组的头脑风暴是个很好的分析需求的方法,大家坐在一起,每个人都把自己的想法说出来,然后大家一起来分析可行性,也可以借助投票等等的方式来进行表决。这样也可以弥补一个人想法的局限性,使需求更加充分完整。