读软件设计的要素05概念的特性

news/2024/12/21 20:23:45/文章来源:https://www.cnblogs.com/lying7/p/18402197

1. 概念的特性

1.1. 专一性原则(specificity principle)认为概念与目的应该一一对应

  • 1.1.1. 专一性原则已被证明是概念设计中最有用的原则之一

  • 1.1.2. 一个概念最多只能满足一个目的

1.2. 很少有没有目的的概念

  • 1.2.1. 如果本应隐藏的用户机制被暴露,可能会产生没有目的的概念

  • 1.2.2. 无目的的概念会扰乱界面并迷惑用户

  • 1.2.3. 无目的的概念是奇怪的

1.3. 没有概念来实现目的可能是因为设计者领域之外的限制,有时或许只是因为严重的疏漏

  • 1.3.1. 概念缺失则会导致更为复杂的交互

1.4. 概念冗余,即多个概念服务于同一目的,会导致用户困惑与资源浪费

  • 1.4.1. 概念冗余在两个本应相同的概念之间引入了令人困惑的区别,并迫使用户用不同的方法来做相同的事情

  • 1.4.2. 概念冗余通常是由于在概念设计时只考虑了某些特定情况(可能是由子团队负责开发)​,而没有对软件的核心概念给予足够关注

  • 1.4.3. 每个目的都应该通过最多一个概念来实现并避免概念冗余

  • 1.4.4. 避免概念冗余当然也是合理的,因为可以节省精力

1.5. 概念过载,即一个概念具有多个目的

  • 1.5.1. 错误聚合,设计者错误地将多个目的当成一个目的

  • 1.5.2. 目的被拒,即设计者有意忽略用户目的

  • 1.5.3. 突发目的,概念随着时间的推移演变出新的(通常是不兼容的)目的

  • 1.5.4. 搭载现象,即设计者试图将新目的挂靠在旧概念上,以便减少设计和实现工作

  • 1.5.5. 概念过载会由于不相关目的的耦合而引入额外的复杂性

  • 1.5.6. 概念过载会导致功能受限,因为第二个目的被强加到原有概念之上

1.6. 导致软件复杂性的增加和清晰度的降低

1.7. 一致性原则有助于确认有多个组成部分的目的究竟算一个目的还是多个目的、是否可能整合为一个单一目的,各部分是否有共同的利益相关者、它们是否为一个共同的使命服务,以及它们之间是否有冲突

1.8. 在软件设计中,概念和目的应该一一对应

  • 1.8.1. 每个概念都应该有一个激发它的目的

  • 1.8.2. 软件的每一个目的也都应该有一个完整的概念

2. 无概念的目的

2.1. 如果对设计进行审视,你可能会发现有些基本目的并没有与之对应的概念来实现

2.2. 所有软件都会随着时间的推移而发展,新的需求总会出现

2.3. 设计之初就明显缺少概念的目的

2.4. 通信人概念

  • 2.4.1. 大多数电子邮件客户端都缺少通信人概念,该概念用于识别邮件的发件人和收件人

  • 2.4.2. Gmail这样的封闭电子邮件系统很容易实现通信人概念,但要想在更广泛的范围内实现这个概念,则需要通用的身份验证作为基础

  • 2.4.3. 有了通信人概念,电子邮件的发件人字段就无法被伪造,垃圾邮件也将更容易受到控制

2.5. 备份中的删除警告

  • 2.5.1. 从计算机中删除的文件会在一段时间(比如30天)之后从备份中被删除

  • 2.5.2. 意图很明确:阻止客户将备份服务当作无限期的云存储

  • 2.5.3. 备份软件可以提供一个概念来跟踪删除操作,并在删除操作发生时给出警告,这样就可以确定用户是否有意删除,以免在他们还没注意到之前就从备份中删除了文件

2.6. 缺少样式概念

  • 2.6.1. 一个概念在某一类软件中经常使用,但在另一类软件中却常常不可用,即使这个概念对于后者而言也非常有用

