《敏捷软件开发:用户故事实战》—角色建模步骤
角色建模步骤
我们将使用以下步骤来识别和选择有效的用户角色。
l 通过头脑风暴,创建初始的用户角色集合。
l 整理初始的角色集合。
l 聚合角色。
l 细化角色。
下面将讨论每一个步骤。
通过头脑风暴,创建初始的用户角色集合
为了识别用户角色,客户和尽可能多的开发人员可以在一个房间里,房间里有一个大桌子或者一面墙,这样他们可以用胶带或者钉子来固定卡片进行记录。理想的情况下,在启动项目时团队全体成员聚集在一起参与用户角色建模,但是这样做并不是必须的。只要一定数量的开发人员和客户共同参与,会议往往就会成功。
每个参会者从桌子中间的一堆卡片中抓取一叠卡片。(即使打算用电子方式存储用户角色,也应该从纸质卡片上开始记录。) 会议开始,每个人都在卡片上先写下角色名字,然后把卡片放在桌子上,或者把卡片粘在或者钉在墙上。
当一个新的角色卡片被放置时,卡片作者只是说出这个新角色的名字,不做其他任何别的事情。因为这是一个头脑风暴的会议,所以不会对卡片进行讨论或者对角色进行评估。相反,每个人都尽其所能的写出角色卡片。不需要大家轮流写出新角色,你不需要绕着桌子转询问别人是否有新角色。每一个参与者只要想到一个新角色,就写在一张卡片上。
在头脑风暴过程中,房间里充满了钢笔在卡片上书写的声音,偶尔会伴随着有人阅读角色的名字,并放置一张新的角色卡片。这样继续下去直到进展停滞,所有参与者们都很难想出新的角色。尽管这时你可能还没有确定所有的角色,但其实已经足够接近了。这样的头脑风暴会议很少会超过15分钟。
一个用户角色就是一个用户
在对项目的角色进行头脑风暴时,要坚持“已识别的角色代表的是单一用户”。例如,对于BigMoneyJobs项目,人们可能会忍不住写一些故事,比如“公司可以发布职位空缺”。然而,由于“公司”是不能使用软件的,所以如果这个故事的用户不是“公司”,而是指一个独立的个体角色,那么故事就会编写得更好。
整理初始的角色集合
一旦团队完成角色识别,就准备整理识别出来的角色。让写着角色的卡片在桌子或者墙上移动,通过它们之间的位置来表明角色之间的关系。角色有互相重叠的,相应的角色卡片也互相重叠覆盖放置。如果角色重叠了一点,那么卡片就稍微重叠覆盖一点。如果角色完全重叠,那么卡片则完全重叠覆盖。图3.1显示了一个示例。
图3.1 在桌子上整理用户角色卡片
图3.1显示了“大学毕业生”和“初次求职者”的角色卡片高度重叠覆盖,因为他们的角色有明显的重叠。其他代表使用该网站寻找工作机会人的角色卡片也有较少的重叠覆盖。“监视者”角色卡片与其他的角色卡片只是略有重叠覆盖,因为这个角色指的是那些在当前工作中相对快乐的人,但是他们同时喜欢睁大眼睛关注新的工作机会。
在图3.1中,“求职者”角色卡片的右边有“职位发布者”“招聘人员”以及“简历浏览者”的角色卡片。“招聘人员”角色卡片重叠覆盖了“职位发布者”和“简历浏览者”角色卡片,因为招聘人员既会发布职位,又会浏览简历。图3.1还展示了“管理员”角色卡片,这个角色代表了支持BigMoneyJobs网站系统运行的内部用户。
系统角色
在定义用户角色时,应该尽可能地选择定义 “人”类而不是“系统”类的用户角色。如果你认为“系统”类的角色会有帮助,那就偶尔找出一个非人类的系统用户角色(non-human user role)。然而,确定用户角色的目的是确保我们能够真正地认真考虑用户,并在新的软件系统中必须绝对满足用户角色的需求。我们不需要为系统中所有可能的用户定义用户角色,但是我们需要为那些能够影响项目成败的“用户”来定义角色。由于其他外部系统很少购买我们的系统,所以它们很少能够影响我们项目的成败。当然,也有例外,如果你觉得添加一个非人类用户角色可以帮助你思考系统,那就添加这个非人类用户角色。
聚合角色
当角色卡片被整理分组之后,应该尝试对角色卡片进行聚合简洁化处理。首先从完全重叠覆盖的卡片开始。重叠覆盖的卡片作者们分别描述各自所写角色名称的含义。经过一个简短的讨论后,团队决定重叠覆盖的角色是否是等同的。如果可以相互等同,这些角色要么合并为一个角色(可以根据两个初始角色给合并后的角色命名),要么把初始角色卡片中的一个撕掉。
在图3.1中,“大学毕业生”和“初次求职者”角色被显示为高度重叠覆盖。该团队决定撕掉大学毕业生角色卡片,因为任何关于类似“大学毕业生”的用户角色的故事都与“初次求职者”的故事完全相同。尽管“初次求职者”“被解雇的受害者”“工作地点搜索者”和“求职者”有着明显的重叠覆盖,但团队认为每个角色卡片都代表一个重要的群体,他们都会有重要但不易察觉的不同目标来决定他们如何使用BigMoneyJobs网站。
当查看图3.1的右侧时,团队认为将“职位发布者”和“简历浏览者”角***分开来没有什么价值。他们决定,“招聘人员”这一角色将把那两个角色充分覆盖,所以把那两个角色的卡片都撕掉。然而,团队认为“内部招聘人员”(为特定公司工作)和“外部招聘人员”(为任何公司寻找合适的求职者)之间存在差异。他们为“内部招聘人员”和“外部招聘人员”创建了新的角色,并将这些角色视为“招聘人员”角色的特殊版本。
除了聚合重叠的角色之外,团队还把那些对系统成功并不重要的任何其他角色卡片都撕掉。例如,“监视者”角色卡片代表的是关注就业市场的人。一名监视者可能在三年内都不会更换工作。如果不关注这类监视者用户角色,BigMoneyJob网站可能也会运行良好。团队决定,应该把重点放在那些对公司成功至关重要的角色上,比如“求职者”和“招聘人员”角色。
在团队聚合完成这些卡片之后,它们会被排在桌子或墙上以显示角色之间的关系。图3.2显示了BigMoneyJobs角色卡片众多可能的布局之一。在这里的通用角色,如“求职者”或者“招聘人员”,被放在该类专门角色版本的最上面。或者,角色卡片可以采用其他方式堆积或放置,用来展示团队认为的角色间任何重要的关系。
图3.2 聚合后的角色卡片
细化角色
一旦我们聚合好角色,对角色之间的关系有了基本的了解,就可以通过定义每个角色的属性来对这些角色进行建模。角色属性是属于同一角色的用户的事实或者有用的信息。任何将一个角色与另一个角***别开来的信息都可以用作该角色的属性。以下是在准备角色建模时值得考虑的一些属性。
l 用户使用软件的频率。
l 用户在这个专业领域的专业水平。
l 用户对计算机和软件的熟练程度。
l 用户对正在开发的软件的熟练程度。
l 用户使用软件的目的。一些用户关心易用性,其他用户更喜欢丰富的体验,等等。
除了这些标准属性之外,你还应该考虑正在构建的软件特点,并查看是否有任何可能在描述用户时有用的属性。例如,对于BigMoneyJobs网站,你可能想要考虑的是,某个用户角色是在寻找兼职还是全职工作。
为角色识别出有趣的属性之后,请在角色卡片上写下注释。写完后,可以将角色卡片挂在团队的公共区域,这样它们就可以用来提示团队。图3.3中展示了一个用户角色卡片的示例。
图3.3 一个用户角色卡片示例
- 点赞
- 收藏
- 关注作者
评论(0)