读软件设计的要素01概念

news2024/9/21 16:38:21

1. 概念

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. 它们是设计评论达成共识的基础,或者可以被系统地应用于启发式评价,但其更重要的作用是塑造设计师的思想

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2106295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后端发送数据成功,前端也接收成功,但是显示不出来

提示&#xff1a; shouye.vue:128 [Vue warn]: Property "LiuyanData" was accessed during render but is not defined on instance. at <PopularPets onVnodeUnmountedfn<onVnodeUnmounted> refRef< Proxy(Object) {getdata: ƒ, getLiuyan: ƒ, …} …

武汉凯迪正大—氧化锌避雷器带电测试仪 氧化锌避雷器阻性电流测试仪

产品概述 武汉凯迪正大KDYZ-201氧化锌避雷器测试仪是用于检测氧化锌避雷器电气性能的专用仪器&#xff0c;该仪器适用于各种电压等级的氧化锌避雷器的带电或停电检测&#xff0c;从而及时发现设备内部绝缘受潮及阀片老化等危险缺陷。 仪器操作简单、使用方便&#xff0c;测量…

经济下行,这4家AGV巨头却逆势扩产

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 在全球经济普遍面临下行压力的微妙时刻&#xff0c;当众多企业纷纷收缩战线、谨慎前行时&#xff0c;自动引导车&#xff08;AGV&#xff09;行业却悄然掀起了一股扩产浪潮。 四家行业…

2024国赛数学建模备战-数学建模思想方法大全及方法适用范围

第一篇&#xff1a;方法适用范围 一、统计学方法 1.1 多元回归 1、方法概述&#xff1a; 在研究变量之间的相互影响关系模型时候&#xff0c;用到这类方法&#xff0c;具体地说&#xff1a;其可以定量地描述某一现象和某些因素之间的函数关系&#xff0c;将各变量的已知值带…

C3与C2f模块介绍与代码

C3与C2f模块介绍与代码 微信公众号&#xff1a;幼儿园的学霸 目录 文章目录 C3与C2f模块介绍与代码目录简介CSP/C3模块概述C2f模块概述C3与C2f结构对比参考资料 简介 顺序:CSPNet->C3->C2f C2 module refers to the CSP (Cross Stage Partial) Bottleneck with 2 convol…

【LabVIEW学习篇 - 18】:人机界面交互设计02

文章目录 错误处理函数简单错误处理器通用错误处理器清楚错误合并错误错误代码至错误簇转换查找第一个错误 鼠标指针 错误处理函数 在LabVIEW中&#xff0c;是通过错误输入簇和错误输出簇来传递错误信息&#xff0c;可以将底层错误信息传递到上层VI。设计人员需要对不同程度的…

Air780E低功耗4G模组硬件设计手册01

本文主要介绍了Air780E的硬件设计中的的应用接口部分。 一、主要性能 Air780E模块功能框图&#xff1a; 模块型号列表&#xff1a; 模块主要性能&#xff1a; *注: 模组工作在-40C&#xff5e;-35C或75C&#xff5e;85C温度范围时&#xff0c;模组可以正常工作&#xff0c;但…

基于51单片机的车距离警示灯proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1tBIqTY4cCK38Z_xRKrq83g 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

pyqt fromlayout 布局中间空隙问

问题&#xff1a;当采用 form layout 布局时候&#xff0c;在qt designer 设计界面&#xff0c;如果把中间移除会在布局中间占用位置&#xff08;图1、图2&#xff09;&#xff0c;需要把后续空间向前移动后保存&#xff08;图3&#xff09;&#xff0c;在将界面文件打开即显示…

基于STM32景区环境监测系统的设计与实现(论文+源码)

1系统方案设计 根据系统功能的设计要求&#xff0c;展开基于STM32景区环境监测系统设计。如图2.1所示为系统总体设计框图。系统以STM32单片机作为系统主控模块&#xff0c;通过DHT11传感器、MQ传感器、声音传感器实时监测景区环境中的温湿度、空气质量以及噪音数据。系统监测环…