2.7. 不完整的模板概念

  • 2.7.1. 由于软件的形式有限,导致这个概念的常规目的无法实现

  • 2.7.2. 解耦设计的关键是网站制作者不需要一开始就确定模板,而是可以先试着加入一些内容,然后看看内容在模板里看起来如何

2.8. 随着技术的普及,人们很容易认为软件设计中所有的核心问题都已经解决了

  • 2.8.1. 这些没有概念的目的表明,即使在人们最熟悉的软件中,还有一些最基本的需求没有得到满足,软件设计师仍然有重要的工作要做

3. 概念冗余

3.1. 如果存在另一个用于相同目的的概念,那么当前的概念就是冗余的

  • 3.1.1. 设计师最初看到了两个截然不同的目的,但最终却发现它们只是同一个更通用目的的变体

3.2. Gmail的分类概念

  • 3.2.1. 分类概念遭到否定的根本原因在于它是冗余的

3.3. Zoom广播

  • 3.3.1. 广播概念是一个冗余概念

  • 3.3.2. 聊天概念和广播概念似乎具有相同的目的,但又不尽相同

  • 3.3.2.1. 广播消息在屏幕上闪过,而聊天消息则出现在滚动的消息记录中

  • 3.3.2.2. 广播消息可以跨越会议室,聊天消息则不能

  • 3.3.2.3. 广播消息会很快消失,聊天消息则会保留在消息记录中

  • 3.3.2.4. 在理想情况下,聊天概念应该包含这两个概念的特性

3.4. 消除概念冗余将减少开发人员的工作,并为用户提供更简单、更强大的工具

4. 概念过载

4.1. 最有趣的软件设计原则是一个概念最多只能有一个目的

4.2. 一个概念不能很好地满足两个目的

  • 4.2.1. 目的指导着概念设计的各个方面

  • 4.2.2. 如果软件有两个不同的目的,它们必然会向不同的方向发展,而概念设计也必须在它们之间做出妥协

  • 4.2.3. 更有可能的是,这种设计最终连一个目的也无法完全满足,因为这个目的本来朝着一个方向发展,却被拉向另一个方向

4.3. 错误聚合(False convergence)

  • 4.3.1. 错误聚合是指一个概念针对两个不同的功能,而这两个功能被错误地假设为具有相同的目的

  • 4.3.2. Facebook的好友概念

  • 4.3.2.1. 允许两个用户建立一种关系,在这种关系中他们可以看到彼此的帖子

  • 4.3.2.2. 隐藏了两个截然不同的目的

>  4.3.2.2.1. 过滤:通过展示好友的帖子,Facebook为用户省去了亲自筛选帖子的麻烦>  4.3.2.2.2. 访问控制:通过选择好友,用户可以选择谁可以看到自己的帖子
  • 4.3.2.3. 2011年增加了关注概念,只用于过滤帖子,而非访问控制

4.4. 被拒目的(Denied purposes)

  • 4.4.1. 被拒目的是指被设计者忽略的目的,尽管用户有相应的需求

  • 4.4.2. 列出候选目的然后将之否定通常是令人钦佩的,这是防止软件设计膨胀的关键策略

  • 4.4.3. 最有效的箴言是“设计最简单的东西”​,这既适用于选择要达到的目的,也适用于设计实现这些目的的概念

  • 4.4.4. 以保持用户界面的简单性为名忽视用户需求,进而否定一个目的,这也可能是一种武断的行为

  • 4.4.5. Twitter中的收藏概念

4.5. 突发目的(Emergent purposes)

  • 4.5.1. 突发目的是原有旧概念新产生的目的,通常由用户自己创造

  • 4.5.2. 一个概念在设计时可能只有一个单一的、引人注意的目的,但随着用户发现该概念的新用途,其他目的可能会出现

  • 4.5.3. 电子邮件的主题行概念

