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

【功能安全】 独立于环境的安全要素SEooC SEooC:Safety Element out of Context独立于环境的安全要素。 阅读详情

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放射治疗机

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算) 本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。 阅读详情

相关推荐

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 405

读软件设计的要素07读后总结与感想兼导读

读后总结与感想兼导读

lyingSeven的博客 463

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 412

软件设计原则之组合优于继承

“组合优于继承”是一个面向对象编程的设计原则,它建议我们在需要复用代码的时候,尽量使用组合(has-a)的方式,而不是继承(is-a)的方式。组合是指一个类包含另一个类的对象作为自己的属性,而继承是指一个类直接从另一个类派生出来,拥有其所有的属性和方法。

hpx666的博客 1944

别再被坑了!手把手教你从官网下载免费正版Notepad++(附最新网盘链接)

本文详细指导如何从Notepad++官网安全下载正版软件,避免山寨版本带来的安全风险。通过识别官网特征、推荐官方下载渠道、揭露山寨网站骗局及验证正版功能,帮助用户高效获取纯净的Notepad++代码编辑器,并分享实用插件和配置优化技巧。

weixin_42527654的博客 562

无感健康监测的未来:毫米波雷达如何重新定义睡眠科技与居家养老

毫米波雷达技术正重新定义无感健康监测,特别是在睡眠科技与居家养老领域。通过精准监测呼吸、心率和体动,无需穿戴设备即可实现临床级精度。结合合宙Air700E开发板,构建了完整的远程看护解决方案,为老年人提供跌倒检测、异常报警等安全保障,同时保护用户隐私。

cake8的博客 568

软件设计模式概述

模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。要点Context(模式可适用的前提条件)Theme或Problem(在特定条件下要解决的目标问题)Solution(对目标问题求解过程中各种物理关系的记述)设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。

qq_63538423的博客 1718

SPSS因子分析实战:从数据清洗到结果解读的完整流程

本文提供了一份详尽的SPSS因子分析实战指南,涵盖从数据清洗、适用性检验(KMO与巴特利特检验)、公因子提取、因子旋转到结果解读与报告撰写的完整流程。通过具体案例,手把手教你如何利用SPSS进行探索性因子分析,实现数据降维并提炼核心公共因子,适用于市场研究、心理学等多变量数据分析场景。

weixin_29055699的博客 329

软件设计师:03-数据库系统

模式:也称概念模式,它是数据库中全体数据的逻辑结构和特征的描述。只涉及型的描述,不涉及具体的值。概念模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。描述模式的数据定义语言为:模式DDL。外模式:也称用户模式或子模式,是用户与数据库系统的接口,是用户看到的那部分数据的描述。 描述外模式的数据定义语言为:外模式DDL。内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方法,定义所有的内部记录类型、索引和文件的组织方法,以及数据控制方面的细节。描述内模式的数据定义语言为:

Laptoy的博客 2万+

2022年全国职业院校技能大赛高职组大数据技术与应用赛项赛卷⑩—解析答案

工业互联网是工业全要素、全产业链、全价值链的全面连接,是人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键支撑。加快发展工业互联网产业,不仅是各国顺应产业发展大势,抢占产业未来制高点的战略选择,也是我国推动制造业质量变革、效率变革和动力变革,实现高质量发展的客观要求。 为完成工业大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 582

整理 钢琴 约翰·汤普森现代钢琴(大汤)

大汤

TS的博客 4000

从程序员到软件设计师

软件产业发展到今天,分工越来越细。程序员做为一个通用的称谓已经无法确切定义各种工作的特点和分类。正因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名称,这也使得很多进入这个领域的软件开发人员无法制定自己未来的技术职业发展之路。 实际上,软件公司也逐渐认识到了对程序员分类的重要性,开始将各种职位定义的更加准确。对于从事软件开发的程序员来说...

aiqixiao2017的博客 203

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

软件设计师:03 - 数据库系统

03 - 数据库系统,软考备考,持续更新

小赵的博客 1126

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

什么是设计模式?

主要介绍了什么是设计模式,设计模式的分类及其作用等

再努力一点点就好了 1850

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

软件设计模式体系结构笔记

