读软件设计的要素06概念完整性

news2024/9/21 22:35:45

1. 概念完整性

1.1. 当概念组合成一个软件时,它们可以同步以便协调行为

  • 1.1.1. 同步可能会消除一个概念的某些行为,但决不会添加与该概念的规范不一致的新行为

  • 1.1.2. 在使用概念设计软件时,即使你没有精确定义同步,至少要说服自己,概念之间的每次交互至少在原则上都可以被视为同步

1.2. 如果概念组合的方式不正确,从特定概念的操作和结构来看,概念的行为可能会破坏它的规范

1.3. 概念违反完整性的行为会使用户感到困惑,因为他们针对概念行为的心智模型受到了破坏

1.4. 当一个由概念组成的系统运行时,每个概念也都作为一个“小机器”运行着,控制着操作发生的时间及其对概念状态的影响

  • 1.4.1. 同步使一个概念的操作与另一个概念的某些操作同时发生,这能进一步约束操作

1.5. 一个概念不能直接改变另一个概念的状态,也不能以某种方式改变概念的某个操作行为

1.6. 如果概念的实现框架允许它们以其他方式交互,或者代码中出现错误,那么一个概念可能会以一种违反它自身规范的方式运行

  • 1.6.1. 一些调整可能会在保留概念规范的基础上添加一些新的功能,也有一些调整可能会直接破坏概念规范

1.7. 当一个概念与其他概念组合时,保持概念的完整性至关重要

1.8. 如果你在使用软件或分析可用性问题时遇到问题,并发现某个概念的行为方式比较异常,请想想这是否能归咎于另一个概念的干扰

1.9. 为了保证概念完整性,请确保一个看似通用的概念确实是通用的

2. 预订

2.1. 假设有一个餐厅的老板因餐厅的综合评级较低而感到十分沮丧,他决定入侵该软件来惩罚恶意差评的顾客

2.2. 他修改了软件设置以便恶意差评的顾客在后续预订时,即使没有取消预订,当他们到达餐厅时也没有预订记录,因此没有餐桌供他们使用

  • 2.2.1. 行为不符合任何合法的同步原则

    • 2.2.1.1. 不仅将两个概念结合在一起,还破坏了预订这个概念

    • 2.2.1.2. 违反概念完整性的行为

2.3. 假设报复顾客的餐厅老板入侵了该软件,使得任何顾客只要发布差评就会失去在任何餐厅的任何预订

  • 2.3.1. 可怜的顾客尽管从未打算取消预订,但仍可能收到取消通知,因为预订概念与通知概念同步

  • 2.3.2. 在给出通知的情况下取消预订不侵犯预订概念的完整性,因为从预订概念的规范来看,它是完全可以理解的

2.4. 预订概念的规范没有提及谁可以取消预订

3. 字体格式

3.1. 文本格式有三个简单的属性:粗体(Bold)、斜体(Italic)和下划线(Underline)

3.2. 真正的印刷体斜体从来不是罗马式斜体,而是更流畅和有书法效果的经典版本

3.3. 有了这些丰富的字体,所有的麻烦都烟消云散了,但格式切换概念也不再有效

  • 3.3.1. 字体概念的扩展破坏了格式切换概念

4. Google Drive

4.1. 同步的目的是保持两个文件夹之间的一致性,其操作原则是一个文件夹中的任何改动也会作用于另一个文件夹

4.2. 与备份概念不同,同步概念也会传递删除操作,这会让文件井井有条

4.3. 同步概念的一个基本属性是两个集合中的文件副本完全一致

5. 战略家、分析师和技术顾问

5.1. 识别概念及其价值是最重要的,而设计单个概念的细节则是次要的