4.6. 搭载(Piggybacking)

  • 4.6.1. 搭载现象指现有概念被调整或扩展以适应新目的

  • 4.6.2. 导致概念过载最常见的原因是,设计师看到了使用现有概念来支持新目的的可能,因此没有设计新概念,省去了设计和实现新概念的麻烦

  • 4.6.2.1. 设计师也可能认为用户会欣赏概念更少、内涵却更丰富带来的经济性,但这通常是错误的

  • 4.6.2.2. 相比于数量较少但是复杂和令人困惑的概念,较多但统一、有说服力的概念更好

  • 4.6.3. 富士相机的长宽比

  • 4.6.3.1. 长宽比概念在RAW格式的文件上非常有效

  • 4.6.3.2. 由于长宽比概念通过重载与JPEG格式相关联导致过载,因此不能单独将之用于JPEG格式

  • 4.6.3.3. 即使你只想以RAW格式保存图像,并且自定义长宽比,在设置图像质量时也必须选择同时包含RAW和JPEG格式的文件,然后再删除JPEG文件

  • 4.6.3.4. 补救方法是提供一个与图像大小概念不同的长宽比概念,使自定义长宽比的操作与选择文件类型的操作相互独立

4.7. 补救方法

  • 4.7.1. 尽可能准确地阐明单一目的,并检查概念的不同动机是否真正反映了同一目的,这样可以避免错误聚合

  • 4.7.2. 认真对待用户的意见和经验,特别是那些技术水平较低和较不愿意采用新技术的用户,这样可以避免出现被拒目的

  • 4.7.3. 突发目的是最难避免的,因为没有人能够预测设计将以何种方式影响其使用场景并创造新的用途

  • 4.7.3.1. 只要意识到突发目的的出现,就可以添加新概念来解决这种概念过载

  • 4.7.4. 应该避免将概念用于相互矛盾的目的来优化设计的冲动,应认识到这样节省下来的努力会导致情况更加复杂,最终付出高昂的代价

  • 4.7.4.1. 避免出现搭载现象

5. 目的的颗粒度和一致性原则

5.1. 设计是否冗余或过载取决于目的

5.2. 需要通过一致性测试,揭示多重目的伪装成一个目的的情况

5.3. 在理想情况下,目的的设定不应该随案例不同而变化,也就是说,目的需要保持一致

5.4. 重新设定目的

5.5. 共同的利益相关者

5.6. 共同使命

5.7. 无冲突

6. 分解概念

6.1. 解决概念过载的方法是分解概念,然后为每个目的建立一个新的概念

6.2. 回应概念,其目的是传递对帖子的情绪反应

6.3. 推荐概念,其目的是管理推送内容

6.4. 特征分析(profiling),其目的是定向投放广告

6.5. 极端情况是,这三个概念可能构成一个几乎完全不同步的自由组合

6.6. 另一个极端情况是,三个概念完全同步,回应按键也作用于推荐和特征分析

  • 6.6.1. 过载问题已经转化为过度同步问题

  • 6.6.2. 至少在概念分离的情况下,设计中有更清楚的迹象表明这些概念已经耦合在一起,并且即使试图在相互冲突的不同目的之间寻求平衡,概念本身被破坏的风险也比较小

6.7. 概念分解之所以很有价值,在很大程度上是因为它允许将一个特殊的概念(比如Facebook的点赞概念)分解成更一致、更通用的概念,从而为用户提供更简明的体验,并为记录和保存设计知识提供更好的结构

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

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

相关文章

有意思、有趣的文字

苦难既然把我推到了悬崖的边缘,那么就让我在这悬崖边坐下来,顺便看看悬崖下的流岚雾霭,唱支歌给你听。       —— 史铁生《我与地坛》罗翔说:“珍惜你的低谷期,你会看到很多真相。时间能渡的都是愿意自渡的人,没有谁的人生一帆风顺,低谷期的苦难,就是为了积蓄力…

宝可梦gba改版教程/口袋妖怪gba改版教程

