Elaine——一种以人物角色驱动探索架构重要型需求的方法2016-03-19 infoq Jane Cleland-Huang从涉众那里获得的需求,常常只描述了系统的预期功能,而不涉及性能、可靠性、可移植性和可用性等系统质量方面的需求。人们常常假定系统会按预期标准运行,而忽视将这些非功能性目标写入需求。不幸的是,涉众和开发者们会以为他们已经达成了共识,而实际上却有着不同的期望。若不能在系统设计之前充分理解这些质量上的需求,那么在系统交付之后,很可能出现涉众因系统不符合期望而不满意的状况。而且,在后期针对这些关键性需求进行重构,要付出高昂的代价。
存在重要架构权衡的项目
下面,我把我们最近用来解决这一问题的简单方法分享给大家。我们有一个叫TraceLab的项目。在项目早期阶段,我们意识到很难设计出一个能够满足所有涉众关心的问题的架构方案。TraceLab提供了一个虚拟的实验室环境,研究者们可以在这个环境中设计、执行、评估和交流实证软件工程实验(empirical software engineering experiments)。该项目的涉众要求一个高性能、多平台的方案,而且要能把用不同语言编写的可执行组件动态地载入到即插即用的环境中——保守地说,这是一个具有挑战性的需求。为了设计一个可行的方案,我们开发了一个以人物素描(persona sketch)为中心的方法流程
1。这些人物素描有助于我们显式地获取各种涉众对系统质量的需求,并设计和评估要满足这些需求的架构方案。我们在另一个工业合作项目中也运用了同样的方法。在该项目中,我们设计并原型化了一个全企业范围的机电一体化追溯系统。这个系统采用了信息检索方法,使工程师们可以在多个分布式第三方case工具之间搜索相关的工件。比如,无论是从事热动力模型设计的工程师,还是从事代码开发的程序员,都可以通过打开集成开发环境(IDE)中的插件来查询与他们的模型中某个元素相关的需求列表(可能是存放在IBM Rational DOORS工具里)。因此,这个热动力系统需要有一个底层的追溯引擎(可以从第三方case工具获取数据)和一个图形化的用户界面插件(提供交互功能),这样工程师就可以发出追溯查询并查看结果了。我们首先研究了从推到拉、从集中式到分布式的各种方案,然后通过一系列人物素描对这些方案进行了验证。发挥人物素描的作用人物角色(persona)代表虚构的人物。在人机交互(HCI)领域,人物角色被用来支持用户交互设计。在一个典型的案例中,HCI团队先对潜在用户进行调查研究,再对用户进行分组,然后设计、评估、确定一组人物角色。这些人物角色提供了一个透镜,使得与预期工作相关的看法和环境更加突出2。由于我们的项目采用敏捷开发,我们无法承受在先期就投入数周乃至数月的时间来创建人物角色,因此,我们开展了一系列头脑风暴活动来创建和验证人物角色,然后通过工业合作伙伴的反馈意见来确认这些角色的确是有效的。

图1 一个精通架构的人物角色。这个人物角色栩栩如生地描绘了一个典型的用户代表,它以用户故事的形式描述了质量需求。