举一小例,客户要求公司人员去北京开会,会议通知为某月某日,几点到几点的会议,地址某某,联系人某某。有了这些信息是否足够?当然足够了,因为公司人员几点出发,坐飞机还是火车,哪个班次,几点到北京,住哪个宾馆,多少钱的食宿等等琐碎的事情,公司自会分析推理出来。用不着在会议说明中详细规定。一切的事情都以满足基本的需求(准时,顺利的开会)为准则,其他的客户不会多关心的。
当然,真实的应用系统和这个有点区别,那就是用户也可能过问,或者注重这些细节。但大概来说,客户希望软件公司表现的更专业,想的比自己更多,提出最优的和可供选择的各种方案,而不是对他们亦步亦趋,事无巨细都要自己操心。如果是那样,客户很快就会失去耐心,对软件公司的专业性表示怀疑。
我们以系统的登录模块来进一步说明需求分析的不同层次。
初级的需求分析。频繁的跟客户沟通,登录要怎么做,页面怎么布局,标题怎么写,登录成功了怎么办,登录失败了怎么办,显示什么样的消息,等等。这些所有的都要问客户。自己变成了一个纯粹的记录者。
中级的需求分析。跟客户沟通,登录要怎么做,用什么验证方式。然后自己把页面布局,登录成功和失败的各种消息给出建议,让客户批准。
高级的需求分析。分析整个系统的数据敏感性,系统的用户类型,系统与周边系统的关联,硬件环境的状况,然后告诉客户,要不要开发登录模块,选择哪种登录方式,以及为什么要这样做。
在这里,根是“系统中数据的敏感性和用户类型”,枝干是“登录验证方式”,树叶是“页面设计,消息定义等”。做需求越接近根部,越能给客户带来价值,也越能接近“食物链”的上端。