首页 > 其他分享 >读软件设计的要素03概念的组合

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

时间:2024-09-07 08:54:58浏览次数:9  
标签:03 5.2 同步 组合 要素 软件设计 用户 概念 操作

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,5.2,同步,组合,要素,软件设计,用户,概念,操作
From: https://www.cnblogs.com/lying7/p/18400454

相关文章

  • 【零基础玩转树莓派】03-USB摄像头和CSI摄像头的使用
    摄像头USB摄像头的使用环境搭建FSWebcam是一个简洁明了的网络摄像头应用程序,软件安装命令如下:sudoaptinstallfswebcam添加用户权限:sudousermod-a-Gvideo示例:添加pi用户权限到群组中:sudousermod-a-Gvideopi检查用户是否已正确添加到群组中:groups查看USB......
  • Parse error: syntax error, unexpected 'function' (T_FUNCTION) in core\function
    遇到 Parseerror:syntaxerror,unexpected'function'(T_FUNCTION) 的错误,通常是因为PHP代码中存在语法错误。这种错误通常发生在PHP版本不兼容的情况下,或者代码本身有语法问题。分析错误错误信息指出在\core\function\helper.php 文件的第80行出现了语法错误。......
  • 【Java+GDAL】读取shp信息(字段、要素属性等)
    文章目录前言一、GDAL和Java版本二、代码实现1.引入gdal环境2.读取字段名和类型3.读取要素相关信息4.测试使用总结前言例如:之前写了两篇shp字段的文章,Java使用gdal更改shp要素的字段属性值和Java使用gdal重命名shp属性字段,没有讲到怎么读字段、字段值、要素等等。......
  • 电力场景变电站继电保护控制柜屏幕检测数据集VOC+YOLO格式1103张6类别
    数据集格式:PascalVOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1103标注数量(xml文件个数):1103标注数量(txt文件个数):1103标注类别数:6标注类别名称:["MuXianBaoHuPing","ZhiLiuPeiDianPing"......
  • Day03.HelloWorld
    HelloWorld新建一个文件夹,存放代码新建一个Java文件>文件后缀名为.java(系统未显示文件后缀名>查看>显示>文件扩展名)编写代码publicclassHello{publicstaticvoidmain(String[]args){System.out.print("Hell......
  • F. Sakurako's Box
    原题链接题意给定一个数组,随机取两个数并相乘,求该期望分析暴力方法:遍历所有数对,然后累加,最后除以数对个数\(O(n^2)\)每个数的贡献为\(\suma_j,j\in[1,n],j\nei\),遍历计算每个数对最后累加和的贡献由于要去重,所以每个数的贡献只统计前面的数的和\(O(n)\)code#include......
  • D. Sakurako's Hobby
    原题链接题意每个数要么黑色,要么白色,每个数都有跳往下一个数,请问你最多能得到几个黑色数?分析前往下一个数具有很强的指示性,所以我们可以画一个有向图出来那么问题就变成了一个有向图,问图中的每个点最多能到达几个黑色的点?(只有一个出边)但是注意本题,由于是排列,每个点最多只有......
  • 03-数据库连接池
      注意:springboot没有特别更改的话,默认使用Hikari数据库连接池接口 切换Druid数据库连接池 1)在pom.xml增加druid依赖<!--druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><versi......
  • 面向对象开发重点摘要【软件设计师】
    文章目录前言一、面向对象基础1.1基本概念1.2面向对象开发流程二、UML2.1UML图的概念及分类2.2UML中的关系三、设计模式3.1设计模式分类汇总3.2创建型模式3.3结构型模式3.4行为型模式前言本文是在备考软考-软件设计师时编写的,为了记忆重点内容,内容较为简略,只是粗......
  • PAT乙级 1030 完美数列 测试点3.4
    一、题目二、代码#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;boolcmp(longlonga,longlongb){ returna<b;}intmain(){ longlongn,p; cin>>n>>p; longlongnum=0,temp=0; ve......