5.2. 考虑的问题

  • 5.2.1. 有哪些关键概念

    • 5.2.1.1. 关键概念是什么

    • 5.2.1.2. 通过构建概念清单,你将获得概念功能的“鸟瞰图”​,即思考战略行动的视角

    • 5.2.1.3. 构建这些概念的依赖关系图,看看它们如何相互关联,以及哪些概念处于核心位置

  • 5.2.2. 概念是否发生了变化

    • 5.2.2.1. 当你查看现有系统中的概念时,确定每个概念是何时引入的,并研究它们是否随时间的推移发生了变化或持续保持稳定
  • 5.2.3. 最有价值的概念是什么

    • 5.2.3.1. 是否有一个杀手级的概念
  • 5.2.4. 是否有让人困惑的概念

  • 5.2.5. 定义软件系列的共享概念是什么

    • 5.2.5.1. 共享同一概念的不同软件彼此一致,还是存在随机的微小差异?

    • 5.2.5.2. 如果将多个软件中出现的概念统一起来,它们将来可能会有共享概念

  • 5.2.6. 每一个概念的目的分别是什么

  • 5.2.7. 是否有缺失的概念

  • 5.2.8. 竞争对手的概念是什么

    • 5.2.8.1. 看看同一领域的竞争软件,盘点一下它们的关键概念

6. 交互设计师和产品经理

6.1. 还需要关注单个概念的设计和实现问题,以及概念的可用性问题

6.2. 考虑的问题

  • 6.2.1. ①传达给用户的概念是否一致

    • 6.2.1.1. 你的软件是否通过它的用户界面、用户手册和帮助指南等支持材料,将概念成功地传达给了用户
  • 6.2.2. ②如何解释概念

    • 6.2.2.1. 令人信服地展示了每个概念实现其目的的设计方式?
  • 6.2.3. ③是否有可用性问题

  • 6.2.4. ④软件都有哪些概念

  • 6.2.5. ⑤是否有冗余概念

  • 6.2.6. ⑥是否有概念过载

  • 6.2.7. ⑦概念可以被分解吗

  • 6.2.8. ⑧是否有效使用了熟悉的概念

  • 6.2.9. ⑨概念是如何同步的

    • 6.2.9.1. 是否存在同步不足的情况

    • 6.2.9.2. 是否存在同步过度的情况

  • 6.2.10. ⑩是否在利用协同效应

  • 6.2.11. ⑾概念是否能有效地映射到用户界面

  • 6.2.12. ⑿是否分析过概念的依赖关系

  • 6.2.13. ⒀概念是否可以完整地组合在一起

    • 6.2.13.1. 每个概念单独来看都是合理的,但当与软件中的其他概念组合在一起时,单个概念的合理性可能会被削弱
  • 6.2.14. ⒁概念的知识是否有安全的文档记录

    • 6.2.14.1. 一个概念设计可能经过多年的演变,积累了几代设计师的大量修正和完善

    • 6.2.14.2. 如果这些知识只能体现在代码中,那么一旦一个新程序员没有意识到其中的微妙之处而修改了这些代码,这些知识就会丢失

    • 6.2.14.3. 记录一个软件的设计知识是很重要的,从中可以跟踪一个概念的发展

7. 支持材料编写者、培训师和营销人员

7.1. 用户可以通过这些材料熟悉软件并在遇到困难时寻找解决之道

7.2. 考虑的问题

  • 7.2.1. 支持材料是否围绕概念组织

  • 7.2.2. 概念是否具有清晰明确的目的

  • 7.2.3. 概念的操作原则是否能解释清楚

  • 7.2.4. 概念的解释是否合理

8. 程序员和架构师

8.1. 依赖关系图可以用于划分开发阶段,也可用于规划版本升级路线

8.2. 考虑的问题

  • 8.2.1. 哪些概念集合可用于构建最小可行产品

  • 8.2.2. 哪些概念实现起来很有挑战性

  • 8.2.3. 能避免重蹈覆辙吗

  • 8.2.4. 是否在适当的地方使用了标准库概念

  • 8.2.5. 概念是否尽可能通用

    • 8.2.5.1. 是否使用了不必要的特殊数据类型
  • 8.2.6. 能否将概念模块化

    • 8.2.6.1. 概念之间是否存在可以消除的代码依赖关系,使得概念更容易被修改和重用
  • 8.2.7. 概念之间是否存在复杂的同步

  • 8.2.8. 有些概念操作是否涉及复杂的条件

9. 研究人员和软件哲学家

