基于用户体验的敏捷软件开发流程
2018-09-13马兴敏宿媛媛陈燕
马兴敏 宿媛媛 陈燕
摘要:随着软件产品开发复杂度日益增长,越来越多的软件公司开始采用ASD方法。ASD方法虽能高效高质地完成产品需求开发,但无法保证产品具有最佳的用户体验。文章针对ASD方法这一缺陷,通过引入以用户为中心的用户体验设计相关理论,完善ASD流程,在不降低效率和质量的前提下,提高产品的用户体验。
关键词:用户体验;ASD; Scrum流程
1 ASD概述
近年来,敏捷软件开发(Agile Software Development,ASD)方法被越来越多的软件公司采用,来应对系统开发过程中日益增长的复杂度。ASD能够保证快速且高质量地实现用户需求,但是用户对产品的情感反映被严重忽略,即不能保证产品与用户间建立良好的情感关联。
与此同时,用户体验理念开始逐渐被设计领域从业者所接受,并被不断优化演进。1988年设计理论专家唐纳德.诺曼[1]提出以用户为中心的设计(User-Centered Design,UCD)理念,自此这种思维方式逐渐成为用户体验设计领域的主流趋势。UCD采用更加人性化的方法,使用户参与甚至主导产品或系统的设计过程,此种思维方式极大地增强了用户体验。
本文将以用户为中心的用户体验设计引入敏捷开发方法,并在此基础上优化了敏捷开发流程,一定程度上改善了上述ASD方法面临的问题,获得了更好的用户体验。
2 以用户为中心的用户体验模型
用户体验指用户在使用特定的产品、系统或服务时的态度和情感。一个好的用户体验不仅能够提升客户的忠诚度及转化率,而且可以提高公司运作效率及品牌影响力。但是用户体验具有主观性,这也正是用户体验设计的难点所在。基于此,杰西·加瑞特[2]在2000年提出了用户体验设计模型。这个模型包含5个要素:战略、范围、结构、框架、表现。
其中,战略层主要用于界定用户群、用户需求及目标;范围层主要用于将需求分类、分级,转化为对应的功能和内容;结构层主要任务是创建概念模型;框架层主要用于确定详细的界面外观、导航和信息设计;表现层将内容、功能和美学汇集到一起产生最终设计。该模型中的上层要素与下层要素具有双向约束,从而在整体上保持一致性。
用户体验模型要求在模型的每一个层次中都要把用户列入考虑范围,让用户由参与者转变为共同设计者。这种理念最大的优点是根据用户会如何使用产品来进行设计的优化,而不是强迫用户改变使用习惯来适应产品。
3 ASD流程
ASD是从1990年开始逐渐引起广泛关注的一系列新型轻量级软件开发方法,其最初目的是为了应对软件开发过程中业务需求不明确或频繁变化的问题[3]。ASD包含了多个具体的开发方法。本文主要研究的是Scmm开发流程,如图1所示。Scrum是ASD中最富有成效且应用范围最广的几种方法学之一,推崇限时迭代、持续集成和发布[4]。
Sprint是Scrum流程中的基本开发单元,每一个Sprint周期都以一个Sprint计划会议作为开始,以一个Sprint演示和总结会议作为结束,然后迭代进行下一个Sprint周期,直到实现所有的业务需求。具体的流程步骤如下。
(1)通过Sprint计划会议从产品需求列表(ProductBacklog)中选择合适的需求作为本次Spring周期的目标(Sprint Backlog)。
(2)通过每日站立会议(Daily Scrum Meeting)总结昨天的工作、计划今天的任务并汇总风险问题。
(3)通过单元测试、持续集成、版本管理等进行代码的开发测试工作。
(4)通过Sprint演示和总结会议向客户展示已完成工作,并总结此次Sprint周期的工作。
(5)重復步骤(1)一(4),直到实现所有产品需求。
4 基于用户体验的ASD流程
Scrum敏捷开发流程通过迭代的Sprint周期及一系列高效率的会议,保证了在软件开发过程中能够迅速应对用户模糊及多变的需求。但是,Scrum仅要求用户参与到软件开发流程中,并没有一个有效的机制确保产品具有良好的用户体验。
4.1 引入用户体验设计模型
针对上述问题,本文引入以用户为中心的用户体验设计模型,以保证产品具有良好的用户体验。
将Scrum敏捷开发以市场和需求双因素驱动的特性调整为以用户体验、市场、需求三因素驱动,以保证产品具有良好的用户体验。用户体验设计模型要求自下而上地建设,因此可将模型的5个层次按相应次序放到Scrum流程中,具体分析如下。
首先是战略层和范围层。这两层主要任务是明确产品目标及需求。开发团队需要在开发阶段之前确定好产品目标及用户需求,因此这两层的建设应保证在Sprint计划会议之前完成。
其次是结构层。这一层的主要任务是进行交互设计和信息架构。这一层面应在确定Sprint Backlog之后,但应当在进行实际开发测试之前,以便接下来的开发测试有合适的概念模型作为参考依据。
最后是框架层和表现层。这两层的主要任务是进行信息设计、界面和导航设计。在经过前面3个层面的建设后,团队只需要在搭建好的架构及交互框架下进行功能或信息的展示及视觉的优化,因此这一层面应当在Sprint开发测试阶段进行。
通过将以用户为中心的用户体验设计模型融入Scrum流程中,保证了所有的用户体验要素均被关注且合理配置,极大地弥补了传统Scrum敏捷开发流程对用户体验关注不够的缺陷。
4.2 流程描述
由以上分析可得基于用户体验的ASD流程,如图2所示。
流程步骤描述如下。
(1)通过战略层和范围层的建设获取产品目标及需求,并由相关人员以此为基础对产品需求列表进行完善。
(2)通过Sprint计划会议从产品需求列表中选择合适需求作为本次Spring周期的目标。
(3)通过结构层建设确定每个Sprint Backlog的概念模型,用于表示产品交互特性或信息展示结构。
(4)通过每日站立会议总结昨天的工作、计划今天的任务、调整偏离结构层概念模型的设计,并汇总问题风险。
(5)通过单元测试、持续集成、版本管理等进行代码的开发测试及框架层与表现层的建设工作,并通过收集分析用户的反馈优化框架层与表现层。
(6)通过Sprint演示和总结会议向客户展示已完成工作,并总结此次Sprint周期的工作。
(7)重复步骤(1)—(6),直到实现所有产品需求。
5 结语
通过引入以用户为中心的用户体验设计理念,本文对传统的敏捷开发流程进行了研究及优化,提出了新型的基于用户体验的敏捷开发流程,解决了传统敏捷开发方法忽略用户体验的问题。在以后的项目开发过程中对所提出流程进一步完善,是下一步研究的重点。
[参考文献]
[1]唐纳德·诺曼.设计心理学[M].梅琼,译北京:中信出版社,2005.
[2]杰西·加瑞特.用户体验的要素:以用户为中心的Web设计[M].范晓燕,译.北京:机械工业出版社,2008.
[3]赵剑冬,林健.敏捷方法在软件项目开发中的实践[J].计算机工程与设计,2007(12):2272-2274.
[4]施瓦伯.Scrum敏捷项目管理[M].李国彪,译北京:清华大学出版社,2007.