写点什么

敏捷你的用户界面开发

  • 2007-05-14
  • 本文字数:3514 字

    阅读完需:约 12 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

复杂用户界面开发(本文用作 UI 开发),为敏捷开发提供了某些独特的挑战。与那些功能大部分是自动运行业务规则或计算薪水的项目不同,因为由用户培训或生产力缺失引起的各种问题,UI 开发项目往往不能承受剧烈的变动,尤其是那些经常被使用的应用程序(如呼叫中心、E-mail 阅读器或数据登记系统等)。

许多敏捷项目通过“下次迭代再修改”的方法防止做出错误的决定。它的思想是快速地失败,却仍然相对便宜。但是,UI 开发项目的最终用户需要经常进行关于系统使用的充分培训,因此就用户体验来说,不能容忍巨大的改变。

用户体验方法,如交互式设计,鼓励更多的预先设计过程,用来研究和捕捉用户目标,试图在开发之前最优化软件工作流。这有点与敏捷方法相冲突——对于重要的(non-trivial)项目预先分析和设计往往需要花费几个月的时间,随着项目的开展,用户的目标可能会转变。

但是,面对限制用户界面改变的程度,以及早期迭代交付不合适用户界面的高风险,敏捷开发者打算做什么呢?

UI 设计的敏捷方法

这个问题的解决办法需要快速地检查一下敏捷基础。很多敏捷开发的实践是朝减小风险和降低变更成本的方向去调整。在 UI 开发时,因为考虑到最终用户的再培训和生产率的降低,增量改变和部署的成本比我们期望的高。我们同样也会有初始交付错误用户界面的风险,但是这受限于我们可以在多大程度上改变它。

注意到这些,降低初始交付“离题”用户界面风险的方法,将会在正确的方向上给我们开个好头。如果我们一开始就得到正确的用户界面,那么在随后迭代中我们所做的改变,对用户几乎不会造成伤害,兼具更低的部署和培训成本。通过理解最重要和公共的用户目标,完成支持这些目标的初始界面并根据它有效地导航、适当地反馈、最小化偏差,我们将有获得正确设计的最佳机会。与更详细的需求不同,随着项目的进展,用户目标会倾向于更加稳定。

保持敏捷的精神,理想上来说,我们需要这个方法让我们可以快速地获得用户反馈,快速地迭代用户界面,指出在哪处我们可以放心。这样,我们的初始开发成果将交付用户所需的东西。

敏捷交互设计

交互设计是通过研究软件目标用户的领域和环境,关注于创造最优用户体验的方法。传统方式,这是由预先研究和分析用户角色和目标完成的,通过辨识系统主要用户,他们需要什么,接下来考虑次要因素(如重复使用,对错误的敏感性等等)。

更敏捷的交互设计迭代自旋将会是:先对用户目标进行“刚刚足够”的研究,然后猜测软件将如何工作,最后用真实的用户去测试它。尽管不彻底,它允许快速地转变和在过程早期进行验证,而不是更长的预先分析。

简而言之,只要不阻止开发尽可能早的开始,为更好的理解用户目标而进行一些起码的预先设计还是有显著价值的。根据团队的组成和哲学,可以采用以下形式之一:

  • 在开发工作之前,UCD 工作被执行一个迭代。设计人员与用户和开发人员一起紧密工作,进行“刚刚足够”的分析,以提供扎实的引导。在项目中,来自最终用户和用户的反馈将扮演比绝大多数预先 UCD 工作更重要的角色。
  • UCD 工作与开发结合进行。与上类似,但是设计者与开发者并行工作,可能以项目开始时的初始用户研究成果作为开始。设计者不断地通知团队用户反馈,并改变设计。这实际经常发生在没有正式 UCD 人员的团队中。一个潜在的折中是,在迭代的中期发现新的流水线软件工作流方式,可能要求返工系统的主要元素,降低团队整体速度。

角色和目标

一种发现用户目标的快速技术是使用“角色”——即可能使用系统的真实人群的大体概要,他们的任务是什么,甚至他们的感情观。例如,就某个邮件系统来说,我们可能有一个这样的角色:

John 是一位就职于某财富 500 强公司的忙碌执行官。他不十分擅长电脑,但使用电子邮件作为他的主要应用程序。John 每天大约收到 100 封邮件,通常发送不到 10 封。他不喜欢使用软件,更愿意亲自给他的同事打电话。