软件设计模式体系结构概述笔记1.1软件体系结构引言1.1.1软件危机的表现1.1.2软件危机的原因1.1.3解决方法1.1.4软件系统容易出现的缺点1.1.5实现软件复用的方式软件体系结构:1.2设计模式以及遵循原则1.2.1模式(Pattern)1.2.1.1模式的定义 1.1软件体系结构引言 1.1.1软件危机的表现 (1)软件成本日益增长 (成本) (2)开发进度难以控制 (进度) (3)软件质量差 (质量) (4)软件维护困难 (维护) 1.1.2软件危机的原因 (1)用户需求不明确 (用户需求)

weixin_42434636的博客 745

耦合之殇,软件设计中的隐疾

链接器可以选择解析对文件A中的函数定义的所有调用(情况1),也可以对文件A中对其包含的定义的调用、文件B中对其包含的定义的引用和文件C中的调用中的任何一个进行解析(情况2)。图12中的信息将函数调用关系以表格的形式进行了展示,该表中另外对实际调用过程中传递的参数进行映射,该表不仅展示了调用关系(控制耦合),更进一步包含了调用的参数及其类型(数据耦合),便于用户根据表格和需求进行比对。在生产中,通过记录生产流程中的各个环节及其耦合关系,可以快速追溯质量问题的根源,从而采取有效的改进措施。

TICPSH的博客 1322

【软件设计师03】数据库系统

规范化理论、关系代数必考数据库模式、ER模型、关系代数与演算、规范化理论、并发控制、数据库完整性约束、分布式数据库、数据仓库与数据挖掘。

日常记录 631

【软件设计模式】 观察者模式详解

观察者模式是一种行为设计模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式特别适合于实现分布式系统中的事件处理系统,以及在需要在应用中实现广播通信时使用。

Lewiz_124的博客 3013

Composite (组合模式)

定义:允许你将对象组合成树型结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理 个别对象 以及 对象组合。 角色: 1) 抽象构建角色 (Component) 2) 叶子节点角色 (Leaf) 3) 组合构建角色 (Composite) 4) 客户端 (Client) Component.java package com.composite ; ...

weixin_30297281的博客 76

组合模式 The Composite Pattern

组合模式 允许你将对象组合成树形结构来表现“整体/部分”的层次结构。组合能让客户以一致的方式处理个别对象及对象组合。 换句话说,在大多数情况下,我们可以忽略 对象组合 和 个别对象 之间的差别。 树形结构: 类图 1、Component(组件)为组合中的所有对象定义一个接口,不管是组合还是叶节点 包含其他组件的组件 为组合对...

weixin_30436891的博客 71

设计模式——组合模式

  将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。Composite模式使得用户对单个对象和组合对象的使用具有一致性。 效果及实现要点  1、Composite模式采用树形结构来实现普遍存在的对象容器,从而将“一对多”的关系转化“一对一”的关系...

weixin_30872867的博客 87

【快速学习系列 - 阅读笔记 - 03】《软件设计师教程》

1)NUL用于结束一个ACSII字符串;NULL用于表示什么也不指向的空指针。 2)break语句事实上跳出的是最近的那层循环语句或者switch语句。 3)广义地说,软件是指系统中的程序以及开发,使用程序所需要的所有文档的集合。 4)软件开发过程分为五个阶段:分析、设计、编码、测试、维护。 5)软件设计思路和方法的一般过程: 设计软件的功能和实现的算法和方法, 软件的总体结构设计和模...

星辉领域 328

CppCon 2019 学习:C++ Design Patterns: From C++03 to C++17

C++ 的语言特性发展显著降低了许多设计模式的实现成本:例如,在 C++ 中构建一个配置复杂的对象: 使用方式: 如需了解 Builder 模式在现代 C++ 中如何与 、 或模板配合优化,也可以继续深入讨论。 输出示例: 特点总结: 构造过程分离:构造逻辑和类本身分开, 封装构建过程。 链式调用:Builder 的每个方法都返回引用,实现 Fluent Interface。 封装性强: 的构造函数私有,防止非法构造。 扩展灵活:可以轻松扩展更多设置项,而不影响已有逻辑。 以下是对 C++03 中 B

虾球 964

java设计模式03-UML中的类图及类图之间的关系

统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 统一建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简...

qq_29434541的博客 396
上一篇: 读软件设计的要素02概念的目的
下一篇: 读软件设计的要素04概念的关系
躺柒
博客等级 码龄4年 7004粉丝 1321原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值