不同的读者对文档的阅读需求是不同的,他们关注的信息是不同的。我见过了很多次需求评审的失败(如果做好需求评审我会另外再撰文描述),总结下来我认为和需求描述没有区分读者群是很有关系的。针对上述的4种分类,我们具体的来分析一下每类读者的特点:
  (1) 客户与用户业务高层
  他们关心的企业是系统的目标性需求,关心的是系统总体的功能框架,关心的是系统解决了哪些管理问题,对具体的需求是不关心的,所以给他们阅读的文档应该是从总体上来描述,要高度抽象。由于他们的工作很忙,很难有比较长的时间来读这些材料,所以要简短明了,能够用1页纸说明问题的要不要用2页纸,而且一般都要给高层进行需求汇报,需要配上语言说明,因此采用PowerPiont片子也成了一种常用的方法,讲解需求与讨论一般应掌握不要超过1小时。需求人员常犯的毛病是过多地关注了企业的细节性需求,而忽略系统的目标性需求,所以在安排需求获取的步骤上、需求报告的编写上往往没有抓住企业高层关心的问题、没有抓住根本性的问题,在给企业的高层汇报时当然很难通过评审。
  (2)用户的中层管理人员与具体人员
  企业的中层管理人员关注的是企业的局部需求,他们要求对自己的负责的局部系统能够有总体的了解,能够和其他的子系统衔接的很好,业务流程很流畅,覆盖了自己需要的所有业务流程,能够通过系统起到控制作用行了。具体的操作人员更关心自己的的哪些活动是否在系统中都能处理,软件是否可以很容易地操作,他们关注的焦点更具体,要求更直观。所以对这类的读者可以通过比较详细的文档来描述需求了,当然应该以他们习惯的思维方式来描述,不能从开发人员的角度来描述。我看到过很多几百页的需求文档给用户去阅读、去评审,结果要么用户不置可否,要么直接讲看不懂,为什么呢?一是开发人员在文档中分子系统、分模块、分功能点一层深入下去描述,不符合用户的思维习惯,他们希望能够从业务流程、业务活动的角度来考虑问题,而不是功能;二是太多了,用户也没有时间静下心来去消化、吸收如此多的文档,需求毕竟不是小说,能够那么吸引读者。
  (3)用户IT主管与开发人员,包括设计人员、编码人员、同行的专家
  大多数分析人员可能擅长的是些写这类的文档了,往往也是那这类的文档给所有的读者看,其问题我们上边都说了,这里我们不赘述了。
  需要注意的是在描述需求时候传统的做法是以功能为主线,来展开描述,实际上如果是以数据为主线来描述需求也是一种很好的办法,在我们上面谈到的五元组中,从数据的角度来分析系统可以更容易实现向OOA、OOD的切换。
  (4) 项目管理人员:包括项目经理、质量保证人员、测试人员、需求管理员、配置管理员、计划人员等等
  把拿给开发人员看的需求文档给管理人员看,这也是分析人员常犯的毛病。管理人员实际上关心的是需求列表。
  在此基础上项目经理、质量保证人员可以据此来进入项目策划过程,测试人员可据此进入测试策划过程,需求管理员、配置管理员可以识别配置项制定相关的活动计划。没有这张表管理人员很难高效地开展他们的管理活动,也谈不到基本的需求复用了。在上述的表中,需求的优先级是很重要的一列,对项目经理进行项目管理的平衡决策是很重要的,实际上需求的优先级可能比需求本身更重要。
  3 需求描述的表示技巧
  上面我们谈到了,需求文档是人与人之间交互的文档,是不同类型的人之间交互的文档,因此需求文档的可读性是一个很重要的方面,为了提高文档的可读性可以借鉴下面的一些做法:
  在文档的描述中,适当运用链接,增强文档的可读性;
  多用穷举的方式,以便于发现遗漏的需求;
  通过适当的换行来提高可读性 ;
  采用黑体、斜体、下划线、颜色等多种方式来突出重要内容;
  定义标准的术语,以减少二义性,减少文档的页数;
  在功能需求的描述中,对于类似的、统一的功能可以单独地进行详细描述,其他地方进行引用,或做为术语进行定义,以简化文档,减少重复。如;
  · 录入功能
  · 打印功能
  · 条件查询功能
  · 排序功能等等
  结 语
  尽管你按照上述的方法去做了,也不要期望能够编写出一份能体现需求应具备的所有特性的文档,无论你如何去细化、分析、评论和优化需求,都不可能达到完美,但是你能够做到“可接受”,写一份客户、用户、开发人员、管理人员都认可的一份需求,而不是完美的需求。