9.1. 考虑的问题

  • 9.1.1. 概念目录应该如何构建

    • 9.1.1.1. 概念目录或手册既有助于设计师记录他们的专业知识,也可使新手更容易获得这些专业知识

    • 9.1.1.2. 概念目录对概念的重用也大有裨益,能够帮助设计师避免已知的陷阱

  • 9.1.2. 是否存在复合概念

    • 9.1.2.1. 一个概念被分解成更小的概念时,这个概念是否仍然拥有自身的权益和目的呢?
  • 9.1.3. 是否存在不同种类的目的

    • 9.1.3.1. 一个概念的目的决定了是否应当设计该概念

    • 9.1.3.2. 标签概念和文件夹概念的目的都是整理文件,这个目的使得它们都可以被纳入设计,但只有标签概念才有过滤文件的目的

  • 9.1.4. 通用概念的实例化会产生什么问题

  • 9.1.5. 操作同步是否足够

  • 9.1.6. 如何阐述映射原则

  • 9.1.7. 关于用户行为的假设在概念设计中扮演什么角色

    • 9.1.7.1. 有些概念只有在用户做出某种特定行为时才能实现其目的

      9.1.7.1.1. 只有当用户设置高强度密码、记住自己的密码并且不共享密码时,密码概念才能提供有效的身份验证

  • 9.1.8. 概念可以实现完全模块化吗

    • 9.1.8.1. 微服务架构可能是实现概念的一个有用基础,其中每个微服务架构代表一个单独的概念,或许被称为“纳米服务”更合适
  • 9.1.9. 可以在代码中检测到概念设计缺陷吗

    • 9.1.9.1. 不规范的概念不仅让用户困惑,也让程序员困惑

    • 9.1.9.2. 当概念不清楚时,代码就会更混乱和有更多缺陷

  • 9.1.10. ⑩概念能否应用于API设计

    • 9.1.10.1. 概念是面向用户的

    • 9.1.10.2. 程序内部使用服务或API时产生的许多问题与用户面对的问题很相似

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

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

相关文章

二进制方式安装Helm

二进制方式安装Helm 官网:https://helm.sh/ 1、下载安装包 wget -L https://get.helm.sh/helm-v3.16.0-rc.1-linux-amd64.tar.gz2、解压 tar -xf helm-v3.16.0-rc.1-linux-amd64.tar.gz3、移动到/usr/local/bin/目录下 mv linux-amd64/helm /usr/local/bin/he…

ResNet结构图(ResNet18、ResNet50)

原理:利用conv将通道数逐渐增加, 图片尺寸逐渐缩小 ResNet18结构图 ResNet18中的"18"指的是网络中的加权层数量。具体来说,它包含了18个卷积层和全连接层。 ResNet18的架构包括: 1个7x7卷积层16个3x3卷积层&#xf…

echarts饼图

const payload {id: left-center-1,title: 年龄占比,toolTip: true,data: {total: 197,data: [1, 32, 57, 67, 40],x: [35岁以下, 35-40岁, 40-45岁, 45-50岁, 50岁以上],}, };data [];// const color [#2F7DF2, #F9CA3C, #2E5CF2, #34E9A3, #F63048, #F97A3C, #2FD9F2, #A9…

IOS 开发者账号注册流程

注册步骤 准备资料 营业执照 法人信息(电话、身份证信息) 注册邮箱(公司邮箱) 开发者信息(电话、身份证信息、邮箱)1. 注册AppleID 注册地址: https://appleid.apple.com/account 填写表单信…

杂谈|压力管理之认识「压力」(一)

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师 🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、腾讯云TDP-KOL、ACDU成员、墨天轮技术专家博主 &#x1f52…

曾经的王者-腾讯公众号为什么不火了呢?

微信公众号,曾经是图文内容创作者的天堂,如今却似乎风光不再。随着短视频和直播等新型媒体形式的崛起,公众号的打开率连年下滑,粉丝负增长甚至成为一些账号的常态。为何曾一度被誉为“图文类博主巅峰”的公众号会陷入如此境地&…

中国碳排放交易试点城市名单DID(2000-2022年)

