读软件设计的要素04概念的关系

news2024/11/24 12:02:05

1. 概念的关系

1.1. 概念是独立的,彼此间无须相互依赖

  • 1.1.1. 一个概念是应该独立地被理解、设计和实现的

  • 1.1.2. 独立性是概念的简单性和可重用性的关键

1.2. 软件存在依赖性

  • 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行

  • 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义

1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理由

  • 1.3.1. 概念依赖关系图有助于规划设计和构造软件的顺序、识别概念分组以及解释概念结构

1.4. 概念组合允许单个概念在相互关系中发挥特定的作用

1.5. 概念组合本身是对称的,因为同步的操作是平等的

  • 1.5.1. 概念组合可以引入不对称性,因为一个概念可以增强另一个概念的功能

2. 从概念到软件

2.1. 在大多数情况下,渐进式的开发会更好,因为这样开发人员能在早期就获得对其设计工作的反馈,评估已部署部分的价值,并在发现问题时及时处理

  • 2.1.1. 渐进式开发并不是单纯地增加概念

  • 2.1.2. 无节制地增加概念可能导致优秀产品的瓦解

2.2. 建立概念清单

  • 2.2.1. 通用概念清单

    • 2.2.1.1. 使用通用的概念不仅可以重用以前软件中的设计知识,还有助于简化设计

3. 概念依赖关系图

3.1. 由于每个概念都是通用且独立的,所以在传统的软件工程意义上不存在概念间的依赖关系

3.2. 概念之间存在其他依赖性,这与概念本身无关,而与它们在整个软件中的作用有关

3.3. 一个概念的存在可能依赖其他好几个概念

  • 3.3.1. 将其中一个依赖关系标记为主要依赖(实线箭头)​,将其他依赖关系标记为次要依赖(虚线箭头)​

  • 3.3.2. 次要依赖表示一个概念不太重要的存在理由

  • 3.3.3. 没有用户概念意味着无法进行身份验证

  • 3.3.4. 没有投票概念意味着用户无法为答案做出贡献

  • 3.3.5. 没有录音概念意味着提问中的鸟鸣声必须用文字描述,或者要链接至网络上的其他文件

3.4. 概念的任何子集都可以构成一个完备的软件,只要不存在指向该子集的依赖方

  • 3.4.1. 产品线的每个完备子集代表这些特定概念可能构建的软件

  • 3.4.2. 子集还可以表示软件开发的不同阶段

  • 3.4.3. 在开发的任何时间点,你都希望拥有一个完备的子集,以便将其作为一个完整的单元进行评估

4. 概念的映射

4.1. 从底层概念到物理界面

4.2. 概念需要映射到具体的用户界面,将操作映射为单击按键等手势,并将概念状态映射到各种显示视图

4.3. 应用用户界面设计原则时,概念有助于聚焦映射问题

4.4. 试图使用户界面比底层概念更简单可能会适得其反

4.5. 映射必须考虑典型的使用模式

4.6. 用户界面尽管很具有表现力,但可能无法将一切变得清晰,界面中的工具包可能会限制映射设计

  • 4.6.1. 有时甚至需要在用户界面中添加明确的注释

  • 4.6.2. 创建用户界面不仅包括视觉的设计,它的本质是设计一种从底层概念到物理界面的映射

4.7. 人机交互研究人员对映射的设计进行了广泛的研究,他们制定出的指南主要适用于设计的物理层次和语言层次,这一指南同样适用于通过概念设计的系统

4.8. 概念提供了机会以完善设计的概念层次与物理层次、语言层次的关系

5. 解决模棱两可的操作

5.1. 使用集合概念的软件Zotero可以将论文的引文组织为集合

5.2. safari提供了书签的集合

5.3. Adobe Lightroom允许用户定义照片或电影的集合

5.4. 集合概念与文件夹概念的显著不同是,在集合概念中,一个项目可以属于多个集合

6. 概念熟悉性

6.1. 好用的概念常常可以重用

6.2. 一个好的设计师不仅知道如何发明新概念,而且知道什么时候无须发明新概念

  • 6.2.1. 如果你的目的可以通过一个现有概念来实现,那么你最好再次使用这个概念

6.3. 概念与其他任何发明一样

  • 6.3.1. 不同的是,概念提供了一种将软件设计的知识和经验变得简单且连贯的方法,从而提供了更具细粒度的重用机会

6.4. 使设计可用的最简单的方法是使用熟悉的、现有的概念

  • 6.4.1. 使用用户充分理解的概念可以降低设计不合理的概率,并使设计对用户来说更加直观

