读软件设计的要素03概念的组合

2024-09-07 10:20

本文主要是介绍读软件设计的要素03概念的组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 概念的组合

1.1. 概念不像程序那样,可以用较大的包含较小的

  • 1.1.1. 每个概念对用户来说都是平等的,软件或系统就是一组串联运行的概念组合

1.2. 概念是通过操作来同步组合的

  • 1.2.1. 同步并不增加新的概念操作,但会限制已有的操作,从而消除一些独立概念可能会出现的操作序列

1.3. 在自由组合中,概念彼此独立,仅受一些记录的约束,这些约束是为了确保概念对事物观点的一致性

1.4. 在合作组合中,概念共同工作,通过自动化提供新的功能

1.5. 在协同组合中,概念更加紧密地交织在一起,一些概念可以帮助另一些概念实现目的

1.6. 概念的组合为创造性设计提供了机会,即使其中的每个概念都是通用概念

  • 1.6.1. 协同组合常常是设计的精髓,简单组件的组合可以带来意想不到的力量

1.7. 同步是软件设计的重要组成部分

1.8. 全新的组合形式

  • 1.8.1. 在默认情况下,概念彼此是独立的

    • 1.8.1.1. 只要概念允许,可以采用任何顺序调用概念的操作
  • 1.8.2. 自动化并不能完成以前手动无法完成的事情,而只能自动完成那些不可避免的事情

2. 自由组合

2.1. 自由组合是最松散的组合形式,在这种组合中,概念被合并到一个软件中,但在大多数情况下每个概念依然独立运行

2.2. 标签概念

  • 2.2.1. 将标签与项目关联起来,并包含了一个查找(find)的操作,允许用户筛选带有给定标签的所有项目

  • 2.2.2. 在实践中,待办与标签概念可以提供更丰富的功能

2.3. 在自由组合中,概念在很大程度上是相互独立的,但仍然需要做一些记录,以排除一些无意义的操作

2.4. 同步并不会增加新的操作

  • 2.4.1. 同步只是清除了一些操作

  • 2.4.2. 同步的目的是确保从每个概念的角度来看都存在相同的一组事物,即标签概念不能引用待办概念中不存在的任务,也就是说这些概念是存在耦合的

2.5. 在自由组合中,软件通常由正交的概念组合而成,每个概念都有自己的功能,同步仅用于记录

3. 合作组合

3.1. 合作组合是更紧密的组合形式,能将多个概念连接在一起,提供两个概念本身都没有的新功能

3.2. 日志(Logging)

  • 3.2.1. 这是一个跟踪事件的概念,可以与其他概念合作组合使用

  • 3.2.2. 跟踪的目的可以是诊断故障,通过留存事件序列,在事故发生后分析导致故障的原因

    • 3.2.2.1. 可以是性能分析,检查服务的响应性能

    • 3.2.2.2. 可以是行为解析,收集服务中的用户数据及其行为模式

    • 3.2.2.3. 可以是入侵检测,根据请求模式,检测可能正在进行的攻击

    • 3.2.2.4. 可以是审计,例如记录医院中哪些员工访问了健康记录

3.3. 限制(Suppression)

  • 3.3.1. 访问限制的概念可以通过同步授权操作与被授权的行为,防止产生未经授权的用户操作

    • 3.3.1.1. 如果授权操作(由访问限制确定)没有发生,与之相关的操作也不会发生

    • 3.3.1.2. 在社交媒体软件中将朋友概念与帖子概念组合在一起,那么用户就只能阅读朋友的帖子

3.4. 分段(Staging)

  • 3.4.1. 可以将不同阶段的操作联系在一起

3.5. 通知(Notification)

  • 3.5.1. 大多数软件和服务都会向用户发送通知

    • 3.5.1.1. 日历发送日程提醒

    • 3.5.1.2. 论坛发送注册提醒

    • 3.5.1.3. 在线商店发送购买确认

    • 3.5.1.4. 快递公司发送物流状态更新

    • 3.5.1.5. 社交媒体软件发送更新提醒

3.6. 减轻(Mitigation)

  • 3.6.1. 有时自由组合给用户提供了太多的自由度,导致了一些不良行为,这时就可以通过合作组合来减少不良行为

  • 3.6.2. 许多社交媒体平台将帖子概念和投票概念组合,让用户对帖子进行评价

    • 3.6.2.1. 如果帖子概念允许编辑行为,则会产生一种困境,因为用户可以在收到很多评价后,再完全更改帖子内容,让人误以为这些评价是针对新内容的

    • 3.6.2.2. 一种常见的解决方法是为已编辑的帖子添加一个永久的标记

    • 3.6.2.3. 另一种方法是将帖子概念中的编辑操作与另一个撤销评价的操作同步

