四步走查智能硬件异常Case
此文已由作者于真真授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
相比于软件,智能硬件产品由于涉及硬件和软件两个端的状态,其异常case要更加错综复杂。由于硬件产品的迭代更新较慢,一旦带着问题上线要比软件麻烦的多,轻则导致操作上的困惑,重则导致产品无法使用,因此设计师必须在产品设计过程中将所有情况考虑周全。
梳理异常case的通常方法是按照产品使用场景和操作顺序一一枚举,这种方法费时费力,容易遗漏。例如使用APP连接硬件时就包含用户不小心给硬件断电、手机蓝牙未开启、硬件广播延迟等异常case,但是设计师无法确定这个操作节点上异常case是否已穷举全面、无遗漏以及对应提示是否合理。
第一次做智能硬件,少不了各种踩坑,但在这过程中逐渐摸索出一种比较直观的智能硬件异常case走查方法,通过这种方法我梳理出的异常case比工程师上报给我的还要全面,亲测可用,大家不妨试试。
在网易云音乐车载蓝牙播放器项目中,网易云音乐APP对硬件每一步的操作都要检测软硬件之间的通讯是否正常,因此我主要将此工具应用在梳理蓝牙连接异常case。
第一步,对状态进行拆分组合。将软硬件的状态(或异常case原因)进行拆分,例如将软件拆分为两种状态——A状态和B状态;硬件拆分为两种状态——1状态、2状态;然后将各种状态进行组合,即得到A-1、A-2、B-1、B-2四种状态。
通过拆分和重组软硬件的蓝牙状态可以得到手机蓝牙开-播放器蓝牙开、手机蓝牙开-播放器蓝牙关、手机蓝牙关-播放器蓝牙开、手机蓝牙关-播放器蓝牙关四种状态。所有的异常case都是由这四种状态(原因)引起的。
第二步,梳理任务流,确定交互关键触点。根据使用场景将用户使用产品流程中的交互接触点进行梳理和排序,交互接触点细致程度可根据当前所在的产品设计阶段而定。将用户使用车载蓝牙播放器的流程分为四步:首次使用、首次设置频率、非首次设置频率、退出。
第三步,建立走查表,整理异常case。将前面整理得出的4个关键触点和4种状态组成一个矩阵。在矩阵中,将对应交互接触点和软硬件状态(异常case原因)下的异常情况整理出来。
第四步,为每一种异常case设计解决方案。最重要的一点就是根据异常case和发生的场景、任务节点设计对应的提示文案及形式。
在此次产品设计中,硬件蓝牙是否开启和是否连接分别是通过logo灯的亮起/熄灭和呼吸/常亮来提示用户;而软件的异常case则可通过APP内各种弹窗、页面搭配不同的文案提示,要注意的一点就是同一种原因引起的异常case在不同节点上可能会有不同提示语。
这样一份走查表具有直观和全面的特点,所有项目参与者都可以方便地根据它来理解产品异常case。
关于走查表制作的一些补充TIPS:
1.多人合作。交互设计师可以组织产品策划和软硬件工程师共同参与走查表的制作,项目相关人士的参与可以确保大家对问题的理解一致,达成共识,提升后续沟通效率。
2.步骤二中谈及的交互接触点可根据走查表所使用的阶段而变化。例如在产品策划前期可以通过走查表预判产品在各个阶段的异常case;在设计的中后期则可以将具体的交互节点放在任务流坐标之上,方便我们捕捉异常case出现的时机节点和查漏补缺。
3.软硬件状态和交互接触点是常见的走查维度,但不是唯一。根据不同的项目,可适当调整走查的维度,一切以对项目“最有用”为原则。
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 网易考拉海购:电商高并发架构设计的铁律
【推荐】 6本互联网技术畅销书免费送(数据分析、深度学习、编程语言)!
【推荐】 反射型 DDoS 攻击的原理和防范措施
四步走查智能硬件异常Case的更多相关文章
- Mac系统下使用VirtualBox虚拟机安装win7--第四步 安装虚拟机硬件扩展包支持
如 果想要在虚拟机上使用连接在 Mac 上的硬件外设,比如 U 盘,iPhone 等,需要我们在 Virtual Box 官网下载一个硬件支持扩展安装包.同样地,我们先打开虚拟机的下载页面: http ...
- [自己动手玩黑科技] 1、小黑科技——如何将普通的家电改造成可以与手机App联动的“智能硬件”
NOW, 步 将此黑科技传授予你~ 一.普通家电控制电路板分析 普通家电,其人机接口一般由按键和指示灯组成(高端的会稍微复杂,这里不考虑) 这样交互过程,其实就是:由当前指示灯信息,按照操作流程按相应 ...
- 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)
当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢?
一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计硬件积木的! ...
- JAVA EE企业级开发四步走完全攻略 [转]
http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...
- 苹果HomeKit如何牵动全国智能硬件格局
苹果HomeKit如何牵动全国智能硬件格局 2014-06-23 15:48 发表 系统分类:消费电子 自定义分类:默认 标签:智能家居 苹果在6月的WWDC开发者大会上发布了包括 ...
- java web每天定时执行任务(四步轻松搞定)
第一步: package com.eh.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; ...
- 为智能硬件提供一站式解决方案——机智云GoKit评测
为智能硬件提供一站式解决方案——机智云GoKit评测 2014年12月24日 作者: ladouyu 3 17,414+ 4 EMW3162GoKit开发板STM32F103智能硬件机智云2.0 从物 ...
- 【STM32H7教程】第11章 STM32H7移植SEGGER的硬件异常分析
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第11章 STM32H7移植SEGGER的硬 ...
随机推荐
- 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
关于最长递增子序列时间复杂度O(n^2)的实现方法在博客http://blog.csdn.net/iniegang/article/details/47379873(最长递增子序列 Java实现)中已 ...
- 5 Things You Should Know About the New Maxwell GPU Architecture
The introduction this week of NVIDIA’s first-generation “Maxwell” GPUs is a very exciting moment for ...
- bae3.0第四步 第一个polls系统
1.创建自己的app 进入新建的blog工程目录,执行其下面的manage.py来创建polls应用,命令为: python manage.py startapp polls2.定义app的model ...
- 用Json Template在Azure上创建Cisco CSR路由器
Azure的ARM模式可以通过Json的模板创建VM.本文以Cisco的CSR的image为例,介绍如何用Json的创建VM. 一.Cisco CSR的Image 首先把Cisco CSR的image ...
- Angular5学习笔记 - 路由管理(五)
一.添加路由管理引用 打开src/app/app.module.ts文件 import {RouterModule} from '@angular/router'; import {Routes} f ...
- VisualGDB系列11:Linux C++项目中使用外部Linux库
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...
- C语言学习笔记--#error 、 #line 和 #pragma 的使用
1. #error 的用法 (1)#error 是一种预编译器指示字,用于生成一个编译错误消息 (2)用法:#error message //注意:message 不需要用双引号包围 (3)#erro ...
- JavaScript的编译原理
尽管通常将 JavaScript 归类为“动态”或“解释执行”语言,但事实上它是一门编译语言.这个事实对你来说可能显而易见,也可能你闻所未闻,取决于你接触过多少编程语言,具有多少经验.但与传统的编译语 ...
- SpringBoot06 统一响应格式
1 要求 每个请求成功后,后台返回的响应格式都是一致的,例如: 2 创建一个视图模型 该模型用于格式化响应数据 package cn.xiangxu.springboottest.model.data ...
- Tensorflow手写数字识别训练(梯度下降法)
# coding: utf-8 import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data #p ...