6.5. 看起来瞬间爆发的灵感实际上往往来自经年累月的经验培养出的洞察力

  • 6.5.1. 一个伟大的设计师会记住一系列设计,随时准备应对遇到的每一个新的设计问题

  • 6.5.2. 只有当标准方案不足以解决问题时,他才会寻求新的解决方案

6.6. 软件与任何其他设计领域没有什么不同

  • 6.6.1. 应用以前设计的经验教训,你首先需要能够将设计思想提取为可重复使用的关键点,这就是概念的目的

  • 6.6.2. 概念是特定设计问题的特定解决方案,它不是一个大而模糊的问题,而是一个个会在许多情况下反复出现的小而明确的需求

6.7. 创造一个新概念来实现一个现有概念可以完美实现的目的不仅是浪费精力,还容易让已经熟悉现有概念的用户感到困惑

6.8. 当将概念映射到用户界面时,对非常规小部件的需求可能表明其基本概念本身就是繁杂和非常规的

7. 概念的重用

7.1. 概念的重用是非常广泛的,尤其是在Web软件中

7.2. 相同的概念可能以不同的形式出现

  • 7.2.1. 聊天室概念变成了WhatsApp或Google Groups或Facebook中的小组概念以及IRC或Slack中的频道概念

  • 7.2.2. Twitter提供了一个将其设计与现有概念联系起来的很好的例子:关注概念

7.3. 在你发明一个新概念以前,查看现有的概念,看看是否有一个概念满足你的需求

7.4. 请记住,你需要的概念可能来自一个非常与众不同的领域

8. 避免发明新概念

8.1. 当设计师在重用现有概念与发明新概念之间做选择时,最好选择重用通用概念,除非确定现有概念不能有效实现目的

8.2. Keynote的行为大多简单且可预测

  • 8.2.1. 他们没有从头开始设计,这也是苹果的组概念更直观的原因

8.3. 如果现有概念似乎仅部分满足你的目标,相较于修改或扩展它,请探索它是否可以与另一个现有概念组合起来提供你需要的功能

9. 概念实例的一致性

9.1. 当设计中出现的概念是熟悉的通用概念的实例时,它应该严格遵守通用概念的行为方式,除非有很好的理由不这样,并且它与通用概念的偏差非常明显

9.2. 没有所谓的对与错,关键在于对概念的熟悉程度以及随之而来的预期

9.3. 预期是软件设计中必须认真对待的强有力因素

9.4. 当概念的行为不可预测且出现不同种行为的可能性似乎相同时,概念设计很可能是错误的

  • 9.4.1. 一个好的设计具有必然性的品质

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a "11", b "1" 输出:"100" 示例 2: 输入:a "1010", b "…

单GPU一分钟生成16K高清图像!新加坡国立发布LinFusion:无缝兼容Stable Diffusion插件

论文链接:https://arxiv.org/pdf/2409.02097 Git链接:https://lv-linfusion.github.io/ 亮点直击 本文研究了Mamba的非因果和归一化感知版本,并提出了一种新颖的线性注意力机制,解决了扩散模型在高分辨率视觉生成中的挑战。 本文…

Vue——day11之生命周期

目录 生命周期的八个阶段 生命周期执行的流程图 代码示例 总结 Vue的生命周期是指在Vue实例创建、挂载、更新和销毁过程中,会触发的一系列钩子函数。这些钩子函数可以用来在不同的生命周期阶段执行相应的逻辑操作。 生命周期的八个阶段 Vue的生命周期可以分为…

Github 2024-09-08 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-09-08统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10TypeScript项目1JavaScript项目1Laravel: 以优雅语法简化Web开发 创建周期:4028 天开发语言:PHP协议类型:MIT LicenseStar数量:30…

gazebo 已加载模型但无法显示

目录 写在前面的话问题一:robot_state_publisher 发布机器人信息失败报错一 Error: Error document empty.报错二 .xcaro 文件中有多行注释成功启动 问题二:通过 ros2 启动 gazebo 失败成功启动 问题三:gazebo 崩溃和无法显示模型问题四&…

使用LSTM(长短期记忆网络)模型预测股票价格的实例分析

一:LSTM与RNN的区别 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)架构。LSTM是为了解决传统RNN在处理长序列数据时遇到的梯度消失或梯度爆炸问题而设计的。 在传统的RNN中,信息通过隐藏状…

电动机制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

电动机制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型。5G智能工厂与物联数字孪生平台的融合应用,为电动机制造业的数字化转型铺设了一条高速通道。这一创新模式不仅极大地提升了生产效率,还深刻改变了产品的设计、生产、管理及运…

