读软件设计的要素01概念

news/2024/11/15 19:13:19/文章来源:https://www.cnblogs.com/lying7/p/18396713

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.hqwc.cn/news/792383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于在powershell与cmd查找vue版本时结果不一致

在powershell中vue版本显示为2.9.6而在Cmd中显示为@vue/cli 5.0.8原因:这是由于博主先前旧版本下载了vue2.9.6,而在卸载旧版本2.9.6时候仅删除了vue与vue.cmd文件 而powershell会先运行vue.ps1(.ps1后缀为powershell文件)来获取你的版本号 解决方案:将vue,vue.cmd,vue.ps1…

LUNARiA

本文同步发布于我的网站也算是头一次在没有任何安利和剧透,仅在看了简介的情况下就直接下单并开始游玩一部gal了。果然,没有给我留下什么遗憾呢。 游玩日志 SKYOUT-FOREVER 《LUNARiA》的背景设定在科技腾飞、算力大幅增长、AI与VR遍及各行各业、一个名为Cozmo的虚拟世界已经…

Comfyui 基础教程(一) —— 本地安装部署

前言 前面一篇文章已经介绍过,ComfyUI 和 Stable Diffusion 的关系。不清楚的朋友,看传送门 Stable Diffusion 小白的入坑铺垫 。 WebUI 以及 ComfyUI 不等于 Stable Diffusion,可以简单粗暴一点的理解为方便运行某些大模型的工具。由于本人在接触过 ComfyUI 之后,就基本放…

337. 打家劫舍 III(leetcode)

https://leetcode.cn/problems/house-robber-iii/description/基础树形dp,要点是f的定义灵神讲的很好:https://www.bilibili.com/video/BV1vu4y1f7dn/?vd_source=1bb76d0400eba0d49ad4c1dd07bc4249 /*** Definition for a binary tree node.* public class TreeNode {* in…

深度学习环境配置(windows 11)

安装Anaconda下载地址运行安装程序,记得要勾选创建系统变量,忘记勾选的请参考anaconda如何配置环境变量。正确配置后,在cmd命令行中输入conda --version后可以输出conda版本信息。附上conda常用操作命令: #创建环境(指定python版本) conda create -n NAME python=*.*#激活…

Text Augmented Spatial-aware Zero-shot Referring Image Segmentation论文阅读笔记(EMNLP23 Findings)

Motivation & Method 关注的任务为zero-shot referring image segmentation,模型无法获得pixel-level的分割标注。之前的方法通常使用预训练的多模态模型如CLIP,然而CLIP使用图像文本对进行训练,难以做到image local patch与referring sentence的细粒度对齐。为此作者提…

Error response from daemon: This node is not a swarm manager.

转载请注明出处:在环境上通过 docker 查看节点列表时,报错如下:解决方法: 具体code如下:root@controller1:~# docker swarm init --advertise-addr 127.0.0.1 Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to …

全网最适合入门的面向对象编程教程:45 Python 实现常见数据结构-链表、树、哈希表、图和堆

数据结构是计算机科学中的一种组织和存储数据的方式,它决定了数据的访问方式和操作效率,数据结构的选择和实现对程序的性能和设计至关重要。本文主要讲述了如何使用Python语言和内置库实现常见数据结构。全网最适合入门的面向对象编程教程:45 Python 实现常见数据结构-链表、…

Unicode编码介绍

什么是Unicode编码? Unicode是字符编码规范,它定义了所有文字的编码规则。说通俗点就是它按照某个规则给每个字符都分配了一个数字编号(比如:A的编号为65或0x0041,万的编号为19981或0x4e0d),相当于是一个编号库。这个数字编号也叫Unicode码。最开始这个编号使用2个字节表…

LeetCode题集-2 - 两数相加

递归法和迭代法有什么差别,通过两数相加算法来搞明白,一举多得这个题目是什么意思呢?简单来说就是把两个链表平铺开,头节点对齐,然后从头开始相同的节点相加,满10则进位,进位值与下个节点继续相加,当一个链表没有节点时候则可以把没有节点当做0继续与有节点的链表继续相…

pytesseract实现识别pdf文件并将内容写入word文档中

步骤一:先安装tesseract-ocr-w64-setup-5.4.0.20240606 (安装记得语言包只安装需要的即可) 步骤二:将安装目录添加到系统环境变量中 (网上很多这一步之后就说可以运行程序了其实不然,一直报错没有添加到环境变量中) 步骤三:第四步:可以正常运行啦 =================…

消息中间件ms

消息中间件rabbitmq如何保证数据不丢失 MQ高级搜消息可靠性 常用于mq重复消费问题解决 搜消费者重复消息问题延迟队列有了解过吗?(私信交换机) 搜延迟消息如果有100w的消息堆积到mq怎么办(消息堆积)高可用机制了解过吗