背景 心血来潮玩了一些改版,感觉不太人性化,于是想要去稍微学学。 过程 劝退 可以说是非常劝退,gba改版非常的不人性化,比如汇编语言asm,改版工具不支持中文之类的。没有成体系的教程 这是口袋资源吧的教程汇总,虽然看上去很详细,但是其实还是蛮零散的,而且由于贴吧的一…

414周赛第三题 - 3282. 到达数组末尾的最大得分

题目链接 3282. 到达数组末尾的最大得分思路 转换为“矩阵面积”;贪心解决题解链接 【一图秒懂】贪心(Python/Java/C++/Go)关键点时间复杂度 \(O(n)\)空间复杂度 \(O(1)\)代码实现: class Solution:def findMaximumScore(self, nums: List[int]) -> int:answer = maxv =…

使用 Microsoft.Extensions.ServiceDiscovery 进行服务发现并调用

简介 在现代微服务架构中,服务发现(Service Discovery)是一项关键功能。它允许微服务动态地找到彼此,而无需依赖硬编码的地址。以前如果你搜 .NET Service Discovery,大概率会搜到一大堆 Eureka,Consul 等的文章。现在微软为我们带来了一个官方的包:Microsoft.Extension…

第19篇 Protocol Buffers 编译器生成proto文件

1.下载 Protocol Buffers 编译器(protoc) 前往 Protocol Buffers GitHub Releases 页面。在 "Assets" 下找到适合您系统的压缩文件,通常为 protoc-{version}-win32.zip 或 protoc-{version}-win64.zip,其中 {version} 是版本号。2.解压缩 Protoc 编译器 创建一个…

Zlibrary镜像站官方网址的使用教程

Zlibrary的使用说明: 手机端 步骤一、以苹果浏览器为例,打开Z-library镜像站,搜索自己的图书,注册登录之后选择EPUB格式下载步骤二、手机打开下载的文件,即可正常阅读。电脑端 步骤一,如下图所示, 打开Zlibrary官网搜索电子书,点击自己需要的图书步骤二,如下图所示, 在…

Python实现批量提取视频

前言 最近在玩整nas,但是之前把视频和照片都上传到immich了,因为我可以直接在手机中上传照片,但是因为手机内存不够就把视频全删了的,现在只需要把视频下载下来上传到nas中就OK。但是现在问题是immich这东西不支持批量删选视频,只能全选照片和视频,而且一共有50个G的照片…

边缘计算平台:为客户端提供更快、更可靠的应用响应!

边缘计算平台是一种基于云计算技术的辅助计算系统。它可以在数据源的边缘(例如传感器、IoT设备等)进行数据的处理和分析,从而为客户端提供更快、更可靠的应用响应。与传统的云计算模式相比,边缘计算平台更加灵活和实时,它通过在分布式的边缘设备上进行计算,可以大大减少由…

1-9Java数组

Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。 Java 语言中提供的数组是用来存储固定大小的同类型元素。 你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,numbe…

VR虚拟现实解决方案在电商行业中的7大优势

从电子商务的角度来看,虚拟现实可以通过多种方式为在线卖家带来好处。VR 可带来身临其境、富有创意且令人难忘的客户体验,可以极大地提高转化率。VR 可以通过更多方式使卖家受益。从电子商务的角度来看,虚拟现实可以通过多种方式为在线卖家带来好处。VR 可带来身临其境、富有…

Mathematica 入门

前言 Wolfram Mathematica(简称 MMA),是由 Wolfram Research 开发的科学计算软件。本文我们将介绍 Mathematica 的界面、语法和基本应用。类似的软件还有 MATLAB 和 Maple 等。 MMA 官网:https://www.wolfram.com/mathematica/ MMA 的安装及激活:Mathematica安装激活极简教…

【算法笔记】位运算详解

0. 前言 突然想到位运算是个好东西,就来水一波文章了…… 注意:我把能想到的有关位运算的所有内容都放进来了,所以篇幅较长,请谅解!若有写的不清楚或者不够详细的地方欢迎在评论区补充,谢谢支持! 本文中参考代码均使用C++编写。 废话不多说,下面步入正题。1. 基本运算 …