在全球化时代成为超级个体:Web3、个人品牌与AI工具的融合

随着Web3技术和人工智能的快速发展,个人品牌建设与创作者经济正在迎来前所未有的机遇。《Web3Brand》是一个专注于帮助用户理解Web3技术、建立和增强个人品牌、提升创作者经济实力,并利用AI工具提高工作效率的平台。本文将探讨该博客如何通过提供播客、案例分析、策略指南和工…

redis内存清理和linux系统清理缓存以及redis启动

1清空所有数据库 redis-cli FLUSHALL 2清空所有数据库redis-cli FLUSHDB 3. 删除指定的缓存键 redis-cli DEL <key>4. 设置键过期 redis-cli EXPIRE <key> <seconds>例如&#xff1a; redis-cli EXPIRE mykey 605.启动redis 这个启动命令要在/usr/loca…

sql 中名字 不可以 包含 mysql中 具有 特定意义 的单词

这种sql执行不报错 这种sql执行报错 所以sql中名字不可以使用mysql中具有特定意义的单词 以此文章作为警告&#xff0c;我下次起名字不可以使用 mysql中具有特殊意义的字符 就因为这个导致我搞了一个多小时&#xff0c;急死我了&#xff0c;周五就要前后端联调了。下次千万不…

NSmartProxy:一款.NET开源、跨平台的内网穿透工具

前言 今天大姚给大家分享一款.NET开源、免费&#xff08;MIT License&#xff09;、跨平台的内网穿透工具&#xff0c;采用.NET Core的全异步模式打造&#xff1a;NSmartProxy。 内网穿透工具介绍 内网穿透工具是一种能够允许用户从互联网上的任何地方安全地访问并管理处于内…

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题&#xff0c;就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的&#xff0c;就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream> # include<vector>…

数据结构:线性表的顺序存储

文章目录 &#x1f34a;自我介绍&#x1f34a;线性表的顺序存储介绍概述例子 &#x1f34a;顺序表的存储类型设计设计思路类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我…

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导&#xff1a; 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规&#xff0c;其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性&#xff0c;欧盟REACH法规规定&#…

【H2O2|全栈】关于HTML(2)HTML基础(一)

HTML相关知识 目录 前言 准备工作 标签的具体分类&#xff08;一&#xff09; 本文中的标签在什么位置使用&#xff1f; 属性 标题标签 段落标签 文本格式化标签 分类汇总 计算机输出标签 ​编辑分类汇总 引文&#xff0c;引用标签 分类汇总 预告和回顾 UI设计…

SAP学习笔记 - 开发04 - Fiori UI5 开发环境搭建

上一章学习了 CDSView开发环境的搭建&#xff0c;以及CDSView相关的知识。 SAP学习笔记 - 开发03 - CDSView开发环境搭建&#xff0c;Eclipse中连接SAP&#xff0c;CDSView创建-CSDN博客 本章继续学习SAP开发相关的内容&#xff0c; - Fiori UI5的开发环境搭建 - 安装VSCode …

JavaScript Web API入门day7

目录 1.图片切换模块 2.鼠标经过以及离开中等盒子&#xff0c;大盒子的处理 3.黑色遮罩层的位置以及放大功能 4.放大镜的完整代码 1.图片切换模块 效果图&#xff1a; 思路分析&#xff1a; ①&#xff1a;鼠标经过小盒子&#xff0c;左侧中等盒子显示对应中等图片 获取对…

2024 年高教社杯全国大学生数学建模竞赛B题第一问详细解题思路(终版)

示例代码&#xff1a; from scipy.stats import norm# 定义参数 p0 0.10 # 标称次品率 alpha 0.05 # 95% 信度下的显著性水平 beta 0.10 # 90% 信度下的显著性水平 E 0.01 # 允许的误差范围# 计算95%信度下的样本量 Z_alpha_2 norm.ppf(1 - alpha / 2) n_95 ((Z_alp…

ICM20948 DMP代码详解(7)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;6&#xff09; 上一回讲解了EMP-App中的入口函数main()中重点关注的第2段代码的前一个函数inv_icm20948_reset_states&#xff0c;本回讲解后一个函数inv_icm20948_register_aux_compass。 为了便于理解和回顾&#…

mipi协议:多通道分配和合并

Multi-Lane Distribution and Merging: CSI-2 是一个通道可扩展的规范。对于需要比单个数据通道提供更多带宽的应用&#xff0c;或者那些希望避免高时钟频率的应用&#xff0c;可以通过增加数据通道的数量来扩展数据路径&#xff0c;从而近似线性地提高总线的峰值带宽。为了确保…