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

2024-09-08 10:28

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

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. 一个好的设计具有必然性的品质

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



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

相关文章

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

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

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

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

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

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

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

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

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下了数万次跳棋,计算机逐渐学会了下在哪里有更大的可能会赢得比赛,哪里会输,通过这种方法,最

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

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

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