1.1. 一个软件,从运行于手机上的最小程序到大型的企业系统,都是由概念组成的,每个概念都是独立的功能单元
1.2. 软件中的可用性问题,经常可以追溯到其底层概念
1.2.1. 概念帮助识别软件的不可用性
1.3. 概念都是以同样形式在各种软件中重复使用的
1.3.1. 将设计分解为最基本的概念带来了概念重用的机会
1.4. 概念就像是分子
1.4.1. 虽然相互结合在一起,但无论在哪里出现,它们的属性和行为都是相似的
1.5. 概念没有可视化的形式,它们非常抽象
1.6. 任何关于设计的讨论都必须围绕基本概念,并评估概念采用的行为模式是否符合它的目的
1.6.1. 用户界面也很重要,但在一定程度上用户界面只是服务于概念,并将概念呈现给用户
1.6.2. 如果我们想让软件更好用,就必须从概念着手
1.7. 在传统的设计学科中,设计是从概念这个核心出发的
1.7.1. 当选择好核心概念后,后续的设计决策也是不可避免的
1.7.2. 设计作为一个整体,需要使作品呈现出一致性,使它看起来像是一个人的作品,哪怕它是由一个大型团队共同完成的
1.7.3. 用户能够感知到作品的完整性和统一性,而设计中潜在的复杂性要让位于简单的作品形象
1.8. 概念的复杂性是合理的
1.8.1. Photoshop软件的图层和蒙版就属于复杂的概念
2. 设计的层次2.1. 物理层次
2.1.1. 设计按键、布局和手势
2.1.2. 对应用户的物理和认知能力
2.1.3. 这个层次是关于组件的物理特性的
2.1.3.1. 即使软件的界面仅仅在一块触摸屏上运行,也会有物理特性,只不过可能比较有限
2.1.3.2. 我们有限的视觉采样率导致了感知融合,这使我们很难区分发生在30毫秒以内的事件,所以30帧/秒的画面就足以让电影看起来很流畅
2.1.4. 菲茨定律(Fitt's Law)预测了用户将光标移动到目标点需要的时间,并解释了为什么菜单栏应该位于屏幕顶部,就像macOS的桌面那样,而不是像Windows系统桌面那样位于软件的窗口内部
2.1.5. 在物理层次进行设计时,必须尊重用户身体特点的多样性
2.2. 语言层次
2.2.1. 设计与用户交流的图标、提示信息和术语
2.2.2. 这个层次关注的是为了表达软件的运行方式而使用的语言,以帮助用户浏览软件、了解可用的操作以及操作将产生的影响、软件已经发生的行为等
2.2.3. 在语言层次进行设计时,必须尊重用户在文化和语言上的差异
2.2.3.1. 在欧洲,红色圆圈的路标表示任何车辆都不允许通行
2.2.3.2. 大多数美国司机却可能觉得禁行标识应该是红色的斜杠
2.2.4. 当用户界面的设计师谈论对一致性的需求时,他们通常指的就是语言层次上的语言使用
2.2.4.1. 一致性包括确保在整个用户界面中,对相同的词语采用了相同的使用方式
2.3. 主要关注用户界面中的概念表达
2.4. 概念层次
2.4.1. 将底层行为设计为一系列概念
2.4.2. 它关注设计背后的行为,即关注由用户和软件本身执行的操作,以及这些操作对底层结构的影响
2.4.3. 与语言层次相比,概念层次与交流或文化无关
2.4.4. 在编程中,抽象(abstraction)和表达(representation)有着重要的区别
2.4.4.1. 抽象是抓住编程思想的本质,也可能用于对观测到的行为进行说明
2.4.4.2. 表达是通过代码实现这个本质
3. 心智模型3.1. 概念设计之源
3.2. 用户知道软件中有这些功能,却仍然无法正确地使用它们
3.2.1. 最常见的原因是,用户的心智模型不正确,或者说与软件设计师和程序员的心智模型不一致
3.2.2. 用户对他们使用的设备往往有着模糊、不完整甚至是不一致的心智模型,这并不令人意外
3.3. 解决这个问题的一个糟糕办法是培训用户
3.3.1. 大多数用户都会拒绝花时间学习如何使用软件,他们认为熟能生巧
3.4. 一个更好的解决办法是设计软件的概念,使软件简单、灵活并能很好地适应用户的需要
3.4.1. 同时通过用户界面向用户传达这些概念
3.5. 概念本身既是用户想要的心智模型,也是软件的规格
3.6. 用户界面设计师的任务就是设计出类似设计大师唐纳德·诺曼所说的“系统形象”
3.6.1. 用户界面能够准确地对应概念模型,这样用户就能够获得与软件概念一致的心智模型
4. 概念可以表示单个软件4.1. 概念是单个软件、一类软件以及各类软件的特征
4.2. 概念可以让你比较软件,注意其必要的功能以及知道如何有效地使用这些功能
4.3. 短信和电子邮件的主要区别
4.3.1. 短信是用会话概念组织起来的,所有发送给同一个人的消息都会显示在同一个界面中
4.3.1.1. 在一定程度上是由于短信的发送者和接收者仅由电话号码标识身份
4.3.1.2. 短信依赖会话的场景
4.3.2. 电子邮件通常使用“邮箱”、“文件夹”或“标签”等概念来组织
4.3.2.1. 电子邮件用户往往拥有多个通信地址,这使得根据地址对电子邮件进行分组并不可靠
4.3.2.2. 电子邮件信息往往是孤立的
5. 概念可以表示一类软件5.1. 概念通常是软件差异化的因素,关注概念会让你更关注市场的需求,并揭示软件成功或失败的原因
5.2. 概念不仅可以表示单个软件,而且能表示一类软件
5.2.1. 文本编辑器
5.2.1.1. Atom、Sublime、BBEdit和Emacs来编辑程序代码
5.2.1.2. 文本编辑器的关键概念是“行”和“字符”
5.2.1.3. 行概念包含了强大的功能,例如比较和合并,这些对程序员管理代码来说是必不可少的
5.2.2. 文字处理软件
5.2.2.1. Word、OpenOffice和WordPerfect来创建各种文档
5.2.2.2. 包括“段落”,还包括“格式”,格式概念允许用户为文本指定排版属性
5.2.3. 桌面出版软件
5.2.3.1. Adobe InDesign、QuarkXPress、Scribus和Microsoft Publisher将文档组织成书籍和杂志的最终版式
5.2.3.2. 包括文字处理软件的基本概念,但增加了最重要的文本流概念,这一概念允许用户在文档的不同位置插入链接在一起的文本框
5.3. 概念可以区分软件
6. 概念可以作为业务定义的核心6.1. 概念可以帮助从事数字化转型的公司规划前进的道路
6.2. 虽然投资核心概念这件事听起来没有那么花哨,但可能更有效
6.3. 只需确定业务的核心概念,就可以帮助公司专注于正在提供的服务,以及将来可能会提供的服务
6.4. 析这些核心概念可以帮助公司发现其中的冲突和机会,从而简化业务
6.5. 对概念清单进行排序,可以反映每个概念对于客户和公司的价值,以及实施和维护这些概念的成本,从而为公司的服务战略提供依据
6.6. 通过整合一系列核心概念,公司可以确保客户在技术平台和公司各部门之间拥有一致的体验,并可以降低因拥有多个概念变体导致的成本
6.7. 为了使利润最大化,大多数航空公司隐藏了座位的定价策略
6.7.1. 只有专家才知道当前的座位价格与这架飞机上其他座位相比,或者与过去的座位价格相比,是贵了还是便宜了
7. 概念可以确定成本和收益7.1. 概念能将功能更清晰地划分为独立的单元,每个功能单元都有自己的价值和成本
7.2. 概念的复杂性,即开发这个概念的成本,以及用户混淆的成本
7.3. 概念的新颖性,以及由此带来的风险
7.4. 根据二八法则,我们知道20%的概念将带来80%的收益
8. 用概念分离关注点8.1. 概念提供一种新的粒度,让软件设计师可以更有效地分离软件的功能点、探索概念的重用方式,并更合理地规划软件工程工作
8.2. 解决问题最重要的策略是分离关注点,即分开处理关注点的不同方面,即使有些关注点并不是完全独立的
8.3. 分离关注点是有效的,因为这样能使设计师一次只专注于一个方面
8.3.1. 无须在设计审核功能的同时考虑是否可以撤销邀请
8.3.2. 每个概念都可以设计得很丰富,甚至可以单独成为一个小系统
8.3.3. 如果设计师认为某个概念的成本与收益不匹配,也可以完全忽略这个概念
9. 概念可以确保设计的安全9.1. 概念是安全设计的本质,选择正确的概念并理解其含义至关重要
9.2. 安全是所有软件都关注的问题
9.3. "安全设计”的流行,反映了人们逐步对软件安全达成了一种共识,即确保安全最好的方式不是没有安全漏洞(这几乎是不可能的),而是通过设计保证即使存在安全漏洞,系统仍然是安全的
9.4. 系统范围的安全设计依赖几个关键的概念
9.4.1. 身份验证概念,确保正确识别出请求的发出者,也就是安全领域中的“委托人”
9.4.2. 授权概念,确保这些请求者只能访问某些资源
9.4.3. 审计概念,确保每次访问都有真实的记录,并且可以据此惩罚不良行为等
9.5. 概念是所有系统设计的核心
9.5.1. 安全(safety)领域不同于安保(security)领域,前者很少有标准的概念
9.5.2. 如果一个事故反复发生,就意味着应该有一个新的概念发挥类似安保概念的作用,并采用传统的方法实现关键功能
9.5.2.1. 医疗设备经常发生剂量计算错误,那么就应该设计一个剂量概念,用来处理各种单位、浓度和流速,从而消除很多导致患者受伤或死亡的悲剧性事故,这些事故本是可以预防的
10. 概念可以回应对设计的评论10.1. 概念为评论设计提供了可用的原则,从而避免花很长时间才能发现问题
10.1.1. 掌握这些原则的软件设计师会做出更好的设计,即使他们还没有明确的想法
10.2. 在任何设计领域,设计师都会对彼此的作品进行分析和评论,这对设计有重要的作用
10.3. 评论并不是一种经过系统性思考的正式评价,但正是它的非正式性能够带来新的视角与灵感
10.4. 设计原则可以有不同的使用方式
10.4.1. 它们是设计评论达成共识的基础,或者可以被系统地应用于启发式评价,但其更重要的作用是塑造设计师的思想