一个完整的角色描述可能会更详细,但是它是为了使用而非为了给用户“定型”,角色是一个有某种目标的用户的特定实例,描绘这个你所期望的最终用户是有代表性的。根据系统类型,你可能需要几个角色代表不同种类的用户。

一旦你定义了角色,你就可以开始分析角色目标的种类。目标实际更接近于他们期望出现的产出,而不是他们要执行的任务。目标与任务比较的例子:

目标:我想与我的同事通宵达旦弄明白过去的谈话。
任务:我需要检查我的收件箱,通过联络查看过去的谈话。

最终,你需要提出明确的任务来帮助你的用户,以他的偏好和需要,达到他的目标。通过由目标开始,你可以将它们作为参考,考虑不同的技术可行性。仅仅因为今天用户执行某种任务,并不意味着那些是达到他们目标最简单或最有效的方式。

关于角色的更详细说明,可以参考 Alan Cooper 和 Robert Reimann 的著作 About Face 2.0 - 交互设计精髓

纸上原型

我们可以用来快速探索界面想法的工具之一是纸上原型法。它创建一组被画出或打印出来的伪用户界面,然后与用户一起验证它们。测试通过由一个工具扮演“电脑”,当用户“点击”纸上的不同区域时,作为回应,加入其它纸上图示来示范功能。 有一本整本专门讨论这个主题的书籍——纸上原型法,作者是 Carol Snyder,它是这项技术及其权衡利弊的优秀参考书籍。

纸上原型的主要优点:

  • 它们很容易创建——任何人只要纸和铅笔就可以做。
  • 它们经常能发现更加正式的原型不能发现的交互问题,因为用户可以更少的被观感问题分心。
  • 它们显然是要被抛弃的:你不能把一页纸作为产品,不管压力多大。

图 1 为使用而画的纸上原型

其他原型技术

尽管纸上原型法的好处是可被用于快速反馈,但有时它不太实用。如,如果你有远程客户,纸上原型会话即使不是不可能,那也会变得困难。

一种可替换的技术是使用 HTML 编辑器、表现层软件或专用工具,将数码照片、扫描纸张、白板画链接这些进入一个交互式的模型。这种方法仍然具有使用纸张建模的优点,但允许发送拷贝给远程用户,或使用电话会议或 webinar 交互式讨论它们。

图 2 一个简单的 html 原型 另一个选择是为每个原型屏幕创建主干 HTML 页面,只有描述它们目的的文字,以及屏幕上需要动作的链接。Web 设计者称这个方法是“接线框”。

作为最后一招,你还可以使用如 VB 或你喜爱开发语言的 IDE 创建一个原型。很多这样的产品都具有快速原型特性,创建对话框和屏幕而无需任何编程。当然,主要缺点是,这些原型看上去就像是“成品”或与目标应用程序技术非常接近。正因为看上去真实,最终用户可能倾向于讨论实现细节,而非工作流(比如“这个按钮难道不能是左对齐的吗?它看上去真的很难看”)。

“穿刺(Spike)”实现

就某些项目而言,你可能没法通过简单地作图来交流复杂的界面或组件。此时,创建一个“穿刺(spike)”实现会很有用。“穿刺(spike)”是功能的狭长切片,端到端的,类似将长钉敲入地面。

例如,如果你在构建新类型的日历组件或梦幻动画工具条,那么非常有必要花费几天创建一些与真实事物相近的事物,这样你可以示范精巧的行为以获得反馈。

总结

通常,敏捷技术在后台系统和非琐碎用户界面时工作非常好。但是,还是有很多来自其它方法的有用技术可以带来显著的价值。尤其是,来自交互设计的技术,在为编码而投入时间之前,帮助设计和测试用户界面想法。当然也是在这些系统产品化之前,界面变化可能受培训和生产力因素制约:

  • 通过使用角色和目标,开发者可以得到早期的感觉,在设计软件时可以进行权衡。
  • 原型技术,由纸上原型到交互式电子原型可以提供快速迭代和低成本测试用户界面的方法。
  • 最后,穿刺(spike)解决方案,在项目用户界面需要比简单原型进行更精细或复杂的交流时非常有用。通过实现功能的小切片,示范关键用户界面概念,一个穿刺(spike)可以确保与用户清晰的交流。

结合用户体验设计技术与敏捷开发过程,可以创建强大的优势互补,这将产生被最终用户喜爱的更好软件,同时交付业已为人称道的敏捷商业价值。

查看英文原文: Agile User Interface Development - - - - - -