中国碳排放交易试点城市名单DID数据是一个重要的工具,用于研究中国碳排放交易试点政策的影响。这些数据通常包括了各个试点城市在政策实施前后的虚拟变量,可以用于计量经济学分析,如双重差分(DID)方法,以评…

自学半年LabVIEW,能搭建出来一个系统吗

自学半年 LabVIEW 是完全有可能搭建出一个系统的,具体取决于你的学习效率、项目的复杂性以及你投入的时间。以下一些内容,能帮助你评估在半年时间内是否可以搭建出一个功能完善的系统: 1. 学习基础和背景 如果你已经具备编程或工程背景&…

服务器深度学习环境配置

学校提供的服务器,参考意见比较低 目录 公有云操作云主机操作系统修改: xshell连接深度学习环境配置显卡驱动检查安装检查 CUDA检查CUDA下载配置环境变量检查 conda 公有云操作 打开控制中心 节点选择 山东-青岛20 打开弹性云主机 云主机 系统已经默认…

Flutter类

Dart中的对象都继承自 Object 类,单继承(extend关键字)。Dart与Java、kotlin不同的是其无public、private、protected修饰符,默认public ,通过在属性名、方法名前加 _下划线 来定义是否私有。 实现一个简单的类 class…

Python(TensorFlow和PyTorch)两种显微镜成像重建算法模型(显微镜学)

🎯要点 🎯受激发射损耗显微镜算法模型:🖊恢复嘈杂二维和三维图像 | 🖊模型架构:恢复上下文信息和超分辨率图像 | 🖊使用嘈杂和高信噪比的图像训练模型 | 🖊准备半合成训练集 | &…

基于单片机的水产养殖饲料自动投喂系统

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图系统框架图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机…

基于SpringBoot的扶贫助农管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于JavaSpringBootVueMySQL的扶贫助农管理系统【附源码文档…

《JavaEE进阶》----14.<SpringMVC配置文件实践之【验证码项目】>

本篇博客介绍的是Google的开源项目Kaptcha来实现的验证码。 这种是最简单的验证码。 也是很常见的一种验证码。可以去看项目结果展示。就可以明白这个项目了。 前言: 随着安全性的要求越来越高、很多项目都使用了验证码。如今验证码的形式也是有许许多多、更复杂的图…

(有直接运行的源码)SpringBoot-MyBatis in查询 <foreach> 范围查询, 以及其他方法查询

文章目录 第一种: names入参为数组,foreach标签遍历第二种: name入参是纯字符串, 代替数据中的内容需要的工具类第三种: name入参为纯字符串, foreach标签分割遍历第四种: mysql中使用 (待补充)第五种: 存储过程和函数,以及其他数据库(待补充)源代码地址第一种: names入参为数组…

王道考研操作系统笔记(一)

虚拟内存的定义和特征: 基于局部性的原理, 在程序装入时,可以将程序中很快用到的部分装入内存,暂时用不到的数据装入外存,就可以让程序开始执行,在程序执行过程中,当所访问的信息不在内存的时…

以租代卖+押金原路退回系统 阿雪技术观市场策划

一、市场目标 1. 提高软件的知名度和用户使用率。 2. 促进物品的流转和租赁,增加用户参与度和满意度。 3. 探索新的商业模式,为公司带来更多的收益和发展机会。 二、实施步骤 1. 软件平台搭建 - 开发和优化市场策划软件,确保其功能完善…

数据库系列之GaussDB数据库中逻辑对象关系简析

初次接触openGauss或GaussDB数据库的逻辑对象,被其中的表空间、数据库、schema和用户之间的关系,以及授权管理困惑住了,与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系,以加深…

【高级编程】Java IO流(上)字节流 InputStream OutputStream

文章目录 文件操作流输入流InputStream输出流OutputStream 文件操作 文件是指相关记录或放在一起的数据的集合。是一种用于存储数据的基本单位,它可以包含各种类型的信息,例如文本、图像、音频或视频。文件在计算机中通常存储在磁盘或其他存储介质上&am…

华为OD机试 - 最大相连男生数 - 矩阵(Java 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…