读软件设计的要素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放射治疗机