前一篇文章我谈到了需求分析,如何做出能满足用户需求的软件,最首先和最关键的是要学会需求分析,那么我们的用户在哪里呢?这篇文章就要来说说典型用户和典型场景。

      在产品开发的过程中,我们经常需要描述一些典型的用户,以前大家通常是以一些抽象的名词来表示用户,如“家用电脑初学者”,“经验丰富的系统管理员”,现在我们建议用一个“典型用户”来代表。“典型用户”可以不是专业出身的程序员,他们有自己的主业,编程只是一个工具,他们的主要目的就是用工具吧事情搞定就行了,他们很喜欢代码示例,也不特别关心程序效能。怎样才能定义典型用户呢?我们首先要定义用户的角色。正如戏剧中有正面和反面的角色,软件系统中也有受欢迎的和不受欢迎的典型用户。如果用户有不同的安全需求,切记要定义不同的角色来适应这些需求。

     那么当我们有了典型用户以后,我们还需要决定每个典型用户的目标:她使用系统需要达到什么目的。对于每一个目标,列出达到目标所必须经历的过程,这就是场景,也可以叫故事。但是需要注意的是,有些场景描述了成功的结果,有些场景描述了失败的结果。用户和系统有成百上千种可能的交互情况,所以写场景时要有针对性。那么我们该如何写场景呢?首先针对每一个场景,设计一个场景入口;接着描述典型用户在这个场景中所处的内部和外部环境(内部环境指心理因素等);然后给场景划分优先级,按优先级排序写场景。

     有了场景以后,就由架构设计师和各个模块的负责人一起,沿着子系统/模块的所属关系把场景划分开。不同的任务将会把一个场景编织起来,虽然有多个开发者参与这项工作,但是应该有一个开发者对整个场景负责。得到开发任务后,我们就可以创建和分配测试任务。

     需求分析工具中,有一种很常用的工具:用例。和典型人物、典型场景的方法类似。用例有这样一些基本元素:

    1.标题:描述这个用例要达到的目标。

    2.角色(Actor):和软件系统交互的角色,例如用户,其他实体,甚至时间(在描述一些和时间相关的场景时有用)

    3.主要成功场景(Main Success Scenario):一系列步骤描述角色是怎样和系统交互,从而达到目标的。

    4.步骤(Step):描述每一步的交互。

    5.扩展场景(Extension):描述一些扩展的交互,例如一些意外情况。