易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。可以将易用性分为如下几个方面:
(以下7点可以概括为:
易用性(usability)是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。
以因特网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力发挥最大的效能。
)
1.易理解:单单凭观察,用户能否在几秒内就知道网站是做什么的,以及知道如何采取行动。·
2.易操作:用户初次接触网站时,是否可以很轻松的完成任务,是否可不用帮助文档就能使用网站。
3.易学习:通过简单的帮助文件,用户能否顺利解决遇到的问题。
4.效率性:用户熟悉网站功能或界面后,是否可以快速完成任务。
5.出错率:在使用网站过程中,用户操作出现的错误有多少,这些错误有多严重,用户从错误中恢复是否容易。
6.满意度:用户使用这个网站(功能、设计等),是否有较高的满意度。
7.易分享:网站是否具备一键分享功能,便于用户分享信息。
易用性战术
1.运行时战术
一旦系统执行,就可以通过为用户提供关于系统正在做什么的反馈,以及用于提供发出基于易用性命令的能力来增强易用性。
例如,1.在纠错或更高效的操作中,“取消”、“撤销”、“帮助”和“显示多个视图”均为用户提供支持。
2.linux查看帮助命令范例: man ls 查看ls命令的帮助信息 man services 查看配置文件services的帮助信息
撤销恢复实例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.undo.*; class UndoDemo extends JFrame { static JTextArea text = new JTextArea(); static JPanel pnl = new JPanel(); static JButton unbtn = new JButton("撤销"); static JButton rebtn = new JButton("恢复"); static UndoManager undomg = new UndoManager(); UndoDemo() { super("撤销、恢复功能实例"); setVisible(true); setSize(400,300); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout(5,5)); pnl.setLayout(new FlowLayout(5)); pnl.add(unbtn); pnl.add(rebtn); add(pnl,BorderLayout.NORTH); add(text,BorderLayout.CENTER); text.getDocument().addUndoableEditListener(undomg); unbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if(undomg.canUndo()) { undomg.undo(); } else { JOptionPane.showMessageDialog(null,"无法撤销","警告",JOptionPane.WARNING_MESSAGE); } } }); rebtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if(undomg.canRedo()) { undomg.redo(); } else { JOptionPane.showMessageDialog(null,"无法恢复","警告",JOptionPane.WARNING_MESSAGE); } } }); } public static void main(String[] args) { new UndoDemo(); } }
运行时战术分为用户主动,系统主动,混合主动
当用户采取主动时,设计师设计一个响应,就如同实现其他功能一样。设计师必须列举出该系统的责任,以对用户命令做响应。
当系统采取主动时,它必须依赖关于用户的某些信息,即用户所承担的任务或系统本身的状态。每个模型都要求各种类型的输入以完成其主动。
例如,
1.Word软件进行实时地拼写检查
2.通过session保存用户登录信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@page import="jemo.com.logindemo.User"%> <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>登录</title> </head> <body> 欢迎您: <% User user=(User)session.getAttribute("user"); if(user!=null) { out.write(user.getName()); } %> <br/> <a href="/Demo2/Login.html">登录</a> </body> </html>
3.通过cookie实现免登陆
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
self.driver = webdriver.Chrome()
#下面这个不能省,就是必须先让浏览器打开一个网页,至于打开哪个网页不重要,不然会报错:unable to set cookie
self.driver.get('https://t.bilibili.com/')
cookies = [{'domain': '.bilibili.com', 'expiry': 1577689702.126078, 'httpOnly': False, 'name': 'sid', 'path': '/', 'secure': False, 'value': 'hrbxcwgk'},{'domain': '.t.bilibili.com', 'httpOnly': False, 'name': 'Hm_lpvt_8a6e55dbd2870f0f5bc9194cddf32a02', 'path': '/', 'secure': False, 'value': '1546160927'}]
for cookie in cookies:
self.driver.add_cookie(cookie) #循环添加cookie
self.driver.get('https://t.bilibili.com/')
self.driver.maximize_window()
time.sleep(3)
![](https://img2020.cnblogs.com/i-beta/1275848/202003/1275848-20200304231416277-877068157.png)
<img src="logo.png" alt="苹果">
![](https://img2020.cnblogs.com/i-beta/1275848/202003/1275848-20200304233426564-804234528.png)
比如echarts官网的设计
5.在输入时系统会搜索匹配的条目并显示供选择的值的列表
a:focus{
outline:1px solid red;
background:yellow;
}
系统主动性战术就是那些确定系统用来预测其自身行为或用户意图的模型战术,分为以下三种
1.维持任务的一个模型。这种情况下,所维持的模型是关于任务的信息。任务模型用于确定上下文,以使该系统了解用户试图做什么,并提供各种协助。
例如,知道句子通常以大写字母开头能够使应用程序纠正该位置的小写字母。
2.维持用户的一个模型。维持的模型是关于用户的信息。它确定了用户对该系统的了解,用户在期望的响应时间方面的行为,以及特定于某个用户或某类用户的其他方面。
例如,1.维持用户模型能够使系统以用户可以阅读页面的速度滚动页面。
2.特定的用户界面或汉字输入的词组。
3.维持系统的一个模型。所维持的模型就是关于系统的信息。它确定了期望的系统行为,以便为用户提供适当的反馈。系统模型反馈预测了诸如完成当前活动所需要时间的项目。
例如,2.良好的提示功能,输入框不能为空,是否要删除,引导用户如何进行下一步操作2.进度条的使用等
2.设计时战术
- 模型-视图-控制器
- 表示-抽象-控制
- Seeheim
- Arch/Slinky
设计代码得从用户与系统两个角度来考虑,
1.确定用户对系统的了解,
2.确定了期望的系统行为,能够为用户提供适当的反馈
我觉得难度主要是体现在用户方面的不确定性,用户不按照已设定操作时,系统该怎么办。
解决这个问题主要是通过多方面测试,查找问题之处,尽可能提前做好处理等。
软件易用性体现:https://www.zhihu.com/question/20260795
1.用户第一眼就能找到自己最关注的功能操作和数据信息。
2.不要过多的让用户去猜测各种隐含的信息。
3.不要去涉及违背多数人常识和常规反映的操作,也不要在常识上过多粉饰。
4.简单的东西一定不能为考虑扩展性而实现的太复杂。
5.复杂的东西一定不能为了太易见和易学而设计的太简单,否则影响后续效率。
6.系统总是在合理的时间反馈给用户合理的信息,而不是让用户莫名等待。
7.用户的注意力是有限的资源,新功能添加往往是老功能的绊脚石。
8.易用不是绝对和通用,必须要细分用户和细分场景。
9.易用性和交互设计师应该是独立的岗位和角色,而不适合程序员兼任。
代码易用性的要求:https://www.cnblogs.com/houbowei/archive/2010/03/24/1693425.html