作者简介:Dave Churchville 拥有 15 年软件开发经验,管理范围包括:从财富 500 强公司到小的项目。他从 2000 年开始使用敏捷方法进行工作,是 ExtremePlanner 软件公司的创始人,该公司开发帮助分布式敏捷软件团队更有效地进行沟通和协作的开发工具。Dave 在 http://www.extremeplanner.com/blog 撰写关于敏捷开发的主题。 译者简介:胡键,自 2000 年西安交通大学硕士毕业后一直从事软件开发。2002 年开始使用 Java,在项目开发中经常采用 OpenSource 工具,如 Ant、Maven、Hibernate、Struts 等,目前正在研究信息集成方面的规范和技术。可以通过 jianhgreat AT hotmail.com 与他联系,或访问博客: http://foxgem.javaeye.com/ 。与 InfoQ 中文站分享内容,请邮件至 china-editorial@infoq.com

2007-05-14 03:091302
用户头像

发布了 255 篇内容, 共 55.3 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

ElasticSearch + Kibana for Kubernetes 硬气功实践 2

CTO技术共享

elasticsearch 个人成长 10月月更

外包和自研应该选择呢?教你三招选出最合适自己的平台

千锋IT教育

ERP外贸管理系统是什么?哪家好?如何选?

优秀

外贸管理 ERP系统 ERP外贸管理系统

知识经济时代,企业该如何进行知识管理?

Baklib

效率工具 知识管理 企业 知识 知识经济

Vue组件入门(十)Attributes 继承

Augus

Vue 3 10月月更

来了!2022 XDR网络安全运营新理念峰会即将开幕!

未来智安XDR SEC

网络安全

SAP | Local结构和Global结构

暮春零贰

SAP 结构 10月月更

Kubernetes fror Flink 硬气功实践

CTO技术共享

flink 个人成长 10月月更

开源日志收集 肿么选型??

CTO技术共享

个人成长 log 10月月更

数据产品经理那点事儿四

松子(李博源)

大数据 深度思考 高效工作 数据产品经理

你一定要看的:Go slice切片详解和实战

王中阳Go

Go golang 高效工作 学习方法 10月月更

团队实现知识管理,先从知识库做起!

Baklib

效率 效率工具 知识管理 团队 知识

工赋开发者社区 | Gartner发布2023年十大战略技术趋势

工赋开发者社区

分布式事务-引出分布式事务

zarmnosaj

10月月更

打破汽车零部件企业供应链壁垒,数商云SCM供应链系统实现一体化采购协同

数商云

数字化转型 供应链 企业数字化

NFT卡牌链游系统开发Web3游戏技术

薇電13242772558

dapp web3

EMQ x 阿里云:云上高效构建,IoT 数据一站处理|直播预告

阿里云弹性计算

物联网 IoT 计算巢

超级app+轻应用带来的改变

Geek_99967b

小程序

一起学习 Go 语言设计模式之单例模式

宇宙之一粟

设计模式 单例模式 Go 语言 10月月更

工赋开发者社区 | 最小可行架构注意事项:必须考虑分布式处理和数据的位置

工赋开发者社区

【Java深入学习】一个关于“锁”的程序-上

Geek_65222d

10月月更

技术使用点-mixins的使用

默默的成长

前端 Vue 3 10月月更

vivo 鲁班平台 RocketMQ 消息灰度方案

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

手把手教你成为荣耀开发者:如何进行注册与认证?

荣耀开发者服务平台

开发者 手机 新手指南 荣耀 honor

Go语言 if判断和for循环实战 goto使用的那些坑

王中阳Go

Go golang 学习方法 面试题 10月月更

秒云入选2022年成都市新经济梯度培育企业

MIAOYUN

成都市新经济梯度培育企业

SAP | abap的数据对象

暮春零贰

SAP 10月月更 数据对象

真·workshop,来自联通、移动、爱奇艺等14位资深专家与你面对面聊云原生硬核技术|2022云栖大会

OpenAnolis小助手

云原生 虚拟化 云栖大会 龙蜥社区 专场

谷歌?新手不推荐 选它就对了

江拥羡橙

前端 工具 浏览器 谷歌 10月月更

数据分析有 AI 帮你,Sugar BI 智能分析全场景介绍

Baidu AICLOUD

数据分析 可视化 BI

你会用Go语言的rune类型吗?

王中阳Go

Go golang 学习方法 数据处理 10月月更

敏捷你的用户界面开发_研发效能_Dave Churchville_InfoQ精选文章