中国各省会、地级市到杭州球面距离的数据

环境规制是一系列政策措施&#xff0c;旨在解决环境问题、保护生态环境&#xff0c;并推动低碳可持续发展。这些措施包括法律法规、行政命令和经济激励等&#xff0c;目的是减少企业和个人对环境的负面影响。环境规制强度是衡量这些政策措施严格程度的指标&#xff0c;通常通过…

GIS十大经典问题之9.地形分析问题

本系列《GIS十大经典问题》包括&#xff1a; 缓冲区分析问题叠加分析问题最短路径分析问题空间插值问题泰森多边形&#xff08;Voronoi 图&#xff09;生成问题空间聚类问题空间数据压缩问题空间查询问题地形分析问题网络分析中的连通性问题 一、地形分析介绍 地形分析在地理…

HTTP 二、进阶

四、安全 1、TLS是什么 &#xff08;1&#xff09;为什么要有HTTPS ​ 简单的回答是“因为 HTTP 不安全”。由于 HTTP 天生“明文”的特点&#xff0c;整个传输过程完全透明&#xff0c;任何人都能够在链路中截获、修改或者伪造请求 / 响应报文&#xff0c;数据不具有可…

数字化营销:品牌知名度提升的新利器

​嘿&#xff0c;朋友们&#xff01;在如今这个数字化高速发展的时代&#xff0c;企业的营销格局发生了翻天覆地的变化。使用蚓链数字化营销系统&#xff0c;数字化营销正成为提升品牌知名度的关键力量。 先来了解一下蚓链数字化营销的内涵与特点。它是利用数字技术和互联网平台…

重磅!微信放开公众号注册限制!只要手机号,不用实名!

重磅&#xff01;微信放开公众号注册限制&#xff01;只要手机号&#xff0c;不用实名&#xff01; 随着移动互联网的发展&#xff0c;微信公众号已经成为了许多个人与企业传递信息、分享内容的首选平台。就在近日&#xff0c;微信官方再次放出大招&#xff1a;公众号注册无需…

Python画笔案例-033 绘制爆炸图

1、绘制蝌蚪 通过 python 的turtle 库绘制爆炸图&#xff0c;如下图&#xff1a; 2、实现代码 绘制爆炸图&#xff0c;以下为实现代码&#xff1a; 爆炸图&#xff0c;非函数版本 &#xff1a; """爆炸图.py """ import turtle import randomc…

企业如何避免六西格玛黑带培训陷入形式主义?

在开展六西格玛黑带培训的过程中&#xff0c;不少企业陷入了形式主义的泥潭&#xff0c;导致培训效果大打折扣。本文&#xff0c;深圳天行健企业管理咨询公司旨在分享如何避免六西格玛黑带培训陷入形式主义&#xff0c;确保培训成果真正转化为企业的生产力。 一、明确培训目标与…

电商企业借助精益六西格玛培训提升资产周转率——从资本困局到效率跃升

随着市场日益饱和&#xff0c;电商企业的增长模式被迫从粗放式扩展向精细化运营转型。这个过程许多电商企业遭遇了资产周转率低下的瓶颈&#xff0c;资金流动性不足直接影响企业的扩展能力与市场竞争力。面对这一困境&#xff0c;越来越多的电商企业开始借助精益六西格玛这一强…

认知杂谈46

今天分享 有人说的一段争议性的话 I I 强者思维的人际关系观 拥有强者思维的人在和人交往的时候&#xff0c;可不会粗心大意。 I I 他们在人际交往这个大舞台上&#xff0c;会充分考虑他人的感受&#xff0c;绝不会像那些在网上肆无忌惮乱喷的人。 I I 他们深知人心的复杂多变…

链表.......

从右到左 更新尾部 typedef typedef struct ListNode { int value; struct ListNode *next;(这里不能用listnode*应为还没有定义) } ListNode; #include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 struct ListNode { int value; s…