3.7. 推理(Inference)

  • 3.7.1. 有时用户并不直接执行某些操作,而是通过其他操作间接执行

  • 3.7.2. 大多数通信软件会区分已读和未读项目,并允许用户切换它们的状态

3.8. 连接分离的关注点(Bridging separated concerns)

  • 3.8.1. 采用自由组合的方式将关注点分离,通常会提高软件中概念的清晰度和可用性

  • 3.8.2. 蜂窝概念和WiFi概念允许用户独立管理蜂窝数据和本地网络的使用,以及管理使用这些数据和网络的软件

3.9. 在合作组合中,同步在提供自动化的概念间建立连接,从而产生一些单个概念不具备的新功能

4. 协同组合

4.1. 协同组合更精妙

  • 4.1.1. 在自动化间建立连接

  • 4.1.2. 通过更紧密的同步概念,一个概念的功能会增强另一个概念的功能

  • 4.1.3. 组合的整体价值超过了概念价值的总和

4.2. Gmail标签和废纸篓

4.3. Moira列表和组

4.4. 免费样品和购物车

4.5. Photoshop的通道、蒙版和选区

4.6. 废纸篓与文件夹的美妙协同

  • 4.6.1. 最初,废纸篓只是一个已删除文件的集合,如果你删除了一个文件夹,文件夹中的文件将零散地位于废纸篓中

  • 4.6.2. 现在的废纸篓设计可以理解为由废纸篓和文件夹这两个显著概念构成的巧妙组合

  • 4.6.3. 废纸篓概念的基本思路是,恢复已删除文件,或通过清空废纸篓永久删除它们

4.7. 难以完美的协同

  • 4.7.1. 完美实现不同概念的功能协同几乎是不可能的,因此大多数协同都需要付出一些代价

5. 同步

5.1. 在开始设计概念时,同步是整个软件设计的重要部分

  • 5.1.1. 同步太多会使用户失去控制权,一些概念的自由组合允许的场景可能不会出现

  • 5.1.2. 如果同步太少,一些本可以自动完成的工作却成为用户的负担,有时还会带来意外和不当行为,甚至是灾难性的后果

5.2. 同步过度

  • 5.2.1. 日历软件的最初设计却因为“删除邀请”而给用户带来了困扰

    • 5.2.1.1. 用户无法在不通知事件发起者的情况下拒绝事件,因为删除概念与拒绝概念是绑定的

    • 5.2.1.2. 如果你只是想清理日历的空间,这一设计可能会让你冒犯朋友

    • 5.2.1.3. 如果向你发送事件邀请的是垃圾邮件,情况会更糟

    • 5.2.1.4. 解决这个问题的唯一笨办法是再创建一个新日历,将事件移至其中,然后再将新日历中的事件全部删除

  • 5.2.2. Tumblr的不良设计

  • 5.2.3. Twitter的回复

  • 5.2.4. 不需要的谷歌同步

  • 5.2.5. 爱普生强横的打印机驱动程序

5.3. 同步不足

  • 5.3.1. 该小组是否可以出现在组目录(Group directory)中取决于另一个设置菜单

    • 5.3.1.1. 除非此小组的可见性设置为“网络上的任何人”(Anyone on the web),否则该小组不仅被排除在组目录之外,而且用户根本无法访问该组,甚至无法申请加入该小组

    • 5.3.1.2. 原因是,权限概念中确定谁可以申请加入的操作与组概念中设置可见性的操作缺乏同步

  • 5.3.2. Lightroom的导入功能

  • 5.3.3. Google Forms、Google Sheets和数据可视化

  • 5.3.4. Zoom的举手功能

  • 5.3.5. Therac-25放射治疗机

这篇关于读软件设计的要素03概念的组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144791

相关文章

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

Go组合

摘要 golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间使用匿名引入的方式实现对象属性方法的组合 组合使用注意项 使用匿名引入的方式来组合其他struct 默认优先调用外层方法 可以指定匿名struct以调用内层方法 代码 package mainimport ("fmt")type People struct{}type Pe

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

【机器学习-一-基础概念篇】

机器学习 定义分类算法 应用 定义 机器学习最早是被Arthur Samuel 提出的一个概念,指计算机无需明确编程即可学习的研究领域。1950年他发明的跳棋程序,这个人机对弈游戏让他的声名鹊起,机器学习这个概念才进入大众的是视线。 在这个跳棋程序里,他编程了一种算法,这个程序与Arthur下了数万次跳棋,计算机逐渐学会了下在哪里有更大的可能会赢得比赛,哪里会输,通过这种方法,最

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。